MATERI 3 PROSEDUR
Instruksi Dasar (1) Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan program dasar: print*    mencetak satu * dan membuat kursor maju satu langkah. (print* = p*) prints    mencetak satu space kosong dan maju satu langkah. (prints = ps) NL    return ke baris berikutnya
Instruksi Dasar (2) Contoh NL; p*;p*;p* NL; p*;p*;p*  ( Program 3.1 ) NL; p*;p*;p* Disederhanakan:   NL; p*;p*;p* (P rogram 3.2 ) Program 3.2; Program 3.2; Program 3.2 ( Program 3.3 )
Prosedur (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 sebuah instruksi.
Prosedur sebagai Instruksi (2)  Didefinisikan Program 3.4 :  NL;p*;ps;ps;ps;p* Program 3.5 :  NL; p*;p*;p*;p*;p*  Bagaimana cara membuat bentuk di bawah ini? ***** *  * *  * *  * *  * ***** *  * *  * ***** *  *
Prosedur sebagai Instruksi (3) Jawab:  Program 3.6 :  Program 3.5; Program 3.4; Program 3.4;  Program 3.4; Program 3.5  Program 3.7 :  Program 3.4; Program 3.4; Program 3.5;  Program 3.4; Program 3.4
Prosedur sebagai Instruksi   (Latihan) Buatlah program untuk mencetak huruf  HELLO dalam posisi vertikal. Ukuran tiap huruf 5x5.
Notasi Definisi dan  Pemanggilan Prosedur (1) Suatu prosedur akan selalu dimulai dengan kata “ def ” dan berakhir dengan  enddef . Contoh: def threestars()  = NL;p*;p*;p*  enddef Nama prosedur adalah  threestars  .  Arti prosedur diberikan oleh  NL;p*;p*;p*  Tanda () menunjukkan bahwa bilamana prosedur ini dipanggil, tak ada parameter yang dibutuhkan untuk mengeksekusinya.
Notasi Definisi dan  Pemanggilan Prosedur (2) Contoh  untuk Program 3.3. dapat ditulis threestars();threestars();threestars();  Program 3.8 ) def H() = t1();t1();t2();t1() enddef def O() = t2();t1();t1();t2() enddef; def t1() =  NL;p*;ps;ps;ps;p*  enddef  ( Program 3.9 ) def t2() =  NL; p*;p*;p*;p*;p*  enddef O(); NL; H() akan menghasilkan huruf O di atas H .
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 3.9;NL;Program 3.9;NL;Program 3.9 ( Program 3.10 )
Definisi dalam Definisi  (2) Contoh: Program 3.11 : def pattern() =  def H() = t1();t1();t2();t1(); enddef def O() = t2();t1();t1();t2(); enddef def t1() = NL;p*;ps;ps;ps;p*; enddef  def t2() = NL;p*;p*;p*;p*;p*; enddef O(); NL; H() enddef pattern(); NL;pattern();NL;pattern()
Definisi dalam Definisi  (2) Cara lain:  def H() = t1();t1();t2();t1() enddef def O() = t2();t1();t1();t2() enddef def t1() = NL;p*;ps;ps;ps;p* enddef  def t2() = NL;p*;p*;p*;p*;p* enddef ( Program 3.12 ) def pattern()= O(); NL; H() enddef pattern();NL;pattern();NL;pattern()
Prosedur dengan Parameter (1) def p() = p* enddef p(); p(); p()  ( Program 3.13 ) Arti dari Program 3.13 adalah tercetaknya tiga *. Tetapi dengan nama yang sama dapat didefinisikan p() sbb: def p() = NL;p*;p*;p* enddef p();p();p() ( Program 3.14 ) di mana arti dari Program 3.14 adalah mencetak sembilan *.
MATERI 4 PROSEDUR DENGAN PARAMETER
Prosedur dengan Parameter (1) Perhatikan lagi prosedur berikut ini : def p() = p* enddef p(); p(); p()  ( Program 4.1 ) def p() = NL;p*;p*;p* enddef p();p();p() ( Program 4.2 )
Prosedur dengan Parameter (2) Prosedur p() dalam Program 4.1 dan 4.2 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 one() = p* enddef def two() = NL enddef def three() = NL; p*;p*;p* enddef r3(one); r3(two); r3(three)  ( Program 4.3 )
Prosedur dengan Parameter (3) Dalam Program 4. 3:   urutan instruksi p();p();p() adalah batang tubuh dari prosedur r3.  Setiap prosedur r3(one), r3(two); r3(three) meminta eksekusi dari p();p();p().  Arti p() itu sendiri tergantung pada parameter yang disuplai.  Sebagai contoh: instruksi  eksekusi  hasil r3(one)  one(), one(), one()  *** r3(two)  two(), two(), two()  r3(three)  three(), three(), three()  ***    ***    ***
Latihan Soal Definisikan prosedur x, y, dan z sehingga urutan instruksi NL; r3(x); NL; r3(y);NL; r3(z) mencetak pola di bawah ini *  *  * **  **  ** ***  ***  *** Definisikan prosedur r4 sehingga bila diberikan definisi x, y, dan z dari soal 1, urutan instruksi NL; r4(x); NL; r4(y);NL; r4(z) akan mencetak pola *  *  *  * **  **  **  ** ***  ***  ***  *** Kalau r3(one) seperti yang didefinisikan di atas yaitu mencetak satu *. Bila diberikan definisi def A() = r3(one); r3(one); r3(one); enddef Berapa * yang dicetak?
Tambahan Instruksi (1) Instruksi dengan satu argumen karakter:  pc(‘ ‘): print karakter. Akan mencetak karakter yang diberikan di dalam tanda kurung. Contoh: pc(‘*’)    * pc(‘ ‘)    satu space pc(‘+’)    + def threec(c) = pc(c); pc(c); pc(c) enddef Maka threec (‘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’)
Tambahan Instruksi (2) Instruksi dengan satu argumen string:  pstring(‘ ‘): print string. Akan mencetak string yang diberikan di dalam tanda kurung. Contoh: pstring(‘good’);ps;pstring(‘morning’);
Tambahan Instruksi  (Latihan) Tulis definisi dari prosedur segiempat agar supaya setiap pemanggilan : segiempat(‘*’) akan mencetak suatu segiempat berukuran 3x3 *,  suatu segiempat(‘+’) akan menghasilkan segiempat 3x3 +.
Nilai Prosedur yang  Mengambil Argumen  (1) def  twice(x) = x(‘*’); x(‘+’) enddef Bila diberikan definisi one() dalam Program 4.3, maka twice(one) tidak akan masuk akal sebab one(‘*’) dan one(‘+’) tidak masuk akal.  Tetapi twice(pc) masuk akal dan akan mencetak * dan +. Begitu juga dengan twice(segiempat) masuk akal dan akan mencetak segiempat * dan +.
Nilai Prosedur yang  Mengambil Argumen  (2) Jadi dengan melihat pada definisi prosedur twice, terlihat bahwa parameter prosedur ini adalah suatu prosedur.  Prosedur yang disuplai haruslah prosedur yang menerima karakter sebagai argumennya.  Bila diberikan twice(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.
Nilai Prosedur yang  Mengambil Argumen  (3) Diberikan definisi def quote(c) = NL;pc(‘’’);pc(c); pc(‘’’) enddef def x() = p* enddef quote(‘x’);quote(‘*’);quote(‘c’);quote(‘c’);quote(x); Prosedur quote adalah suatu prosedur yang membutuhkan argumen karakter yang dipakai pada urutan instruksi ketiga yaitu pc(c) c bukan nama prosedur.
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
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
Prosedur Berparameter Banyak  (Latihan) Diberikan definisi prosedur sandwich (selai,roti) 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 one() = sandwich(a,b) enddef def two() = bigmac(c,a,b) enddef sandwich(one, two)  ( Program 4.4 )
Latihan Buat programnya dengan  sandwich (tengah, luar)       * **  I  *** * **  II *** * **  I ***

Materi 3&4 prosedur

  • 1.
  • 2.
    Instruksi Dasar (1)Tiga jenis instruksi di bawah ini akan dipakai untuk merencanakan program dasar: print*  mencetak satu * dan membuat kursor maju satu langkah. (print* = p*) prints  mencetak satu space kosong dan maju satu langkah. (prints = ps) NL  return ke baris berikutnya
  • 3.
    Instruksi Dasar (2)Contoh NL; p*;p*;p* NL; p*;p*;p* ( Program 3.1 ) NL; p*;p*;p* Disederhanakan: NL; p*;p*;p* (P rogram 3.2 ) Program 3.2; Program 3.2; Program 3.2 ( Program 3.3 )
  • 4.
    Prosedur (1) Kesulitandalam 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 sebuah instruksi.
  • 5.
    Prosedur sebagai Instruksi(2) Didefinisikan Program 3.4 : NL;p*;ps;ps;ps;p* Program 3.5 : NL; p*;p*;p*;p*;p* Bagaimana cara membuat bentuk di bawah ini? ***** * * * * * * * * ***** * * * * ***** * *
  • 6.
    Prosedur sebagai Instruksi(3) Jawab: Program 3.6 : Program 3.5; Program 3.4; Program 3.4; Program 3.4; Program 3.5 Program 3.7 : Program 3.4; Program 3.4; Program 3.5; Program 3.4; Program 3.4
  • 7.
    Prosedur sebagai Instruksi (Latihan) 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 threestars() = NL;p*;p*;p* enddef Nama prosedur adalah threestars . 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.3. dapat ditulis threestars();threestars();threestars(); Program 3.8 ) def H() = t1();t1();t2();t1() enddef def O() = t2();t1();t1();t2() enddef; def t1() = NL;p*;ps;ps;ps;p* enddef ( Program 3.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 3.9;NL;Program 3.9;NL;Program 3.9 ( Program 3.10 )
  • 11.
    Definisi dalam Definisi (2) Contoh: Program 3.11 : def pattern() = def H() = t1();t1();t2();t1(); enddef def O() = t2();t1();t1();t2(); enddef def t1() = NL;p*;ps;ps;ps;p*; enddef def t2() = NL;p*;p*;p*;p*;p*; enddef O(); NL; H() enddef pattern(); NL;pattern();NL;pattern()
  • 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*;ps;ps;ps;p* enddef def t2() = NL;p*;p*;p*;p*;p* enddef ( Program 3.12 ) def pattern()= O(); NL; H() enddef pattern();NL;pattern();NL;pattern()
  • 13.
    Prosedur dengan Parameter(1) def p() = p* enddef p(); p(); p() ( Program 3.13 ) Arti dari Program 3.13 adalah tercetaknya tiga *. Tetapi dengan nama yang sama dapat didefinisikan p() sbb: def p() = NL;p*;p*;p* enddef p();p();p() ( Program 3.14 ) di mana arti dari Program 3.14 adalah mencetak sembilan *.
  • 14.
    MATERI 4 PROSEDURDENGAN PARAMETER
  • 15.
    Prosedur dengan Parameter(1) Perhatikan lagi prosedur berikut ini : def p() = p* enddef p(); p(); p() ( Program 4.1 ) def p() = NL;p*;p*;p* enddef p();p();p() ( Program 4.2 )
  • 16.
    Prosedur dengan Parameter(2) Prosedur p() dalam Program 4.1 dan 4.2 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 one() = p* enddef def two() = NL enddef def three() = NL; p*;p*;p* enddef r3(one); r3(two); r3(three) ( Program 4.3 )
  • 17.
    Prosedur dengan Parameter(3) Dalam Program 4. 3: urutan instruksi p();p();p() adalah batang tubuh dari prosedur r3. Setiap prosedur r3(one), r3(two); r3(three) meminta eksekusi dari p();p();p(). Arti p() itu sendiri tergantung pada parameter yang disuplai. Sebagai contoh: instruksi eksekusi hasil r3(one) one(), one(), one() *** r3(two) two(), two(), two() r3(three) three(), three(), three() *** *** ***
  • 18.
    Latihan Soal Definisikanprosedur x, y, dan z sehingga urutan instruksi NL; r3(x); NL; r3(y);NL; r3(z) mencetak pola di bawah ini * * * ** ** ** *** *** *** Definisikan prosedur r4 sehingga bila diberikan definisi x, y, dan z dari soal 1, urutan instruksi NL; r4(x); NL; r4(y);NL; r4(z) akan mencetak pola * * * * ** ** ** ** *** *** *** *** Kalau r3(one) seperti yang didefinisikan di atas yaitu mencetak satu *. Bila diberikan definisi def A() = r3(one); r3(one); r3(one); enddef Berapa * yang dicetak?
  • 19.
    Tambahan Instruksi (1)Instruksi dengan satu argumen karakter: pc(‘ ‘): print karakter. Akan mencetak karakter yang diberikan di dalam tanda kurung. Contoh: pc(‘*’)  * pc(‘ ‘)  satu space pc(‘+’)  + def threec(c) = pc(c); pc(c); pc(c) enddef Maka threec (‘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’)
  • 20.
    Tambahan Instruksi (2)Instruksi dengan satu argumen string: pstring(‘ ‘): print string. Akan mencetak string yang diberikan di dalam tanda kurung. Contoh: pstring(‘good’);ps;pstring(‘morning’);
  • 21.
    Tambahan Instruksi (Latihan) Tulis definisi dari prosedur segiempat agar supaya setiap pemanggilan : segiempat(‘*’) akan mencetak suatu segiempat berukuran 3x3 *, suatu segiempat(‘+’) akan menghasilkan segiempat 3x3 +.
  • 22.
    Nilai Prosedur yang Mengambil Argumen (1) def twice(x) = x(‘*’); x(‘+’) enddef Bila diberikan definisi one() dalam Program 4.3, maka twice(one) tidak akan masuk akal sebab one(‘*’) dan one(‘+’) tidak masuk akal. Tetapi twice(pc) masuk akal dan akan mencetak * dan +. Begitu juga dengan twice(segiempat) masuk akal dan akan mencetak segiempat * dan +.
  • 23.
    Nilai Prosedur yang Mengambil Argumen (2) Jadi dengan melihat pada definisi prosedur twice, terlihat bahwa parameter prosedur ini adalah suatu prosedur. Prosedur yang disuplai haruslah prosedur yang menerima karakter sebagai argumennya. Bila diberikan twice(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.
  • 24.
    Nilai Prosedur yang Mengambil Argumen (3) Diberikan definisi def quote(c) = NL;pc(‘’’);pc(c); pc(‘’’) enddef def x() = p* enddef quote(‘x’);quote(‘*’);quote(‘c’);quote(‘c’);quote(x); Prosedur quote adalah suatu prosedur yang membutuhkan argumen karakter yang dipakai pada urutan instruksi ketiga yaitu pc(c) c bukan nama prosedur.
  • 25.
    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
  • 26.
    Prosedur Berparameter Banyakdef 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
  • 27.
    Prosedur Berparameter Banyak (Latihan) Diberikan definisi prosedur sandwich (selai,roti) 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 one() = sandwich(a,b) enddef def two() = bigmac(c,a,b) enddef sandwich(one, two) ( Program 4.4 )
  • 28.
    Latihan Buat programnyadengan sandwich (tengah, luar) * ** I *** * ** II *** * ** I ***