b2_3

26
fungsi atau prosedur tersebut dipanggil. Dilain pihak, parameter aktual merupakan nilai atau variabel yang disupplai pada parameter formal suatu fungsi atau prosedur pada saat prosedur atau fungsi ini dipanggil dari suatu rutin. Sebagai contoh, lihatlah garis besar program dibawah ini, yang mengandung suatu prose-dur inisial serta fungsi yang dinamai minimum, dimana fungsi ini digunakan dua kali pada prosedur inisial cobalah : prosedur inisial spesifikasi storage variabel min,a,b,c: integer end spesifikasi storage begin cobalah : min minimum(a,b,c) : output minimum(5,a+b,min) : end cobalah minimum : fungsi integer spesifikasi storage parameter x,y,z: integer in only end spesifikasi storage begin minimum : end minimum 2 - 36

Upload: siimplisius-ryski-tiga

Post on 16-Nov-2015

213 views

Category:

Documents


0 download

DESCRIPTION

b2_33

TRANSCRIPT

fungsi atau prosedur tersebut dipanggil. Dilain pihak, parameter aktual merupakan nilai atau variabel yang disupplai pada parameter formal suatu fungsi atau prosedur pada saat prosedur atau fungsi ini dipanggil dari suatu rutin.

fungsi atau prosedur tersebut dipanggil. Dilain pihak, parameter aktual merupakan nilai atau variabel yang disupplai pada parameter formal suatu fungsi atau prosedur pada saat prosedur atau fungsi ini dipanggil dari suatu rutin.

Sebagai contoh, lihatlah garis besar program dibawah ini, yang mengandung suatu prose-dur inisial serta fungsi yang dinamai minimum, dimana fungsi ini digunakan dua kali pada prosedur inisial

cobalah : prosedur inisial spesifikasi storage variabel min,a,b,c: integer end spesifikasi storage begin cobalah

:

min minimum(a,b,c)

:

output minimum(5,a+b,min)

:

end cobalah

minimum : fungsi integer spesifikasi storage parameter

x,y,z: integer in only end spesifikasi storage begin minimum

:

end minimum

Parameter formal dari fungsi minimum adalah x, y, dan z. Pertama kali minimum digunakan dalam prosedur inisial, parameter aktual yang dikirimkan pada minimum adalah a, b, dan c, dimana parameter aktual a berhugungan dengan parameter formal x, paramater aktual b pada y, dan c pada z. Penugasan parameter aktual pada parameter formal tergantung pada urutan tampilannya. Persyaratan kesamaan tipe parameter formal dengan aktual (integer atau riil) harus dipenuhi oleh programer.

Pada pemanggilan fungsi minimum untuk yang kedua kali, parameter aktualnya adalah 5, hasil penjumlahan a + b, dan min. Karena itu parameter formal x dari fungsi minimum adalah 5, y akan memiliki nilai a + b, dan z memiliki nilai min.

Satu hal penting yang perlu diketahui adalah dimana nama dari parameter formal dengan aktual tidak memiliki hubungan sama sekali dipandang dari kepentingan prosesor, sehingga pernyataan

min minimum(z,x,y)

tidak akan membingungkan prosesor.

Parameter In OnlyPada saat suatu prosedur atau fungsi yang mengandung parameter formal in only dipanggil, maka sel storage terpisah akan disiapkan untuk parameter ini dan salinan nilai dari parameter aktualnya disimpan pada sel storage tersebut.

_________________________________________________________________

Contoh 2.7 Misalkan prosesor menyelesaikan program dibawah ini

goforit : prosedur inisial spesifikasi storage variabel a,b : integer end spesifikasi storage begin goforit

a 5

b 10

output kacau(a,8,a+b)

end goforit where kacau melakukan keanehan

kacau : fungsi integer spesifikasi storage parameter x,y,z: integer in only end spesifikasi storage begin kacau

x x+1

kacau x+y*2

end kacau

Pada saat prosedur inisial dieksekusi, pertama-tama prosesor menyiapkan dua sel storage a dan b, kemudian menugaskan 5 pada a serta 10 pada b, sehingga store akan tampak

a 5 integer

b 10 integer

Pada tahap ini prosesor akan membaca pernyataan output dari prosedur inisial yang kemudian akan memanggil fungsi kacau. Karena parameter formal dari fungsi ini bertipe in only, maka prosesor akan menyiapkan dua sel storage untuk parameter ini dan menyalin nilai-nilai parameter aktualnya serta menyiapkan satu sel storage untuk nama fungsi, sehingga store akan tampak

a 5 integer

b 10 integer

kacau integer

x 5 integer

y 8 integer

z 15 integer Setelah dua pernyataan penugasan pada fungsi kacau dieksekusi, store akan tampak

a 5 integer

b 10 integer

kacau 126 integer

x 6 integer

y 8 integer

z 15 integerPerhatikan, perubahan parameter formal x tidak merubah parameter aktual yang berhubungan, a, karena yang dirubah hanya nilai salinan, x, bukan nilai asli, a. Pada saat prosesor kembali ke prosedur inisial, nilai fungsi kacau yang dihitung (126) akan dicetak berdasarkan pernyataan output, dan store akan terlihat

a 5 integer

b 10 integer

Variabel a dan b yang digunakan sebagai parameter aktual dari fungsi kacau, tidak berubah. Hal ini terjadi karena parameter formal fungsi berbentuk in only sehingga nilai-nilai parameter aktual a dan b tidak dapat dirubah oleh fungsi kacau.

_________________________________________________________________ Apabila parameter formal dari suatu prosedur atau fungsi bertipe in only maka parameter aktual hubungannya pada rutin yang memanggilnya dapat berbentuk variabel, konstanta (mis. 5), ekspresi (mis. a+b), atau pemanggilan fungsi lain. Apabila parameter aktualnya berbentuk variabel, maka nilai variabel tersebut disalin pada parameter formal, sedangkan apabila parameter aktualnya merupakan konstanta atau ekspresi, maka nilai dari konstanta atau ekspresi akan disalin pada parameter formalnya. Apabila parameter aktualnya merupakan suatu fungsi, maka fungsi tersebut akan dihitung terlebih dahulu dan kemudian nilai hasil perhitung- annya akan dikembalikan dan disalin pada parameter formal.

Parameter In OutPada saat suatu prosedur yang mengandung parameter formal in out dipanggil, maka parameter formalnya menggunakan sel storage yang sama dengan sel storage parameter aktual hubungan-nya. Sehingga, setiap perubahan pada nilai parameter formal in out selama prosedur tersebut dieksekusi akan merubah nilai parameter formal serta nilai parameter aktual hubungannya dalam rutin yang memanggilnya.

________________________________________________________________

Contoh 2.8 Perhatikan program dibawah ini,

bingung : prosedur inisial spesifikasi storage variabel a,b : integer end spesifikasi storage begin bingung

a 5

b 10

mixit(a,b)

output a,b

end bingung

where mixit hanya melakukan ini

mixit : prosedur spesifikasi storage parameter x : integer in only y : integer in out end spesifikasi storage begin mixit

output x,y

x x+1

y y+1

output x,y

end mixit

Pada saat prosesor mulai mengeksekusi program diatas, dua sel storage bertipe integer dengan nama a dan b akan disiapkan. Dua pernyataan penugasan pertama pada prosedur inisial akan menyimpan nilai 5 pada a serta 10 pada b, dan store akan tampak

a 5 integer

b 10 integer

Pada tahap ini prosedur mixit akan dipanggil, dan nilai a serta b sebagai parameter aktual akan dikirim pada mixit. Setelah pernyataan parameter pada mixit diproses, store akan terlihat

a 5 integer

y b 10 integer

x 5 integerKarena parameter formal x bertipe in only maka sel storagenya akan disiapkan dan nilai dari parameter aktual hubungannya, a, akan disalin. Sedangkan parameter formal y akan menempati sel yang sama dengan parameter aktual hubungannya, b, karena parameter y bertipe in out. Simbol pada label sel

y b

mengindikasikan bahwa perubahan pada y akan merubah b.

Pernyataan output pertama dari mixit akan mencetak

5 10

kemudian 1 ditambahkan pada x dan y, sehingga store menjadi

a 5 integer

y b 11 integer

x 6 integerPerhatikan dimana perubahan pada parameter formal in only, x, tidak merubah nilai parameter aktual ,a, karena x yang merupakan parameter in only, memiliki sel storage tersendiri. Tetapi, karena y merupakan parameter in out dan menggunakan sel storage yang sama dengan b, maka perubahan pada y akan merubah pula parameter aktual hubungannya ,b.

Ketika pernyataan output kedua dari mixit diproses,

6 11

akan dicetak. Ini merupakan pernyataan akhir dari prosedur, maka semua nilai dalam storage yang berhubungan dengan mixit akan dihapus ketika prosesor kembali ke prosedur inisial dan store akan tampak

a 5 integer

b 11 integer

Disini terlihat dimana nilai a tidak berubah, tetapi nilai b berubah. Maka pernyataan output pada prosedur inisial akan mencetak

5 11

________________________________________________________________ Apabila parameter formal dari suatu prosedur bertipe in out, maka parameter aktual hubung-annya hanya dapat berupa variabel. Dari tata cara pembuatan store, terlihat dimana konstanta maupun ekspresi tidak menempati suatu sel storage sehingga tidak dapat dikirimkan sebagai parameter aktual pada parameter formal in out, karena parameter formal in out menggunakan sel storage yang sama dengan parameter aktual hubungannya.

Karena kemungkinan terjadinya efek sampingan, parameter formal in out pada umumnya tidak digunakan dalam fungsi.

Parameter Out OnlyApabila parameter formal suatu prosedur bertipe out only, maka parameter formal tersebut menggunakan sel storage yang sama dengan parameter in out. Perbedaan utamanya adalah ; parameter out only tidak dapat melihat (mengetahui) serta tidak diperbolehkan menggunakan nilai dalam sel storage parameter aktual hubungannya pada saat prosedur tersebut dipanggil. Hal ini berarti, tidak ada nilai yang dapat dikirimkan pada prosedur melalui parameter out only, tetapi suatu nilai harus dikembalikan pada rutin yang memanggilnya melalui parameter tersebut.

________________________________________________________________

Contoh 2.9 Lihat kembali bagian parameter in out pada Contoh 2.8. Merubah parameter in out, y, menjadi parameter out only akan menimbulkan kesalahan pada prosesor mixit. Store akan tampak

a 5 integer

y b 10 integer

x 5 integerSetelah prosesor mengeksekusi pernyataan parameter dari mixit, maka notasi

y b

mengindikasikan bahwa perubahan pada parameter formal out only, y, akan menghasilkan perubahan yang sama pada b, tetapi y tidak mengetahui/melihat nilai b pada saat prosedur mixit dipanggil untuk pertama kali (walaupun terdapat nilai 10). Sehingga pernyataan output pertama dalam mixit output x,y

akan menimbulkan kesalahan, karena prosesor menganggap parameter out only, y, belum terdefinisi pada saat ini. Apabila pernyataan output ini dihilangkan dan mengganti pernyataan

y y+1

dengan

y 11

untuk menginisialisasi y dalam mixit, maka prosedur akan bekerja dengan baik.

Situasi lebih baik yang melibatkan parameter out only didemonstrasikan pada program dibawah ini, dimana dilibatkan prosedur baca untuk menginput nilai integer.

showit : prosedur inisial spesifikasi storage variabel a,b : integer end spesifikasi storage begin showit

baca(a,b)

output a,b

end showit

where baca menginput dua nilai integer

baca : prosedur spesifikasi storage parameter x,y : integer out only end spesifikasi storage begin baca

input x,y

end baca

Pada saat prosesor mulai mengeksekusi showit, store disiapkan untuk dua variabel integer, a dan b.

a integer

b integer

Langkah pertama dari showit adalah memanggil prosedur baca; variabel a dan b yang belum terdefinisi dikirimkan pada prosedur baca sebagai parameter aktual. Pada saat prosesor mulai mengeksekusi baca, parameter aktual a dan b berbagi tempat dengan parameter formal x dan y, mengakibatkan store

x a integer

y b integer

Apabila 33 dan 41 dimasukkan melalui alat input pada saat pernyataan input pada prosedur baca dieksekusi, maka store akan tampak

x a 33 integer

y b 41 integer

Pada saat prosesor meninggalkan baca dan kembali pada showit, maka store menjadi

a 33 integer

b 41 integer

Pernyataan output dari showit akan menyebabkan,

33 41

dicetak pada alat output.

Contoh diatas, tampak dibuat-buat, karena pemanggilan baca pada prosedur inisial dapat diganti oleh

input a,b

dan prosedur baca dapat dihilangkan. Tetapi apabila kita menghadapi daftar tabel informasi besar yang harus diinput, maka penggunaan parameter out only untuk mentransfer data ke rutin yang membutuhkan dalam suatu prosedur, akan sangat berguna.

_________________________________________________________________ Parameter aktual yang berhubungan dengan parameter formal out only hanya boleh berbentuk variabel, karena dengan alasan yang sama dengan penggunaan parameter in out.

Kesimpulan dari Parameter In Only, In Out dan out Only

Parameter merupakan satu-satunya cara untuk mengirimkan informasi antar prosedur dan fungsi. Beberapa perbedaan dari tipe parameter ini adalah ;

1. Parameter formal in out merupakan bentuk parameter yang paling umum. Parameter ini dapat menggunakan nilai-nilai yang dikirimkan ke rutin yang memanggil dalam parameter aktual hubungannya, dan dapat pula merubah serta mengembalikan nilai-nilai yang berbeda pada rutin memanggilnya dalam parameter aktual hubungannya. Parameter in out harus digunakan apabila dibutuhkan komunikasi dari dan ke rutin yang memanggil. Parameter aktual hubungannya harus berbentuk variabel dan tipe dari parameter formal dengan aktual harus sama.

2. Parameter formal in only menerima salinan nilai dari parameter aktual hubungannya, sehingga, perubahan pada parameter formal tidak berpengaruh pada nilai-nilai parameter aktual hubungannya. Parameter in only harus digunakan apabila dibutuhkan komunikasi dari rutin yang memanggilnya tetapi tidak dibutuhkan komunikasi kembali ke rutin yang memanggil.

3. Parameter formal out only tidak dapat menerima nilai-nilai melalui parameter aktual hubungannya, tetapi parameter ini dapat digunakan untuk mengirimkan nilai-nilai kembali ke rutin yang memanggilnya melalui parameter aktual hubungannya. Parameter out only dapat digunakan apabila kita ingin mengkomunikasikan nilai-nilai kembali ke rutin yang memanggilnya dan kita harus meyakini bahwa nilai-nilai sudah ditugaskan pada parameter formal dalam prosedur sebelum parameter ini digunakan.

4. Secara umum, fungsi hanya boleh menggunakan parameter in only, untuk menghindari efek sampingan. Sedangkan prosedur dapat menggunakan setiap tipe parameter.

Pada saat suatu prosedur atau fungsi dipanggil dalam prosedur atau fungsi yang kedua, maka parameter formal dari rutin pertama dapat digunakan sebagai parameter aktual dari rutin kedua.

Variabel LokalSuatu prosedur atau fungsi dapat menggunakan variabel yang telah didefinisikan dalam prose-dur atau fungsi pada pernyataan variabel. Variabel ini hanya dapat digunakan secara lokal dalam rutin dimana mereka didefinisikan (kecuali mereka dikirimkan dengan parameter dan rutin lainnya). Secara umum, parameter hanya dikirimkan antar prosedur dan fungsi hanya apabila dibutuhkan. Sel storage lainnya yang dibutuhkan secara lokal untuk perhitungan dalam prosedur atau fungsi harus dinyatakan sebagai variabel dalam pernyataan variabel. Verifikasi ProgramVerifikasi program merupakan proses untuk meyakini bahwa suatu program akan selalu benar untuk setiap nilai input, hal ini merupakan subjek yang sulit dan rumit. Pada dasarnya, ada beberapa metoda sederhana untuk membantu kita dalam memeriksa kebenaran program. Dua dari metoda diatas adalah program walkthrough dan pengujian program.

Program walkthrough dilakukan setelah rancangan program dalam mpl selesai dan sebelum program diterjemahkan dalam bahasa pemograman aktual serta dijalankan dalam komputer. Perlu diketahui bahwa program walkthrough tidak menjamin kebenaran program, karena hampir tidak mungkin melakukan hal ini untuk setiap kemungkinan input. Cara ini berguna untuk mendeteksi masalah logis (kesalahan merancang program karena kesalahan pemikiran dalam mengembangkan jawaban), ataupun kesalahan typographical (kesalahan menuliskan x yang seharusnya y dalam pernyataan output).

Setelah rancangan program mpl diterjemahkan kedalam bahasa pemograman aktual, maka program dapat dijalankan pada komputer serta mengujinya untuk beberapa nilai input.

PEMROGRAMAN BATCH VS. INTERACTIVEAda dua lingkungan umum dalam mengeksekusi rancangan program. Pertama, disebut batch dan yang kedua interactive. Program yang dijalankan dengan cara 'batch' harus dimasukan ber-sama dengan input data yang dibutuhkan dan pada saat komputernya siap, eksekusi program dapat ditinggalkan dan hasilnya dapat diambil pada saat mendatang.

Sedangkan program yang dijalankan secara 'interactive' mengharuskan programer selalu pada terminal agar dapat mengirimkan data yang diminta pada saat program dieksekusi. Hal ini terjadi untuk komputer personal dan komputer besar yang ditujukan untuk pengajaran bahasa pemrograman komputer di kelas. Perbedaan utama antara pemrograman 'batch' dan 'interactive' terletak pada cara menginput data.

Setiap studi kasus yang lalu, dirancang berdasarkan pola 'batch'. Untuk memodifikasi program ini agar dapat dieksekusi dengan pola 'interactive', maka perlu disisipkan pernyataan output pada sebelum setiap pernyataan input.

_________________________________________________________________

Contoh 2.10 Apabila program pada Studi Kasus 2.2 dieksekusi secara 'interactive', kita harus memasukan pernyataan

output 'silahkan masukan data panjang dan lebar segi empat'

persis sebelum pernyataan

input panjang,lebar

pada prosedur inisial. Pada saat prosesor mengeksekusi modifikasi program ini secara interak-tip, maka pernyataan output akan diproses terlebih dahulu dan mencetak

silahkan masukan data panjang dan lebar segi empat

agar dapat dibaca oleh programer, kemudian program akan berhenti pada pernyataan input untuk menunggu dua nilai yang harus dimasukan oleh programer melalui papan ketik. Setelah dimasukan dua nilai, prosesor akan melanjutkan eksekusinya persis sama seperti pada Studi Kasus 2.2.

_________________________________________________________________2.3

THE CHALLENGEDalam bagian ini akan dikemukakan tiga studi kasus. Dua studi kasus pertama akan berhubungan dengan permasalahan penghitungan bunga sederhana dan bunga berganda. Kasus terakhir memberikan contoh suatu fungsi yang memanggil fungsi lain. Correctness pada ketiga kasus tidak dilakukan sehingga perlu dilakukan program walkthrough tersendiri sebagai latihan.

Studi Kasus 2.4 Menghitung Bunga Sederhana

Uraian Permasalahan : Hitung bunga yang didapat berdasarkan bunga sederhana dengan

diberikan nilai awal yang diinvestasikan, tingkat suku bunga tahunan dan lama

waktu investai dalam tahun dan hari.

Spesifikasi Input : Dua bilangan riil, nilai investasi awal dan tingkat suku bunga tahunan,

serta dua bilangan integer, jumlah tahun dan hari lama investasi.

Apabila kita menanamkan uang dengan bunga sederhana, maka bunga yang didapat tidak akan mendapat bunga kembali. Sebagai contoh, apabila kita menanamkan uang sebesar Rp. 1.000.000,- dengan bunga sebesar 5% per tahun selama 3 tahun, maka bunga yang akan didapat sebesar Rp. 50.000,- per tahun dan secara total untuk 3 tahun adalah sebesar Rp. 150.000,-. Apabila uang tersebut ditanamkan tidak dalam jumlah tahun yang persis, maka tambahan tiap hari investasi akan menghasilkan tingkat suku bunga sebesar 1/365 dikalikan dengan 5%.

Penyelesaian - Fungsi untuk menghitung Bunga SederhanaPertama-tama, kita akan merancang prosedur inisial yang memiliki organisasi dasar yang sama dengan prosedur inisial pada bagian terdahulu.

bunga sederhana : prosedur inisial {cetak bunga yang didapat ari suatu investasi}

spesifikasi storage variabel awal,suku,hasil : riil tahun,hari : integer end spesifikasi storage begin bunga sederhana

input awal,suku,tahun,hari

hasil bunga(awal,suku,tahun,hari)

output 'bunga yang didapat =', hasil

end bunga sederhana

where bunga menghitung bunga yang didapat

STUDI KASUS 2.4 - PENYEMPURNAAN 1Sekarang kita mengalihkan perhatian untuk merancang fungsi bunga yang rancangannya tidak semudah fungsi sebelumnya. Disini terlihat bagaimana metoda pemrograman 'top down' akan sangat membantu, dimana konsentrasi perancangan fungsi bunga akan dilakukan pada saat dibutuhkan. Perhatikan dimana prosedur inisial tidak memperdulikan bagaimana bunga dihitung dalam fungsi bunga. Apabila kita ingin menghitung bunga berganda dan bukan bunga sederhana, prosedur inisial yang sama dapat digunakan dan kita hanya perlu mengembangkan fungsi bunga lain untuk kepentingan tersebut.

Untuk merancang fungsi bunga, terlebih dahulu kita harus mengembangkan formula untuk menghitung bunga sederhana. Bunga yang dihasilkan setiap tahun adalah

awal*suku/100

dan untuk setiap tambahan hari, bunganya,

1/365*awal*suku/100

Kita mengasumsikan suku bunga per tahun dalam persentasi, misalkan 11.5 (11.5%), karena itu suku bunga tersebut harus dibagi 100 agar didapatkan bentuk desimal yang benar, sebagai contoh 0.115. Total bunga dihitung dengan mengalikan ekspresi pertama dengan jumlah tahun investasi, mengalikan ekspresi kedua dengan jumlah hari investasi, dan menjumlahkan kedua perkalian tersebut.

(awal*suku/100)*tahun+(1/365*awal*suku/100)*hari

Penulisan lebih baik dari rumus diatas adalah

(awal*suku/100)*(tahun+hari/365)

Berdasarkan formula diatas, rancangan fungsi untuk menghitung hasil bunga dalam mpl adalah

bunga : fungsi riil spesifikasi storage parameter awal,suku : in only riil tahun,hari : in only integer end spesifikasi storage

begin : bunga

bunga (awal*suku/100)*(tahun+hari/365)

end bunga

STUDI KASUS 2.4 - PENYEMPURNAAN 2 Perhatikan dimana nama parameter formal dalam fungsi sama dengan nama parameter aktual dalam prosedur inisial, dimana hal ini tidak akan membingungkan prosesor.

Kesimpulan - Studi Kasus 2.4Disini terlihat bagaimana pola 'top down' sangat membantu. Kita dapat merancang fungsi bunga secara terpisah dengan konsentrasi penuh dan kita tidak perlu khawatir dengan penulisan program yang menggunakan fungsi bunga.

Studi Kasus 2.5 Menghitung Bunga Berganda

Uraian Permasalahan : Persis seperti pada Stusi Kasus 2.4, kecuali disini dihitung bunga

berganda dan bukan bunga sederhana.

Spesifikasi Input : Sama seperti Studi Kasus 2.4.

Penyelesaian - Fungsi untuk Menghitung Bunga BergandaBeda antara Studi Kasus ini dengan Studi Kasus 2.4 adalah disini yang dihitung bunga bergan-da. Karena prosedur inisial dari Studi Kasus 2.4 dapat digunakan pada Studi Kasus ini (kecuali nama dari prosedur inisialnya), maka kita hanya perlu mengembangkan fungsi bunga yang menghitung bunga berganda.

Untuk bunga berganda, suku bunga dikenakan pada semua uang yang dimiliki, termasuk pada bunga yang dihasilkan dari tahun sebelumnya. Setelah satu tahun, pemilik uang akan mendapatkan modal awal dan bunga dari modal awal tersebut.

awal+awal*suku/100

Rumusnya dapat dituliskan

penghasilan = awal*(1+suku/100) (1)

Setelah tahun kedua, jumlah uang yang ditanam adalah

penghasilan+penghasilan*suku/100

atau

penghasilan(1+suku/100)

Dengan menggunakan ekspresi ini dan mengganti penghasilan dengan persamaan (1) diatas, akan dihasilkan

awal*(1+suku/100)*(1+suku/100)

atau sama dengan

awal*(1+suku/100)2Dengan cara yang sama, setelah tiga tahun, nilai uang yang ditanam adalah

awal*(1+suku/100)3Secara umum, nilai uang yang ditanam setelah n tahun adalah

awal*(1+suku/100)nApabila terdapat tambahan d hari, maka

awal*(1+suku/100)n+d/365Hasil bunga selama n tahun dan d hari, didapat dengan mengurangi persamaan diatas (jumlah uang setelah n tahun dan d hari) dengan investasi awal:

awal*(1+suku/100)(tahun+hari/365)-awal

dimana rumus diatas sudah dalam bentuk mpl. Bentuk fungsi bunga yang merepresentasikan bunga berganda adalah,

bunga : fungsi riil spesifikasi storage parameter awal,suku : in only riil tahun,hari : in only integer end spesifikasi storage begin bunga

bunga awal*(1+suku/100)(tahun+hari/365)-awal

end bunga

STUDI KASUS 2.5 - PENYEMPURNAAN 1Studi Kasus 2.6 Menghitung Luas Trapesium

Uraian Permasalahan : Diketahui nilai riil a, b dan h, hitung luas trapesium dengan

panjang sisi pararel a dan serta tinggi h.

Spesifikasi Input : Satu baris input yang mengandung tiga nilai riil a, b dan h.

Penyelesaian - Menggunakan Fungsi Segi Empat dari Studi Kasus 2.2Permasalahan ini sangat mirip dengan studi kasus 2.2 yang menghitung luas segi empat. Prosedur inisialnya adalah

luas trapesium : prosedur inisial spesifikasi storage variabel a,b,h : riil end spesifikasi storage begin luas trapesium

input a,b,h

output trapesi(a,b,h)

end luas trapesium

where trapesi menghitung luas trapesium

STUDI KASUS 2.6 - PENYEMPURNAAN 1Bagian yang menarik dari program ini adalah pengembangan fungsi trapesi.

Suatu trapesium ditunjukan dibawah ini

a

h

b

Luas dari bentuk ini didapat dengan cara

(a+b)/2

x y

h

Z y

Salah satu cara untuk merancang fungsi trapesi adalah dengan menggunakan fungsi luas yang sudah dikembangkan pada Studi Kasus 2.2, sehingga fungsi trapesi akan tampak ;

luas trapesium : fungsi riil {menghitung luas trapesium dengan panjang sisi sejajar a dan b serta tinggi h}

spesifikasi storage parameter a,b,h : in only riil end spesifikasi storage begin trapesi trapesi luas(h,(a+b)/2)

end trapesi

where luas sudah dikembangkan pada Studi Kasus 2.2, Penyempurnaan 2

STUDI KASUS 2.6 - PENYEMPURNAAN 2Perhatikan dimana fungsi luas dipanggil pada pernyataan

trapesi luas(h,(a+b)/2)

dimana ekspresi

(a+b)/2

merupakan satu dari parameter aktual yang dikirimkan pada fungsi luas. Seperti telah didiskusikan pada bagian terdahulu, kita dapat menggunakan suatu ekspresi sebagai parameter aktual pada fungsi luas karena parameter formal fungsi luas bertipe in only. Sebelum fungsi luas dipanggil, ekspresi (a+b)/2 dievaluasi dan hasilnya disubstitusi pada ekspresi tersebut. Sebagai contoh, apabila a = 10.0 dan b = 15.0, maka

(10.0+15.0)/2

menjadi 12.5 dan pemanggilan fungsi luas akan menjadi

trapesi luas(h,12.5)

Disini pertama kali dirancang suatu prosedur inisial (luas trapesium) memanggil fungsi trapesi yang memanggil fungsi luas untuk melakukan perhitungan. Urutan pemanggilannya adalah,

luas trapesium

trapesi

luas

Penyempurnaan Penyelesaian - Menghitung Luas Trapesium secara LangsungSelama luas trapesium dapat dihitung langsung dengan pernyataan

trapesi h*(a+b)/2

maka hal ini akan lebih sederhana daripada menggunakan fungsi luas. Penyempurnaan akhir dari fungsi trapesi adalah

luas trapesium : fungsi riil spesifikasi storage parameter a,b,h : in only riil end spesifikasi storage begin trapesi trapesi h*(a+b)/2

end trapesi

STUDI KASUS 2.6 - PENYEMPURNAAN 3Kesimpulan - Studi Kasus 2.6Pada studi kasus ini dirancang dua cara pemecahan yang berbeda. Apabila permasalahan yang dihadapi bertambah rumit, biasanya terdapat beberapa cara untuk memecahkannya. Pemecahan pertama pertama menggunakan prosedur inisial luas trapesium yang memanggil fungsi trapesi dan fungsi ini memanggil fungsi luas. Untuk mengeksekusi versi program ini, perlu mengga-bungkan ketiga rutin tersebut dalam satu kesatuan. Pemecahan kedua lebih sederhana, karena hanya mengandung dua rutin, prosedur inisial dan fungsi modifikasi trapesi yang secara langsung menghitung luas trapesium.

PAGE 45 2 -