Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Bab 10 Fungsi.

Presentasi serupa


Presentasi berjudul: "Bab 10 Fungsi."— Transcript presentasi:

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 Contoh Carta Berstruktur
Cari & cetak huruf terawal di antara 3 huruf yang diberi Baca 3 huruf Cari huruf terawal Cetak keputusan huruf_3 huruf_2 huruf_1 huruf_Terawal Banding huruf_1 Dengan huruf_2, Simpan yg terawal Dlm huruf_Terawal Banding huruf_3 Dengan huruf_Terawal, Simpan yang terawal 3.2 3.1

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 jenis_data nama_fungsi( senarai_takrifan_parameter ) {
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
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 nama_fungsi( senarai_parameter_sebenar );
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 Contoh Penggunaan Fungsi (1)
Carta berstruktur: Lukis bangunan Lukis bumbung Lukis tingkat Lukis dasar

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_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) {

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 I ini

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)
#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; 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)
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; return (n * faktorial(n-1));


Download ppt "Bab 10 Fungsi."

Presentasi serupa


Iklan oleh Google