materi 8

25
MATERI MATERI 8 8 PROGRAM SEBAGAI PROGRAM SEBAGAI LOGIKA INSTRUKSI LOGIKA INSTRUKSI

Upload: hiero

Post on 21-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

MATERI 8. PROGRAM SEBAGAI LOGIKA INSTRUKSI. Instruksi Dasar (1). Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan program kita: c*  mencetak satu * dan membuat kursor maju satu langkah. cb  mencetak satu space kosong dan maju satu langkah. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MATERI  8

MATERI MATERI 88

PROGRAM SEBAGAI PROGRAM SEBAGAI

LOGIKA INSTRUKSILOGIKA INSTRUKSI

Page 2: MATERI  8

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:– c* c* mencetak satu * dan membuat mencetak satu * dan membuat

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

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

Page 3: MATERI  8

Instruksi Dasar (2)Instruksi Dasar (2)

ContohContoh

BB; c*;c*;c*BB; c*;c*;c*

BB; c*;c*;c* (BB; c*;c*;c* (Program 4.1Program 4.1))

BB; c*;c*;c*BB; c*;c*;c*

Disederhanakan:Disederhanakan:

BB; c*;c*;c* (PBB; c*;c*;c* (Program 4.2rogram 4.2))

Program 4.2; Program 4.2; Program 4.2 Program 4.2; Program 4.2; Program 4.2 ((Program 4.3Program 4.3))

*********

******

* *****

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

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

g

***** *****

******

*** ** *

Page 4: MATERI  8

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

Kesulitan dalam mengingat urutan Kesulitan dalam mengingat urutan sekumpulan instruksi menghasilkan sekumpulan instruksi menghasilkan pemikiran untuk memberi nama (label) pemikiran untuk memberi nama (label) kepada kumpulan instruksi tersebut. kepada kumpulan instruksi tersebut.

Cara seperti ini disebut membuat Cara seperti ini disebut membuat prosedurprosedur. . Dengan prosedur tidak perlu lagi Dengan prosedur tidak perlu lagi

menyebutkan sekuens dari kumpulan 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 Prosedur adalah suatu program yang digunakan oleh program lain sama seperti digunakan oleh program lain sama seperti suatu instruksi. suatu instruksi.

Page 5: MATERI  8

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

DidefinisikanDidefinisikanProgram 4.4Program 4.4: BB;c*;cb;cb;cb;c*: BB;c*;cb;cb;cb;c*Program 4.5Program 4.5: BB; c*;c*;c*;c*;c* : BB; c*;c*;c*;c*;c*

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

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

Page 6: MATERI  8

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

Jawab: Jawab: – Program 4.6Program 4.6: :

Program 4.5; Program 4.4; Program 4.4; Program 4.5; Program 4.4; Program 4.4;

Program 4.4; Program 4.5 Program 4.4; Program 4.5 – Program 4.7Program 4.7: :

Program 4.4; Program 4.4; Program 4.5; Program 4.4; Program 4.4; Program 4.5;

Program 4.4; Program 4.4Program 4.4; Program 4.4

Page 7: MATERI  8

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

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: MATERI  8

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 akhdef.akhdef.

Contoh:Contoh:

def tiga*() = BB;c*;c*;c* akhdefdef tiga*() = BB;c*;c*;c* akhdef Di sini nama prosedur adalah tiga*. Di sini nama prosedur adalah tiga*.

– Arti prosedur diberikan oleh Arti prosedur diberikan oleh BB;c*;c*;c* BB;c*;c*;c* – Tanda () menunjukkan bahwa bilamana Tanda () menunjukkan bahwa bilamana

prosedur ini dipanggil, tak ada parameter yang prosedur ini dipanggil, tak ada parameter yang dibutuhkan untuk mengeksekusinya.dibutuhkan untuk mengeksekusinya.

Page 9: MATERI  8

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

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

tiga*();tiga*();tiga*() (tiga*();tiga*();tiga*() (Program 4.8Program 4.8))– def H() = t1();t1();t2();t1() akhdefdef H() = t1();t1();t2();t1() akhdef

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

def t1() = def t1() = BB;c*;cb;cb;cb;c*BB;c*;cb;cb;cb;c* akhdef ( akhdef (Program Program 4.94.9))

def t2() = def t2() = BB; c*;c*;c*;c*;c* BB; c*;c*;c*;c*;c* akhdefakhdef

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

Page 10: MATERI  8

Definisi dalam DefinisiDefinisi dalam Definisi (1) (1)

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

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

Program dapat dibuat dengan:Program dapat dibuat dengan:

Program 4.9;BB;Program Program 4.9;BB;Program 4.9;BB;Program 4.94.9;BB;Program 4.9

((Program 4.10Program 4.10))

Page 11: MATERI  8

Definisi dalam DefinisiDefinisi dalam Definisi (2) (2) Program 4.10 belum merupakan suatu program Program 4.10 belum merupakan suatu program

yang lengkap karena Program 4.9 belum yang lengkap karena Program 4.9 belum didefinisikan. didefinisikan. Program 4.11Program 4.11::def polan() = def polan() = def H() = t1();t1();t2();t1() akhdefdef H() = t1();t1();t2();t1() akhdefdef O() = t2();t1();t1();t2() akhdef;def O() = t2();t1();t1();t2() akhdef;def t1() = BB;c*;cb;cb;cb; c* akhdef def t1() = BB;c*;cb;cb;cb; c* akhdef def t2() = BB;c*;c*;c*;c*;c* akhdefdef t2() = BB;c*;c*;c*;c*;c* akhdefO(); BB; H()O(); BB; H()akhdefakhdefpolan(); BB;polan();BB;polan()polan(); BB;polan();BB;polan()

Page 12: MATERI  8

Definisi dalam DefinisiDefinisi dalam Definisi (2) (2)

Cara lain: Cara lain: def H() = t1();t1();t2();t1() akhdefdef H() = t1();t1();t2();t1() akhdefdef O() = t2();t1();t1();t2() akhdefdef O() = t2();t1();t1();t2() akhdefdef t1() = BB;c*;cb;cb;cb;c* akhdef def t1() = BB;c*;cb;cb;cb;c* akhdef def t2() = BB;c*;c*;c*;c*;c* def t2() = BB;c*;c*;c*;c*;c* akhdefakhdef((Program 4.12Program 4.12))def polan()= O(); BB; H() akhdefdef polan()= O(); BB; H() akhdefpolan();BB;polan();BB;polan()polan();BB;polan();BB;polan()

Page 13: MATERI  8

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

def p() = c* akhdefdef p() = c* akhdef

p(); p(); p() p(); p(); p() ((Program 4.13Program 4.13)) Arti dari Program 4.13 adalah tercetaknya Arti dari Program 4.13 adalah tercetaknya

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

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

def p() = BB;c*;c*;c* akhdefdef p() = BB;c*;c*;c* akhdef

p();p();p()p();p();p() ((Program 4.14Program 4.14))

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

Page 14: MATERI  8

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

Namun p() dalam Program 4.13 dan 4.14 Namun p() dalam Program 4.13 dan 4.14 selalu mempunyai arti yang tetap. Sekali selalu 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() akhdefdef r3(p) = p();p();p() akhdefdef satu() = c* akhdefdef satu() = c* akhdefdef dua() = BB akhdefdef dua() = BB akhdefdef tiga() = BB; c*;c*;c* akhdefdef tiga() = BB; c*;c*;c* akhdefr3(satu); r3(dua); r3(tiga) r3(satu); r3(dua); r3(tiga) ((Program 4.15Program 4.15))

Page 15: MATERI  8

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

Dalam Program 4.13:Dalam Program 4.13:

– urutan instruksi p();p();p() adalah batang urutan instruksi p();p();p() adalah batang tubuh dari prosedur r3. tubuh dari prosedur r3.

– Setiap prosedur r3(satu), r3(dua); r3(tiga) Setiap prosedur r3(satu), r3(dua); r3(tiga) meminta eksekusi dari p();p();p(). meminta eksekusi dari p();p();p().

– Arti p() itu sendiri tergantung pada Arti p() itu sendiri tergantung pada parameter yang disuplai. 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: MATERI  8

Latihan SoalLatihan Soal Definisikan prosedur x, y, dan z sehingga urutan Definisikan prosedur x, y, dan z sehingga urutan

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

* * ** * * ** ** **** ** ** *** *** ****** *** *** Definisikan prosedur r4 sehingga bila diberikan Definisikan prosedur r4 sehingga bila diberikan

definisi x, y, dan z dari soal 1, urutan instruksi BB; definisi x, y, dan z dari soal 1, urutan instruksi BB; r4(x); BB; r4(y);BB; r4(z) akan mencetak polar4(x); BB; r4(y);BB; r4(z) akan mencetak pola

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

yaitu mencetak satu *. Bila diberikan definisiyaitu mencetak satu *. Bila diberikan definisi def A() = r3(satu); r3(satu); r3(satu); r3(satu) def A() = r3(satu); r3(satu); r3(satu); r3(satu)

akhdefakhdefBerapa * yang dicetak?Berapa * yang dicetak?

Page 17: MATERI  8

Tambahan InstruksiTambahan Instruksi Instruksi dengan satu argumen karakter: Instruksi dengan satu argumen karakter:

– cc(‘ ‘): print karakter. Akan mencetak karakter cc(‘ ‘): print karakter. Akan mencetak karakter yang diberikan di dalam tanda kurung.yang diberikan di dalam tanda kurung.

Contoh:Contoh:cc(‘*’) cc(‘*’) * *cc(‘ ‘) cc(‘ ‘) satu space satu spacecc(‘+’) cc(‘+’) + +def tiga(c) = cc(c); cc(c); cc(c) akhdefdef tiga(c) = cc(c); cc(c); cc(c) akhdef

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

cc(‘9’); cc(‘9’); cc(‘9’)cc(‘9’); cc(‘9’); cc(‘9’)

Page 18: MATERI  8

Tambahan InstruksiTambahan Instruksi (Latihan)(Latihan)

Tulis definisi dari prosedur segiempat Tulis definisi dari prosedur segiempat agar supaya setiap pemanggilan :agar supaya setiap pemanggilan :– segiempat(‘*’) akan mencetak segiempat(‘*’) akan mencetak

suatu segiempat berukuran 3x3 *, suatu segiempat berukuran 3x3 *, – suatu segiempat(‘+’) akan suatu segiempat(‘+’) akan

menghasilkan segiempat 3x3 +. menghasilkan segiempat 3x3 +.

Page 19: MATERI  8

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 4.3, maka kedua(satu) tidak akan Program 4.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(cc) masuk akal dan akan Tetapi kedua(cc) 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: MATERI  8

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. ini adalah suatu prosedur.

Prosedur yang disuplai haruslah prosedur Prosedur yang disuplai haruslah prosedur yang menerima karakter sebagai yang menerima karakter sebagai argumennya. argumennya.

Bila diberikan kedua(r3) di mana r3 telah Bila 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: MATERI  8

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

Diberikan definisiDiberikan definisi

def quote(c) = BB; cc(‘’’) cc(c); cc(‘’’) def quote(c) = BB; cc(‘’’) cc(c); cc(‘’’) akhdefakhdef

def x() = c* akhdefdef x() = c* akhdef Prosedur quote adalah suatu prosedur Prosedur quote adalah suatu prosedur

yang membutuhkan argumen karakter yang membutuhkan argumen karakter yang dipakai pada urutan instruksi ketiga yang dipakai pada urutan instruksi ketiga yaitu cc(c)yaitu cc(c)

c bukan nama prosedur.c bukan nama prosedur.

Page 22: MATERI  8

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: MATERI  8

Prosedur Berparameter Prosedur Berparameter BanyakBanyak

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

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() = cc(‘O’) akhdefdef pO() = cc(‘O’) akhdef

def pX() = cc(‘X’) akhdefdef pX() = cc(‘X’) akhdef

maka:maka:

sandwich(pX,pO) mencetak OXOsandwich(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: MATERI  8

Prosedur Berparameter BanyakProsedur Berparameter Banyak (Latihan)(Latihan)

Diberikan definisi prosedur sandwich (idem) Diberikan definisi prosedur sandwich (idem) dan prosedur bigmac:dan prosedur bigmac:

def bigmac(f1, f2, bread) = bread(); f1(); bread(); def bigmac(f1, f2, bread) = bread(); f1(); bread(); f2(); f2();

bread() akhdefbread() akhdef Cari arti dari program di bawah ini:Cari arti dari program di bawah ini:

def a() = cc(‘a’) akhdefdef a() = cc(‘a’) akhdefdef b() = cc(‘b’) akhdefdef b() = cc(‘b’) akhdefdef c() = cc(‘c’) akhdefdef c() = cc(‘c’) akhdefdef satu() = sandwich(a,b) akhdefdef satu() = sandwich(a,b) akhdefdef dua() = bigmac(c,a,b) akhdefdef dua() = bigmac(c,a,b) akhdefsandwich(satu, dua) sandwich(satu, dua) ((Program 4.16Program 4.16))

Page 25: MATERI  8

LatihanLatihan Buat programnya dengan Buat programnya dengan sandwich (tengah, luar)sandwich (tengah, luar)

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