Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Kuliah 7 – Pengantar Pemrograman
Fungsi Kuliah 7 – Pengantar Pemrograman
2
FUNGSI Modul program yang mengembalikan/ memberikan (return) sebuah nilai yang bertipe sederhana. tipe data sederhana : integer, real, boolean, dan string Dalam matematika : f(x,y) = 3x – y + xy f adalah sebuah fungsi dengan parameter x dan y. Nilai yang diberikan fungsi tergantung nilai parameter masukannya.
3
FUNGSI (cont.) Fungsi diakses dengan memanggil namanya (sama seperti prosedur). Fungsi dapat mengandung parameter formal berjenis parameter masukan.
4
Fungsi Untuk mendefinisikan sebuah operasi Hanya satu return output
Function Input parameters Return Value
5
Mendefinisikan Fungsi
Struktur fungsi sama dengan struktur algoritma, yaitu : bagian judul, bagian deklarasi, dan badan fungsi. Setiap fungsi memiliki nama unik serta daftar parameter formalnya (jika ada). Tipe hasil (pada header) menspesifikasikan tipe data dari nilai yang diberikan fungsi.
6
Dua kelas fungsi Fungsi Standar User-defined function
Tersedia dalam Pascal Contoh: Abs(x), sqr(x), sqrt(x), sin(x) User-defined function Didefinisikan oleh user Didefinisikan pada bgian deklarasi program Contoh: pangkat3(x), max(x)
7
Fungsi Function nama_fungsi(parameter): ReturnType; Bagian Deklarasi
Begin Operasi … nama_fungsi := Nilai_pengembalian; End;
8
Pemanggilan Fungsi Fungsi diakses dengan memanggil namanya dari program pemanggil (program utama atau modul program lain), diikuti dengan daftar parameter aktual (jika ada).
9
Pemanggilan Fungsi (cont.)
Karena fungsi menghasilkan nilai, maka : nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi : Peubah NAMA_FUNGSI(daftar parameter aktual) nilai yang diberikan oleh fungsi dapat langsung dimanipulasi write(NAMA_FUNGSI(daftar parameter)) if 2 * NAMA_FUNGSI(daftar parameter) < 0 then …
10
Pemanggilan Fungsi (cont.)
Parameter aktual dapat berupa tetapan, nama tetapan, atau nama peubah asalkan sudah terdefinisi tipe dan harganya. Dalam program pemanggil, prototype fungsi harus dideklarasikan supaya program pemanggil mengenal nama fungsi tersebut serta cara mengaksesnya.
11
Untuk Menggunakan Fungsi
Perlu diketahui: Nama fungsi Jumlah parameter yang diperlukan Tipe setiap parameter Tipe nilai yang dikembalikan
12
Contoh Program : x3 Program kalkulator(input, output);
Var x,y : integer; Begin write(‘Masukkan sebuah bilangan’); Readln(x); y := x * x * x; writeln(‘Hasilnya adalah’, y) End.
13
Contoh Fungsi : x3 Function pangkat3(bil:integer):integer; Begin
pangkat3 := bil * bil * bil; End;
14
Contoh Fungsi: x3 Program kalkulator; Var x,y : integer;
Function pangkat3(bil:integer):integer; Begin pangkat3 := bil * bil * bil; End; Begin {program utama} write(‘Masukkan sebuah bilangan’); Readln(x); y := pangkat3(x); writeln(‘Hasilnya adalah’, y) End.
15
Contoh fungsi: bil. terbesar
Function max(x,y : integer): integer; Begin if x > y then max := x else max := y End;
16
Contoh: fungsi terkecil
Function min(x,y: real): real; Begin if x < y then min := x else min := y End;
17
Contoh: Konversi USD ke IDR
Function USD_to_IDR(dollar:real):real; Begin US_to_IDR := dollar * 11500; End;
18
Contoh: luas_lingkaran
Function luas_lingkaran(rad:real) :real; Const Nilai_Pi = 3.14; Begin luas_lingkaran := Nilai_Pi * sqr(rad); End;
19
Contoh: volume_lingkaran
Function pangkat3(bil:integer):integer; Begin pangkat3 := bil * bil * bil; End; Function volume_lingkaran(rad:real) :real; Const nilai_pi = 3.14 volume_lingkaran := 4/3 * nilai_Pi * pangkat3(rad);
20
Contoh: Operasi Array FUNCTION Jum_Array( A : Array_num): integer; Var
index, jum : integer; Begin jum:= 0; for index := 1 to 50 do jum:= jum + A[index]; Jum_Array := jum; End; Begin { Prog. Utama} Total: = Jum_Array(array1) + Jum_Array( array2)
21
Contoh: Faktorial FUNCTION Faktorial (X : integer) : integer; Var Hasil : integer; Begin Hasil := 1; While X > 0 do Hasil := Hasil * x; x:= x -1; end; Faktorial := hasil; End;
22
Contoh: Segitiga FUNCION Segitiga (Sudut1,Sudut2,Sudut3 : Real) :Boolean; Begin If Sudut1 + Sudut2 + Sudut = 0 then Segitiga := true; end; Readln( sudutA, sudutB, sudutC); If Segitiga(sudutA, sudutB, sudutC) then writeln (‘ketiga sudut membentuk segitiga’); else writeln (‘ketiga sudut tidak membentuk segitiga); End.
23
Contoh: Memeriksa Nama
Tulis sebuah fungsi yang memeriksa apakah sebuah nama ditulis benar atau tidak. Misal Nama dikatakan valid jika terdiri dari huruf kapital FUNCTION NamaValid ( Nama : String) : BOOLEAN; Var index : integer; begin NamaValid : = true; For index := 1 to length(Nama) do If (Nama[index] < ‘A’) OR (Nama[index] > ‘Z’) then NamaValid := False; end;{ function}
24
Contoh (cont’d) Begin writeln(‘Masukkan nama’); Readln( NamaOrang);
If NamaValid (NamaOrang) then writeln(‘Ok’); End.
25
PERHATIKAN! Cara pendefinisian fungsi
Penggunaan parameter masukan, keluaran, dan masukan/keluaran Parsing parameter Tipe data parameter aktual dan formal Nama lokal dan nama global Cara pemanggilan fungsi (bandingkan dengan prosedur)
26
Prosedur atau Fungsi ? Sebuah prosedur dapat dituliskan sebagai fungsi, demikian juga sebaliknya. Sebaiknya buat modul program dalam bentuk : Fungsi jika modul program menghasilkan sebuah nilai. Prosedur jika modul menghasilkan efek netto dari satu/sekumpulan aksi. Modul Program dengan output lebih dari satu tidak elegan dituliskan sebagai fungsi, meskipun hal itu mungkin dilakukan.
27
Well-design program Program kalkulator; Var x: integer;
Procedure baca_data (var n:integer); Begin write(‘Masukkan sebuah bilangan’); Readln(n); End; Function pangkat3(:integer):integer; pangkat3 := bil * bil * bil; Begin {main routine} baca_data (x); writeln(‘Jika dipangkatkan 3 hasilnya’, power3(x)) End.
28
23 October 2017 Rekursi Rekursi adalah kondisi dimana di dalam sebuah sub-proses terdapat instruksi untuk memanggil sub-proses lain yang serupa dengan dirinya. Setiap kali terjadi proses yang rekursif, sejumlah memori akan dipakai untuk mengidentifikasi sub-proses yang baru dan lokasi dari sub-proses lama yang ditinggalkan. Komputer menyimpan address yang ditinggalkan di dalam memory yang disebut STACK. Penggunaan STACK memastikan alur proses berjalan dengan benar. Karena di dalam sub-proses terjadi pemanggilan sub-proses lain maka STACK yang digunakan untuk menyimpan address saat ini semakin penuh.
29
23 October 2017 Rekursi (Lanjutan) Dalam sebuah sub-proses rekursif HARUS terdapat instruksi untuk menghentikan proses rekursif pada suatu nilai tertentu. Besar-kecilnya ukuran STACK yang dipakai ditentukan oleh beberapa faktor: Tipe dari fungsi. Jumlah variabel lokal di dalam fungsi. Kompleksitas instruksi yang ada di dalam fungsi. Pengendalian terhadap alur proses rekursif sepenuhnya menjadi tanggung jawab programmer. Dalam banyak hal, penggunaan fungsi rekursif lebih efisien dibandingkan dengan looping. Kedua model perulangan ini bisa saling dipertukarkan jika memungkinkan.
30
Rekursi dalam prosedur
23 October 2017 Rekursi dalam prosedur Contoh #1 RETURN SUB cetak(n) PRINT “Halo” n > 0 CALL cetak(n-1) SALAH BENAR BEGIN END CALL cetak(3)
31
hasil = a * pangkat(a,b-1)
23 October 2017 Rekursi dalam fungsi Contoh #2 RETURN hasil FUNCTION pangkat(a,b) b == 0 hasil = a * pangkat(a,b-1) SALAH BENAR hasil = 0 hasil = 1 BEGIN END PRINT pangkat(2,4)
32
Latihan Tuliskan fungsi untuk mengkonversikan harga karakter angka (0..9) menjadi harga numerik sesuai dengan karakter yang tertulis. Contoh: ‘8’8, ‘4’4 Tuliskan fungsi IsAnA yang mentest apakah sebuah karakter yang diberikan kepadanya adalah sebuah huruf ‘A’. Harga yang dihasilkan adalah benar jika huruf itu ‘A’,salah jika huruf itu bukan ‘A’. Contoh: IsAnA(‘A’) true IsAnA(‘X’) false Tuliskanlah fungsi, yang jika diberikan sebuah angka Cm yang menyatakan panjang dalam cm, akan menghasilkan pasangan harga <x1,x2> sesuai dengan rumus ukuran metris (1 m = 100 cm) sehingga x1*100+x2 = cm. Contoh: F(100) = <1,0> F(355) = <3,55>
33
Latihan Tuliskan fungsi IsPrima(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan prima atau bukan. Contoh: IsPrima(2)true, IsPrima(15)false. Tuliskan fungsi IsEven(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan genap atau bukan. Contoh: IsEven(43)false, IsEven(32)true. Tuliskan fungsi IsOdd(), yang mentest apakah sebuah bilangan integer yang diberikan merupakan bilangan ganjil atau bukan. Contoh: IsOdd(24)false, IsOdd(43)true.
34
Latihan Tuliskanlah sebuah fungsi MAX2, yang menerima masukan dua buah bilangan integer dan menghasilkan sebuah bilangan integer yaitu salah satu diantara nilai dua buah bilangan tersebut yang terbesar. Kemudian, dengan memakai fungsi MAX2, tuliskan sebuah fungsi lain MAX3 yang menghasilkan nilai terbesar dari tiga buah bilangan integer. Contoh: MAX2(1,2)2 MAX2(10,2)10 MAX3(1,2,3) adalah MAX2(MAX2(1,2),3)3 MAX3(10,2,3) adalah MAX3(MAX2(10,2),3)10
35
Latihan Didefinisikan tipe terstruktur untuk mewakili hari seperti dalam kalender yang kita pakai sehari-hari: type nama: DATE<tanggal,bulan,tahun> Tuliskan algoritma untuk: Membaca sebuah tanggal dan sebuah kode bahasa penulisan (1=Inggris, 2=Indonesia, 3=Perancis), Menuliskan tanggal keesokan harinya sesuai dengan kode bahasa. Inggris, DATE ditulis dalam: bulan,’/’,tanggal,’/’,tahun Indonesia, DATE ditulis dalam: tanggal,’-’,bulan,’-’,tahun Perancis, DATE ditulis dalam: tanggal,’/’,bulan,’/’,tahun Proses menghitung hari esok dilakukan oleh sebuah fungsi NextDay yang menerima masukan sebuah tanggal dan menghasilkan tanggal keesokan harinya. Contoh: NextDay(<13,4,1990>,1)4/14/1990 NextDay(<30,1,1990>,2) NextDay(<31,12,1990>,1)1/1/1991
36
23 October 2017 Latihan Rekursi Menampilkan deret bilangan: cacah, genap, gasal, fibonacci Menampilkan pola segitiga: pascal, genap, gasal Perhitungan statistik: MAX, MIN, AVERAGE, TOTAL Perhitungan matematika: perkalian, FPB, KPK Menampilkan pola bintang
37
Any Question?
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.