Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Materi 5 Nama dan Environment Dasar-Dasar Pemrograman.

Presentasi serupa


Presentasi berjudul: "Materi 5 Nama dan Environment Dasar-Dasar Pemrograman."— Transcript presentasi:

1 Materi 5 Nama dan Environment Dasar-Dasar Pemrograman

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

3 Menyesuaikan Argumen dan Parameter Perhatikan potongan program berikut : def r3(p) = p(); p(); p() enddef r3(‘+’) Program tersebut tidak masuk akal. r3(‘+’) akan menghasilkan ‘+’(); ‘+’(); ‘+’() Seharusnya (‘….’) diisi dengan nama prosedur, bukan sembarang karakter.

4 Menyesuaikan Argumen dan Parameter Perhatikan potongan program berikut : def r3(p) = p(); p(); p() enddef r3() Program tersebut juga tidak masuk akal. r3() tidak akan memanggil prosedur apapun.

5 Menyesuaikan Argumen dan Parameter Perhatikan potongan program berikut : def r3(p) = p(); p(); p() enddef r3(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.

6 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

7 Memilih Nama untuk Parameter Perhatikan potongan program berikut : def r3(stop) = stop(); stop(); stop() enddef def r3(start) = start(); start(); start() enddef def r3(no) = no(); no(); no() enddef Hindari penggunaan nama yang sama untuk parameter yang berbeda. Sebaiknya : def r1(stop) = stop(); stop(); stop() enddef def r2(start) = start(); start(); start() enddef def r3(no) = no(); no(); no() enddef

8 Nama Parameter dan Alias Perhatikan potongan program berikut : def r3(r3) = r3(); r3(); r3() enddef def one() = print* enddef def two() = NL; r3(one) enddef r3(one); r3(two) Akan menghasilkan output yang sama dengan program berikut ini: def r3(r3) = r3(); r3(); r3() enddef def one() = print* enddef def two() = NL; r3(one) enddef one(); one(); one(); r3(two)

9 Nama Parameter dan Alias Perhatikan potongan program berikut : def r3(r3) = r3(); r3(); r3() enddef def one() = print* enddef def two() = NL; r3(one) enddef r3(one); r3(two) Akan menghasilkan output yang sama dengan program berikut ini: def r3(r3) = r3(); r3(); r3() enddef def one() = print* enddef def two() = NL; r3(one) enddef print*; print*; print*; r3(two)

10 Nama Parameter dan Environments Perhatikan potongan program berikut : def r3(r3) = r3(); r3(); r3() enddef def one() = print* enddef def two() = NL; r3(one) enddef r3(one); r3(two) Jika dieksekusi, compiler akan menghasilkan environment (lingkungan kerja) yang terstruktur sebagai berikut :

11 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() Env 3 Execute NL Execute r3(one) NEWLINE Env 4 r3=one Execute r3()=one() Env 5 Execute print* * * * NEWLINE, *, *, * Jadi, hasil akhir program adalah : NEWLINE, *, *, * * * * atau

12 Membuat prosedur berparameter Perhatikan potongan program berikut : def r3(p) = p(); p(); p() enddef def one() = print* enddef def line() = NL; r3(one) enddef r3(line) Jika dieksekusi, program tersebut akan menghasilkan output : * * *

13 Membuat prosedur berparameter Jika saya ingin menghasilkan output : Maka saya harus merubah program sebagai berikut : def r3(p) = p(); p(); p() enddef def one() = printchar(‘+’) enddef def line() = NL; r3(one) enddef r3(line) + + +

14 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

15 Membuat prosedur berparameter Sehingga, 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) enddef square(‘+’) square(‘A’) square(‘#’) A A A + + + # # #

16 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 7 Angka 7 di dalam X x 7 disebut binding name, yaitu nama alias yang menggantikan bound name (Y).

17 Tipe-tipe Nama Perhatikan potongan program berikut : def a() = printchar(b); printchar(b) enddef a(); 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 ****.

18 Tipe-tipe Nama Perhatikan potongan program berikut : def a() = printchar(b); printchar(b) enddef a(); 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.

19 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) enddef pat(‘*’) 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 ***.

20 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) enddef pat(‘*’) Bandingkan dengan yg berikut : def pat(c) = def r3(c)=c();c();c() enddef def x()=printchar(c) enddef NL;r3(x) enddef pat(‘*’)

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

22 Ringkasan Procedure No return function nama :type; procedure nama(param); function nama(param) : type; procedure nama; With return

23 Ringkasan procedure nama; procedure BENDA; begin write(‘*’); end; begin BENDA; end.

24 Ringkasan procedure nama(param); procedure BENDA(x : char); begin write(x); end; begin BENDA(‘*’); BENDA(‘+’); end.

25 Ringkasan function nama :type; function BENDA : char; begin BENDA:=‘*’; end; begin write(BENDA); BENDA; end.

26 Ringkasan function nama(param) : type; function BENDA(x : char ) : char; begin BENDA:=x; end; begin write(BENDA(‘*’)); write(BENDA(‘+’)); end.

27 Latihan Kerjakan soal berikut ini Buat program Pascal untuk menampilkan * **** Procedure B1 -  cetak 1 karakter Procedure Bn -  cetak n karakter Karakter yang dicetak tidak harus *, bisa sembarang karakter

28

29 -Selesai- Materi 5


Download ppt "Materi 5 Nama dan Environment Dasar-Dasar Pemrograman."

Presentasi serupa


Iklan oleh Google