Prosedur - Telkom University

advertisement
KUG1A3 Algoritma & Pemrograman
Burhanuddin D
Prodi S1-Sistem Komputer, F Teknik Eelktro
Universitas Telkom
Presentasi 8
Prosedur / Subprogram
Pemrograman Moduler
• program dibagi menjadi modul-modul yang
terdefinisi dengan baik dalam bentuk
prosedur-prosedur
• harus jelas definisi dan ruang lingkupnya
agar dapat dipanggil secara independen
• mempermudah programmer untuk
“membaca” suatu program yang sangat
besar
• pada beberapa bahasa pemrograman,
Programmer cukup “memanggil” saja
prosedur yang sudah tersedia.
KUG1A3 Algoritma & Pemrograman
2
Prosedur
• Prosedur : sekelompok instruksi yang berdiri
sendiri dan diberi nama yang merupakan bagian
dari program
• Prosedur akan memberikan hasil yg terdefinisi.
• Spesifikasi
– nama prosedur dan parameter (jika ada)
– initial state (IS) : keadaan awal sebelum prosedur
dipanggil
– final state (FS) : keadaan akhir setelah prosedur
– Prosedur didefinisikan dalam kamus
KUG1A3 Algoritma & Pemrograman
3
Deklarasi Prosedur
Procedure Pro1 (input a : integer )
Tulisan
“Procedure”
Jenis
parameter
Nama
prosedur
Nama
Parameter
& tipenya
KUG1A3 Algoritma & Pemrograman
4
Parameter
• Parameter :
– Formal : parameter yang ditulis pada saat
deklarasi prosedur
– Aktual : parameter yang ditulis pada saat
prosedur dipanggil
• Ketika prosedur dipanggil
– Terjadi asosiasi paramater (jika ada), dengan
urutan yang sama antara parameter formal dan
aktual
– IS dan FS menjamin bahwa eksekusi program
akan menghasilkan efek neto yang diharapkan
KUG1A3 Algoritma & Pemrograman
5
Pemanggilan Prosedur
• Misal telah terdefinisi prosedur Pro1
Program Contoh1
Kamus :
N, Bil, i : integer
Procedure Pro1 (input a : integer )
Algoritma :
input (N)
Pro1(N)
Bil  Bil + N
output(Bil)
N berasosiasi
dengan a !
KUG1A3 Algoritma & Pemrograman
6
Parameter Formal
• Jenis Parameter formal,
Input: diperlukan sebagai masukan untuk
melakukan aksi
Output: variabel untuk menyimpan nilai dari
hasil eksekusi instruksi pada prosedur.
Input/output : variabel berisi nilai yang
diperlukan sebagai masukan untuk
melakukan aksi dan menyimpan nilai dari
hasil eksekusi instruksi pada prosedur.
KUG1A3 Algoritma & Pemrograman
7
Parameter Aktual
• Dapat berupa nama atau harga (nilai)
• Jika tipe parameter output : harus berupa
variabel karena hasil disimpan di nama
variabel tsb)
• Tipe parameter aktual harus sama dengan
tipe parameter formal
• Pada saat pemanggilan, parameter aktual
harus sesuai dengan parameter formalnya.
– parameter input harus terdefinisi nilainya
– parameter output tidak perlu didefinisikan
nilainya
– parameter input/output harus merupakan variabel
yang terdefinisi nilainya.
KUG1A3 Algoritma & Pemrograman
8
Asosiasi Parameter
Program Contoh2
Kamus :
N, Bil, i : integer
Procedure Pro2 (input a : integer, output b : integer)
Algoritma :
input (N)
Pro2(N, Bil)
Pro2(i,Bil)
Pro2(N,10)
Pro2(10,N)
Ok :N dg a , Bil dg b!
Error : i tdk terdefinisi!
Error : 10 bukan variabel
Ok :10 dg a , N dg b!
KUG1A3 Algoritma & Pemrograman
9
Kamus global & lokal
• Kamus global : kamus yang berada pada program
utama
– Semua tipe, konstanta, variabel dan prosedur
dikenal oleh semua bagian program
– Bisa digunakan oleh prosedur
• Kamus lokal : kamus yang berada pada prosedur /
fungsi
– Hanya berlaku dalam ruang lingkup
fungsi/prosedur yang bersangkutan dan
fungsi/prosedur yang didefinisikan di dalamnya.
KUG1A3 Algoritma & Pemrograman
10
Kamus global & lokal (lanj)
Program Contoh3
Kamus :
N, Bil, i : integer
Procedure Pro3 (input a : integer, output b : integer)
Algoritma :
input (N)
Pro3(N, Bil)
Procedure Pro3 (input a : integer, output b : integer)
Kamus :
c : integer
Algoritma :
input (c)
c  a + c
b  a + N
KUG1A3 Algoritma & Pemrograman
11
Kamus global & lokal (lanj)
 N, Bil, I dikenal oleh Pro3
 a, b tidak dikenal di program utama !
 Dg deklarasi seperti sebelumnya :
Algoritma :
input (N)
Pro2(N, Bil)
N  a + Bil
Pro2 (a,b)
Error : a tdk dikenal
Error : a,b tdk dikenal
KUG1A3 Algoritma & Pemrograman
12
Contoh 1. Voltage
Buat program untuk membaca nilai tahanan dan arus,
dan menghitung nilai tegangan pada sebuah prosedur.
Input : tahanan (R) dan arus (A), keduanya integer
Proses : V = R * I
Output : V
Proses dilakukan pada suatu prosedur terpisah.
Ada dua cara :
 Menggunakan variabel global saja
 Menggunakan variabel global dan parameter lokal
KUG1A3 Algoritma & Pemrograman
13
Solusi 1 : tanpa var lokal
KUG1A3 Algoritma & Pemrograman
14
Contoh Solusi 2 : Voltage
Program Voltage
{ Program unt menghitung voltase dan mencetak hasilnya
Masukan adalah R (tahanan,ohm) dan I (arus,ampere) }
Kamus
R,I,V : integer
Procedure Tegangan ( input R,I : integer,output V : integer )
Algoritma
input(R,I)
Tegangan (R,I,V)
Output(‘Tegangan =‘,V)
Procedure Tegangan ( input R,I : integer, output V : integer )
{ Prosedur unt mengitung tegangan }
Kamus
Algoritma
V ← R * I
KUG1A3 Algoritma& Pemrograman
15
Contoh 3 : Pertukaran 2 variabel
Buat prosedur untuk menukarkan nilai dari 2 variable.
Program Tukar
Kamus
x,y : integer
Algoritma
input(x,y)
Protukar(x,y)
output(x,y)
Procedur Protukar ( input/output A,B; integer )
{ Prosedur unt menukar 2 nilai
IS : nilai A=x, nilai B=y; FS : nilai A=y, nilai B=x
Kamus
C : integer
Algoritma
C ←A
A←B
B←C
KUG1A3 Algoritma & Pemrograman
16
Contoh 4 : Putar Bilangan
Buat prosedur untuk memutar urutan 3 bilangan,
dengan prosedur Protukar
Contoh : jika a=3,b=7 dan c=8, maka akan menjadi
a=8, b=3, c=7.
Procedur Putarbil ( input/output A,B,C; integer )
{ Prosedur unt memutar 3 bilangan
IS : nilai A=x, nilai B=y; C=z
FS : nilai A=z, nilai B=x, dan C=y }
Kamus
Algoritma
Protukar(A,C)
Protukar(B,C)
KUG1A3 Algoritma & Pemrograman
17
Latihan Prosedur 1 : Deret
Buat algoritma untuk menampilkan deret berikut :
1 2 4 7 11 ……..
Ketentuan :
• Cacah suku yang ditampilkan adalah N. Misal :
jika N = 5, maka program akan menampilkan : 1
2 4 7 11.
• Buat prosedur untuk menampilkan deret
tersebut.
• Buat juga prosedur untuk menghitung jumlah
dari semua suku bernilai ganjil dan tampilkan
hasilnya.
• Buat juga program Pascalnya.
KUG1A3 Algoritma & Pemrograman
18
Latihan Prosedur 2 : Bonus Pegawai
Buat prosedur untuk menghitung bonus yang diterima
karyawan, dengan ketentuan :
a. Bonus 1 juta untuk karyawan yang telah bekerja
minimal 1 tahun dan usia mencapai 50 tahun.
b. Bonus 750ribu untuk karyawan yang telah bekerja
minimal 5 tahun atau usia telah mencapai 50 tahun.
c. Bunis 500 ribu untuk karyawan lainnya.
KUG1A3 Algoritma & Pemrograman
19
Latihan Prosedur : Gaji Karyawan
Sebuah perusahaan memiliki struktur gaji sebagai berikut :
gaji tetap, gaji jam hadir dan lembur. Tabel gaji tetap dan
gaji jam hadir sebagai berikut
Golongan Gaji tetap
Gaji jam hadir
1
500.000
5000
2
400.000
4000
3
300.000
3000
4
200.000
2000
Lembur akan dibayarkan jika jam hadir lebih dari 150 jam
per bulan. Gaji lembur adalah 1,5 kali lipat dari gaji jam
hadir. Data yang dibaca adalah nama dan golongan karyawan,
serta jam hadir per bulan. Output adalah jumlah gaji yang
diterima karyawan tersebut.
KUG1A3 Algoritma & Pemrograman
20
Gaji Karyawan ( lanj)
• Input : golongan, nama, jam kerja
• Output : gaji ( termasuk lembur )
• Proses :
– Gaji tetap / bulanan : tergantung golongan
– Gaji hadir : tarif per jam (tergantung
golongan) * jam hadir
– Gaji lembur : jika jam kerja > 150, jam lembur
= jam kerja – 150, jika tidak sama, maka jam
lembur = 0. Gaji lembur = 1.5 * gaji/jam (
tergantung golongan) * jam lembur
KUG1A3 Algoritma & Pemrograman
21
Gaji Karyawan ( lanj)
• Buat 3 prosedur untuk menentukan gaji bulanan,
gaji kehadiran dan gaji lembur.
• Parameter : gaji_bul adalah golongan & gj_tetap
• Parameter : gaji_hadir adalah jam_kerja dan
gj_hadir
• Parameter : gaji_lembur adalah jam_kerja &
lembur
• Total gaji : gj_tetap+gj_hadir+gj_lembur
• Buat program utama yang meminta nama,
golongan dan jam kerja. Proses perhitungan gaji
dengan menggunakan prosedur tersebut.
• Output : perincian gaji dan jumlah total gaji
KUG1A3 Algoritma & Pemrograman
22
Gaji Karyawan ( lanj)
Masukkan nama : Ida
Golongan : 2
Jam kerja bulan ini : 170
Perhitungan gaji :
Gaji tetap : 300.000
Gaji hadir : 150 x 3000 = 450.000
Gaji lembur : (170-150) x 3000 x 1.5
= 90000
Total gaji = 300.000+450.000+90.000 = 840.000
KUG1A3 Algoritma & Pemrograman
23
Download