Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Konsep Pemrograman Function.

Presentasi serupa


Presentasi berjudul: "Konsep Pemrograman Function."— Transcript presentasi:

1 Konsep Pemrograman Function

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. Function

3 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 Function

4 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; var. lokal 1: 2 10 nilai a ? 30 2: 30 3: 50 4: 100 5: 20 6: 30 7: 35 var. lokal Function

5 VARIABEL LOKAL dan GLOBAL
# include <stdio.h> 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; var. global 1: 10 nilai i ? 25 2: 25 3: 10 Function

6 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 Function

7 VARIABEL POINTER Letak simbol * menempel di kiri nama variabel pointer
 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 Function

8 VARIABEL POINTER int *pi, bulat; float *pf, pecah; bulat = 10;
Function

9 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; } bulat dan pecah : 10 20 Function

10 MEMORI ILEGAL { 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. Function

11 TIPE DATA TIDAK SESUAI { 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. Function

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

13 SHALLOW COPY shallow copy # include <stdio.h> 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; return 0; } shallow copy 10 10 10 20 20 Function

14 SHALLOW COPY A B C p1 = &bulat1; 10 p2 = &bulat2; //* A 10 10
p2 = p1; //* B *p1 = *p1 * 2; //* C 10 10 10 20 20 A B C Function

15 DEEP COPY deep copy # include <stdio.h> 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; return 0; } deep copy 10 10 10 20 10 Function

16 DEEP COPY A B C p1 = &bulat1; 10 p2 = &bulat2; //* A 10 10
*p2 = *p1; //* B *p1 = *p1 * 2; //* C 10 10 10 20 10 A B C Function

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

18 DEFINISI FUNCTION Daftar parameter Tipe function
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. Function

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

20 DEFINISI FUNCTION # include <stdio.h>
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 = Function

21 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; deklarasi function definisi function Function

22 PENGIRIMAN PARAMETER Passing by value
Nilai parameter aktual disalin kepada parameter formal. Parameter aktual berupa variabel, nilai konstanta, atau ekspresi. Passing by reference atau by location Alamat memori parameter aktual disalin kepada parameter formal. Parameter formal mengacu parameter aktual. Isi parameter aktual dapat diubah melalui parameter formal. Sebuah function boleh menggunakan salah satu atau kedua cara pengiriman tersebut. Function

23 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; bil 1? 10 bil 2? 20 jumlah ganda = 60 Function

24 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; } //C //A //B //C A B C Function

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

26 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; } //G G Function

27 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; bil 1? 25 bil 2? 35 jumlah ganda = 120 Function

28 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; } //C //A //B //C A B C Function

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

30 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; } //E E Function

31 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) Function

32 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; panjang lebar tinggi ? 2 3 4 luas permukaan = 52.00 volume = 24.00 Function

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

34 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; panjang lebar tinggi ? 2 3 4 luas permukaan = 52.00 volume = 24.00 Function

35 MENGURUTKAN TIGA BILANGAN
Tulis program untuk membaca tiga bilangan bulat dan menampilkan ketiga bilangan tersebut dalam keadaan terurut menaik (ascending). Ketiga bilangan: bil1, bil2, bil3 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. Function

36 MENGURUTKAN TIGA BILANGAN
Tulis program untuk membaca tiga bilangan bulat dan menampilkan ketiga bilangan tersebut dalam keadaan terurut menaik (ascending). Ketiga bilangan: bil1, bil2, bil3 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. Function

37 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. Function

38 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; ketik 3 bilangan: diurutkan: Function

39 MENGURUTKAN TIGA BILANGAN (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 } A B C D Function


Download ppt "Konsep Pemrograman Function."

Presentasi serupa


Iklan oleh Google