Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
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
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.