1 / 24

BAB7 : FUNGSI (Pengaturcaraan Bermodular )

BAB7 : FUNGSI (Pengaturcaraan Bermodular ). FUNGSI. Terdapat 2 kategori fungsi: Fungsi piawai perpustakaan C main() printf() scanf() dll Fungsi takrifan pengguna direkabentuk dan ditulis sendiri oleh pengaturcara. Mengapa perlu fungsi?. Struktur mudah difahami

wolfe
Télécharger la présentation

BAB7 : FUNGSI (Pengaturcaraan Bermodular )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BAB7 : FUNGSI (Pengaturcaraan Bermodular)

  2. FUNGSI • Terdapat 2 kategori fungsi: • Fungsi piawai perpustakaan C • main() • printf() • scanf() dll • Fungsi takrifan pengguna • direkabentuk dan ditulis sendiri oleh pengaturcara

  3. Mengapa perlu fungsi? • Struktur mudah difahami • aturcara mudah dibaca dan difahami kerana kumpulan suruhan2 yg melakukan kerja tertentu dikumpulkan dalam beberapa bahagian. • juga memudahkan proses debug • Jimat masa/ruang dan guna semula • fungsi hanya perlu ditulis sekali shj dan boleh digunakan berulang2 dgn memanggil nama fungsi tersebut. • Menggalakkan aturcara bermodular • masalah yg besar dipecahkan kpd masalah yg kecil(pendekatan atas-bawah)

  4. Fungsi (sambungan) • Secara ringkasnya melibatkan : • Takrifan fungsi • Mengistiharkan Prototaip fungsi (*perlu jika fungsi slps main() ) • Panggilan fungsi

  5. Format Fungsi • Takrifan fungsi • Bentuk Asas: jenis_pulangan nama_fungsi (parameter_masuk) { badan_fungsi; return (nilai); } Contoh : float kira_luas (float l, float p) { float A; A = p*l; return(A); }

  6. Contoh Fungsi void cetak_mesej (void) { printf("Hi\n"); } int campur (int x, int y) { return(x+y); }

  7. /* cari luas bulatan */ #include <stdio.h> int main ( ) { float luas, jejari; printf(“\nmasukkan nilai jejari:“); scanf(“ %lf “, &jejari); luas = 3.14159 * jejari * jejari; printf(“\nLuas bulatan %lf”,luas); return 0; } #include <stdio.h> float luas_bulat(float jari) { return ( 3.1415*jari*jari ); } int main ( ) { float luas, jejari; printf(“\nmasukkan nilai jejari:“); scanf(“ %lf “, &jejari); luas = luas_bulat(jejari); printf(“\nLuas bulatan%lf”,luas); return 0; } Takrifan fungsi luas bulatan

  8. PROTOTAIP FUNGSI • Contoh sblm (fungsi sebelum main( ))  tidak perlu prototaip fungsi. • Jika fungsi takrifan pengguna terletak selepas fungsi main( )  perlu prototaip fungsi • Format prototaip fungsi • Sama spt baris pertama takrifan fungsi & ditmb ; • nama fungsi, bilangan, susunan & jenis parameter mesti sama • Nama parameter boleh ditinggalkan

  9. #include <stdio.h> float luas_bulat (float); int main ( ) { : scanf(“ %lf “, &jejari); luas = luas_bulat(jejari); : } float luas_bulat (float jari) { return ( 3.1415*jari*jari ); } Contoh prototaip fungsi Prototaip fungsi

  10. Parameter sebenar Parameter formal Parameter dalam fungsi #include <stdio.h> float luas_bulat (float); int main ( ) { : scanf(“ %lf “, &jejari); luas = luas_bulat(jejari); : } float luas_bulat (float jari) { return ( 3.1415*jari*jari ); }

  11. Panggilan & Pulangan fungsi • Boleh dipanggil oleh fungsi luar atau dalam fungsi yg sama (rekursif). • 3 perkara penting • Nama fungsi – mesti sama dengan nama fungsi yang ditakrifkan. • Data yg dihantar – jenis, bilangan & turutan mesti sama. • Pulangan fungsi – jenis mesti sama

  12. Panggilan fungsi Pulangan fungsi #include <stdio.h> float luas_bulat (float); int main ( ) { float luas, jejari; : scanf(“ %lf “, &jejari); luas = luas_bulat(jejari); : } float luas_bulat (float jari) { return ( 3.1415*jari*jari ); } Contoh1 panggilan & pulangan fungsi

  13. Contoh 2 panggilan & pulangan fungsi Panggilan fungsi #include <stdio.h> float luas_bulat (float); int main ( ) { : cetak1( ); scanf(“ %lf “, &jejari); luas = luas_bulat(jejari); : } void cetak1 (void) { printf(“\nmasukkan nilai jejari:“); }

  14. Penghantaran Nilai kepada Fungsi • 2 cara : • penghantaran nilai sebenar (call by value) • penghantaran alamat nilai (call by reference) • Penghantaran nilai sebenar • Nilai sebenar akan diumpukan kpd parameter formal pada fungsi yang memanggil. • Nilai dihantar kpd sesuatu fungsi dlm bentuk satu arah. • sebarang perubahan nilai berlaku hanya didalam fungsi sahaja • perubahan keatas nilai didalam fungsi tidak dapat “dilihat” oleh pemanggil

  15. Contoh penghantaran nilai sebenar luas tpk tg void main( ){ : tpk = 9.0; tg = 4.0; luas = luas_segi3 ( tpk, tg ); printf(“%f , %f ,%f ”,tpk, tg, luas); } float luas_segi3 (float tapak, float tinggi) { float luas3; tapak=tapak+1; tinggi=tinggi+1; luas3 =(tapak*tinggi)/2.0; return ( luas3 ); } tapak tinggi luas3

  16. Penghantaran alamat nilai • setiap pembolehubah disimpan pada suatu alamat didalam ingatan (RAM)  &pembolehubah • Alamat tersebut dihantar kpd parameter formal pada fungsi yang memanggil. (bukannya nilai) • sebarang perubahan keatas kandungan alamat (nilai) yang dilakukan di dalam fungsi dapat dilihat oleh pemanggil • Nilai pembolehubah yg distorkan di dlm alamat boleh dirujuk dgn penunding  *pembolehubah • Nilai dihantar kpd sesuatu fungsi dlm bentuk dua arah. • ‘Return’ tidak diperlukan. (kalau guna pun tak salah) • parameter sebenar (pemanggil), bermula dengan simbol &. • parameter formal (dipanggil), bermula dengan *.

  17. Contoh penghantaran alamat nilai void main( ){ : tpk = 9.0; tg = 4.0;luas=0.0; luas_segi3 ( &tpk, &tg, &luas); printf(“%f, %f, %f ”, tpk, tg, luas); } float luas_segi3(float *tapak,float *tinggi, float*luas3) { *tapak=*tapak+1; *tinggi=*tinggi+1; *luas3 =(*tapak*(*tinggi))/2.0; } luas tpk tg tapak tinggi luas3

  18. void main() { int x=10, y=10, z=25, campur, tolak; Kiraan(x, &y, z, &campur, &tolak); Printf(“\nNilai x, y, z = %d%d%d”,x, y, z); printf(“\nNilai bagi campur ialah %d ”, campur); printf(“\nNilai bagi tolak ialah %d “,tolak); return; }  void Kiraan(int a, int *b, int c, int *tambah, int *kurang) { a = a+3; *b = *b+2; *tambah = a + *b + c; *kurang = a - *b - c; } latihan

  19. Skop Pembolehubah • Pembolehubah setempat • Diistiharkan dalam sesuatu fungsi • Hanya boleh digunakan/ dicapai/ dicam dalam fungsi tersebut sahaja • Hanya wujud semasa fungsi tersebut aktif • Pembolehubah sejagat • Diistiharkan diluar fungsi • Boleh digunakan/ dicapai/ dicam oleh semua fungsi kecuali jika namanya sama dgn pembolehubah setempat

  20. Contoh skop pembolehubah void main() { float j; : luas_segi4 (); luas = luas_bulat(j); } #include <stdio.h> float luas= 0; void luas_segi4 (void) { float pjg=2, lbr=4; luas = pjg*lbr; } float luas_bulat (float jejari) { float luas; luas = 3.1415*jejari*jejari; return(luas); }

  21. Skop prototaip • Sama seperti skop pembolehubah

  22. #include <stdio.h> void menu (void); float luas_segi4 (void); void main() { float luas_segi3 (float, float); : menu(); luas = luas_segi4 (); luas = luas_segi3 (tpk, tg); } float luas_segi4 (void) { float luas_bulat (float jejari); : luas = luas_bulat (j); : } float luas_segi3 (float tapak, float tinggi) { : } float luas_bulat (float jejari) { menu(); : } void menu (void) { : }

  23. Pembolehubah automatik dan statik • Pembolehubah automatik • nilai bagi pembolehubah automatik wujud apabila memasuki fungsi/blok dimana pembolehubah tersebut diistiharkan dan akan terhapus apabila keluar. • Format : auto float x, y; • secara default, pembolehubah yang digunakan adalah berjenis auto. format diatas jarang digunakan • Pembolehubah statik • nilai yang terdapat dalam pembolehubah ini akan kekal walaupun telah keluar daripada fungsi/blok dimana ia distiharkan • Format : static int count;

  24. void a(void) { int y = 25; printf(“y dalam fungsi a = %d”, y); ++y; printf(“y dalam fungsi a = %d”, y); }  void b (void) { static int z = 40; printf(“z dalam fungsi b = %d”, z); ++z; printf(“z dalam fungsi b = %d”, z); } #include <stdio.h> void a(void); void b(void); void c( void); main( ) { a( ); b( ); a( ); b( ); }

More Related