Pemrogramman Terstruktur - Universitas Muhammadiyah Malang

Download Report

Transcript Pemrogramman Terstruktur - Universitas Muhammadiyah Malang

Pemrogramman Terstruktur
FUNGSI
Teknik Informatika
Universitas Muhammadiyah Malang
2011
Pemanggilan Fungsi
• Pemanggilan fungsi dibedakan menjadi :
1. Pemanggilan fungsi yang tidak mempunyai masukan dan
keluaran.
2. Pemanggilan fungsi yang tidak mempunyai masukan tapi
mempunyai keluaran.
3. Pemanggilan fungsi yang mempunyai masukan tapi tidak
mempunyai keluaran.
4. Pemanggilan fungsi yang mempunyai masukan dan keluaran.
5. Sama seperti nomor 3 tetapi terjadi perubahan value pada
masukan.
6. Sama seperti nomor 4 tetapi terjadi perubahan value pada
masukan.
Jenis Parameter
• Parameter yang ditambahkan pada fungsi
dibedakan menjadi 3, yaitu :
1. Passing by value
2. Passing by reference
3. Passing by pointer
Passing by Value
• Passing by value = pengiriman nilai
• Yaitu isi atau nilai dari variabel asal yang
menjadi argument akan dicopykan ke variabel
pada parameter.
• Passing by value tidak mengubah variabel
yang dikirimkan ke argument.
• Contoh :
int m=5;
faktorial(m);
Tebak Output?
• Perhatikan program berikut :
• Apakah hasil pemanggilan fungsi tes?
5
Tebak Output?
• Perhatikan program berikut :
• Apakah hasil yang muncul ?
6
Tebak Output?
• Perhatikan program berikut :
• Apakah hasil yang muncul ?
7
Latihan
1. Buatlah fungsi bernama findMin dengan :
I.S : diberikan 2 angka integer a & b
F.S : mencari nilai terkecil diantara a & b
IS/initial state : keadaan awal
FS/final state : keadaan akhir
8
Latihan
• Buatlah program untuk mendapatkan luas
segitiga dengan kondisi awal dan akhir sbb :
I.S : diberikan nilai a dan t
F.S : menghitung luas segitiga rumus luas =
(a*t)/2
9
Passing by Reference
• Passing by reference adalah pengiriman
alamat.
• Untuk menangkap alamat dari argument
menggunakan tanda & (ampersand) yang
diletakkan didepan nama parameter.
Contoh program
Penjelasan
• Karena alamat variabel yang dikirim maka
perubahan yang dilakukan pada parameter
didalam tubuh fungsi juga akan
mengakibatkan perubahan nilai pada variabel
yang dikirim melalui argument.
• Passing by reference tidak disertai perubahan
nilai jika parameter pada fungsi berupa
konstanta.
void faktorial(const int bil){ ...... }
Passing by Pointer
• Passing by pointer adalah pengiriman nilai
berbasis alamat.
• Sebelum masuk ke passing by pointer harus
memahami terlebih dahulu apa itu pointer.
Variabel Pointer
• Pointer adalah variabel yang berisi alamat
memori.
• Format deklarasi pointer :
tipe_data *nama_var
(pointer selalu ditandai dengan *)
• Contoh :
int *p;
• Artinya : p adalah pointer to int
Contoh Deklarasi Pointer
• Deklarasi pointer p, diisi dengan alamat dari
variabel i.
• Untuk mengisikan alamat ke pointer tidak
perlu menggunakan tanda *.
Contoh Akses Nilai Pointer
• Untuk mengakses nilai dari variabel pointer
digunakan tanda *.
Perubahan Nilai Pointer
• Perubahan nilai pada variabel pointer akan
mengakibatkan perubahan nilai dari variabel yang
alamat-nya ditunjuk oleh pointer.
• Contoh program :
(Nilai i akan mengikuti perubahan dari nilai p).
Tebak Output?
• Berapa nilai x,y,z dari potongan program
berikut :
Tebak Output?
• Berapa nilai x,y,z dari potongan program
berikut :
Tebak Output?
• Berapa nilai x,y,z dari potongan program
berikut :
Operasi pointer dengan Array
• Nama array yang ditulis tanpa indeks, menyatakan
alamat elemen pertamanya.
• Contoh :
char s[]="INFORMATIKA";
printf("alamat array= %d\n",s);
(Akan menampilkan alamat dari karakter ’I’).
• Sehingga untuk mengarahkan pointer ke sebuah
array langsung ditulis nama variabelnya. Contoh =
ps = s;
(ps adalah variabel pointer yang diarahkan ke alamat array s).
Contoh program
• Karena variabel array berisi alamat dari element
pertama, maka untuk mengakses elemen ke dua
melalui pointer cukup ditambah 1 (pointer+1).
Sehingga untuk mengakses elemen ke n berarti
pointer+n.
Mengakses Elemen Array
• Misalnya array X dan pointer P=X :
– Alamat masing2 elemennya dpt dituliskan :
• Elemen ke-1 : &X[0] atau X atau X+0 atau P atau P+0
• Elemen ke-2 : &X[1] atau X+1 atau P atau P+1
• Elemen ke-n : &X[n-1] atau X+(n-1) atau P+(n-1)
– Isi array dpt diakses sbb :
• Elemen ke-1 : X[0] atau *(X+0) atau *P atau *(P+0)
• Elemen ke-2 : X[1] atau *(X+1) atau *(P+1)
• Elemen ke-n : X[n-1] atau *(X+n-1) atau *(P+n-1)
23
Latihan
• Dari potongan program diatas , bagaimanakah
menulis seluruh isi array menggunakan
pointer?
24
Passing by Pointer
• Caranya :
nama_fungsi(*parameter)
(parameter yang akan menangkap variabel pointer
harus diberi tanda *).
• Contoh :
void tukar(int *angka1, int *angka2){......}
(tanda * selalu diberikan pada parameter yg akan menangkap
pointer).
Passing by Pointer
• Pemanggilan fungsi dengan parameter
pointer. Contoh :
tukar(&a,&b);
(menggunakan tanda & yang akan mengirim alamat
ke parameter. Sehingga yang akan ditangkap oleh
pointer pada parameter adalah berupa alamat
tersebut).
Contoh program
• Pemanggilan fungsi :
Latihan
• Buatlah sebuah program yang menerima input
berupa total pembelian. Buatlah sebuah
fungsi yang akan merubah nilai total
pembelian tersebut setelah dipotong diskon
sebesar 20%.
Gunakan pointer!
Array dan Fungsi
• Argumen dari sebuah fungsi dapat berupa
array.
• Array sebagai argumen fungsi dapat berupa
array satu dimensi maupun multidimensi.
• Untuk array 1 dimensi, ukuran array tidak
perlu dituliskan
• Untuk array 2 dimensi, ukuran kedua harus
dituliskan.
29
Contoh program (1D)
Contoh program (2D)
Latihan
1. Buatlah program untuk membaca 5 angka
dari user dan disimpan ke array. Gunakan
fungsi untuk menghitung total kelima nilai
tersebut.
Latihan
2.Buatlah fungsi bernama volumeKerucut
dengan :
I.S : diberikan nilai jari-jari (r) dan tinggi (t)
F.S : menghitung volume kerucut dengan
rumus (πr²t)/3. Fungsi akan mengembalikan
hasil perhitungan.
3.Buatlah fungsi main yang akan memanggil
fungsi volumeKerucut
33
Latihan
4.Buatlah fungsi isEven yang akan memeriksa
sebuah angka, termasuk genap atau tidak.
I.S : diberikan sebuah angka integer (x)
F.S : menentukan apakah x termasuk angka
genap atau bukan. Jika genap fungsi
mengembalikan nilai 1, jika bukan maka akan
mengembalikan nilai 0.
34
Exercise
Buatlah fungsi sebagai berikut :
1. Nama : luasLingkaran
Parameter : radius
Tipe kembalian : float
Tugas : menghitung luas lingkaran
35
2. [Poin : 5] Nama : tulisMundur
Parameter : array of int, ukuran array
Tipe kembalian : void
Tugas : menuliskan seluruh elemen array
secara terbalik
36
3. Nama : findMax
Parameter : 3 buah integer
Tipe kembalian : integer
Tugas : mencari nilai terbesar dari 3 buah
bilangan bulat
37
4. Nama : tulisJam
Parameter : 3 buah integer (j,m,d)
Tipe kembalian : void
Tugas : menuliskan jam dengan format j:m:d
38
5. [Poin:3]Nama : isEven
Parameter : int
Tipe kembalian : int
Tugas : memeriksa apakah sebuah bilangan
adalah bilangan genap. Jika ya,
mengembalikan 1, jika tidak 0.
39
6. [Poin:3] Nama : isPositive
Parameter : int
Tipe kembalian : int
Tugas : menentukan sebuah bilangan tmsk
positif atau bukan. Jika ya, kembalikan 1, jika
tidak kembalikan 0.
40
7. [Poin:6] Nama : findPos
Parameter : array of char, char
Tipe kembalian : int
Tugas : mencari keberadaan sebuah karakter
pd string dan mengembalikan indeks yang
merupakan posisi pertama karakter tsb pd
string
41
8. Nama fungsi : absolut
Parameter : float
Tipe kembalian : int
Tugas : menuliskan nilai absolut dari sebuah
nilai pecahan
42
9. Nama fungsi : isPrima
Parameter :int
Tipe kembalian : int
Tugas : menentukan sebuah bilangan bulat
positif apakah prima atau bukan. Jika prima
kembalikan 1, jika bukan kembalikan 0.
43
Deret Fibonacci mengikuti rumus sbb :
a(1)=1
a(2)=1
a(n)=a(n-1)+a(n-2), untuk n>2
Buatlah sebuah fungsi untuk menampilkan deret
Fibonacci dengan n adalah masukan dari user.
44
11. [Poin : 5] Buatlah fungsi untuk menghitung
rata-rata dari elemen-elemen sebuah array.
Parameter : array of int, panjang array
Kembalian : float
45
12. [Poin:3] Buatlah fungsi untuk menghitung
volume silinder. Rumus vol.=phi*r*r*t
Parameter : radius (float),tinggi(float)
Return : float
46
13. Buatlah fungsi yang akan menerima 4 buah
integer. Fungsi akan membalik nilai ketiga
variabel tersebut. Misalnya a=1,b=2,c=3,d=4,
hasil akhirnya a=4,b=3,c=2,d=1.
Kembalian fungsi : void
47
Referensi
• Berbagai sumber