MODUL X
PROSEDUR
Di dalam dunia pemrograman, prosedur adalah modul program
yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek
netto [LIE96]. Suatu efek netto diketahui dengan membandingkan keadaan awal
dan keadaan akhir pada pelaksanaan sebuah prosedur. Oleh karena itu, pada
setiap prosedur kita perlu mendefinisikan keadaan awal (K. Awal) sebelum
rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir (K. Akhir)
yang diharapkan setelah rangkaian instruksi di dalam prosedur dilaksanakan.
10.1 Pendefinisian Prosedur
Pendefinisian prosedur artinya menuliskan nama prosedur,
mendeklarasikan nama-nama konstanta, peubah dan tipe (jika ada), dan
menjabarkan rangkaian aksi yang dilakukan. Pada dasarnya, struktur
prosedur sama dengan struktur algoritma yang sudah anda kenal yaitu :
ada bagian judul (header) yang terdiri atas nama prosedur dan deklarasi
parameter (jika ada), bagian deklarasi untuk mengumumkan nama-nama,
dan bagian algoritma yang disebut badan prosedur. Setiap prosedur
mempunyai nama unik. Nama prosedur sebaiknya diawali dengan kata
kerja karena prosedur suatu aktivitas, misalnya HitungLuas, Tukar,
CariMaks, Inisialisasi, AktifkanMenu, dan lain sebagainya.
Parameter adalah nama-nama peubah yang dideklarasikan pada
bagian header prosedur. Kebanyakan program memerlukan pertukaran
data/informasi antara prosedur (atau fungsi) dana titik di mana ia dipanggil.
Penggunaan parameter menawarkan mekanisme pertukaran informasi
tersebut. Tiap item data ditransfer antara parameter aktual dan parameter
formal yang bersesuaian. Parameter aktual (kadang-kadang disebut juga
argumen) adalah parameter yang disertakan pada waktu pemanggilan
prosedur, sedangkan parameter formal adalah parameter yang
dideklarasikan di dalam bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter aktual menggunakan parameter formal. Tiap-tiap
paramater aktual berpasangan dengan parameter formal yang
bersesuaian.
Notasi algoritmik untuk mendefinisikan prosedur (tanpa parameter)
adalah :
Procedure NamaProsedur(deklarasi parameter, jika ada)
(spesifikasi prosedur, berisi penjelasan tentang apa
yang dilakukan oleh prosedur ini.
K.Awal : keadaan sebelum prosedur dilaksanakan.
K.Akhir : keadaan setelah prosedur dilaksanakan.
DEKLARASI
( semua nama yang dipakai di dalam prosedur dan hanya
berlaku lokasi di dalam prosedur didefinisikan di sini)
ALGORITMA
( badan prosedur, berisi urutan instruksi)
10.2 Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi ia dapat
dieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalam prosedur
baru dapat dilaksanakan hanya bila prosedur tersebut diakses. Prosedur
diakses dengan cara memanggil namanya dari program pemanggil
(misalnya dari program utama atau dari modul program lainnya). Jika
prosedur tanpa parameter, maka pemanggilnya cukup dengan namanya
saja.
Contoh menghitung luas N buah segitiga
Misalkan kita mempunyai N buah segitiga dan kita ingin menghitung luas
semua segitiga. Prosedur untuk menghitung luas segitiga.
PROGRAM Segitiga
( menghitung luas N buah segitiga )
DEKLARASI
i, N : integer procedure HitungLuasSegitiga
( menghitung luas segitiga dengan rumus D = (alas x
tinggi)/2 )
ALGORITMA
read(N) (tentukan banyaknya segitiga)
for i←1 to N do
HitungLuasSegitiga
endfor
10.3 Nama Global, Nama Lokal, dan Lingkup
Nama-nama (konstanta, peubah, tipe, dll) yang dideklarasikan di
dalam prosedur (termasuk parameter, jika ada) hanya “dikenal” di dalam
badan prosedur yang bersangkutan. Nama-nama yang dideklrasikan di
dalam prosedur tersebut dikatakan lingkupnya (scope) “lokal”. Nama-nama
lokal hanya berlaku di dalam prosedur yang melingkupinya saja. Setelah
prosedur selesai dieksekusi, nama-nama tersebut tidak dikenal lagi di luar
prosedur. Tinjau prosedur HitungLuasSegitiga diatas, peubah alas, tinggi
dan luas hanya dapat digunakan di dalam prosedur yang bersangkutan.
Sebaliknya, nama-nama (konstanta, peubah, tipe, dll) yang
dideklarasikan di dalam program utama dikatakan lingkupnya “global”.
Nama-nama global dapat digunakan di bagian maupun di dalam program,
baik di dalam program utama maupun di dalam prosedur yang dipanggil.
Tinjau program Segitiga pada contoh tersebut diatas i dan N dapat
digunakan di dalam program utama maupun di dalam prosedur
HitungLuasSegitiga (kalau diperlukan).
Sekarang, mari kita modifikasi prosedur HitungLuasSegitiga
dengan meniadakan peubah alas, dan tinggi di dalam bagian deklarasinya,
dan menghilangkan pernyataan pembacaan data di dalam prosedur.
procedure HitungLuasSegitiga
( Menghitung luas segitiga dengan rumus Luas = (alas x
tinggi)/2 )
( K.Awal : sembarang )
( K.Akhir : luas segitiga tercetak )
DEKLARASI Luas : real
ALGORITMA
Luas ← (alas * tinggi)/2
Write(luas)
10.4 Parameter
Aturan yang harus diperlukan dalam korespondensi satu-satu
antara parameter aktual dan parameter formal adalah :
1. Jumlah parameter aktual pada pemanggilan prosedur harus sama
dengan jumlah parameter formal pada deklarasi prosedurnya.
2. Tiap parameter aktual harus bertipe sama dengan tipe parameter formal
yang bersesuaian.
3. Tiap prosedur aktual harus diekspersikan dalam cara yang taat asas
dengan parameter formal yang bersesuaian, bergantung pada jenis
parameter formal (dijelaskan di bawah ini).
Berdasarkan maksud penggunaannya, terdapat tiga jenis
parameter formal yang disertakan di dalam prosedur :
1. parameter masukan (input parameter)
2. parameter keluaran (output parameter)
3. parameter masukan/keluaran (input/output parameter)
Parameter masukan adalah parameter yang nilainya berlalu
sebagai masukan untuk prosedur. Pada bahasa pemrograman, istilah
parameter masukan ini sering dinamakan parameter nilai (value parameter
atau parameter by value).
Parameter keluaran adalah parameter yang menampung keluaran
yang dihasilkan oleh prosedur. Sedangkan parameter masukan/keluaran
adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi
prosedur tersebut.
10.4.1 Parameter Masukan Contoh prosedur hitung luas segitiga dengan parameter masukan.
Tinjau kembali prosedur menghitung luas segitiga di dalam Algoritma 10.3.
Jika program utama ingin mengkomunikasikan panjang alas dan tinggi
segitiga ke prosedur HitungLuasSegitiga, maka peubah alas dan tinggi
dideklarasikan sebagai parameter formal di bagian header prosedur.
procedure HitungLuasSegitiga
( Menghitung luas segitiga dengan rumus Luas = (alas x
tinggi)/2 )
( K.Awal : sembarang )
( K.Akhir : luas segitiga tercetak )
DEKLARASI
Luas : integer
ALGORITMA
Luas ← (alas * tinggi)/2
Write(luas)
Contoh prosedur untuk mengaktifkan menu
Buatlah prosedur yang menerima nomor menu program dan menuliskan
pesan nomor menu yang dipilih. Misalnya, jika pengguna menu nomor 3,
maka tuliskan pesan “Anda memilih menu nomor 3”. Jumlah menu
seluruhnya ada 5.
Penyelesaian :
procedure HitungLuasSegitiga
( Menghitung luas segitiga dengan rumus Luas = (alas x
tinggi)/2 )
( K.Awal : sembarang )
( K.Akhir : luas segitiga tercetak )
DEKLARASI
Luas : real
ALGORITMA
case NomorMenu
1 : write(‘Anda memilih menu nomor 1’)
2 : write(‘Anda memilih menu nomor 2’)
3 : write(‘Anda memilih menu nomor 3’)
4 : write(‘Anda memilih menu nomor 4’)
5 : write(‘Anda memilih menu nomor 5’)
endcase
10.4.2 Parameter Keluaran
Contoh menghitung nilai rata-rata
Buatlah prosedur untuk menghitung nilai rata-rata N buah data bilangan
bulat. Data bilangan bulat dibaca dari piranti masukan. Masukan prosedur
adalah N dan keluarannya adalah nilai rata-rata.
Penyelesaian
Prosedur menghitung nilai rata-rata
procedure HitungRataRata(input N : integer, output u :
real)
( Menghitung rata-rata N buah bilangan bulat yang
dibaca dari piranti masukan )
( K.Awal : N sudah berisi banyaknya bil.bulat N >0 )
( K.Akhir : u berisi rata-rata seluruh bilangan )
DEKLARASI
N : integer (data bilangan bulat yang dibaca dari
papan kunci)
k : integer (pencacah banyak bilangan)
jumlah : integer (jumlah seluruh bilangan)
ALGORITMA
jumlah ← 0 (inisialisasi)
for k←1 to N do
read(x)
jumlah ← jumlah + x
endwhile
u←jumlah/N
10.4.3 Paramter Masukan/Keluaran
Paramater masukan digunakan pada situasi di mana informasi
dikirim hanya dari titik pemanggilan prosedur ke prosedur itu sendiri.
Sedangkan parameter keluaran hanya mengirim informasi dari prosedur ke
titik pemanggilan prosedur. Pada kebanyakan aplikasi, informasi juga harus
dikirim dalam kedua arah. Ketika prosedur yang mengandung parameter keluaran dipanggil,
nama parameter aktual di dalam program pemanggil menggantikan
(substitute) nama parameter formal yang bersesuaian di dalam prosedur.
Selain itu, isi atau parameter aktual juga ikut disalin ke dalam parameter
formal. Jadi, nama dan nilai parameter aktual digunakan di seluruh bagian
prosedur. Akibat penggunaaan parameter masukan/keluaran, bila
parameter aktual diubah nilainya di dalam prosedur, maka sesudah
pemanggilan prosedur nilai parameter aktual di titik pemanggilan juga
berubah. Ini berbeda dengan parameter masukan yang dalam hal ini
meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai
parameter aktual tersebut tidak berubah di titik pemanggilan.
Parameter masukan/keluaran dideklarasikan di dalam header
prosedur dengan kata kunci input/output. Hal lain yang harus diperhatikan
pada jenis parameter masukan/keluaran ini adalah parameter aktual harus
berupa peubah, tidak boleh berupa konstanta atas ekspresi.
Contoh perbedaan antara parameter masukan dan masukan keluarga
Untuk memperlihatkan efek penggunaan parameter masukan dan
perbandingannya dengan parameter masukan/keluaran.
Prosedur dengan parameter masukan
procedure TambahEmpat(input x,y : integer)
( Menambah nilai x dan ya masing dengan 4. )
( K.Awal : x dan y sudah berisi nilai )
( K.Akhir : nilai x dan y masing-masing bertambah 4,
lalu dicetak )
DEKLARASI
(tidak ada)
ALGORITMA
x←x+4
y←y+4;
output’nilai x dan y di akhir prosedur Empat:’)
write(‘x = ‘,x)
write(‘y = ‘,y)
10.4.4 Program dengan Prosedur atau Tanpa Prosedur? Sangat dianjurkan menulis program yang modular. Program yang dipecah
menjadi beberapa prosedur (atau fungsi) menunjukkan teknik
pemrograman yang baik dan terstruktur.
10.4.5 Prosedur dengan Parameter atau Tanpa Parameter?
Sangat dianjurkan menulis prosedur dengan parameter. Parameter
berfungsi sebagai media komunikasi, antara modul dengan program
pemanggil. Selain itu, parameter dapat mengurangi kebutuhan
penggunaan peubah global.
10.4.6 Parameter Masukan atau Parameter Keluaran?
Bergantung pada masalanya, apakah prosedur tersebut menghasilkan
keluaran yang digunakan oleh program pemanggil atau tidak. Bila
prosedur menghasilkan keluaran yang digunakan oleh program
pemanggil, gunakan parameter keluaran untuk menampung keluaran
tersebut. Sebaliknya, bila prosedur tidak menghasilkan keluaran, atau
kalaupun menghasilkan keluaran dan ternyata keluaran tersebut hanya
digunakan di dalam prosedur itu saja, gunakan parameter masukan. Bila
prosedur menerima masukan sekaligus keluaran pada parameter yang
sama, gunakan parameter masukan/keluaran.
10.5 Translasi Notasi Algoritmik Prosedur ke dalam Notasi Bahasa Pascal
dan C
Beberapa aturan yang harus diketahui dalam proses translasi :
1. Dalam Bahasa Pascal, pendefinisian prosedur ditulis bersatu di dalam
program utama, kecuali jika direalisasikan sebagai unit. Prosedur
diletakkan di bawah kata var.
2. Dalam bahasa C pendefinisian prosedur ditulis di luar blok, program
utama (main), kecuali jika direalisasikan sebagai file include. Prosedur
umumnya diletakkan sesudah blok main( ), sedangkan deklarasi
prosedur hanya berupa header dari prosedur ditulis sebelum blok main( ) sebagai purwarupa saja (purwarupa prosedur hanya berupa header
dari prosedur tersebut). Jika pendefinisian prosedur ditulis sebelum blok
main( ), maka pendeklarasian purwarupa prosedur tidak diperlukan lagi.
3. Dalam bahasa C, tidak dikenal istilah prosedur. Semua modul program
adalah fungis. Prosedur adalah fungsi yang tidak mengembalikan nilai
apapun. Karena itu, return value untuk prosedur adalah void (yang
artinya “kosong”)
4. Dalam bahasa C, bila prosedur tidak mempunyai parameter, maka
tanda kurung “(“ dan “)” tetap ditulis setelah nama prosedur tersebut.
5. Semua parameter dalam bahasa C adalah parameter masukan. Oleh
karena itu, semua argumen parameter aktual dilewatkan sebagai “by
value”. Ini artinya nilai parameter aktual disalin ke parameter formal
yang bersesuaian. Suatu cara untuk memperoleh efek parameter
keluaran maupun efek parameter masukans/keluaran adalah
melewatkan pointer terhadap aktual yang berjenis parameter masukan
atau masukan/keluaran. Tanda “&” menyatakan alamat dari peubah.
Sedangkan parameter formal yang berjenis masukan atau
masukan/keluaran ditambahkan karakter “*” di depannya. Karakter “*”
menyatakan operator indirect, yang berarti sebuah peubah yang diawali
dengan operator ini diakses secara tidak langsung melalui alamatnya
yang disimpan di dalam peubah lain (pada contoh prosedur, alamat
disimpan oleh parameter aktual diawali oleh karakter “&”).
6. Bahasa pascal yang memungkinkan prosedur mempunyai parameter
masukan, parameter keluaran, dan parameter masukan/keluaran.
Parameter keluaran atau masukan/keluaran harus diawali dengan kata
kunci var, sedangkan parameter formal yang bertipe masukan tidak
diawali dengan kata kunci var. Argumen parameter aktual dilewatkan
ke parameter formal yang bertipe masukan sebagai “by value”,
sedangkan bila parameter formalnya bertipe masukan atau
masukan/keluaran, maka argumen parameter aktual dilewatkan sebagai
“by reference”. 1. Contoh translasi prosedur tanpa paramter
ALGORITMIK
Prosedur :
procedure HitungLuasSegitiga
( Menghitung luas segitiga dengan rumus Luas = (alas
x tinggi)/2 )
( K.Awal : sembarang )
( K.Akhir : luas segitiga tercetak )
DEKLARASI
alas : real (panjang alas segitiga, dalam cm)
tinggi : real (tinggi segitiga, dalam cm)
luas : real (luas segitiga, dalam cm2
)
ALGORITMA
read(alas, tinggi)
Luas ← (alas * tinggi)/2
Write(luas)
Program utama :
PROGRAM Segitiga
( menghitung luas N buah segitiga )
DEKLARASI
i, N : integer
procedure HitungLuasSegitiga
( menghitung luas segitiga dengan rumus D = (alas x
tinggi)/2 )
ALGORITMA
read(N) (tentukan banyaknya segitiga)
for i←1 to N do
HitungLuasSegitiga
endfor
2. Contoh translasi prosedur dengan parameter masukan
ALGORITMIK
Prosedur :
procedure HitungLuasSegitiga(input alas, tinggi :
real)
( Menghitung luas segitiga dengan rumus Luas = (alas
x tinggi)/2 )
( K.Awal : sembarang ) ( K.Akhir : luas segitiga tercetak )
DEKLARASI
luas : real (luas segitiga, dalam cm2
)
ALGORITMA
Luas ← (alas * tinggi)/2
Write(luas)
Program utama :
PROGRAM Segitiga
( menghitung luas N buah segitiga )
DEKLARASI
i, N : integer
a, t : real
procedure HitungLuasSegitiga(input alas, tinggi :
real)
( menghitung luas segitiga dengan rumus D = (alas x
tinggi)/2 )
ALGORITMA
read(N) (tentukan banyaknya segitiga)
for i←1 to N do
read(a,t)
HitungLuasSegitiga
endfor
3. Contoh translasi prosedur dengan parameter keluaran
ALGORITMIK
Prosedur :
procedure HitungLuasSegitiga(input alas, tinggi :
real, output luas : real)
( Menghitung luas segitiga dengan rumus Luas = (alas
x tinggi)/2 )
( K.Awal : sembarang )
( K.Akhir : luas segitiga tercetak )
DEKLARASI
( tidak ada)
ALGORITMA
Luas ← (alas * tinggi)/2
Program utama :
PROGRAM Segitiga
( menghitung luas N buah segitiga )
DEKLARASI
i, N : integer
a, t : real
L : real (Luas Segitiga)
procedure HitungLuasSegitiga(input alas, tinggi :
real)
( menghitung luas segitiga dengan rumus D = (alas x
tinggi)/2 )
ALGORITMA
read(N) (tentukan banyaknya segitiga)
for i←1 to N do
read(a,t)
HitungLuasSegitiga(a,t,L)
Write(L)
endfor
4. Contoh translasi prosedur dengan parameter masukan/keluaran
Prosedur :
procedure Tukar(input,output A,B : integer)
( mempertukarkan nilai A dan B)
( K.Awal : nilai A dan B sudah terdefinisi)
( K.Akhir: A berisi nilai B, B berisi nilai A
semula.)
DEKLARASI
temp : integer (peubah bantu)
ALGORITMIK
temp←A (simpan nilai A ke dalam temp)
A←B (isikan nilai B ke dalam A)
B←temp (isikan nilai temp ke dalam B)
Program Utama :
PROGRAM SelisihKY
( program untuk mengitung selisih nilai K dan Y,
dengan syarat X > Y. jika X < Y, maka X dan Y
dipertukarkan dengan memanggil prosedur Tukar.)
DEKLARASI
X,Y,Z : integer
Procedure Tukar(input/output A, B : integer)
(Mempertukarkan nilai A dan B)
ALGORITMA
read(X,Y) (baca nilai X dan Y terlebih dahulu)
(jika X < Y, pertukarkan nilai X dan Y dengan
memanggil prosedur Tukar)
if X < Y then
Tukar(X,Y)
endif
X ← X – Y (hitung selisih X dan Y)
write(Z)
SEMUA DIMULAI DARI PEMIKIRAN TAPI TANPA TINDAKAN TIDAK ADA KEKUATAN UNTUK SEBUAH PERUBAHAN , ANDA TIDAK SUKA KEADAAN ANDA ? SIMPEL " RUBAHLAH "
sesungguhnya dunia itu tidak apa2, apa yg terjadi di dunia dan terjadi pada beberapa orang memang betul sangatlah tidak adil dan membuat kita mendendam dan membenci..
Kalau kita mencari jawaban dari semua itu kita hanya menghabiskan begitu banyak waktu melihat ke masa lalu dan mencoba menerobos dalam pemikiran Tuhan yg Luar Biasa..
terkadang memang apa yg terjadi tidak adil tapi bukan disana point of viewnya, point of viewnya ada dan tidak ada anda didunia, dunia tetap akan berjalan sebagaimana mestinya sesuai hukumnnya..
setiap orang memiliki tujuan dan saya yakin tujuan itu baik untuk mereka tapi belum tentu dalam processnya nanti tindakan2 yg mereka lakukan itu akan baik pula buat orang lain, saya yakin pasti ada yg dirugikan, tapi selama anda berfokus pada apa prioritas hidup anda dan melakukan The right things with The right way, km berada dijalan yg tepat menuju ke kehidupan yg lebih baik sebagai seorang manusia yg lebih dewasa dan bijak dalam menyikapi setiap tekanan dan permasalahan dalam konteks pemikiran yg luas dan panjang..
Anda tak perlu takut untuk menjadi baik karena hal2 diluar kuasamu, Tuhan sayang orang baik dan memberikan mereka porsi dan tempat yg lebih di dunia.. Trust me Its Works
saya sadar 70 % keputusan yg dibuat didunia ini datang dari lingkungan kita, saya hanya akan membuat keputusan yg arahnya sesuai dgn prioritas dan tujuan kehidupan saya.
Pertanyaan itu sempat membuatku terdiam sejenak, kemudian saya menjawab ” Adakah hal di dunia ini yg menjamin bahwa kita tidak akan gagal?” Rata2 dari mereka menjawab ” Tidak ada!’
Saya menjawab ” ADA”
kuncinya adalah “PERCAYA” pegang kunci itu baik2, jgn berikan dan jgn biarkan orang mencurinya darimu, apa yg baik simpanlah, apa yg buruk rubahlah menjadi yg baik
Memang betul rasa sakit yang ditinggalkan atas perbuatan dan perkataan seseorang bisa membuat kita mendendam dan membenci , dari rasa sakit itu timbulah perasaan takut dan kebingunangan akan diri kita sendiri kenapa kita tidak bisa memaafkan , mungkin ada yang bisa dimaapkan tapi gabisa dilupakan , "wajar ko namanya juga manusia punya memori",
kalo ditanya "kenapa harus memapkan? ,
saya akan jawab "pernahkan anda menyakiti perasaan oranglain ?"
.kalo kamu merasa memaapkan saja tidak cukup , maka belajarlah melupakan , caranya ? Tidak ada jalan pintas , hanya butuh "waktu dan iklas" .
APA BEDANYA ILMU DAN PENGETAHUAN ?
bedanya terletak pada epistemologia cara mendapatkan metode .
ilmu didapatkan melalui pendidikan , penelitian , eksperimen ,observasi ,dengan langkah langkah yang sistematis . hasilnya dapat di uji kembali , dengan metode yang sama,ilmu lebih cenderung bersifat obyektif.
pengetahuan didapat dari pengalaman sehingga tidak dapat di uji kembali dan bersifat subyektif .
setiap orang membunyai pengalaman/pengetahuan . tapi belum tentu mempunyai ilmu .
sesuatu dapat dikatakan ilmu jika memiliki syarat :
- ada obyek yang spesifik .
- ada tujuan
- disusun secara sistematis
- mempunyai metode sendiri .
bagaimana anda menjalani hidup anda saat ini ? percayakah anda , segala sesuatu yang kita jalani adalah sesuatu yang akan kita dapatkan dikemudian hari .. "ya,, itu mneurut saya . "
tahukah anda , ? sebuah perkataan dalam diri kita itu sebenar nyah bisa menjadi sebuah sugesti dipikiran kita ,
cobalah untuk berfikir positif ,.lakukanlah sesuatu yang bernanfaat untuk diri anda dan orang lain .
jangan hanya mengejar nafsu semata yang akan merusak segala nya , ketika melakukan sesuatu harus dipikirkan .. apa itu resiko nya nanti ..hidup itu adalah sebuah perjalanan .
perjalanan yang memiliki beberapa arah . akan akan berbeda tempat tujuan nyah .
inilah saat bagaimana kita memilih untuk perjalani hidup kita sendiri .
pilih jalan yang akan membawa kebahagiaan untuk anda .
bukan jalan yang memberikan kesenanan untuk anda .
karena kebahagiaan dan kesenangan itu berbeda .
menurut saya kebahagiaan adalah sesuatu yang rasakan dihati .
sementara kesenangan adalah hal yang ada hanya dalam pikiran kita bukan hati .
senang hanya bersifat sementara dan kebanyakan didasari oleh nafsu yang ada didalam otak yang berambisi
.