Anda di halaman 1dari 37

Prosedur dan Fungsi

Sub-Capaian Pembelajaran MK

“Mahasiswa mampu menerapkan konsep prosedur dan


fungsi dalam program.”
Peta Capaian Pembelajaran MK

We Are Here !!! 

Mid Test
Agenda
• Pendahuluan
• Mendefinisikan Prosedur
• Pemanggilan Prosedur
• Deklarasi Nama Global, Nama Lokal, dan
Lingkupnya
• Parameter Formal dan Aktual
• Definisi Fungsi
• Pemanggilan Fungsi
• Prosedur atau Fungsi?
Pendahuluan
• Kata “Prosedur” sering kita dengar dalam kehidupan sehari-hari.
Seorang mahasiswa misalnya, setiap awal semester selalu melakukan
pendaftaran ulang (registrasi). Pihak kampus telah mengumumkan
langkah-langkah pendaftaran ulang yang dinyatakan sebagai prosedur
daftar ulang.
• Ketika sebuah prosedur dijalankan, maka instruksi-instruksi di
dalamnya dikerjakan satu per satu. Pada kasus registrasi mahasiswa,
mahasiswalah yang menjalankan prosedur daftar ulang.
• Prosedur digunakan untuk memudahkan programmer dalam
membuat program yang sistematis dan melakukan tracking bug.
Mendefinisikan Prosedur
• Pada dasarnya struktur prosedur sama dengan struktur program
biasa yaitu ada bagian judul (header) yang terdiri atas nama
prosedur, bagian deklarasi untuk mendefinisikan nama peubah, nama
tipe dan konstanta dan bagian algoritma yang merupakan badan
(body) prosedur.
• Setiap prosedur mempunyai nama yang unik. Nama prosedur
sebaiknya diawali dengan kata kerja aktif karena prosedur berisi
aktivitas melakukan sesuatu, misalkan HitungLuas, Tukar, CariMaks,
Inisialisasi, dll.
Mendefinisikan Prosedur

Pendeklarasian parameter di dalam prosedur bukanlah keharusan.


Dengan kata lain, parameter boleh ada atau tidak ada. Kelak Anda
akan memahami kapan diperlukan pendefinisian prosedur dengan
parameter.
Mendefinisikan Prosedur
Pemanggilan Prosedur
• Prosedur bukan program yang berdiri sendiri, jadi ia tidak dapat
dieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalam
prosedur dapat dilaksanakan hanya bila prosedur tersebut diakses.
Prosedur diakses dengan cara memanggil namanya dari program
pemanggil (misalnya dari program utama atau dari modul program
lainnya)
Nama Global, Nama Lokal, dan Lingkup
• Nama-nama (konstanta, peubah, tipe, dan lain-lain) yang
dideklarasikan di dalam prosedur (termasuk parameter, jika ada)
hanya “dikenal” di dalam badan prosedur yang bersangkutan. Nama-
nama yang dideklarasikan di dalam prosedur tersebut dikatakan
lingkupnya “lokal”. Nama-nama lokal hanya berlaku di dalam
prosedur yang melingkupinya saja.
• Sebaliknya nama-nama yang dideklarasikan di dalam program utama
dikatakan lingkupnya “global”. Nama-nama global dapat digunakan di
bagian manapun di dalam program baik di dalam program utama
maupun di dalam prosedur yang dipanggil. Lihat kembali contoh
program segitiga!
• Keputusan apakah suatu peubah akan dideklarasikan secara global
atau lokal berggantung pada penggunaan nama tersebut. Bila suatu
peubah digunakan di seluruh bagian program, maka peubah tersebut
harus dideklarasikan secara global.
Parameter

Masukan

Formal Keluaran

Parameter
Masukan/Keluaran

Aktual
Parameter Aktual & Formal
• Parameter aktual yaitu parameter yang disertakan pada waktu
pemanggilan.
• Parameter formal yaitu parameter yang dideklarasikan pada bagian
header prosedur.
• Tiap-tiap parameter aktual berpasangan dengan parameter formal
yang bersesuaian.
• Aturan yang harus diperhatikan dalam korespondensi satu-satu
antara parameter actual dan parameter formal adalah:
1. Jumlah parameter aktual pada pemanggilan prosedur harus
sama dengan jumlah parameter formal pada deklarasi
prosedurnya.
2. Tiap parameter aktual harus bertipe sama dengan tipe
parameter formal yang bersesuaian.
Parameter masukan & keluaran
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).
Parameter keluaran adalah parameter yang menampung keluaran
yang dihasilkan oleh prosedur, Sedangkan parameter
masukan/keluaran adalah parameter yang berfungsi sebagai masukan
sekaligus keluaran bagi prosedur tersebut.

procedure HitungLuasSegitiga (input alas, tinggi: real)


{Menghitung luas segitiga dengan rumus Luas = (alas x
tinggi)/2}

DEKLARASI
luas : integer
ALGORITMA
luas  (alas * tinggi) /2
write(luas)
Contoh Pemanggilan (1)

PROGRAM Segitiga
{Menghitung luas N buah segitiga}

DEKLARASI
i, N: integer
a, t: real
procedure HitungLuasSegitiga(input alas, tinggi: real)

ALGORITMA
read(N)
for i  1 to N do
read(a,t)
HitungLuasSegitiga(a,t)
end for
Mekanisme korespondensi satu-satu
Misalkan nilai a yang dibaca adalah 10 dan nilai t yang dibaca adalah 5,
maka parameter alas akan menerima nilai 10 dari a dan parameter
tinggi akan menerima 5 dari t. Selanjutnya nilai alas dan tinggi
digunakan untuk menghitung luas segitiga di dalam prosedur
HitungLuasSegitiga.
Parameter Keluaran
procedure HitungLuasSegitiga (input alas, tinggi: real,
output luas: real)
{Menghitung luas segitiga dengan rumus Luas = (alas x
tinggi)/2}

DEKLARASI
{tidak ada}
ALGORITMA
luas  (alas * tinggi) /2
Contoh Pemanggilan (2)
PROGRAM Segitiga
{Menghitung luas N buah segitiga}
DEKLARASI
I, N: integer
a,t,L: real
procedure HitungLuasSegitiga(input alas, tinggi: real,
output luas: real)

ALGORITMA
read(N)
for i  1 to N do
read(a,t)
HitungLuasSegitiga(a,t,L)
write(L)
end for
Parameter Masukan/Luaran
• Parameter masukan/keluaran dideklarasikan di dalam header
prosedur dengan kata kunci input/output. Parameter masukan/luaran
harus berupa peubah, tidak boleh berupa konstanta/ekspresi.

procedure Tukar(input/output A,B: integer)


{Mempertukarkan nilai A dan B}

DEKLARASI
C: integer
ALGORITMA
C  A
A  B
B  C
Contoh Pemanggilan (3)
PROGRAM PertukaranNilai
{Menghitung luas N buah segitiga}
DEKLARASI
m,n: integer
procedure Tukar(input/output A,B: integer)

ALGORITMA
m  8
n  5
write(m,n) {cetak nilai m dan n sebelum pertukaran}
Tukar(m,n)
write(m,n)
FUNGSI
Definisi Fungsi
• Fungsi adalah bagian program yang menerima data masukan dan
memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu.
Didalam matematika kita mengenal cara penulisan fungsi seperti
pada contoh berikut ini:

• Pada kedua contoh di atas, f dan H adalah nama fungsi, sedangkan x


dan y adalah parameter fungsi yang bersangkutan. Nilai yang
diberikan fungsi bergantung pada masukan parameter. Misalkan:
Pendefinisian Fungsi
• Sebagaimana halnya pada prosedur, struktur fungsi sama dengan
struktur algoritma yang sudah anda kenal: ada bagian header yang
berisi nama fungsi (beserta parameter masukan, jika ada) dan
spesifikasi tentang fungsi tersebut, bagian deklarasi, dan badan
fungsi.
Pendefinisian Fungsi
• Tipe menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilai
yang diberikan oleh fungsi dapat bertipe dasar maupun bertipe
bentukan. Parameter formal selalu berjenis parameter masukan
sehingga deklarasi nama parameter selalu diawali dengan kata input.
• Pernyataan return ekspresi bertujuan untuk mengembalikan nilai
yang dihasilkan oleh fungsi tersebut. Ekspresi dapat berupa
konstanta, atau sebuah peubah, atau sebuah rumus. Di bawah ini
diberikan beberapa contoh pendefinisian fungsi.
• Contoh: Tulislah fungsi untuk menghasilkan nilai F(x)=2x2+5x +8, x€R
Contoh Penyelesaian
function F(input x: real)  real
{mengembalikan nilai F(x)=2x2+5x+8, x€R}

DEKLARASI
{tidak ada}

ALGORITMA
return 2*x*x+5*x+8

Di dalam algoritma tersebut, F adalah nama fungsi dengan tipe Real sedangkan x
adalah parameter (by value) formal.
Contoh Persoalan
• Buatlah fungsi untuk menentukan apakah sebuah bilangan bulat
merupakan bilangan ganjil. Bilangan bulat disebut ganjil jika ia tidak
habis dibagi dengan dua!

function Ganjil(input n: integer)  boolean


{true jika n adalah bilangan ganjil}

DEKLARASI
{tidak ada}

ALGORITMA
return (n mod 2 ≠ 0)
Contoh Persoalan
function Ganjil(input n: integer)  boolean
{true jika n adalah bilangan ganjil}

DEKLARASI
{tidak ada}

ALGORITMA
return (n mod 2 ≠ 0)

Didalam fungsi ganjil di atas ekspresi n mod 2 ≠0 adalah ekspresi Boolean (nilai
ekspresi mungkin true atau false). Pernyataan tersebut ekivalen dengan:
Contoh Persoalan
• Buatlah fungsi untuk menentukan nama-nama bulan berdasarkan
nomor bulannya (1 sampai 12)!
Pemanggilan Fungsi
• Fungsi diakses dengan cara memanggil namanya dari program
pemanggil, diikuti dengan daftar parameter actual (bila ada). Karena
fungsi menghasilkan nilai, maka nilai tersebut dapat diperlakukan
dengan dua cara.
• Pertama, nilai yang dikembalikan oleh fungsi ditampung di dalam
sebuah peubah yang bertipe sama dengan tipe fungsi.

Contoh pemanggilan:
Y  F(5)
B  Ganjil(m)
Pemanggilan Fungsi
• Kedua, nilai yang dikembalikan oleh fungsi dapat langsung
dimanipulasi seperti pada contoh berikut:
write(F(5))
if Ganjil(m) then …

Contoh Persoalan:
Buatlah program menggunakan fungsi yang menentukan sebuah tahun itu adalah
tahun kabisat. Tahun kabisat yaitu tahun yang habis dibagi 4 atau habis dibagi 400
jika tahun tersbut kelipatan 100!
function Kabisat(input th: integer)  boolean
{true jika th adalah tahun kabisat}
DEKLARASI
{tidak ada}
ALGORITMA
if (th mod 4 = 0 and th mod 100 ≠ 0) or (th mod 400 = 0 and th mod 100 = 0) then
return true
else
return false
end if
Contoh Penyelesaian
PROGRAM TahunKabisat
{Program utama menentukan apakah suatu tahun merupakan
tahun kabisat}
DEKLARASI
tahun: integer
function Kabisat(input th: integer) boolean

ALGORITMA
read(tahun)
if Kabisat(tahun) then
write(‘tahun kabisat’)
else
write(‘bukan tahun kabisat’)
end if
Prosedur atau Fungsi?
• Fungsi digunakan apabila modul program mengembalikan sebuah
nilai, sementara prosedur digunakan apabila modul menghasilkan
efek netto dari (satu atau) sekumpulan aksi. Namun dalam praktik,
sering perbedaan antara keduanya samar-samar karena sebuah
prosedur dapat juga ditulis sebagai fungsi demikian pula sebaliknya.
Pada akhirnya pemilihan apakah sebuah modul direalisasikan
sebagai fungsi atau prosedur bergantung pada kebutuhan dan seni
memprogram.
Mengubah fungsi menjadi prosedur
function Maks(input a,b: integer)  integer

DEKLARASI
{tidak ada}

ALGORITMA
if a ≥ b then
return a
else
return b
end if
Mengubah fungsi menjadi prosedur
procedure TentukanMaks(input a,b: integer,
output maks: integer)

DEKLARASI
{tidak ada}

ALGORITMA
if a ≥ b then
maks  a
else
maks  b
end if
Tugas 3_ALPRO
Petunjuk pengerjaan:
• Tentukan kelompok kalian sendiri dan kerjakan beberapa latihan soal di
bawah ini, diketik dalam format PDF dan dikumpulkan via email ke
yudha@ittelkom-pwt.ac.id paling lambat hari Minggu, tanggal 9
Desember 2018 pukul 23:59 WIB. Format file dan subjek email: [ALPRO]
KELAS_Tugas3_NIM1_Nama1_NIM2_Nama2_NIM3_Nama3

1. [poin 10] Tulislah prosedur untuk menghitung jumlah N buah


bilangan genap pertama (bilangan genap dimulai dari 0). Prosedur
menerima (parameter) masukan N dan memberikan (parameter)
luaran jumlah N buah bilangan genap pertama!
2. [poin 10] Tulislah prosedur yang menghasilkan nilai rata-rata
sekumpulan data bilangan bulat yang dibaca secara berulang-ulang
dari papan ketik (akhir pembacaan adalah 9999). Prosedur
memiliki parameter luaran yaitu nilai rata-rata yang dihasilkan.
Tugas 3_ALPRO
3. [poin 15] Tuliskan prosedur yang menerima sebuah tanggal dalam
bentuk dd-mm-yyyy (contoh: 12-8-1996) dan memberikan luaran
tanggal sebelumnya. Catatan: parameter tanggal berjenis
masukan/keluaran.
4. [poin 10] Tuliskan prosedur yang menerima nama hari sekarang dan
menentukan nama hari besok. Misalkan hari sekarang “Rabu” maka
hari besok adalah “kamis”.
5. [poin 15] Realisasikan fungsi-fungsi berikut ini:
function abs(x:real)  real
{mengembalikan harga mutlak x. Contoh: jika x =-10 maka nilai mutlaknya
10, jika x = 10 maka nilai mutlaknya 10}

Function double(x:real)  real


{menembalikan 2 kali nilai x. Contoh jika x = 5 maka nilai double-nya
adalah 10

function odd(x:integer)  Boolean


{mengembalikan true jika x bilangan kelipatan 5 dan false jika x bukan
bilangan kelipatan 5
Tugas 3_ALPRO
6. [poin 10] Buatlah fungsi jarak yang menerima masukan dua buah
titik P1(x,y) dan P2(x,y) dan menghitung jarak kedua titik tersebut.
Gunakan rumus Euclidean untuk menghitung jarak d.

7. [poin 10] Buatlah fungsi lower yang mengubah huruf kecil menjadi
huruf besar!
8. [poin 20] Buatlah fungsi phytagoras yang menerima tiga buah
bilangan bulat a,b,c dan menentukan apakah ketiga bilangan
tersebut merupakan tripel phytagoras!

--------------------------------Selamat Mengerjakan---------------------------------

Anda mungkin juga menyukai