download

T0616
ALGORITMA DAN PEMROGRAMAN
(9)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
FUNGSI
(1)
• SUBPROGRAM ADALAH BAGIAN PROGRAM
DENGAN TUGAS KHUSUS. POPULER DENGAN
NAMA MODUL. DISEBUT FUNGSI DI BAHASA C.
• MODUL DIBENTUK DENGAN MENGELOMPOKKAN SEJUMLAH PERNYATAN UNTUK MENYELESAIKAN TUGAS TERTENTU.
• IA DIPERLUKAN JIKA KELOMPOK PERNYATAAN
TERSEBUT KERAP DIGUNAKAN DI TEMPAT LAIN
DALAM PROGRAM.
7/11/2017
T0616 - Algoritma dan Pemrograman
2
PEMROGRAMAN MODULAR
• PEMBAGIAN PROGRAM MENJADI MODULMODUL DISEBUT PEMROGRAMAN MODULAR.
• IMPLEMENTASI DI BAHASA C MENGGUNAKAN
FUNGSI.
D
7/11/2017
T0616 - Algoritma dan Pemrograman
3
PROSES MODULARISASI
PROGRAM UTAMA
SUB_PROG_1
SUB_PROG_2
SUB_PROG_21
7/11/2017
SUB_PROG_3
SUB_PROG_22
T0616 - Algoritma dan Pemrograman
4
KEUNTUNGAN MODUL
(1)
• RANCANGAN TOP-DOWN DENGAN TEKNIK
SUBGOAL. PROGRAM BESAR DIBAGI MENJADI
MODUL-MODUL YANG LEBIH KECIL.
• DAPAT DIKERJAKAN OLEH LEBIH DARI SATU
ORANG DENGAN KOORDINASI YANG RELATIF
MUDAH.
• MENCARI KESALAHAN RELATIF LEBIH MUDAH
KARENA ALUR LOGIKA LEBIH JELAS DAN
KESALAHAN DILOKALISIR DALAM SATU MODUL.
7/11/2017
T0616 - Algoritma dan Pemrograman
5
KEUNTUNGAN MODUL
(2)
• MODIFIKASI DAPAT DILAKUKAN TANPA
MENGUBAH PROGRAM SECARA
KESELURUHAN.
• MEMPERMUDAH DOKUMENTASI.
7/11/2017
T0616 - Algoritma dan Pemrograman
6
SIFAT-SIFAT MODUL YANG BAIK
• FAN IN TINGGI. MAKIN KERAP MODUL DIGUNAKAN MAKIN TINGGI FAN IN.
• FAN OUT RENDAH. MAKIN KHUSUS SIFAT
MODUL MAKIN RENDAH FAN OUT.
• SELF CONTAINED ATAU OTONOM: MEMENUHI
KEBUTUHAN SENDIRI.
7/11/2017
T0616 - Algoritma dan Pemrograman
7
FUNGSI C
• ADA DUA TIPE
FUNGSI YAITU
LIBRARY FUNCTION
DAN USER DEFINED
FUNCTION.
• LIBRARY FUNCTION
ADALAH KOLEKSI
PRE-DEFINED
FUNCTION YANG
DIAKSES MELALUI
HEADER FILE.
7/11/2017
/*library function*/
#include<stdio.h>
#include<math.h>
main() {
int i;
for(i=0; i<6; i++)
printf(“\n%d%f”,i,sqrt(i));
}
T0616 - Algoritma dan Pemrograman
8
USER DEFINED FUNCTION
(1)
• FUNGSI YANG DISUSUN PEMROGRAM
• SINTAKS
<TIPE_FUNGSI> NAMA_FUNGSI(DAFTAR_PAR)
{
DEKLARASI VARIABEL LOKAL.
PERNYATAAN_PERNYATAAN;
…
RETURN (EKSPRESI);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
9
USER DEFINED FUNCTION
(2)
• FUNGSI BISA DILETAKKAN DI ATAS ATAU DI
BAWAH FUNGSI MAIN(). JIKA DI BAWAH FUNGSI
MAIN() IA PERLU DIDEKLARASIKAN TERLEBIH
DULU UNTUK MENENTUKAN APA TIPE FUNGSI,
APA NAMA FUNGSI, APA TIPE PARAMETER
FUNGSI. DI C, DIKENAL DENGAN NAMA
PROTOTIPE FUNGSI
7/11/2017
T0616 - Algoritma dan Pemrograman
10
PROTOTIPE FUNGSI
• SEJUMLAH KOMPILATOR C MENGHENDAKI
AGAR FUNGSI DIDEKLARASIKAN DI DALAM
MAIN() SEBELUM IA DIDEFINISIKAN.
KOMPILATOR LAIN MENGHENDAKI AGAR
DEKLARASI FUNGSI DI ATAS FUNGSI MAIN().
CARA PENULISAN JUGA BERBEDA,
TERGANTUNG PADA KOMPILATOR YANG
DIGUNAKAN.
7/11/2017
T0616 - Algoritma dan Pemrograman
11
PROTOTIPE FUNGSI
(2)
• METODE LAMA
int sum(int, int);
float conv(int, float);
void f(char, double);
7/11/2017
• METODE BARU
int sum(int a, int b);
float conv(int x, float y);
void f(char c, double z);
T0616 - Algoritma dan Pemrograman
12
PARAMETER ATAU ARGUMEN
• PARAMETER ADALAH INTERFACE YANG DIGUNAKAN UNTUK TUKAR INFORMASI ANTARA
CALLED FUNCTION (PARAMETER FORMAL) DAN
CALLING FUNCTION (PARAMETER AKTUAL).
• SAAT FUNGSI DIPANGGIL PARAMETER AKTUAL
DIKIRIM KE PARAMETER FORMAL PASANGANNYA. TRANSFER PARAMETER INI DISEBUT CALL
BY VALUE KARENA YANG DIKIRIM ADALAH NILAI
(R-VALUE) SUATU VARIABEL.
7/11/2017
T0616 - Algoritma dan Pemrograman
13
CONTOH CALL BY VALUE
#include<stdio.h>
int kubik(int x) {
return (x* x * x);
}
7/11/2017
main() {
int n= 1;
while(n!0) {
scanf(“%d “, &n);
printf(“%d”, kubik(n));
printf(“\n”);
}
}
T0616 - Algoritma dan Pemrograman
14
RETURN (EKSPRESI)
• MENGALIHKAN KONTROL DARI CALLED
FUNCTION KE CALLING FUNCTION.
• MENGEMBALIKAN NILAI EKSPRESI KE CALLING
FUNCTION.
• HANYA DAPAT MENGIRIM SATU NILAI.
• KADANG-KADANG DITULIS RETURN EKSPRESI.
• TIDAK HARUS DITULIS DI AKHIR FUNGSI. IA
DAPAT MUNCUL DISEMBARANG LOKASI.
7/11/2017
T0616 - Algoritma dan Pemrograman
15
CONTOH
char hurufBesar(void) {
char kar;
kar = getche(); /*asumsi karakter alphabetik */
if(kar>64 && kar<91) return (kar+32);
else return(kar);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
16
TIPE FUNGSI
(1)
• TIPE NILAI YANG DIHASILKAN OLEH FUNGSI.
NILAI DEFAULT ADALAH INTEGER. FUNGSI YANG
TIDAK MENGIRIM NILAI BALIK DISEBUT FUNGSI
VOID.
• FUNGSI INTEGER
min(int x, int y) {
int z;
z = (x<=y)? x : y;
return z;
}
7/11/2017
T0616 - Algoritma dan Pemrograman
17
TIPE FUNGSI
(2)
• FUNGSI FLOAT
float luas(float jari2) {
return 4*3.14159*jari2;
}
7/11/2017
• FUNGSI VOID
void max(int x, int y) {
int z;
z = (x<=y)? X : y;
printf(“Max = %d”, z);
return;
}
T0616 - Algoritma dan Pemrograman
18
FUNGSI FAKTORIAL, PERMUTASI DAN
KOMBINASI
int fak(int n) {
if(n<0) return 0;
int f = 1;
while (n>1)
f *= n--;
return f;
}
7/11/2017
int perm(int n, int k) {
if(n<0||k<0||k>n)return0;
return fak(n)/fak(n-k);
}
int komb(int n, int k) {
if(n<0||k<0||k>n)return0;
return fak(n)/(fak (k) *
fak(n-k));
}
T0616 - Algoritma dan Pemrograman
19
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
20