1 / 30

TOPIK 4

TOPIK 4. PROGRAM SEBAGAI LOGIKA INSTRUKSI. Instruksi Dasar (1). Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan program kita: p*  mencetak satu * dan membuat kursor maju satu langkah. pb  mencetak satu space kosong dan maju satu langkah.

tilly
Download Presentation

TOPIK 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TOPIK 4 PROGRAM SEBAGAI LOGIKA INSTRUKSI

  2. Instruksi Dasar (1) • Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan program kita: • p*  mencetak satu * dan membuat kursor maju satu langkah. • pb  mencetak satu space kosong dan maju satu langkah. • NL  return ke baris berikutnya

  3. Instruksi Dasar (2) • Contoh NL; p*;p*;p* NL; p*;p*;p* (Program 1) NL; p*;p*;p* • Disederhanakan: NL; p*;p*;p* (Program 2) Program 2; Program 2; Program 2 (Program 3)

  4. Prosedur sebagai Instruksi yang Ditemukan (1) • Kesulitan dalam mengingat urutan sekumpulan instruksi menghasilkan pemikiran untuk memberi nama (label) kepada kumpulan instruksi tersebut. Cara seperti ini disebut membuat prosedur. Dengan prosedur tidak perlu lagi menyebutkan sekuens dari kumpulan instruksi tersebut tetapi cukup dengan menyebutkan nama (label) prosedurnya saja. • Prosedur adalah suatu program yang digunakan oleh program lain sama seperti suatu instruksi.

  5. Prosedur sebagai Instruksi yang Ditemukan (2) • Didefinisikan Program 4: NL;p*;pb;pb;pb;p* Program 5: NL; p*;p*;p*;p*;p* • Bagaimana cara membuat bentuk di bawah ini? ***** * * * * * * * * ***** * * * * ***** * *

  6. Prosedur sebagai Instruksi yang Ditemukan (3) • Jawab: • Program 6: Program 5; Program 4; Program 4; Program 4; Program 5 • Program 7: Program 4; Program 4; Program 5; Program 4; Program 4

  7. Prosedur sebagai Instruksi yang Ditemukan (Latihan 1) • Buatlah program untuk mencetak huruf HELLO dalam posisi vertikal. Ukuran tiap huruf 5x5.

  8. Notasi Definisi dan Pemanggilan Prosedur (1) • Suatu prosedur akan selalu dimulai dengan kata “def” dan berakhir dengan enddef. • Contoh: def tiga*() = NL;p*;p*;p* enddef • Di sini nama prosedur adalah tiga*. Arti prosedur diberikan oleh NL;p*;p*;p*. Tanda () menunjukkan bahwa bilamana prosedur ini dipanggil, tak ada parameter yang dibutuhkan untuk mengeksekusinya.

  9. Notasi Definisi dan Pemanggilan Prosedur (2) • Contoh • untuk Program 3. dapat ditulis tiga*();tiga*();tiga*() (Program 8) • def H() = t1();t1();t2();t1();t1() enddef def O() = t2();t1();t1();t1();t2() enddef; def t1() = NL;p*;pb;pb;pb;p* enddef (Program 9) def t2() = NL;p*;p*;p*;p*;p* enddef O(); NL; H() akan menghasilkan huruf O di atas H.

  10. Definisi dalam Definisi (1) • Suatu prosedur dapat berisi definisi dari suatu prosedur lain. • Contoh: untuk mencetak pola OH tiga kali dengan blank memisahkan tiap pola • Program dapat dibuat dengan: Program 9;NL;Program 9;NL;Program 9 (Program 10)

  11. Definisi dalam Definisi (2) • Tapi Program 10 belum merupakan suatu program yang lengkap karena Program 9 belum didefinisikan. Program 11: def polan() = def H() = t1();t1();t2();t1() enddef def O() = t2();t1();t1();t2() enddef; def t1() = NL;p*;pb;pb;pb; p* enddef def t2() = NL;p*;p*;p*;p*;p* enddef O(); NL; H() enddef polan();NL;polan();NL;polan()

  12. Definisi dalam Definisi (2) • Cara lain: def H() = t1();t1();t2();t1() enddef def O() = t2();t1();t1();t2() enddef def t1() = NL;p*;pb;pb;pb;p* enddef def t2() = NL;p*;p*;p*;p*;p* enddef (Program 12) def polan()= O(); NL; H() enddef polan();NL;polan();NL;polan()

  13. Prosedur dengan Parameter (1) • def p() = p* enddef p(); p(); p() (Program 13) • Arti dari Program 13 adalah tercetaknya tiga *. • Tetapi dengan nama yang sama dapat didefinisikan p() sbb: def p() = NL;p*;p*;p* enddef p();p();p() (Program 14) di mana arti dari Program 14 adalah mencetak sembilan *.

  14. Prosedur dengan Parameter (1) • Namun p() dalam Program 13 dan 14 selalu mempunyai arti yang tetap. Sekali didefinisikan akan selalu seperti itu. Ini disebabkan p() tidak mempunyai parameter. Pemberian parameter memungkinkan mengubah arti p() setiap saat. def r3(p) = p();p();p() enddef def satu() = p* enddef def dua() = NL enddef def tiga() = NL; p*;p*;p* enddef r3(satu); r3(dua); r3(tiga) (Program 15)

  15. Prosedur dengan Parameter (2) • Dalam Program 3, urutan instruksi p();p();p() adalah batang tubuh dari prosedur r3. Setiap prosedur r3(satu), r3(dua); r3(tiga) meminta eksekusi dari p();p();p(). Arti p() itu sendiri tergantung pada parameter yang disuplai. • Sebagai contoh: instruksi eksekusi hasil r3(satu) satu(), satu(), satu() *** r3(dua) dua(), dua(), dua() r3(tiga) tiga(),tiga(),tiga() *** *** ***

  16. Latihan Soal (2) • Definisikan prosedur x, y, dan z sehingga urutan instruksi BB; r3(x); BB; r3(y); BB; r3(z) mencetak pola di bawah ini * * * ** ** ** *** *** *** • Definisikan prosedur r4 sehingga bila diberikan definisi x, y, dan z, urutan instruksi BB; r4(x); BB; r4(y); BB; r4(z) akan mencetak pola * * * * ** ** ** ** *** *** *** *** • Kalau r3(satu) seperti yang didefinisikan di atas yaitu mencetak tiga *. Bila diberikan definisi def A() = r3(satu); r3(satu); r3(satu) enddef Berapa * yang dicetak?

  17. Tambahan Instruksi • Instruksi dengan satu argumen karakter: pc(‘ ‘): print karakter. Akan mencetak karakter yang diberikan di dalam tanda kurung. • Contoh: pc(‘*’)  * pc(‘ ‘)  satu space pc(‘+’)  + def tiga(c) = pc(c); pc(c); pc(c) enddef • Maka tiga (‘9’) akan mencetak 999 sebab parameter c disubstitusi menjadi 9 ke dalam batang tubuh dari prosedur tiga menjadi urutan instruksi: pc(‘9’); pc(‘9’); pc(‘9’)

  18. Tambahan Instruksi (Latihan 3) • Tulis definisi dari prosedur segiempat agar supaya setiap pemanggilan segiempat(‘*’) akan mencetak suatu segiempat berukuran 3x3 *, suatu segiempat(‘+’) akan menghasilkan segiempat 3x3 +.

  19. Nilai Prosedur yang Mengambil Argumen (1) • def kedua(x) = x(‘*’); x(‘+’) enddef • Bila diberikan definisi satu() dalam Program 3, maka kedua(satu) tidak akan masuk akal sebab satu(‘*’) dan satu(‘+’) tidak masuk akal. • Tetapi kedua(pc) masuk akal dan akan mencetak * dan +. • Begitu juga dengan kedua(segiempat) masuk akal dan akan mencetak segiempat * dan +.

  20. Nilai Prosedur yang Mengambil Argumen (2) • Jadi dengan melihat pada definisi prosedur kedua, terlihat bahwa parameter prosedur ini adalah suatu prosedur. Prosedur yang disuplai haruslah prosedur yang menerima karakter sebagai argumennya. Bila diberikan kedua(r3) di mana r3 telah didefinisikan, maka tidak masuk akal karena meskipun r3 menerima suatu argumen, r3 membutuhkan suatu prosedur dan bukan suatu nilai karakter sebagai argumennya.

  21. Nilai Prosedur yang Mengambil Argumen (3) • Diberikan definisi def quote(c) = NL; pc(‘’’) pc(c); pc(‘’’) enddef def x() = p* enddef • Prosedur quote adalah suatu prosedur yang membutuhkan argumen karakter yang dipakai pada urutan instruksi ketiga yaitu pc(c) • c bukan nama prosedur.

  22. Nilai Prosedur yang Mengambil Argumen (4) • Mana yang masuk akal? • quote(‘x’); masuk akal karena ‘x’ adalah nilai bukan prosedur. • quote(‘*’); idem • quote(‘c’); idem • quote(c); tidak masuk akal karena c bukan nilai dan tidak didefinisikan. • quote(x); tidak masuk akal karena x adalah prosedur

  23. Prosedur Berparameter Banyak • def sandwich(selei,roti)=roti();selei();roti() enddef • Prosedur membutuhkan dua nilai argumen yang masing-masing adalah suatu prosedur. • Bila diberikan definisi sbb: def pO()=pc(‘O’) enddef def pX() = pc(‘X’) enddef maka: sandwich(pX,pO) mencetak OXO sandwich(pO,pX) mencetak XOX sandwich(pO,pO) mencetak OOO

  24. Prosedur Berparameter Banyak (Latihan 4) • Diberikan definisi prosedur sandwich: def sandwich(selei,roti)=roti();selei();roti() enddef dan prosedur bigmac: def bigmac(f1,f2,bread)=bread();f1();bread();f2();bread() enddef • Cari arti dari program di bawah ini: def a() = pc(‘a’) enddef def b() = pc(‘b’) enddef def c() = pc(‘c’) enddef def satu() = sandwich(a,b) enddef def dua() = bigmac(c,a,b) enddef sandwich(satu, dua) (Program 16)

  25. Latihan (5) • Buat programnya dengan sandwich (tengah, luar) * ** I *** * ** II *** * ** I ***

  26. procedure call(x:integer); begin if x<>0 then begin write(‘*’); x := x – 1; call(x); x := x + 1; end; end; Apakah output dari pemanggilan call(3) ?

  27. procedure lagi(a: integer; b: integer); var t: integer; begin t := (a+b) div 2; if (a <= b) then begin write(X[t]); lagi (a,t-1); lagi (t+1,b); end end; Dengan pemanggilan: lagi(1,10);, maka hasilnya adalah?

  28. function f(a,b,c) if (a = TRUE) AND (b = TRUE) then print '1' else if (b = FALSE) then print '2' else if (c = TRUE) then print '3' else if (a = TRUE) and (b = FALSE) then print '4' else print '5' What will be printed by f(FALSE,TRUE,TRUE)?

  29. if (a and not (not c and not b)) or not ((c and b) or not a) then writeln('merah') else writeln('putih'); Agar algoritma itu selalu menuliskan 'merah' maka kondisi yang tepat adalah: • a dan c keduanya harus true sementara b tidak penting • b berharga true yang lain tidak penting • a berharga true yang lain tidak penting • c berharga true yang lain tidak penting • b berharga false yang lain tidak penting

  30. x = 0 function f() x = x + 1 function g() f(); f() function h() f(); g(); f() begin f(); write(x) g(); write(x) h(); write(x) What will be printed by the pseudocode above?

More Related