Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Konsep Pemrograman Function. 2 MODULARITAS Program panjang dibagi atas function- function – Modularity pengembangan program dapat dilakukan secara bertahap,

Presentasi serupa


Presentasi berjudul: "Konsep Pemrograman Function. 2 MODULARITAS Program panjang dibagi atas function- function – Modularity pengembangan program dapat dilakukan secara bertahap,"— Transcript presentasi:

1 Konsep Pemrograman Function

2 2 MODULARITAS Program panjang dibagi atas function- function – Modularity pengembangan program dapat dilakukan secara bertahap, modul per modul, function per function. – Readibility program dipecah menjadi sejumlah function, masing- masing function lebih mudah dipahami alur logikanya daripada alur logika sebuah program panjang. – Code reuse function yang sudah jadi dan benar dapat digunakan oleh program lain. Function-function dapat dikumpulkan di dalam sebuah perpustakaan function.

3 Function3 VARIABEL LOKAL dan GLOBAL Berdasarkan lokasi deklarasi – Variabel lokal Dideklarasi di dalam blok function Hanya bisa digunakan di dalam blok tsb Tidak diinisialisasi dengan nilai awal Baru eksis ketika blok tersebut aktif Didisalokasi ketika blok berakhir – Variabel global Disebut juga variabel eksternal Dideklarasi di luar function Eksis mulai dari posisi deklarasi Diinisialisasi dengan nilai nol

4 Function4 VARIABEL LOKAL dan GLOBAL int main() { int a, b = 10; printf("1: %d %d\n", a, b); printf("nilai a ? "); scanf("%d", &a); printf("2: %d\n", a); { int a = 50; printf("3: %d\n", a); a = a * 2; printf("4: %d\n", a); b = b * 2; printf("5: %d\n", b); } printf("6: %d\n", a); a += 5; printf("7: %d\n", a); return 0; } int main() { int a, b = 10; printf("1: %d %d\n", a, b); printf("nilai a ? "); scanf("%d", &a); printf("2: %d\n", a); { int a = 50; printf("3: %d\n", a); a = a * 2; printf("4: %d\n", a); b = b * 2; printf("5: %d\n", b); } printf("6: %d\n", a); a += 5; printf("7: %d\n", a); return 0; } 1: 2 10 nilai a ? 30 2: 30 3: 50 4: 100 5: 20 6: 30 7: 35 1: 2 10 nilai a ? 30 2: 30 3: 50 4: 100 5: 20 6: 30 7: 35 var. lokal

5 Function5 VARIABEL LOKAL dan GLOBAL # include int i; char c; float f; int main() { printf("%d %d %f\n", i, c, f); i = 10; printf("1: %d\n", i); { int i; printf("nilai i ? "); scanf("%d", &i); printf("2: %d\n", i); } printf("3: %d\n", i); return 0; } # include int i; char c; float f; int main() { printf("%d %d %f\n", i, c, f); i = 10; printf("1: %d\n", i); { int i; printf("nilai i ? "); scanf("%d", &i); printf("2: %d\n", i); } printf("3: %d\n", i); return 0; } : 10 nilai i ? 25 2: 25 3: : 10 nilai i ? 25 2: 25 3: 10 var. global

6 Function6 VARIABEL POINTER Variabel pointer – Berisi alamat memori komputer atau alamat memori variabel – Di alamat tersebut terdapat data – Variabel pointer yang tidak mengacu alamat diberi nilai NULL – Dideklarasi dengan simbol * – Dimanipulasi dengan operator & address of – mengembalikan alamat memori operan * content of – R-value: mengambil nilai di lokasi memori – L-value: menyimpan nilai ke lokasi memori

7 Function7 VARIABEL POINTER  Deklarasi variabel pointer int *pi; float *pf; char *ps;  Deklarasi variabel pointer int *pi; float *pf; char *ps; Letak simbol * menempel di kiri nama variabel pointer di antara tipe data dan variabel pointer menempel di kanan tipe data

8 Function8 VARIABEL POINTER int *pi, bulat; float *pf, pecah; bulat = 10; pecah = 20.0; pi = &bulat; pf = &pecah; int *pi, bulat; float *pf, pecah; bulat = 10; pecah = 20.0; pi = &bulat; pf = &pecah;

9 Function9 MANIPULASI DATA MELALUI POINTER int main () { int *pi, bulat; float *pf, pecah; printf("bulat dan pecah : "); scanf("%d %f", &bulat, &pecah); pi = &bulat; pf = &pecah; printf("%d %.1f\n", *pi, *pf); *pi = *pi * 2; *pf = *pf + 5; printf("%d %.1f\n", bulat, pecah); return 0; } int main () { int *pi, bulat; float *pf, pecah; printf("bulat dan pecah : "); scanf("%d %f", &bulat, &pecah); pi = &bulat; pf = &pecah; printf("%d %.1f\n", *pi, *pf); *pi = *pi * 2; *pf = *pf + 5; printf("%d %.1f\n", bulat, pecah); return 0; } bulat dan pecah : bulat dan pecah :

10 Function10 MEMORI ILEGAL { int *p; *p = 888; } { int *p; *p = 888; } Variabel p dideklarasi sebagai pointer yang menunjuk sebuah integer. Pada saat dideklarasi p berisi sampah memori. Sampah memori ini diinterpretasikan sebagai alamat memori sebuah integer dan bilangan 888 dimasukkan ke dalam alamat tersebut. Hal ini dapat menimbulkan run- time error.

11 Function11 TIPE DATA TIDAK SESUAI { int *p; float bil; p = &bil; } { int *p; float bil; p = &bil; } Variabel p dideklarasi sebagai pointer yang mengacu sebuah integer tetapi digunakan mengacu sebuah float. Hal ini menyebabkan pointer p tidak berfungsi sebagaimana mestinya.

12 Function12 DEEP COPY, SHALLOW COPY Shallow copy – Menyalin alamat memori Deep copy – Menyalin objek di alamat memori

13 Function13 SHALLOW COPY # include int main () { int bulat1, bulat2, *p1, *p2; p1 = &bulat1; p2 = &bulat2; scanf("%d", &bulat1); p2 = p1; printf("%d %d\n", *p1, *p2); *p1 = *p1 * 2; printf("%d %d\n", *p1, *p2); return 0; } # include int main () { int bulat1, bulat2, *p1, *p2; p1 = &bulat1; p2 = &bulat2; scanf("%d", &bulat1); p2 = p1; printf("%d %d\n", *p1, *p2); *p1 = *p1 * 2; printf("%d %d\n", *p1, *p2); return 0; } shallow copy

14 Function14 SHALLOW COPY p1 = &bulat1; p2 = &bulat2; //* A p2 = p1; //* B *p1 = *p1 * 2; //* C p1 = &bulat1; p2 = &bulat2; //* A p2 = p1; //* B *p1 = *p1 * 2; //* C C BA

15 Function15 DEEP COPY  Deep Copy # include int main () { int bulat1, bulat2, *p1, *p2; p1 = &bulat1; p2 = &bulat2; scanf("%d", &bulat1); *p2 = *p1; printf("%d %d\n", *p1, *p2); *p1 = *p1 * 2; printf("%d %d\n", *p1, *p2); return 0; }  Deep Copy # include int main () { int bulat1, bulat2, *p1, *p2; p1 = &bulat1; p2 = &bulat2; scanf("%d", &bulat1); *p2 = *p1; printf("%d %d\n", *p1, *p2); *p1 = *p1 * 2; printf("%d %d\n", *p1, *p2); return 0; } deep copy

16 Function16 DEEP COPY p1 = &bulat1; p2 = &bulat2; //* A *p2 = *p1; //* B *p1 = *p1 * 2; //* C p1 = &bulat1; p2 = &bulat2; //* A *p2 = *p1; //* B *p1 = *p1 * 2; //* C C BA

17 Function 17 DEFINISI FUNCTION Function definition ialah penulisan function secara lengkap, mencakup: 1.Masukan kepada function (daftar parameter). 2.Tipe data yang dikembalikan (tipe function). 3.Variabel lokal yang digunakan. 4.Instruksi untuk mengubah input menjadi output.  tipe_function nama_function (daftar_parameter) { deklarasi_variabel_lokal; instruksi;... return ekspresi; }

18 Function 18 DEFINISI FUNCTION Daftar parameter – Menampung masukan yang diberikan kepada function untuk diolah. – Berupa deklarasi data: tipe data dan nama parameter. – Daftar parameter disebut juga formal parameter. – Jika tidak perlu parameter maka dikosongkan atau ditulis void. Tipe function – int, long, char, float, double, struct, atau pointer. – Jika function tidak mengembalikan hasil maka tipe function ditulis void. – Jika tipe function bukan void maka di dalam function terdapat instruksi return.

19 Function 19 DEFINISI FUNCTION float luaslingkaran (float r) { float luas; luas = * r * r; return luas; } float luaslingkaran (float r) { float luas; luas = * r * r; return luas; } daftar parameter tipe function nama function variabel lokal isi function

20 Function 20 DEFINISI FUNCTION # include float luaslingkaran(float r) { float luas; luas = * r * r; return luas; } int main() { float radius, luas; printf("radius lingkaran ? "); scanf("%f", &radius); luas = luaslingkaran(radius); printf("luas lingkaran = %.2f\n", luas); return 0; } # include float luaslingkaran(float r) { float luas; luas = * r * r; return luas; } int main() { float radius, luas; printf("radius lingkaran ? "); scanf("%f", &radius); luas = luaslingkaran(radius); printf("luas lingkaran = %.2f\n", luas); return 0; } radius lingkaran ? 10 luas lingkaran = radius lingkaran ? 10 luas lingkaran =

21 Function21 DEKLARASI FUNCTION float luaslingkaran(float); int main() { float radius, luas; printf("radius lingkaran ? "); scanf("%f", &radius); luas = luaslingkaran(radius); printf("luas lingkaran = %.2f\n", luas); return 0; } float luaslingkaran(float r) { float luas; luas = * r * r; return luas; } float luaslingkaran(float); int main() { float radius, luas; printf("radius lingkaran ? "); scanf("%f", &radius); luas = luaslingkaran(radius); printf("luas lingkaran = %.2f\n", luas); return 0; } float luaslingkaran(float r) { float luas; luas = * r * r; return luas; } deklarasi function definisi function

23 Function23 MEKANISME PASSING VALUE int jumlahganda(int n1, int n2) { int n3; n3 = 2 * (n1 + n2); return n3; } int main() { int bil1, bil2, bil3; printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); bil3 = jumlahganda(bil1, bil2); printf("jumlah ganda = %d\n", bil3); return 0; } int jumlahganda(int n1, int n2) { int n3; n3 = 2 * (n1 + n2); return n3; } int main() { int bil1, bil2, bil3; printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); bil3 = jumlahganda(bil1, bil2); printf("jumlah ganda = %d\n", bil3); return 0; } bil 1? 10 bil 2? 20 jumlah ganda = 60 bil 1? 10 bil 2? 20 jumlah ganda = 60

24 Function24 MEKANISME PASSING VALUE int jumlahganda(int n1, int n2)... int main() { int bil1, bil2, bil3; printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); bil3 = jumlahganda(bil1, bil2); printf("jumlah ganda = %d\n", bil3); return 0; } int jumlahganda(int n1, int n2)... int main() { int bil1, bil2, bil3; printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); bil3 = jumlahganda(bil1, bil2); printf("jumlah ganda = %d\n", bil3); return 0; } A BC //A //B //C

25 Function25 MEKANISME PASSING VALUE int jumlahganda(int n1, int n2) { int n3; n3 = 2 * (n1 + n2); return n3; } int jumlahganda(int n1, int n2) { int n3; n3 = 2 * (n1 + n2); return n3; } DCEF //C //D //E //F

26 Function26 MEKANISME PASSING VALUE int main() { int bil1, bil2, bil3; //A printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); //B bil3 = jumlahganda(bil1, bil2); //C printf("jumlah ganda = %d\n", bil3); return 0; } int main() { int bil1, bil2, bil3; //A printf("bil 1? "); scanf("%d",&bil1); printf("bil 2? "); scanf("%d",&bil2); //B bil3 = jumlahganda(bil1, bil2); //C printf("jumlah ganda = %d\n", bil3); return 0; } G //G

27 Function27 MEKANISME PASSING REFERENCE void jumlahganda (int n1, int n2, int *n3) { *n3 = 2 * (n1 + n2 ); } int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } void jumlahganda (int n1, int n2, int *n3) { *n3 = 2 * (n1 + n2 ); } int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } bil 1? 25 bil 2? 35 jumlah ganda = 120 bil 1? 25 bil 2? 35 jumlah ganda = 120

28 Function28 MEKANISME PASSING REFERENCE void jumlahganda (int n1, int n2, int *n3) int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } void jumlahganda (int n1, int n2, int *n3) int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } //A //B //C A B C

29 Function29 MEKANISME PASSING REFERENCE void jumlahganda (int n1, int n2, int *n3) { *n3 = 2 * (n1 + n2 ); } void jumlahganda (int n1, int n2, int *n3) { *n3 = 2 * (n1 + n2 ); } DC //C //D

30 Function30 MEKANISME PASSING REFERENCE int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } int main() { int bil1, bil2, bil3; printf("bil1 ? "); scanf("%d",&bil1); printf("bil2 ? "); scanf("%d",&bil2); jumlahganda(bil1, bil2, &bil3); printf("jumlah ganda = %d\n", bil3); return 0; } E //E

31 Function31 LUAS DAN VOLUME KOTAK (A) Tulis program untuk menghitung luas permukaan dan volume kotak. Program ditulis dalam bentuk beberapa function.  Function hitung luas permukaan kotak (by value)  Function hitung volume kotak (by value)

32 Function32 LUAS DAN VOLUME KOTAK (A) float hitung_luas (float pj, float lb, float tg) { return (2 * pj * lb + 2 * pj * tg + 2 * lb * tg); } float hitung_volume (float pj, float lb, float tg) { return (pj * lb * tg); } int main() { float panjang, lebar, tinggi, luas, volume; printf("panjang lebar tinggi ? "); scanf("%f %f %f", &panjang, &lebar, &tinggi); luas = hitung_luas (panjang, lebar, tinggi); volume = hitung_volume (panjang, lebar, tinggi); printf("luas permukaan = %.2f\n", luas); printf("volume = %.2f\n", volume); return 0; } float hitung_luas (float pj, float lb, float tg) { return (2 * pj * lb + 2 * pj * tg + 2 * lb * tg); } float hitung_volume (float pj, float lb, float tg) { return (pj * lb * tg); } int main() { float panjang, lebar, tinggi, luas, volume; printf("panjang lebar tinggi ? "); scanf("%f %f %f", &panjang, &lebar, &tinggi); luas = hitung_luas (panjang, lebar, tinggi); volume = hitung_volume (panjang, lebar, tinggi); printf("luas permukaan = %.2f\n", luas); printf("volume = %.2f\n", volume); return 0; } panjang lebar tinggi ? luas permukaan = volume = panjang lebar tinggi ? luas permukaan = volume = 24.00

33 Function33 LUAS DAN VOLUME KOTAK (B) Gabung ke dalam sebuah function  Hitung luas o masukan: panjang, lebar, tinggi o Keluaran: luas  Hitung volume o masukan: panjang, lebar, tinggi o Keluaran: volume  Hitung luas dan volume o masukan: panjang, lebar, tinggi o Keluaran: luas (by reference), volume (by reference)

34 Function34 LUAS DAN VOLUME KOTAK (B) void hitung_ls_vol (float pj, float lb, float tg, float *luas, float *isi) { *luas = 2 * pj * lb + 2 * pj * tg + 2 * lb * tg; *isi = pj * lb * tg; } int main() { float pj, lb, tg, ls, vol; printf("panjang lebar tinggi ? "); scanf("%f %f %f", &pj, &lb, &tg); hitung_ls_vol(pj, lb, tg, &ls, &vol); printf("luas permukaan = %.2f\n", ls); printf("volume = %.2f\n", vol); return 0; } void hitung_ls_vol (float pj, float lb, float tg, float *luas, float *isi) { *luas = 2 * pj * lb + 2 * pj * tg + 2 * lb * tg; *isi = pj * lb * tg; } int main() { float pj, lb, tg, ls, vol; printf("panjang lebar tinggi ? "); scanf("%f %f %f", &pj, &lb, &tg); hitung_ls_vol(pj, lb, tg, &ls, &vol); printf("luas permukaan = %.2f\n", ls); printf("volume = %.2f\n", vol); return 0; } panjang lebar tinggi ? luas permukaan = volume = panjang lebar tinggi ? luas permukaan = volume = 24.00

35 Function35 MENGURUTKAN TIGA BILANGAN Tulis program untuk membaca tiga bilangan bulat dan menampilkan ketiga bilangan tersebut dalam keadaan terurut menaik (ascending). o Ketiga bilangan: bil1, bil2, bil3 o Atur ketiga bilangan sehingga: bil  bil2  bil3  Jika bil1 > bil2 tukar bil1 dan bil2  Jika bil1 > bil3 tukar bil1 dan bil3  Jika bil2 > bil3 tukar bil2 dan bil3  Terjadi 3 kali pertukaran nilai.  Tukar nilai dijadikan FUNCTION.

36 Function36 MENGURUTKAN TIGA BILANGAN Tulis program untuk membaca tiga bilangan bulat dan menampilkan ketiga bilangan tersebut dalam keadaan terurut menaik (ascending). o Ketiga bilangan: bil1, bil2, bil3 o Atur ketiga bilangan sehingga: bil  bil2  bil3  Jika bil1 > bil2 tukar bil1 dan bil2  Jika bil1 > bil3 tukar bil1 dan bil3  Jika bil2 > bil3 tukar bil2 dan bil3  Terjadi 3 kali pertukaran nilai.  Tukar nilai dijadikan FUNCTION.

37 Function37 MENGURUTKAN TIGA BILANGAN (A) Function untuk menukar dua nilai. Berapa buah parameter formal? z = x; x = y; y = z; Dua parameter formal: x dan y, by reference. z jadikan variabel lokal.

38 Function38 MENGURUTKAN TIGA BILANGAN (A) void tukar(int*, int*); int main() { int bil1, bil2, bil3; printf("ketik 3 bilangan: "); scanf("%d %d %d", &bil1, &bil2, &bil3); if (bil1 > bil2) tukar (&bil1, &bil2); if (bil1 > bil3) tukar (&bil1, &bil3); if (bil2 > bil3) tukar (&bil2, &bil3); printf("diurutkan: %d %d %d\n", bil1, bil2, bil3); return 0; } void tukar(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } void tukar(int*, int*); int main() { int bil1, bil2, bil3; printf("ketik 3 bilangan: "); scanf("%d %d %d", &bil1, &bil2, &bil3); if (bil1 > bil2) tukar (&bil1, &bil2); if (bil1 > bil3) tukar (&bil1, &bil3); if (bil2 > bil3) tukar (&bil2, &bil3); printf("diurutkan: %d %d %d\n", bil1, bil2, bil3); return 0; } void tukar(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } ketik 3 bilangan: diurutkan: ketik 3 bilangan: diurutkan:

39 Function39 MENGURUTKAN TIGA BILANGAN (A) int main() {... if (bil1 > bil2) tukar (&bil1, &bil2); //A... } int main() {... if (bil1 > bil2) tukar (&bil1, &bil2); //A... } void tukar(int *a, int *b) { int temp; //A temp = *a; //B *a = *b; //C *b = temp; //D } void tukar(int *a, int *b) { int temp; //A temp = *a; //B *a = *b; //C *b = temp; //D } A B C D


Download ppt "Konsep Pemrograman Function. 2 MODULARITAS Program panjang dibagi atas function- function – Modularity pengembangan program dapat dilakukan secara bertahap,"

Presentasi serupa


Iklan oleh Google