View
61
Download
0
Category
Preview:
DESCRIPTION
Materi 5 Nama dan Environment. Dasar-Dasar Pemrograman. Pentingnya Penamaan. Dalam membuat program, alur program harus logis dan masuk akal. Untuk itu perlu dipikirkan penamaan yang baik. - PowerPoint PPT Presentation
Citation preview
Materi 5Nama dan Environment
Dasar-Dasar Pemrograman
Pentingnya Penamaan
Dalam membuat program, alur program harus logis dan masuk akal. Untuk itu perlu dipikirkan penamaan yang baik.
Pemanggilan nama prosedur dan parameter bersifat case-sensitive (huruf besar dan kecil dibedakan). Hindari penamaan menggunakan tanda baca seperti !@#$%^&*() dan sebagainya.
Menyesuaikan Argumen dan Parameter
Perhatikan potongan program berikut :
def r3(p) = p(); p(); p() enddefr3(‘+’)
Program tersebut tidak masuk akal.r3(‘+’) akan menghasilkan ‘+’(); ‘+’(); ‘+’()
Seharusnya (‘….’) diisi dengan nama prosedur, bukan sembarang karakter.
Menyesuaikan Argumen dan Parameter
Perhatikan potongan program berikut :
def r3(p) = p(); p(); p() enddefr3()
Program tersebut juga tidak masuk akal.r3() tidak akan memanggil prosedur apapun.
Menyesuaikan Argumen dan Parameter
Perhatikan potongan program berikut :def r3(p) = p(); p(); p() enddefr3(r3)
Program tersebut juga tidak masuk akal.r3(r3) akan menghasilkan r3(); r3(); r3() yang jika dieksekusi masing-masing r3() tidak akan memanggil prosedur apapun.
Menyesuaikan Argumen dan Parameter
Perhatikan potongan program berikut :
def A(x) = x(); printchar(x) enddef
Program tersebut akan menghasilkan error.Kita harus membedakan penulisan nama prosedur dan penulisan karakter. Seharusnya :
def A(x) = x(); printchar(‘x’) enddef
Memilih Nama untuk Parameter
Perhatikan potongan program berikut :def r3(stop) = stop(); stop(); stop() enddefdef r3(start) = start(); start(); start() enddefdef r3(no) = no(); no(); no() enddef
Hindari penggunaan nama yang sama untuk parameter yang berbeda. Sebaiknya :
def r1(stop) = stop(); stop(); stop() enddefdef r2(start) = start(); start(); start() enddefdef r3(no) = no(); no(); no() enddef
Nama Parameter dan Alias
Perhatikan potongan program berikut :def r3(r3) = r3(); r3(); r3() enddefdef one() = print* enddefdef two() = NL; r3(one) enddefr3(one); r3(two)
Akan menghasilkan output yang sama dengan program berikut ini:
def r3(r3) = r3(); r3(); r3() enddefdef one() = print* enddefdef two() = NL; r3(one) enddefone(); one(); one(); r3(two)
Nama Parameter dan Alias
Perhatikan potongan program berikut :def r3(r3) = r3(); r3(); r3() enddefdef one() = print* enddefdef two() = NL; r3(one) enddefr3(one); r3(two)
Akan menghasilkan output yang sama dengan program berikut ini:
def r3(r3) = r3(); r3(); r3() enddefdef one() = print* enddefdef two() = NL; r3(one) enddefprint*; print*; print*; r3(two)
Nama Parameter dan Environments
Perhatikan potongan program berikut :def r3(r3) = r3(); r3(); r3() enddefdef one() = print* enddefdef two() = NL; r3(one) enddefr3(one); r3(two)
Jika dieksekusi, compiler akan menghasilkan environment (lingkungan kerja) yang terstruktur sebagai berikut :
Env 1
r3=λ(r3).(r3();r3();r3())one= λ().print*two= λ().(NL;r3(one))
Execute r3(one)
Execute r3(two)Env 2
r3=two
Execute r3()=two()
Execute r3()=two()Execute r3()=two()
Env 3Execute NLExecute r3(one)
NEWLINE
Env 4r3=oneExecute r3()=one()
Execute r3()=one()Execute r3()=one()
Env 5
Execute print*
*
**
NEWLINE, *, *, *
NEWLINE, *, *, *
Jadi, hasil akhir program adalah :NEWLINE, *, *, *NEWLINE, *, *, *NEWLINE, *, *, *
* * ** * ** * *ata
u
Membuat prosedur berparameter
Perhatikan potongan program berikut :def r3(p) = p(); p(); p() enddefdef one() = print* enddefdef line() = NL; r3(one) enddefr3(line)
Jika dieksekusi, program tersebut akan menghasilkan output :
* * ** * ** * *
Membuat prosedur berparameter
Jika saya ingin menghasilkan output :
Maka saya harus merubah program sebagai berikut :
def r3(p) = p(); p(); p() enddefdef one() = printchar(‘+’) enddefdef line() = NL; r3(one) enddefr3(line)
+ + ++ + ++ + +
Membuat prosedur berparameter
Untuk mempermudah pekerjaan saya, saya dapat membuat sebuah prosedur berparameter, sehingga jika saya ingin membuat bentuk yg sama dengan karakter yg berbeda, saya hanya perlu merubah parameternya saja:Prosedur yg saya buat adalah sebagai berikut :
def square(c) = def r3(p) = p(); p(); p() enddef def one() = printchar(c) enddef def line() = NL; r3(one) enddef r3(line)
enddef
Membuat prosedur berparameterSehingga, jika saya ingin merubah dalam bentuk lain, saya hanya perlu mengganti parameternya saja :def square(c) = def r3(p) = p(); p(); p() enddef
def one() = printchar(c) enddef def line() = NL; r3(one) enddef r3(line)
enddefsquare(‘+’)square(‘A’)square(‘#’)
A A AA A AA A A
+ + ++ + ++ + +
# # # # # # # # #
Tipe-tipe Nama
Ada 3 tipe nama dalam program, yaitu free name, bound name, dan binding name.Perhatikan rumus berikut :
X x Y where Y=7 (X dikali Y, dimana Y=7)Terdapat 3 nama, yaitu X, Y, dan 7. Selain itu, ada 3 simbol yaitu x (kali), where, dan = (sama dengan). Hanya Y yang diberi nilai awal, sehingga X dan 7 disebut free name, sedangkan Y disebut bound name. Sehingga rumus dapat diganti menjadi :
X x 7Angka 7 di dalam X x 7 disebut binding name, yaitu nama alias yang menggantikan bound name (Y).
Tipe-tipe Nama
Perhatikan potongan program berikut :def a() = printchar(b); printchar(b) enddefa(); a()
Ada 3 nama dalam program tersebut : a, b, dan printchar. Printchar adalah nama konstan di dalam Pascal, sehingga compiler tidak mengolahnya. a adalah bound name karena a digantikan oleh printchar(b), sementara b adalah free name. Jika b diganti dengan ‘+’, maka outputnya adalah ++++, jika b diganti dengan *, outputnya adalah ****.
Tipe-tipe Nama
Perhatikan potongan program berikut :def a() = printchar(b); printchar(b) enddefa(); a()
Jika kita merubah a dengan ‘***’ dan b dengan ‘+’, apakah akan merubah hasilnya ? TIDAK. Hasil outputnya tetap ++++.
Jadi, jika kita merubah free name dengan sebuah nilai, compiler akan mengembalikan nilai tersebut, tetapi jika kita merubah bound name dengan sebuah nilai, compiler akan mengerjakan apa yang ada dalam nilai tersebut.
Definisi di dalam definisi
Perhatikan potongan program berikut :def pat(c) = def r3(p)=p();p();p() enddef
def x()=printchar(c) enddef NL;r3(x)
enddefpat(‘*’)Program di atas memiliki 3 free name yg kesemuanya adalah konstan yaitu printchar, NL, dan ‘*’, dan memiliki bound name yaitu : pat, c, r3, x, dan p. Jika dijalankan, program akan menghasilkan ***.
Definisi di dalam definisiPerhatikan potongan program berikut :
def pat(c) = def r3(p)=p();p();p() enddef def x()=printchar(c) enddef NL;r3(x)
enddefpat(‘*’)
Bandingkan dengan yg berikut :def pat(c) = def r3(c)=c();c();c() enddef
def x()=printchar(c) enddef NL;r3(x)
enddefpat(‘*’)
Definisi di dalam definisi
Jika dijalankan, kedua program akan menghasilkan output yg sama, yaitu ***. Tapi tentu saja kita akan semakin bingung, karena penamaannya menggunakan huruf yang sama. Jadi, meskipun kita bebas menggunakan karakter apapun untuk penamaan, sebaiknya kita tidak menggunakan karakter yang sama untuk parameter/prosedur yg berbeda.
Ringkasan
Procedure
No return
function nama :type;
procedure nama(param);
function nama(param) : type;
procedure nama;
With return
Ringkasan
procedure nama;
procedure BENDA;begin write(‘*’);end;
begin BENDA;end.
Ringkasan
procedure nama(param);
procedure BENDA(x : char);begin write(x);end;begin BENDA(‘*’); BENDA(‘+’);end.
Ringkasan
function nama :type;
function BENDA : char;begin BENDA:=‘*’;end;
begin write(BENDA); BENDA;end.
Ringkasan
function nama(param) : type;
function BENDA(x : char ) : char;begin BENDA:=x;end;
begin write(BENDA(‘*’)); write(BENDA(‘+’));end.
Latihan
Kerjakan soal berikut ini
Buat program Pascal untuk menampilkan*******Procedure B1 - cetak 1 karakterProcedure Bn - cetak n karakterKarakter yang dicetak tidak harus *, bisa sembarang karakter
-Selesai-Materi 5
Recommended