1 / 29

Bab 10

Bab 10. Fungsi. Rekabentuk Atas Bawah. Aturcara C untuk menyelesaikan masalah yang kecil biasanya ditulis dalam satu fungsi sahaja  fungsi utama yang dipanggil main

dawn-bush
Download Presentation

Bab 10

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. Bab 10 Fungsi

  2. Rekabentuk Atas Bawah • Aturcara C untuk menyelesaikan masalah yang kecil biasanya ditulis dalam satu fungsi sahaja  fungsi utama yang dipanggil main • Masalah yang besar dan kompleks perlu dipecahkan kepada submasalah-submasalah (pemecahan berstruktur)  boleh digambarkan dengan carta berstruktur • Dalam carta berstruktur, masalah yang paling besar berada paling atas, manakala submasalah yang paling kecil berada paling bawah  rekabentuk atas bawah

  3. Cari & cetak huruf terawal di antara 3 huruf yang diberi huruf_3 huruf_2 huruf_1 huruf_1 huruf_2 huruf_3 huruf_Terawal huruf_1 huruf_2 huruf_Terawal huruf_Terawal huruf_3 huruf_Terawal Baca 3 huruf Cari huruf terawal Cetak keputusan Banding huruf_1 Dengan huruf_2, Simpan yg terawal Dlm huruf_Terawal Banding huruf_3 Dengan huruf_Terawal, Simpan yang terawal Dlm huruf_Terawal 3.1 3.2 Contoh Carta Berstruktur

  4. Rekabentuk Atas Bawah • Setiap masalah dan submasalah dalam carta berstruktur dirujuk sebagai modul yang akan dikodkan sebagai fungsi • Fungsi yang paling atas merupakan fungsi utama (main) • Fungsi main akan memanggil setiap fungsi yang berada di bawahnya, dan setiap fungsi akan memanggil fungsi yang berada di bawahnya dan seterusnya

  5. Fungsi Takrifan Pengguna • Fungsi yang direka, ditulis atau ditakrifkan oleh pengaturcara • Setiap fungsi takrifan pengguna perlu mempunyai takrifan dan prototaip • Setiap fungsi ini juga perlu dipanggil untuk melaksanakan kod-kod yang telah ditakrifkan dalam fungsi tersebut • Dalam aturcara C, prototaip fungsi ditulis sebelum fungsi main, manakala takrifan fungsi ditulis selepas fungsi main

  6. Takrifan Fungsi • Bentuk takrifan fungsi adalah seperti berikut: jenis_data nama_fungsi( senarai_takrifan_parameter ) { pengisytiharan_pembolehubah_setempat; pernyataan; } • Kepala fungsi – pernyataan sebelum tanda ‘{‘ • Badan fungsi – semua penyataan yang berada di antara tanda ‘{‘ dan ‘}’ • Jenis_data – jenis bagi suatu nilai yang dikembalikan oleh fungsi, contohnya int, float, char, dan void digunakan jika fungsi tidak mengembalikan sebarang nilai

  7. Takrifan Fungsi • Nama_fungsi – nama yang diberikan oleh pengaturcara mengikut petua pencam: • Bermula dengan abjad • Tidak melebihi 31 aksara • Hanya terdiri daripada abjad, digit dan tanda ‘_’ sahaja • Senarai_takrifan_parameter – pengisytiharan parameter yang diterima oleh fungsi • Pengistiharan lebih dari satu parameter dipisahkan oleh tanda ‘,’ • ‘Void’ digunakan jika tiada parameter yang terlibat

  8. Takrifan Fungsi • Suatu fungsi boleh mempunyai pembolehubahnya sendiri – pembolehubah setempat yang hanya digunakan dalam fungsi tersebut • Pembolehubah setempat ini ditakrifkan dalam badan fungsi • Contoh takrifan fungsi: void lukis_garissilang(void) { printf(“ /\ \n”); printf(“ / \ \n”); printf(“ / \ \n”); } Fungsi ini tidak menerima sebarang parameter dan tidak memulangkan sebarang nilai

  9. Contoh Takrifan Fungsi • Contoh 2: void lukis_garisdasar( int n ) { int i; for ( i = 1; i<=n; i++) printf(“-”); } • Contoh 3: float kira_luas( int jejari ) { float luas; luas = (22.0/7.0) * jejari * jejari; return luas; }

  10. Prototaip Fungsi • Prototaip fungsi memberitahu pengkompil C maklumat awal tentang parameter yang akan dihantar kepada dan nilai yang akan dikembalikan oleh fungsi tersebut • Sintaks prototaip fungsi: jenis_data nama_fungsi( senarai_takrifan_parameter); • Bentuk ini menyerupai kepala takrifan fungsi • Contoh: int lukisSegiEmpat( int lebar, int tinggi ); • Prototaip di atas boleh juga ditulis seperti berikut: int lukisSegiEmpat( int, int );

  11. Panggilan Fungsi • Sintaks untuk panggilan fungsi: nama_fungsi( senarai_parameter_sebenar ); • Nama_fungsi – nama fungsi yang ingin dipanggil • Senarai_parameter_sebenar – senarai parameter yang ingin dihantar kepada fungsi yang dipanggil • Bilangan parameter sebenar mestilah sama dengan bilangan parameter yang ditakrifkan dalam fungsi • Contoh: lukis_garisdasar(5); • Jika tiada parameter yang terlibat, ruang dibiarkan kosong, contohnya; lukis_garissilang();

  12. Contoh Penggunaan Fungsi (1) • Masalah : • Melukis bangunan • Analisis : • Bangunan boleh dilukis mengikut langkah-lengkah berikut: • Lukis bumbung • Lukis tingkat ( 3 kali ) • Lukis dasar

  13. Lukis bangunan Lukis tingkat Lukis tingkat Lukis tingkat Lukis dasar Lukis bumbung Contoh Penggunaan Fungsi (1) • Carta berstruktur:

  14. Contoh Penggunaan Fungsi (1) /* Melukis bangunan */ #include <stdio.h> void lukis_bumbung(void); void lukis_tingkat(void); void lukis_dasar(void); void main (void) { lukis_bumbung(); lukis_tingkat(); lukis_tingkat(); lukis_tingkat(); lukis_dasar(); } int i; lukis_bumbung(); for (i=0; i<3; i++) lukis_tingkat(); lukis_dasar();

  15. Contoh Penggunaan Fungsi (1) void lukis_bumbung(void) { printf(“ /\ \n”); printf(“ / \ \n”); } void lukis_tingkat(void) { printf(“------\n”); printf(“| | \n”); } void lukis_dasar(void) { printf(“------\n”); }

  16. Fungsi dengan parameter • Terdapat dua istilah yang biasa digunakan untuk merujuk parameter : • Parameter sebenar • Parameter formal • Parameter sebenar merujuk kepada parameter yang disenaraikan dalam pernyataan panggilan fungsi • Parameter formal merujuk kepada parameter yang disenaraikan dalam kepala takrifan fungsi • Bilangan dan jenis parameter sebenar dan parameter formal mesti sepadan • Apabila suatu fuungsi dipanggil, nilai parameter sebenar akan disalin kepada parameter formal • Sebarang perubahan yang berlaku kepada parameter formal tidak akan memberi kesan kepada parameter sebenar

  17. Fungsi yang Mengembalikan Nilai • Fungsi yang mengembalikan nilai mesti mempunyai pernyataan return • Sintaks: return; return <ungkapan>; • Pernyataan return biasanya ditulis sebelum berakhirnya badan fungsi  ketika kawalan aturcara dikembalikan kepada fungsi yang memanggil atau aturcara utama • Contoh: return 0; return luas; return (a + b + c);

  18. Fungsi yang Mengembalikan Nilai • Cara panggilan fungsi yang mengembalikan nilai berbeza dengan panggilan fungsi yang lain • Penggilan fungsi adalah dalam bentuk penyataan umpukan • Sintaks panggilan fungsi : pembolehubah = nama_fungsi(senarai_parameter_sebenar); • Jenis pembolehubah haruslah sama dengan jenis nilai yang dikembalikan oleh fungsi tersebut

  19. Contoh Penggunaan Fungsi (2) #include <stdio.h> float kira_luas(int); int main() { int j; float luas_bulatan1; float luas_bulatan2; luas_bulatan1 = kira_luas(5); printf(“Luas bulatan 1 %f”, luas_bulatan1); printf(“Masukkan nilai jejari: “); scanf(“%d”, &j); luas_bulatan2 = kira_luas(j); printf(“Luas bulatan 2 %f”, luas_bulatan2); return 0; }

  20. Contoh Penggunaan Fungsi (2) float kira_luas(int jejari) { float luas; luas = (22.0/7.0) * jejari * jejari; return luas; }

  21. Fungsi Pustaka Dalam C • Bahasa C menyediakan koleksi fungsi pustaka yang boleh digunakan dalam aturcara • Untuk menggunakan fungsi-fungsi ini, pengisytiharan prototaip fungsi yang diisytiharkan secara berkumpulan dalam fail header ( fail .h ) tertentu perlu dipanggil • Contoh fungsi pustaka yang biasa digunakan ialah • printf( ) • scanf( ) • Prototaip printf( ) dan scanf( ) diisytiharkan dalam fail stdio.h

  22. Fungsi Pustaka Dalam C • Antara koleksi fungsi pustaka yang disediakan adalah fungsi untuk manipulasi aritmetik • Prototaip fungsi-fungsi ini kebanyakannya diisytiharkan dalam fail math.h • Fungsi-fungsi ini adalah fungsi yang mengembalikan nilai, contoh menggunakan fungsi sqrt: y = sqrt(x) (pernyataan panggilan fungsi) y – p/ubah yang akan menyimpan nilai yang dikembalikan oleh fungsi x – argumen • Jika nilai argumen x yang dihantar ialah 100, nilai y selepas pernyataan ini dilaksanakan ialah 10

  23. Fungsi Pustaka Dalam C • Fungsi ceil(x) • Memulangkan nombor bulat terkecil yang tidak kurang kurang daripada argumen • Contoh: y = ceil(x); jika x = 45.23, y = 46.0 juga boleh ditulis sebagai : y = ceil(45.23); • Jenis argumen x  float/double • Jenis p/ubah y  float/doule Sila rujuk Buku Pengaturcaraan C, jadual 10.1

  24. Skop Pembolehubah • Terdapat dua jenis skop pembolehubah: setempat (local) dan sejagat (global) • Pembolehubah setempat: • Hanya boleh dikenali dan dimanipulasi dalam blok di mana ia diisytiharkan • Blok ditandakan dengan ‘{‘ dan ‘}’ • Pembolehubah sejagat • Dikenali dan boleh dimanipulasi oleh keseluruhan aturcara, termasuk fungsi takrifan pengguna • Pembolehubah ini tidak perlu dihantar sebagai argumen kepada fungsi yang akan menggunakannya • Diisytiharkan sebelum fungsi main( )

  25. Skop Pembolehubah (Contoh) x 4 #include <stdio.h> void kuasadua(float, float); int x; int main(void) { float a, b; a = 3; b = 20; x = 2; kuasadua(a, b); printf(“%1.1f kuasadua ialah %2.1%f\n”, a, b ); return 0; } void kuasadua( float i, float j) { j = i *i; x = 4; } main a 3 b 20 kuasadua i 3 j 9

  26. Fungsi Rekursi • Fungsi yang memanggil dirinya sendiri • Fungsi rekursi digunakan untuk menyelesaikan masalah yang boleh dipecahkan kepada submasalah yang menyerupai masalah asal, secara berulang-ulang sehingga dapat diselesaikan • Contohnya, mendapatkan nilai faktorial • Rumus faktorial boleh ditulis sebagai: 1, apabila n = 0 n! = n * (n-1) * … * 2 * 1, apabila n >= 1 • Fungsi faktorial boleh ditulis sebagai: faktorial(n) = n!

  27. Contoh Fungsi Rekursi (Faktorial) • Faktorial(n) = n! = n * (n-1) * (n-2) * … * 2 * 1 = n * (n-1)! = n * faktorial(n-1) • Faktorial(0) = 0! = 1 • Faktorial(1) = 1! = 1 * 1= 1 * 0! • Faktorial(2) = 2! = 2 * 1= 2 * 1! • Faktorial(3) = 3! = 3 * 2 * 1 = 3 * 2! • Faktorial(4) = 4! = 4 * 3 * 2 * 1 = 4 * 3! • Faktorial(5) = 5! = 5 * 4 * 3 * 2 * 1 = 5 * 4!

  28. Contoh Fungsi Rekursi (Faktorial) faktorial(5) y = 5 * faktorial(5-1); 4 * 3 * 2 * 1 faktorial(4) y = 4 * faktorial(4-1); 3 * 2 * 1 faktorial(3) y = 3 * faktorial(3-1); 2 * 1 faktorial(2) y = 2 * faktorial(2-1); 1 faktorial(1) y = 1 * faktorial(1-1);

  29. Implementasi Fungsi Faktorial #include <stdio.h> int main(void) { int n; int faktorial(int); printf(“Masukkan nilai n “); scanf(“%d”, &n); if (n < 0) printf(“n tidak boleh negatif\n”); else printf(“%d! = %d\n”, faktorial(n)); } int faktorial( int n ) { if (n == 0) return 1; else return (n * faktorial(n-1)); }

More Related