• Tidak ada hasil yang ditemukan

Algoritma Pemrograman

N/A
N/A
Protected

Academic year: 2022

Membagikan "Algoritma Pemrograman"

Copied!
30
0
0

Teks penuh

(1)

Algoritma Pemrograman

Pertemuan Ke-8 dan Ke-9

(Prosedur) Noor Ifada

noor.ifada@if.trunojoyo.ac.id

(2)

Sub Pokok Bahasan

Pendahuluan

Modularisasi Program Pendefinisian Prosedur Nama Global dan

Nama Lokal

Nama Lokal

Parameter

(3)

 Seringkali dalam membuat pembuatan program yang berukuran besar, program dipecah menjadi beberapa subprogram yang lebih kecil. Tiap subprogram, yang

disebut modul,dapat dipasangkan ke program lain yang membutuhkannya

Pendahuluan

membutuhkannya

 Teknik pemrograman seperti ini dinamakan teknik

pemrograman modular. Beberapa bahasa pemrograman menamakan modul dengan sebutan rutin (routine),

prosedur (procedure), atau fungsi (function)

(4)

Keuntungan:

1. Menghindari penulisan teks program yang sama secara berulang kali untuk aktivitas yang harus dilakukan lebih dari satu kali

Modularisasi Program

dilakukan lebih dari satu kali

2. Memberikan kemudahan menulis dan menemukan

kesalahan (debug) program

(5)

Jenis Modul Program

1. prosedur (procedure) 2. fungsi (function)

Struktur setiap modul tersebut pada hakikatnya sama dengan

struktur algoritma biasa, yaitu ada bagian Judul (header) yang

berisi nama modul, bagian Deklarasi, dan badan (body) program

yang berisi instruksi yang akan dilaksanakan

(6)



Prosedur adalah modul program yang mengerjakan

tugas/aktivitas yang spesifik dan hasilnya diperoleh dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur



Oleh karena itu, pada setiap prosedur, keadaan awal

(K.awal) harus didefinisikan sebelum rangkaian instruksi di

Pendefinisian Prosedur

(K.awal) harus didefinisikan sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir (K.akhir) yang diharapkan setelah rangkaian instruksi dilaksanakan



Struktur Prosedur:

 bagian Judul (header): terdiri atas nama prosedur dan komentar yang menjelaskan spesifikasi prosedur tersebut

 bagian Deklarasi

 badan (body) prosedur

(7)

Notasi algoritma untuk mendefinisikan struktur prosedur (tanpa parameter)

procedure NamaProsedur

{ Spesifikasi prosedur, berisi penjelasan mengenai apa yang dilakukan oleh prosedur ini. }

{ K.awal : keadaan sebelum prosedur dilaksanakan. } { K.akhir: keadaan setelah prosedur dilaksanakan. } DEKLARASI

{ semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di



Prosedur diakses dengan cara memangil namanya dari program pemanggil (program utama atau modul program lain): Namaprosedur



Ketika NamaProsedur dipanggil, kendali program berpindah secara otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan, kendali program berpindah secara

otomatis ke instruksi sesudah pemanggilan prosedur

berlaku lokal di dalam prosedur didefinisikan di sini }

DESKRIPSI:

{ badan prosedur, berisi kumpulan instruksi }

(8)

Contoh 1: Prosedur dan program utama untuk menghitung nilai rata-rata N

buah bilangan bulat

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata N buah bilangan bulat. }

DEKLARASI (* Program Utama *) { tidak ada }

procedure HitungRataRata

{Menghitung nilai rata-rata N buah bilangan bulat. N>0}

DEKLARASI (* Prosedur *)

x : integer { data bilangan bulat }

N : integer { banyaknya data bilangan bulat, N > 0 } k : integer { pencacah banyak bilangan }

jumlah : integer { jumlah seluruh bilangan } rata : real { nilai rata-rata seluruh bilangan } DESKRIPSI : (* Prosedur *)

buah bilangan bulat yang dibaca dari piranti masukan.

Nilai rata-rata seluruh bilangan dicetak ke piranti keluaran.

DESKRIPSI : (* Prosedur *) read(N)

jumlah

0 { inisialisasi penjumlah } for k

1 to N do

read(x)

jumlah

jumlah + x

endfor

rata

jumlah/N

write(‘Nilai rata-rata = ‘,rata) DESKRIPSI : (Program Utama *)

write(‘Menghitung rata-rata N buah bilangan bulat’) HitungRataRata

(9)

Program RATA_RATA_BILANGAN_BULAT;

procedure HitungRataRata;

var

x, N, k, jumlah : integer;

rata : real;

begin

write(‘Masukkan banyaknya data ? ’); readln(N);

jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);

readln(x);

readln(x);

jumlah:=jumlah+x;

end;

rata:= jumlah/N;

writeln(‘Nilai rata-rata = ‘,rata);

end;

begin

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata;

end.

(10)

 Nama-nama (konstanta, peubah, tipe, dan lain-lain) yang dideklarasikan di dalam bagian Deklarasi prosedur

bersifat “lokal” dan hanya dapat digunakan di dalam prosedur yang melingkupinya saja

 Sedangkan nama-nama yang dideklarasikan di dalam

Nama Global dan Nama Lokal

 Sedangkan nama-nama yang dideklarasikan di dalam program utama bersifat “global” dan dapat digunakan di bagian manapun di dalam program, baik di dalam

program utama maupun di dalam prosedur

(11)

Contoh 2: prosedur HitungRataRata dan program utama

RATA_RATA_BILANGAN _BULAT yang sudah dimodifikasi dengan

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata } DEKLARASI (* Program utama *)

N : integer { banyaknya data bilangan bulat, N > 0 } rata : real { nilai rata-rata seluruh bilangan }

procedure HitungRataRata

{Menghitung nilai rata-rata N buah bilangan bulat. N>0}

DEKLARASI (* Prosedur *) x : integer

k : integer

jumlah : integer

DESKRIPSI : (* Prosedur *)

← dimodifikasi dengan

menempatkan N dan rata sebagai nama peubah di dalam

bagian deklarasi nama program utama

jumlah

0 { inisialisasi } for k

1 to N do

read(x)

jumlah

jumlah + x

endfor

rata

jumlah/N

DESKRIPSI : (* Program Utama *) read(N)

write(‘Menghitung rata-rata N buah bilangan bulat’) HitungRataRata

write(‘Nilai rata-rata = ‘,rata)

(12)

Program RATA_RATA_BILANGAN_BULAT;

var

N : integer;

rata : real;

procedure HitungRataRata;

var

x, k, jumlah : integer;

begin

jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);

readln(x);

readln(x);

jumlah:=jumlah + x;

end;

rata:= jumlah/N;

end;

begin

write(‘Masukkan banyaknya data ? ’); readln(N);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata;

writeln(‘Nilai rata-rata = ‘,rata);

end.

(13)



Peubah N dan rata bersifat global dan dapat digunakan di dalam prosedur HitungRataRata karena

dideklarasikan dalam bagian Deklarasi program utama



Sedangkan peubah x , k , dan jumlah bersifat lokal dan hanya dikenal dan digunakan di dalam lingkup prosedur hanya dikenal dan digunakan di dalam lingkup prosedur saja karena dideklarasikan dalam prosedur

HitungRataRata

(14)



Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil.

Penggunaan parameter menawarkan mekanisme penukaran informasi tersebut. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian



Parameter aktual adalah parameter yang disertakan ketika pemanggilan, sedangkan paramater formal adalah

Parameter

pemanggilan, sedangkan paramater formal adalah

parameter yang dideklarasikan di bagian header prosedur itu sendiri



Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal



Prosedur dengan parameter diakses dengan cara memanggil namanya dari program pemanggil (program utama atau modul program lain) dengan disertai parameter aktualnya:

Namaprosedur(daftar parameter aktual)

(15)

Notasi algoritma untuk mendefinisikan struktur prosedur dengan parameter

procedure NamaProsedur(daftar parameter formal)

{ Spesifikasi prosedur, berisi penjelasan tenang apa yang dilakukan oleh prosedur ini. }

{ K.awal : keadaan sebelum prosedur dilaksanakan. } { K.akhir: keadaan setelah prosedur dilaksanakan. }

DEKLARASI

{ semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini }

DESKRIPSI:

{ badan prosedur, berisi kumpulan instruksi }

(16)

Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan dalam prosedur:

1. Parameter Masukan (input parameter)

Jenis Parameter

2. Parameter Keluaran (output parameter)

3. Parameter masukan/keluaran (input/output

parameter)

(17)

Parameter Masukan (input parameter)



Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur



Pada bahasa pemrograman, istilah parameter masukan ini sering dinamakan parameter nilai (value parameter atau

parameter by value)



Pada parameter masukan , nilai (value) parameter aktual



Pada parameter masukan , nilai (value) parameter aktual diisikan (assign) ke dalam parameter formal yang

bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan. Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Itulah alasan mengapa parameter jenis ini diacu sebagai parameter masukan



Perubahan nilai parameter di dalam badan prosedur tidak

mengubah nilai parameter aktual. Karena yang dipentingkan

adalah nilainya, maka nama parameter aktual boleh berbeda

dengan nama parameter formal yang bersesuaian

(18)

Contoh 3: Prosedur dan program utama untuk menghitung nilai rata-rata N buah

bilangan bulat ditulis kembali prosedur

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata } DEKLARASI (* Program utama *)

Ndata : integer { banyaknya data bilangan bulat } procedure HitungRataRata(input N : integer)

{Menghitung nilai rata-rata N buah bilangan bulat}

{K.awal: N berisi banyaknya bilangan bulat, N > 0}

{K.akhir: rata-rata seluruh bilangan dicetak}

DEKLARASI (* Prosedur *) x, k, jumlah : integer

rata : real { nilai rata-rata seluruh bilangan } DESKRIPSI : (* Prosedur *)

jumlah

0 { inisialisasi penjumlah }

kembali prosedur

dengan menggunakan parameter masukan

jumlah

0 { inisialisasi penjumlah } for k

1 to N do

read(x)

jumlah

jumlah + x

endfor

rata

jumlah/N

write(rata)

DESKRIPSI : (* Program Utama *)

write(‘Menghitung rata-rata N buah bilangan bulat’) read(Ndata)

HitungRataRata(Ndata)

(19)

Program RATA_RATA_BILANGAN_BULAT;

var

Ndata : integer;

procedure HitungRataRata(N : integer);

var

x, k, jumlah : integer;

rata : real;

begin

jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);readln(x);

jumlah:=jumlah+x;

jumlah:=jumlah+x;

end;

rata:= jumlah/N;

writeln(‘Nilai rata-rata = ‘,rata);

end;

begin

write(‘Masukkan banyaknya data ? ’); readln(Ndata);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata(Ndata);

end.

(20)

Parameter Keluaran (output parameter)



Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan oleh prosedur



Pada bahasa pemrograman, istilah parameter keluaran sering dinamakan parameter acuan (reference parameter atau

parameter by reference)



Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur. Jadi, nama parameter aktual akan digunakan selama pelaksanaan prosedur



Karena nama parameter merupakan suatu lokasi di memori, maka

bila di dalam prosedur parameter aktual diisi suatu nilai, nilai

ini akan tetap berada di dalam parameter aktual meskipun

prosedur selesai dilaksanakan. Jadi, setelah pemanggilan,

parameter aktual berisi suatu nilai yang merupakan

keluaran dari prosedur tersebut

(21)

Contoh 4: Prosedur dan program utama untuk menghitung nilai rata- rata N buah bilangan

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata } DEKLARASI (* Program Utama *)

Ndata : integer rerata : real

procedure HitungRataRata(input N:integer, output rata:real)

{ Menghitung nilai rata-rata N buah bilangan bulat } { K.awal: N berisi banyaknya bilangan bulat, N > 0 } { K.akhir: rata berisi rata-rata seluruh bilangan } DEKLARASI (* Prosedur *)

x, k, jumlah : integer

rata N buah bilangan bulat ditulis kembali prosedur dengan nilai rata-rata merupakan keluaran prosedur

DESKRIPSI : (* Prosedur *)

jumlah ← 0 { inisialisasi penjumlah } for k ← 1 to N do

read(x)

jumlahjumlah + x endfor

rata jumlah/N

DESKRIPSI : (* Program utama *)

write(‘Menghitung rata-rata N buah bilangan bulat’) read(Ndata)

HitungRataRata(Ndata,rerata) write(rerata)

(22)

Program RATA_RATA_BILANGAN_BULAT;

var

Ndata : integer;

rerata : real;

procedure HitungRataRata(N : integer; var rata : real);

var

x, k, jumlah : integer;

begin

jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);readln(x);

jumlah := jumlah + x;

end;

rata:= jumlah/N;

end;

begin

write(‘Masukkan banyaknya data ? ’); readln(Ndata);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata(Ndata,rerata);

writeln(‘Nilai rata-rata = ‘,rerata);

end.

(23)

Parameter masukan/keluaran (input/output parameter)



Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur

tersebut. Pada bahasa pemrograman, seperti halnya parameter keluaran, parameter masukan/keluaran juga sering

dinamakan parameter acuan (reference parameter atau parameter by reference).



Parameter masukan digunakan pada situasi di mana informasi



Parameter masukan digunakan pada situasi di mana informasi dikirim hanya dari titik pemanggilan prosedur ke prosedur itu sendiri.

Sedangkan parameter keluaran hanya mengirim informasi dari prosedur ke titik pemanggilan prosedur. Pada kebanyakan aplikasi, informasi juga harus dikirim dalam kedua arah, jadi prosedur juga harus dapat mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil (parameter masukan/keluaran

umumnya digunakan pada situasi seperti ini)



Parameter masukan/keluaran dideklarasikan di dalam header

prosedur, sebagaimana parameter masukan. Tetapi, parameter

keluaran harus dideklarasikan dengan kata kunci input/output

(24)



Seperti halnya pada parameter keluaran, bila prosedur yang

mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan (substitute) nama

parameter formal yang bersesuaian di dalam prosedur. Selain itu, isi atau nilai parameter aktual juga ikut disalin ke dalam parameter

formal. Jadi, nama dan nilai parameter aktual digunakan di seluruh bagian prosedur.

bagian prosedur.



Akibat penggunaan parameter masukan/keluaran, bila parameter aktual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik

pemanggilan juga berubah. Ini berbeda dengan parameter masukan, yang dalam hal ini meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai parameter aktual tersebut tidak berubah di titik pemanggilan



Hal lain yang harus diperhatikan pada jenis parameter

masukan/keluaran ini adalah parameter aktual harus berupa

peubah, tidak boleh berupa tetapan atau ekspresi

(25)

Contoh 5: Prosedur dan program utama yang memperlihatkan efek penggunaan

parameter masukan

Algoritma MENAMBAH_DUA

{Program yang memperlihatkan efek penggunaan parameter masukan}

DEKLARASI (* Program Utama *) a,b : integer

procedure TambahDua(input x,y : integer)

{ Menambahkan nilai x dan y masing-masing dengan 2 } { K.awal: x dan y sudah berisi }

{ K.akhir: nilai x dan y masing-masing bertambah 2 } DEKLARASI (* Prosedur *)

{ tidak ada }

DESKRIPSI : (* Prosedur *) xx + 2

yy + 2

write(‘Nilai x dan y di akhir prosedur : ’) write(‘ x = ‘, x)

parameter masukan dan perbandingannya dengan parameter masukan/keluaran

write(‘ x = ‘, x) write(‘ y = ‘, y)

DESKRIPSI : (* Program Utama *) a ← 15

b ← 10

write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b) TambahDua(a,b)

write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b)

(26)

Program MENAMBAH_DUA;

var

a,b: integer;

procedure TambahDua(x,y : integer);

begin

x := x + 2;

y := y + 2;

writeln(‘Nilai x dan y di akhir prosedur : ’);

writeln(‘ x = ‘, x);

writeln(‘ y = ‘, y);

end;

begin

a:=15;

a:=15;

b:=10;

writeln(‘Nilai a dan b sebelum pemanggilan : ’);

writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

TambahDua(a,b);

writeln(‘Nilai a dan b sesudah pemanggilan : ’);

writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

end.

(27)



Hasil algoritma MENAMBAH_DUA dengan penggunaan parameter masukan adalah:



Nilai a dan b sebelum pemanggilan :

a = 15 b = 10

Nilai x dan y di akhir prosedur :

Contoh 5: Hasil Keluaran



Nilai x dan y di akhir prosedur :

a = 17 b = 12



Nilai a dan b sesudah pemanggilan :

a = 15 b = 10



Jadi, setelah pemanggilan prosedur, nilai a dan b tidak

berubah

(28)

Contoh 6: Prosedur dan program utama dengan parameter masukan/keluaran

Algoritma MENAMBAH_DUA

{ Program yang memperlihatkan efek penggunaan parameter masukan/keluaran }

DEKLARASI a,b : integer

procedure TambahDua(input/output x,y : integer)

{ Menambahkan nilai x dan y masing-masing dengan 2 } { K.awal: x dan y sudah berisi }

{ K.akhir: nilai x dan y masing-masing bertambah 2 } DEKLARASI

{ tidak ada } DESKRIPSI : xx + 2 yy + 2 y y + 2

write(‘Nilai x dan y di akhir prosedur : ’) write(‘ x = ‘, x)

write(‘ y = ‘, y) DESKRIPSI :

a ← 15 b ← 10

write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b) TambahDua(a,b)

write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b)

(29)

Program MENAMBAH_DUA;

var

a,b: integer;

procedure TambahDua(var x,y : integer);

begin

x := x + 2;

y := y + 2;

writeln(‘Nilai x dan y di akhir prosedur : ’);

writeln(‘ x = ‘, x);

writeln(‘ y = ‘, y);

end;

begin begin

a:=15;

b:=10;

writeln(‘Nilai a dan b sebelum pemanggilan : ’);

writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

TambahDua(a,b);

writeln(‘Nilai a dan b sesudah pemanggilan : ’);

writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

end.

(30)



Hasil algoritma MENAMBAH_DUA dengan penggunaan parameter masukan/keluaran adalah:



Nilai a dan b sebelum pemanggilan :

a = 15 b = 10



Nilai x dan y di akhir prosedur :

Contoh 6: Hasil Keluaran

Nilai x dan y di akhir prosedur :

a = 17 b = 12



Nilai a dan b sesudah pemanggilan :

a = 17 b = 12



Akibat penggunaan x dan y sebagai parameter

masukan/keluaran, bila nilai a dan b diubah di dalam prosedur TambahDua, maka perubahan ini dibawa ke titik

pemanggilan prosedur TambahDua . Jadi, setelah pemanggilan

prosedur, nilai a dan b berubah

Referensi

Dokumen terkait

telah disampaikan PPATK kepada Penyidik selama tahun 2017 (s.d. Jumlah HA dengan dugaan tindak pidana Korupsi tersebut lebih rendah sebesar 10,1 persen dibandingkan jumlah

Pembahasan penelitian pengembangan ini dilakukan berdasarkan tahapan-tahapan pada penelitian pengembangan yang dimulai dengan membuat desain/draf produk pengembangan

Dari pertimbangan-pertimbangan mengenai deskripsi proses, kelebihan dan kekurangan, serta kondisi proses, dipilih metode pulpikasi kraft (sulfat) sebagai

Segala puji dan syukur penulis panjatkan kehadirat Allah SWT yang telah mencurahkan rahmat dan hidayahNya, shalawat serta salam semoga tercurah kepada Nabi Muhammad SAW

Judul : Pengaruh Ekstrak Etanol Temulawak (Curcuma xanthorrhiza Roxb.) terhadap Jumlah Total dan Diferensiasi Leukosit pada Ayam Petelur (Gallus gallus) Strain ISA Brown... Penulis

Upaya yang dilakukan pihak KPN Satya Bakti dalam menyelesaikan kredit macet yaitu pengendalian kredit macet dengan jalan rescheduling (penjadwalan kembali),

Q: Nilai rata-rata UN murni saya kurang dari yang disyaratkan dan saya tidak memiliki sertifikat JLPT, apakah saya bisa tetap mendaftar.. A: