Anda di halaman 1dari 80

Pengampu: Prof. Dr. Ir. Made Sudarma, M.A.Sc., IPU., ASEAN Eng.

PROGRAM STUDI TEKNIK ELEKTRO – UNIVERSITAS UDAYANA


FUNGSI
POKOK BAHASAN
Fungsi
• Definisi
• Notasi Algoritmik
• Penulisan Fungsi
• Pemanggilan fungsi
• Fungsi Terdefinisi
DEFINISI FUNGSI
• Fungsi adalah sebuah transformasi akibat pemetaan
suatu nilai ke nilai lain
• Secara algoritmik, fungsi akan menerima harga yang
diberikan lewat parameter formal dan menghasilkan
nilai sesuai dengan definisi dalam spesifikasinya
• Dalam penulisannya fungsi terdiri dari:
• Nama fungsi
• Parameter formal
• Type hasil
• Fungsi yang telah didefinisikan dapat “dipanggil”
untuk diseksekusi lewat namanya dan diberikan
parameter aktual
• Contoh fungsi:
f(x) = 2x+4
Fungsi diatas memiliki parameter x :
jika x=4 maka f(x) akan menghasilkan 12
Jika x=1 maka f(x) akan menghasilkan 6
Notasi algoritmik
NOTASI ALGORITMIK FUNGSI
PENULISAN FUNGSI
• Menulis Fungsi hampir sama dengan menulis sebuah
program, yaitu ada bagian header, kamus dan
algoritma
• Misalkan akan dibuat fungsi yang berguna untuk
melakukan konversi dari nilai celcius ke reamur
• NB: Kamus yang ada pada deklarasi fungsi
merupakan kamus lokal (nama-nama yang
didefinisikan hanya dikenali dalam blok fungsi)
PEMANGGILAN FUNGSI
Contoh pemanggilan fungsi
• Kedua contoh program diatas sama-sama memanggil fungsi
CelciusToReamur yang telah didefinisikan. Apa perbedaan
kedua contoh program diatas ?
Contoh pemanggilan fungsi
PROSES EKSEKUSI FUNGSI

Terjadi proses asosiasi antara


Parameter Formal parameter formal dengan aktual

Parameter Aktual
o Bagaimana???
o Sudah cukup jelas dengan cara penulisan fungsi
dan pemanggilannya??
o Ingat bahwa Fungsi akan terlihat kegunaannya
apabila fungsi telah dipanggil!!
o Coba kita lihat contoh berikut
PENULISAN FUNGSI
PEMANGGILAN FUNGSI

Parameter aktual harus


memiliki type yang sama
dengan parameter formal
• Coba perhatikan kedua contoh teknik pemanggilan fungsi
pada program CONTOHF1 dan CONTOHF2 , apa
perbedaannya?
• Bila program CONTOHF1 diberi:
input(2,5)
Apa output dari program CONTOHF1???
Fungsi terdefinisi
PENGERTIAN FUNGSI TERDEFINISI
• Fungsi terdefinisi adalah fungsi yang sudah diberikan
/ disediakan oleh sistem, dan tinggal dipakai
(dipanggil)
• Fungsi terdefinisi selalu diberikan daftar dan
spesifikasinya (domain+range)
• Nb: Setiap bahasa pemrograman akan
menyediakan fungsi terdefinisi terutama pada
proses/operasi yang umum digunakan seperti
konversi tipe data, mencari nilai sinus
Contoh Fungsi Terdefinisi [1]
• Fungsi Terdefinisi untuk melakukan konversi tipe

• Fungsi Terdefinisi untuk memperoleh informasi tentang sebuah


string
Contoh Fungsi Terdefinisi [2]
• Fungsi Terdefinisi untuk seleksi terhadap sebuah string
Contoh Fungsi Terdefinisi [3]
• Fungsi Terdefinisi untuk perhitungan Matematika
Contoh Fungsi Terdefinisi [4]
• Fungsi Terdefinisi untuk suksesor dan predesesor integer
• Dari contoh-contoh penulisan fungsi yag telah
ditunjukkan, tidak ada perintah untuk menampilkan
hasil di dalam fungsi (output ) perintah/tahapan
untuk menampilkan hasil ada pada program
pemanggil fungsi.
• Fungsi ditujukan untuk melakukan proses transformasi
/ perubahan tanpa proses input/output
• Fungsi dapat dipanggil dari program utama atau
fungsi yang lain (ingat aturan pemanggilan!!)
Contoh-contoh Fungsi
FUNGSI KONVERSI
FUNGSI PERHITUNGAN
FUNGSI DENGAN BALIKAN BOOLEAN
FUNGSI DENGAN 2 NILAI BALIKAN
Latihan Penulisan Fungsi
• 1. Fungsi Untuk Pecahan
• 2. Fungsi Genap Ganjil
• 3. Pecahin Uang
PROSEDUR
DEFINISI
• Sederetan instruksi algoritmik yang diberi nama, dan akan
menghasilkan efek neto yang terdefinisi.
• Spesifikasi
• nama prosedur dan parameter (jika ada)
• initial state (IS) dan final state (FS)
• Prosedur didefinisikan dalam kamus
• Ketika “dipanggil”
• akan terjadi asosiasi paramater (jika ada)
• IS dan FS menjamin bahwa eksekusi program akan
menghasilkan efek neto yang diharapkan
• Jadi, setiap prosedur harus
• Dibuat spesifikasinya dan dituliskan kode programnya
• Dipanggil, pada saat eksekusi
PARAMETER
• Tanpa parameter
• Memanfaatkan nama-nama yang terdefinisi pada kamus
global
• Harus “hati-hati”, jika teks program sangat besar dan
memuat banyak file.
• Berparamater
• Untuk kode yang sama pada saat eksekusi dapat dipakai
untuk nama paramater yang berbeda-beda
• Parameter yang dituliskan pada definisi prosedur disebut
paramater formal
• Paramter yang dituliskan pada pemanggilan disebut
paramater aktual
 Parameter formal,
 list nama variabel untuk mendefinisikan prosedur,
 agar dapat dieksekusi dengan nama yang berbeda ketika
dipanggil
 akan diasosiasikan terhadap nama variabel lain pada saat
pemanggilan
 type parameter
 input, diperlukan sebagai masukan untuk melakukan aksi
 output, nilai yang dihasilkan oleh prosedur.
 Input/output, nilai yang diperlukan sebagai masukan untuk
melakukan aksi dan pada akhir prosedur akan dihasilkan nilai
yang baru.
 Parameter aktual,
 nama variabel atau nilai (harga) yang dipakai ketika prosedur
dipanggil
 dapat berupa nama atau harga (nilai)
 harus berupa nama jika tipe parameter output yang digunakan
(karena hasil disimpan di nama var tsb)
 Pada saat pemanggilan, parameter aktual harus sesuai
dengan parameter formalnya.
 parameter input harus terdefinisi nilainya
 parameter output tidak perlu didefinisikan nilainya
 paramter input/output harus terdefinisi nilainya.
 pada saat pemanggilan, terjadi asosiasi antara parameter
formal dan aktual sesuai posisi (posisition based), maka type
var atau nilai (harga) harus kompatibel
KAMUS LOKAL VS GLOBAL
• pendefinisian variabel kamus global berlaku untuk
program dan semua prosedur/fungsi yang
didefinisikan di kamus algoritma utama
• pendefinisian variabel pada kamus lokal hanya
berlaku dalam ruang lingkup fungsi/prosedur yang
bersangkutan dan fungsi/prosedur yang didefinisikan
di dalamnya.
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 tidak
perlu tahu sama sekali “isi” dari suatu prosedur/fungsi karena
sudah “disediakan” oleh bahasa pemrograman tsb.
Programmer cukup “memanggilnya” saja
NOTASI ALGORITMIK
pendefinisian/spesifikasi prosedur boleh kosong, jika
ada (minimal satu
nama) maka harus
Harus didefinisikan di satu atau beberapa
kamus pemanggil nama variabel
beserta type nya
pemanggilan prosedur

• Saat “dipanggil” terjadi asosiasi antara parameter aktual dan formal


• list-nama parameter formal dan aktual harus sama jumlah, urutan dan typenya.
Syarat pemanggilan prosedur :
• list-parameter aktual yang berupa Input dpt menggunakan
nama
• variabel atau nama konstanta yg telah dididefinisikan di
kamus atau konstanta
• harga suatu konstanta atau harga yg dihasilkan ekspresi atau
fungsi
• list-parameter aktual yang berupa Output harus berupa nama
variabel
• list-parameter aktual yang berupa Input/Output harus berupa
nama variabel
Contoh 1. Voltage
Contoh Solusi 1 : Voltage
Contoh Solusi 2 : Voltage
KOMENTAR SOLUSI VOLTAGE
• Prosedur dg parameter lebih menjamin modularitas
program. Sedapat mungkin semua prosedur
diparameterisasi dg baik
• Prosedur tanpa parameter bekerja dg nama
variabel global. Hanya boleh dipakai untuk kasus yg
sangat khusus yaitu jika nama variabel global mrp
“universe” dari program.
• Prosedur tanpa parameter tidak boleh dipakai jika
alasannya hanya karena pemrogram malas
menuliskan parameter !
Contoh 1 : Tukar
Contoh 2 : Tukar
Contoh 3 : Tukar
LATIHAN PROSEDUR
• 1. Bonus Pegawai
• 2. Gaji Karyawan
• 3. Akar Persamaan Kuadrat

• 4. Jumlah hari dalam bulan


PENGULANGAN
PENGANTAR
 Salah satu kemampuan komputer yang dapat dimanfaatkan
adalah mengulang suatu instruksi, bahkan aksi, secara
berulang-ulang dengan performansi yang sama.

 Berbeda dengan manusia yang cenderung melakukan


kesalahan jika melakukan hal yang sama (karena lelah atau
bosan), komputer akan melakukan pengulangan dengan
setia sesuai dengan perintah yang diberikan.
 Pengulangan harus berhenti, ini yang harus dijamin oleh
pemrogram. Pada bab tentang "mengupas kentang" telah
diberikan suatu contoh di mana pengulangan mungkin
dilakukan terus menerus.
 salah satu sifat algoritma yang harus dipenuhi adalah terjadi
dalam selang waktu terbatas maka pengulangan yang terus
menerus (looping) adalah algoritma yang salah.
 Pengulangan yang terus menerus harus dapat dideteksi
pemrogram bahkan sebelum program dieksekusi oleh mesin,
berdasarkan ketidaksesuaian (invariansi) dari badan
pengulangan tersebut.
STRUKTUR PENGULANGAN
Pengulangan terdiri dari dua bagian :
• kondisi yang mengakibatkan pengulangan suatu
saat berhenti, yang dinyatakan oleh sebuah ekspresi
logik baik secara eksplisit maupun implisit
• badan pengulangan, yaitu aksi yang harus diulang
selama kondisi yang ditentukan untuk pengulangan
masih dipenuhi
Disamping itu, struktur pengulangan biasanya disertai
dengan bagian :
• inisialisasi, yaitu aksi yang dilakukan sebelum
pengulangan dilakukan pertama kali.
• terminasi, yaitu aksi yang dilakukan setelah
pengulangan selesai dilakukan
NOTASI PENGULANGAN
Notasi pengulangan adalah salah satu notasi dasar dalam
penulisan algoritma selain analisa kasus. Notasi pengulangan
merupakan sebagian dari skema pengulangan yang akan
dibahas pada bab-bab berikutnya.

Ada lima macam notasi pengulangan:


 berdasarkan jumlah pengulangan (repeat times)
 berdasarkan kondisi berhenti (repeat until)
 berdasarkan kondisi pengulangan (while do)
 berdasarkan dua aksi (iterate stop)
 berdasarkan pencacah (traversal)
BERDASARKAN JUMLAH PENGULANGAN

• Aksi akan diulang sebanyak n kali, dan bukan urusan


pemrogram untuk mengelola pengulangan tersebut.
• Dengan hanya menyebutkan pengulangan
tersebut,pengulangan pasti akan berhenti suatu
saat.
BERDASARKAN KONDISI BERHENTI
• Aksi akan dihentikan jika kondisi-berhenti dipenuhi (berharga true)
• Aksi akan diulang jika kondisi-berhenti belum tercapai.
• Badan pengulangan pada notasi ini (Aksi) minimal akan dilakukan
satu kali karena pada waktu eksekusi pengulangan yang pertama
tidak ada dilakukan test terhadap kondisi-berhenti.
• Test terhadap kondisi berhenti dilakukan setelah Aksi dilaksanakan.
• Pengulangan ini berpotensi untuk menimbulkan "kebocoran" (ada Aksi
yang dileksekusi tanpa pernah diperiksa kondisi pelaksanaannya), jika
ada kemungkinan bahwa seharusnya Aksi tidak pernah boleh
dilakukan untuk kasus yang tertentu.
BERDASARKAN KONDISI PENGULANGAN

• Aksi akan dilakukan selama kondisi-pengulangan masih dipenuhi


(berharga true).
• Badan pengulangan (Aksi) pada notasi ini mungkin tidak akan pernah
dilakukan, karena sebelum aksi yang pertama dieksekusi dilakukan
test terhadap kondisi berhenti.
• Test terhadap kondisi-pengulangan dilakukan setiap kali sebelum
Aksi dilaksanakan.
• Pengulangan ini berpotensi untuk menimbulkan aksi "kosong" (tidak
pernah melakukan apa-apa karena pada test yang pertama, kondisi-
pengulangan tidak dipenuhi (berharga false).
BERDASARKAN DUA AKSI (ITERATE STOP)
iterate
Aksi-1
stop (kondisi-berhenti)
Aksi-2
{ Kondisi berhenti dicapai di titik program ini}
BERDASARKAN DUA AKSI (ITERATE STOP)
 Pengulangan ini seolah-olah adalah "gabungan“
pengulangan kedua dan ketiga
 Mekanisme :
1. Secara otomatis Aksi-1 dieksekusi
2. Kemudian test terhadap kondisi berhenti
3. Tergantung kondisi berhenti :
 Aksi-2 akan diaktifkan dan kemudian Aksi-1 yang berikutnya
diulang, atau
 pengulangan dihentikan karena efek neto dari Aksi-1
menghasilkan kondisi berhenti
 Pengulangan ini berguna untuk kasus-kasus dimana
Aksi-2 merupakan hal yang harus dilakukan tergantung
dari hasil Aksi-1
BERDASARKAN PENCACAH (TRAVERSAL)
nama-pencacah traversal [range harga]
Aksi
{ Catatan : nama--pencacah harus suatu type yang
terdefinisi suksesor dan predesesornya, setelah
pelaksanaan pengulangan selesai, harga yang
tersimpan pada nama-pencacah tidak terdefinisi :
jika hendak dipakai, harus didefinisikan kembali }
 Pemrogram tidak perlu melakukan operasi terhadap
suksesor/predesesor karena setiap kali selesai melakukan Aksi,
otomatis mesin akan melakukan operasi mendapatkan
suksesor dari harga yang sedang berlaku saat itu
 Pengulangan otomatis berhenti setelah penjelahan terhadap
nama-pencacah sudah mencakup semua harga yang
terdefinisi dalam range harga
 Pengulangan ini biasanya dipakai jika harga yang tersimpan
dalam nama-pencacah ingin dimanfaatkan dalam Aksi,
namun tidak boleh DIUBAH karena akan mengacaukan urutan
eksekusi yang dilakukan.
PENUTUP
• Suatu bentuk pengulangan dapat "diterjemahkan"
menjadi bentuk yang lain dengan notasi algoritmik
yang tersedia
• Instruksi pengulangan tidak dapat berdiri sendiri, dan
harus disertai dengan instruksi-instruksi lain sebelum
dan sesudah pengulangan
• Persoalannya adalah memilih bentuk pengulangan
yang benar dan tepat
• Tidak semua bahasa pemrograman yang ada
menyediakan semua bentuk pengulangan di atas
Contoh algoritma[1]
Program TULISBIL1
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan bentuk repeat..N times}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i  1
repeat N times
output (i)
i  i + 1
Contoh algoritma[2]
Program TULISBIL2
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan bentuk repeat..until…}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i  1
repeat
output (i)
i  i + 1
until (i>N)
Contoh algoritma[3]
Program TULISBIL3
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan bentuk while…do}

Kamus :
i : integer {bilangan yang akan ditulis}
Algoritma :
input (N)
i  1
while i <= N do
output (i)
i  i + 1
{ i > N}
Contoh algoritma[4]
Program TULISBIL4
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan bentuk traversal}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i traversal [1..N]
output (i)
Contoh algoritma[5]
Program TULISBIL1
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan bentuk repeat..N times}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i  1
repeat N times
output (i)
i  i + 1

Anda mungkin juga menyukai