TOPIK 4
TOPIK 4
PROGRAM SEBAGAI
PROGRAM SEBAGAI
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.
Instruksi Dasar (2)
Program 2; Program 2; Program 2 (
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
prosedur
prosedur
. 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.
Prosedur sebagai Instruksi
Prosedur sebagai Instruksi
yang Ditemukan (2)
yang Ditemukan (2)
Didefinisikan
Didefinisikan
Program 4
Program 4
: NL;p*;pb;pb;pb;p*
: NL;p*;pb;pb;pb;p*
Program 5
Program 5
: NL; p*;p*;p*;p*;p*
: NL; p*;p*;p*;p*;p*
Bagaimana cara membuat bentuk di bawah
Bagaimana cara membuat bentuk di bawah
ini?
ini?
*****
*****
* *
* *
* *
* *
* *
* *
* *
* *
*****
*****
* *
* *
* *
* *
*****
Prosedur sebagai Instruksi
Prosedur sebagai Instruksi
yang Ditemukan (3)
yang Ditemukan (3)
Jawab:
Jawab:
–
Program 6
Program 6
:
:
Program 5; Program 4; Program 4;
Program 5; Program 4; Program 4;
Program 4; Program 5
Program 4; Program 5
–
Program 7
Program 7
:
:
Program 4; Program 4; Program 5;
Program 4; Program 4; Program 5;
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.
Notasi Definisi dan
Notasi Definisi dan
Pemanggilan Prosedur (1)
Pemanggilan Prosedur (1)
Suatu prosedur akan selalu dimulai dengan
Suatu prosedur akan selalu dimulai dengan
kata “def” dan berakhir dengan enddef.
kata “def” dan berakhir dengan enddef.
Contoh:
Contoh:
def tiga*() = NL;p*;p*;p* enddef
def 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*. Tanda
prosedur diberikan oleh NL;p*;p*;p*. Tanda
() menunjukkan bahwa bilamana prosedur
() menunjukkan bahwa bilamana prosedur
ini dipanggil, tak ada parameter yang
ini dipanggil, tak ada parameter yang
dibutuhkan untuk mengeksekusinya.
Notasi Definisi dan
Notasi Definisi dan
Pemanggilan Prosedur (2)
Pemanggilan Prosedur (2)
Contoh
Contoh
–
untuk Program 3. dapat ditulis
untuk Program 3. dapat ditulis
tiga*();tiga*();tiga*() (
tiga*();tiga*();tiga*() (
Program 8
Program 8
)
)
–
def H() = t1();t1();t2();t1();t1() enddef
def 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* enddef
def t1() = NL;p*;pb;pb;pb;p* enddef
(
(
Program
Program
9
9
)
)
def t2() = NL;p*;p*;p*;p*;p* enddef
def 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.
Definisi dalam Definisi
Definisi 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 9
Program 9;NL;Program 9;NL;Program 9
(
Definisi dalam Definisi
Definisi dalam Definisi
(2)
(2)
Tapi Program 10 belum merupakan suatu program Tapi Program 10 belum merupakan suatu program yang lengkap karena Program 9 belum
yang lengkap karena Program 9 belum didefinisikan.
def H() = t1();t1();t2();t1() enddef def H() = t1();t1();t2();t1() enddef def 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* enddef def t2() = NL;p*;p*;p*;p*;p* enddef
Definisi dalam Definisi
Definisi dalam Definisi
(2)
(2)
Cara lain:
Cara lain:
def H() = t1();t1();t2();t1() enddef
def H() = t1();t1();t2();t1() enddef
def 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*
def t2() = NL;p*;p*;p*;p*;p*
enddef
enddef
(
(
Program 12
Program 12
)
)
def polan()= O(); NL; H() enddef
def polan()= O(); NL; H() enddef
Prosedur dengan Parameter
Prosedur dengan Parameter
(1)
(1)
def p() = p* enddef
def p() = p* enddef
p(); p(); p()
p(); p(); p()
(
(
Program 13
Program 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* enddef
def p() = NL;p*;p*;p* enddef
p();p();p()
p();p();p()
(
(
Program 14
Program 14
)
)
di mana arti dari Program 14 adalah mencetak
di mana arti dari Program 14 adalah mencetak
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() enddef
def r3(p) = p();p();p() enddef
def satu() = p* enddef
def satu() = p* enddef
def dua() = NL enddef
def dua() = NL enddef
def tiga() = NL; p*;p*;p* enddef
def tiga() = NL; p*;p*;p* enddef
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 batang tubuh dari prosedur r3. Setiap prosedur
r3(satu), r3(dua); r3(tiga) meminta eksekusi dari r3(satu), r3(dua); r3(tiga) meminta eksekusi dari
p();p();p(). Arti p() itu sendiri tergantung pada p();p();p(). Arti p() itu sendiri tergantung pada
parameter yang disuplai. parameter yang disuplai.
Sebagai contoh:Sebagai contoh:
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 bawah ini
Definisikan prosedur r4 sehingga bila diberikan definisi x, y, Definisikan prosedur r4 sehingga bila diberikan definisi x, y,
dan z, urutan instruksi BB; r4(x); BB; r4(y); BB; r4(z) akan 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 Kalau r3(satu) seperti yang didefinisikan di atas yaitu
mencetak tiga *. Bila diberikan definisi mencetak tiga *. Bila diberikan definisi
def A() = r3(satu); r3(satu); r3(satu) enddefdef A() = r3(satu); r3(satu); r3(satu) enddef Berapa * yang dicetak?
Tambahan Instruksi
Tambahan 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:
def tiga(c) = pc(c); pc(c); pc(c) enddef
def 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’)
Tambahan Instruksi
Tambahan 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
Nilai Prosedur yang
Nilai Prosedur yang
Mengambil Argumen
Mengambil Argumen
(1)
(1)
def kedua(x) = x(‘*’); x(‘+’) enddef
def kedua(x) = x(‘*’); x(‘+’) enddef
Bila diberikan definisi satu() dalam Program
Bila diberikan definisi satu() dalam Program
3, maka kedua(satu) tidak akan masuk akal
3, maka kedua(satu) tidak akan masuk akal
sebab satu(‘*’) dan satu(‘+’) tidak masuk
sebab satu(‘*’) dan satu(‘+’) tidak masuk
akal.
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 +.
Nilai Prosedur yang
Nilai Prosedur yang
Mengambil Argumen
Mengambil 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.
Nilai Prosedur yang
Nilai Prosedur yang
Mengambil Argumen
Mengambil Argumen
(3)
(3)
Diberikan definisi
Diberikan definisi
def quote(c) = NL; pc(‘’’) pc(c); pc(‘’’)
def quote(c) = NL; pc(‘’’) pc(c); pc(‘’’)
enddef
enddef
def x() = p* enddef
def 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
Nilai Prosedur yang
Nilai Prosedur yang
Mengambil Argumen
Mengambil 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(‘*’); idem
quote(‘*’); idem
–
quote(‘c’); idem
quote(‘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
Prosedur Berparameter
Prosedur Berparameter
Banyak
Banyak
def sandwich(selei,roti)=roti();selei();roti()
def sandwich(selei,roti)=roti();selei();roti()
enddef
enddef
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’) enddef
def pO()=pc(‘O’) enddef
def pX() = pc(‘X’) enddef
def pX() = pc(‘X’) enddef
maka:
maka:
Prosedur Berparameter Banyak
Prosedur Berparameter Banyak
(Latihan 4)
(Latihan 4)
Diberikan definisi Diberikan definisi
prosedur sandwich:
Cari arti dari program di bawah ini:Cari arti dari program di bawah ini:
def a() = pc(‘a’) enddef
Latihan (5)
Latihan (5)
Buat programnya dengan
Buat programnya dengan
sandwich (tengah, luar)
sandwich (tengah, luar)
*
*
** I
** I
***
***
*
*
** II
** II
***
***
*
*
** I
** I
procedure call(x:integer);
procedure call(x:integer);
begin
begin
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;
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
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'
if (a and not (not c and not b)) or not ((c and b) or not
if (a and not (not c and not b)) or not ((c and b) or not
a)
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
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()
begin
begin
f(); write(x)
f(); write(x)
g(); write(x)
g(); write(x)
h(); write(x)