30
TOPIK 4 TOPIK 4 PROGRAM SEBAGAI PROGRAM SEBAGAI LOGIKA INSTRUKSI LOGIKA INSTRUKSI

TOPIK 4

  • Upload
    tilly

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: TOPIK 4

TOPIK 4TOPIK 4

PROGRAM SEBAGAI PROGRAM SEBAGAI

LOGIKA INSTRUKSILOGIKA INSTRUKSI

Page 2: TOPIK 4

Instruksi Dasar (1)Instruksi Dasar (1)

Tiga jenis instruksi di bawah ini akan Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan dipakai untuk merencanakan program kita:program kita:– p* p* mencetak satu * dan membuat mencetak satu * dan membuat

kursor maju satu langkah.kursor maju satu langkah.– pb pb mencetak satu space kosong dan mencetak satu space kosong dan

maju satu langkah.maju satu langkah.– NL NL return ke baris berikutnya return ke baris berikutnya

Page 3: TOPIK 4

Instruksi Dasar (2)Instruksi Dasar (2)

ContohContoh

NL; p*;p*;p*NL; p*;p*;p*

NL; p*;p*;p* (NL; p*;p*;p* (Program 1Program 1))

NL; p*;p*;p*NL; p*;p*;p*

Disederhanakan:Disederhanakan:

NL; p*;p*;p* (PNL; p*;p*;p* (Program 2rogram 2))

Program 2; Program 2; Program 2 Program 2; Program 2; Program 2 ((Program 3Program 3))

*********

******

* *****

(a) (b) (c) (d) (e) (f)

*********************

g

***** *****

******

*** ** *

Page 4: TOPIK 4

Prosedur sebagai Instruksi Prosedur sebagai Instruksi yang Ditemukan (1)yang Ditemukan (1)

Kesulitan dalam mengingat urutan sekumpulan Kesulitan dalam mengingat urutan sekumpulan instruksi menghasilkan pemikiran untuk instruksi menghasilkan pemikiran untuk memberi nama (label) kepada kumpulan memberi nama (label) kepada kumpulan instruksi tersebut. Cara seperti ini disebut instruksi tersebut. Cara seperti ini disebut membuat membuat prosedurprosedur. Dengan prosedur tidak . Dengan prosedur tidak perlu lagi menyebutkan sekuens dari kumpulan perlu lagi menyebutkan sekuens dari kumpulan instruksi tersebut tetapi cukup dengan instruksi tersebut tetapi cukup dengan menyebutkan nama (label) prosedurnya saja.menyebutkan nama (label) prosedurnya saja.

Prosedur adalah suatu program yang digunakan Prosedur adalah suatu program yang digunakan oleh program lain sama seperti suatu instruksi. oleh program lain sama seperti suatu instruksi.

Page 5: TOPIK 4

Prosedur sebagai Instruksi Prosedur sebagai Instruksi yang Ditemukan (2)yang Ditemukan (2)

DidefinisikanDidefinisikanProgram 4Program 4: NL;p*;pb;pb;pb;p*: NL;p*;pb;pb;pb;p*Program 5Program 5: NL; p*;p*;p*;p*;p* : NL; p*;p*;p*;p*;p*

Bagaimana cara membuat bentuk di Bagaimana cara membuat bentuk di bawah ini?bawah ini?

********** * ** ** ** * * ** ** ** * *********** ** * * ** *********** * ** *

Page 6: TOPIK 4

Prosedur sebagai Instruksi Prosedur sebagai Instruksi yang Ditemukan (3)yang Ditemukan (3)

Jawab: Jawab: – Program 6Program 6: :

Program 5; Program 4; Program 4; Program 5; Program 4; Program 4;

Program 4; Program 5 Program 4; Program 5 – Program 7Program 7: :

Program 4; Program 4; Program 5; Program 4; Program 4; Program 5;

Program 4; Program 4Program 4; Program 4

Page 7: TOPIK 4

Prosedur sebagai Instruksi Prosedur sebagai Instruksi yang Ditemukan (Latihan 1)yang Ditemukan (Latihan 1)

Buatlah program untuk mencetak Buatlah program untuk mencetak huruf HELLO dalam posisi vertikal. huruf HELLO dalam posisi vertikal. Ukuran tiap huruf 5x5.Ukuran tiap huruf 5x5.

Page 8: TOPIK 4

Notasi Definisi dan Notasi Definisi dan Pemanggilan Prosedur (1)Pemanggilan Prosedur (1)

Suatu prosedur akan selalu dimulai Suatu prosedur akan selalu dimulai dengan kata “def” dan berakhir dengan dengan kata “def” dan berakhir dengan enddef.enddef.

Contoh:Contoh:

def tiga*() = NL;p*;p*;p* enddefdef tiga*() = NL;p*;p*;p* enddef Di sini nama prosedur adalah tiga*. Di sini nama prosedur adalah tiga*. Arti Arti

prosedur diberikan oleh NL;p*;p*;p*. prosedur diberikan oleh NL;p*;p*;p*. Tanda () menunjukkan bahwa bilamana Tanda () menunjukkan bahwa bilamana prosedur ini dipanggil, tak ada parameter prosedur ini dipanggil, tak ada parameter yang dibutuhkan untuk mengeksekusinya.yang dibutuhkan untuk mengeksekusinya.

Page 9: TOPIK 4

Notasi Definisi dan Notasi Definisi dan Pemanggilan Prosedur (2)Pemanggilan Prosedur (2)

Contoh Contoh – untuk Program 3. dapat ditulisuntuk Program 3. dapat ditulis

tiga*();tiga*();tiga*() (tiga*();tiga*();tiga*() (Program 8Program 8))– def H() = t1();t1();t2();t1();t1() enddefdef H() = t1();t1();t2();t1();t1() enddef

def O() = t2();t1();t1();t1();t2() enddef;def O() = t2();t1();t1();t1();t2() enddef;

def t1() = NL;p*;pb;pb;pb;p* enddefdef t1() = NL;p*;pb;pb;pb;p* enddef((Program 9Program 9))

def t2() = NL;p*;p*;p*;p*;p* enddefdef t2() = NL;p*;p*;p*;p*;p* enddef

O(); NL; H() akan menghasilkan huruf O di atas O(); NL; H() akan menghasilkan huruf O di atas H.H.

Page 10: TOPIK 4

Definisi dalam DefinisiDefinisi dalam Definisi (1) (1)

Suatu prosedur dapat berisi definisi Suatu prosedur dapat berisi definisi dari suatu prosedur lain.dari suatu prosedur lain.

Contoh: untuk mencetak pola OH tiga Contoh: untuk mencetak pola OH tiga kali dengan blank memisahkan tiap kali dengan blank memisahkan tiap pola pola

Program dapat dibuat dengan:Program dapat dibuat dengan:

Program 9;NL;Program 9;NL;Program Program 9;NL;Program 9;NL;Program 99

((Program 10Program 10))

Page 11: TOPIK 4

Definisi dalam DefinisiDefinisi dalam Definisi (2) (2) Tapi Program 10 belum merupakan suatu Tapi Program 10 belum merupakan suatu

program yang lengkap karena Program 9 belum program yang lengkap karena Program 9 belum didefinisikan. didefinisikan. Program 11Program 11::def polan() = def polan() = def H() = t1();t1();t2();t1() enddefdef H() = t1();t1();t2();t1() enddefdef O() = t2();t1();t1();t2() enddef;def O() = t2();t1();t1();t2() enddef;def t1() = NL;p*;pb;pb;pb; p* enddef def t1() = NL;p*;pb;pb;pb; p* enddef def t2() = NL;p*;p*;p*;p*;p* enddefdef t2() = NL;p*;p*;p*;p*;p* enddefO(); NL; H()O(); NL; H()enddefenddefpolan();NL;polan();NL;polan()polan();NL;polan();NL;polan()

Page 12: TOPIK 4

Definisi dalam DefinisiDefinisi dalam Definisi (2) (2)

Cara lain: Cara lain: def H() = t1();t1();t2();t1() enddefdef H() = t1();t1();t2();t1() enddefdef O() = t2();t1();t1();t2() enddefdef O() = t2();t1();t1();t2() enddefdef t1() = NL;p*;pb;pb;pb;p* enddef def t1() = NL;p*;pb;pb;pb;p* enddef def t2() = NL;p*;p*;p*;p*;p* def t2() = NL;p*;p*;p*;p*;p* enddefenddef((Program 12Program 12))def polan()= O(); NL; H() enddefdef polan()= O(); NL; H() enddefpolan();NL;polan();NL;polan()polan();NL;polan();NL;polan()

Page 13: TOPIK 4

Prosedur dengan Parameter Prosedur dengan Parameter (1)(1)

def p() = p* enddefdef p() = p* enddef

p(); p(); p() p(); p(); p() ((Program 13Program 13)) Arti dari Program 13 adalah tercetaknya tiga Arti dari Program 13 adalah tercetaknya tiga

*.*. Tetapi dengan nama yang sama dapat Tetapi dengan nama yang sama dapat

didefinisikan p() sbb:didefinisikan p() sbb:

def p() = NL;p*;p*;p* enddefdef p() = NL;p*;p*;p* enddef

p();p();p()p();p();p() ((Program 14Program 14))

di mana arti dari Program 14 adalah di mana arti dari Program 14 adalah mencetak sembilan *.mencetak sembilan *.

Page 14: TOPIK 4

Prosedur dengan Parameter Prosedur dengan Parameter (1)(1)

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

Page 15: TOPIK 4

Prosedur dengan Parameter Prosedur dengan Parameter (2)(2)

Dalam Program 3, urutan instruksi p();p();p() adalah Dalam Program 3, urutan instruksi p();p();p() adalah batang tubuh dari prosedur r3. Setiap prosedur r3(satu), batang tubuh dari prosedur r3. Setiap prosedur r3(satu), r3(dua); r3(tiga) meminta eksekusi dari p();p();p(). Arti p() r3(dua); r3(tiga) meminta eksekusi dari p();p();p(). Arti p() itu sendiri tergantung pada parameter yang disuplai. itu sendiri tergantung pada parameter yang disuplai.

Sebagai contoh:Sebagai contoh:instruksi eksekusi instruksi eksekusi hasil hasilr3(satu) satu(), satu(), satu() ***r3(satu) satu(), satu(), satu() ***r3(dua) dua(), dua(), dua() r3(dua) dua(), dua(), dua() r3(tiga) tiga(),tiga(),tiga() *** r3(tiga) tiga(),tiga(),tiga() *** *** *** *** ***

Page 16: TOPIK 4

Latihan Soal (2)Latihan Soal (2) Definisikan prosedur x, y, dan z sehingga urutan instruksi Definisikan prosedur x, y, dan z sehingga urutan instruksi

BB; r3(x); BB; r3(y); BB; r3(z) mencetak pola di BB; r3(x); BB; r3(y); BB; r3(z) mencetak pola di bawah inibawah ini

* * ** * * ** ** **** ** ** *** *** ****** *** *** Definisikan prosedur r4 sehingga bila diberikan definisi x, Definisikan prosedur r4 sehingga bila diberikan definisi x,

y, dan z, urutan instruksi BB; r4(x); BB; r4(y); BB; r4(z) y, dan z, urutan instruksi BB; r4(x); BB; r4(y); BB; r4(z) akan mencetak polaakan mencetak pola

* * * ** * * * ** ** **** ** ** **** *** *** *** ****** *** *** *** Kalau r3(satu) seperti yang didefinisikan di atas yaitu Kalau r3(satu) seperti yang didefinisikan di atas yaitu

mencetak tiga *. Bila diberikan definisimencetak tiga *. Bila diberikan definisi def A() = r3(satu); r3(satu); r3(satu) enddefdef A() = r3(satu); r3(satu); r3(satu) enddef

Berapa * yang dicetak?Berapa * yang dicetak?

Page 17: TOPIK 4

Tambahan InstruksiTambahan Instruksi Instruksi dengan satu argumen karakter: pc(‘ ‘): Instruksi dengan satu argumen karakter: pc(‘ ‘):

print karakter. Akan mencetak karakter yang print karakter. Akan mencetak karakter yang diberikan di dalam tanda kurung.diberikan di dalam tanda kurung.

Contoh:Contoh:pc(‘*’) pc(‘*’) * *pc(‘ ‘) pc(‘ ‘) satu space satu spacepc(‘+’) pc(‘+’) + +def tiga(c) = pc(c); pc(c); pc(c) enddefdef tiga(c) = pc(c); pc(c); pc(c) enddef

Maka tiga (‘9’) akan mencetak 999 sebab Maka tiga (‘9’) akan mencetak 999 sebab parameter c disubstitusi menjadi 9 ke dalam parameter c disubstitusi menjadi 9 ke dalam batang tubuh dari prosedur tiga menjadi urutan batang tubuh dari prosedur tiga menjadi urutan instruksi:instruksi:

pc(‘9’); pc(‘9’); pc(‘9’)pc(‘9’); pc(‘9’); pc(‘9’)

Page 18: TOPIK 4

Tambahan InstruksiTambahan Instruksi (Latihan (Latihan 3)3)

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

Page 19: TOPIK 4

Nilai Prosedur yang Nilai Prosedur yang Mengambil ArgumenMengambil Argumen (1) (1)

def kedua(x) = x(‘*’); x(‘+’) enddefdef kedua(x) = x(‘*’); x(‘+’) enddef Bila diberikan definisi satu() dalam Bila diberikan definisi satu() dalam

Program 3, maka kedua(satu) tidak akan Program 3, maka kedua(satu) tidak akan masuk akal sebab satu(‘*’) dan satu(‘+’) masuk akal sebab satu(‘*’) dan satu(‘+’) tidak masuk akal. tidak masuk akal.

Tetapi kedua(pc) masuk akal dan akan Tetapi kedua(pc) masuk akal dan akan mencetak * dan +.mencetak * dan +.

Begitu juga dengan kedua(segiempat) Begitu juga dengan kedua(segiempat) masuk akal dan akan mencetak segiempat masuk akal dan akan mencetak segiempat * dan +.* dan +.

Page 20: TOPIK 4

Nilai Prosedur yang Nilai Prosedur yang Mengambil ArgumenMengambil Argumen (2) (2)

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

Page 21: TOPIK 4

Nilai Prosedur yang Nilai Prosedur yang Mengambil ArgumenMengambil Argumen (3) (3)

Diberikan definisiDiberikan definisidef quote(c) = NL; pc(‘’’) pc(c); pc(‘’’) def quote(c) = NL; pc(‘’’) pc(c); pc(‘’’) enddefenddefdef x() = p* enddefdef x() = p* enddef

Prosedur quote adalah suatu Prosedur quote adalah suatu prosedur yang membutuhkan prosedur yang membutuhkan argumen karakter yang dipakai pada argumen karakter yang dipakai pada urutan instruksi ketiga yaitu pc(c)urutan instruksi ketiga yaitu pc(c)

c bukan nama prosedur.c bukan nama prosedur.

Page 22: TOPIK 4

Nilai Prosedur yang Nilai Prosedur yang Mengambil ArgumenMengambil Argumen (4) (4)

Mana yang masuk akal?Mana yang masuk akal?– quote(‘x’); masuk akal karena ‘x’ adalah quote(‘x’); masuk akal karena ‘x’ adalah

nilai bukan prosedur.nilai bukan prosedur.– quote(‘*’); idemquote(‘*’); idem– quote(‘c’); idemquote(‘c’); idem– quote(c); tidak masuk akal karena c quote(c); tidak masuk akal karena c

bukan nilai dan tidak didefinisikan.bukan nilai dan tidak didefinisikan.– quote(x); tidak masuk akal karena x quote(x); tidak masuk akal karena x

adalah proseduradalah prosedur

Page 23: TOPIK 4

Prosedur Berparameter Prosedur Berparameter BanyakBanyak

def sandwich(selei,roti)=roti();selei();roti() def sandwich(selei,roti)=roti();selei();roti() enddefenddef

Prosedur membutuhkan dua nilai argumen Prosedur membutuhkan dua nilai argumen yang masing-masing adalah suatu prosedur. yang masing-masing adalah suatu prosedur.

Bila diberikan definisi sbb:Bila diberikan definisi sbb:def pO()=pc(‘O’) enddefdef pO()=pc(‘O’) enddefdef pX() = pc(‘X’) enddefdef pX() = pc(‘X’) enddefmaka:maka:sandwich(pX,pO) mencetak OXO sandwich(pX,pO) mencetak OXO sandwich(pO,pX) mencetak XOX sandwich(pO,pX) mencetak XOX sandwich(pO,pO) mencetak OOOsandwich(pO,pO) mencetak OOO

Page 24: TOPIK 4

Prosedur Berparameter BanyakProsedur Berparameter Banyak (Latihan 4)(Latihan 4)

Diberikan definisi Diberikan definisi prosedur sandwich: prosedur sandwich:

def sandwich(selei,roti)=roti();selei();roti() enddefdef sandwich(selei,roti)=roti();selei();roti() enddef

dan prosedur bigmac:dan prosedur bigmac:def bigmac(f1,f2,bread)=bread();f1();bread();f2();bread() def bigmac(f1,f2,bread)=bread();f1();bread();f2();bread() enddefenddef

Cari arti dari program di bawah ini:Cari arti dari program di bawah ini:def a() = pc(‘a’) enddefdef a() = pc(‘a’) enddefdef b() = pc(‘b’) enddefdef b() = pc(‘b’) enddefdef c() = pc(‘c’) enddefdef c() = pc(‘c’) enddefdef satu() = sandwich(a,b) enddefdef satu() = sandwich(a,b) enddefdef dua() = bigmac(c,a,b) enddefdef dua() = bigmac(c,a,b) enddefsandwich(satu, dua) sandwich(satu, dua) ((Program 16Program 16))

Page 25: TOPIK 4

Latihan (5)Latihan (5) Buat programnya dengan Buat programnya dengan sandwich (tengah, luar)sandwich (tengah, luar)

** ** I ** I ****** ** ** II** II ****** ** ** I** I ******

Page 26: TOPIK 4

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

Page 27: TOPIK 4

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

adalah?adalah?

Page 28: TOPIK 4

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

Page 29: TOPIK 4

if (a and not (not c and not b)) or not ((c and b) or if (a and not (not c and not b)) or not ((c and b) or not a) not a) then writeln('merah')then writeln('merah')

else writeln('putih');else writeln('putih');Agar algoritma itu selalu menuliskan 'merah' maka Agar algoritma itu selalu menuliskan 'merah' maka

kondisi yang tepat adalah:kondisi yang tepat adalah: a dan c keduanya harus true sementara b tidak a dan c keduanya harus true sementara b tidak

penting penting b berharga true yang lain tidak penting b berharga true yang lain tidak penting a berharga true yang lain tidak penting a berharga true yang lain tidak penting c berharga true yang lain tidak penting c berharga true yang lain tidak penting b berharga false yang lain tidak penting b berharga false yang lain tidak penting

Page 30: TOPIK 4

x = 0 x = 0 function f() function f() x = x + 1 x = x + 1 function g() function g() f(); f() f(); f() function h() function h() f(); g(); f() f(); g(); f()

beginbeginf(); write(x) f(); write(x) g(); write(x) g(); write(x) h(); write(x) h(); write(x)

What will be printed by the pseudocode above? What will be printed by the pseudocode above?