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