Download - Bab6 001

Transcript
Page 1: Bab6 001

BAB 6 :PERNYATAAN KAWALAN

Page 2: Bab6 001

BAB 6 Struktur kawalan

Tujuan : mengawal aliran aturcara Jenis:

Struktur pemilihan Struktur Perulangan & Gelung

Kata kunci: if else switch case for while do

Page 3: Bab6 001

STRUKTUR PEMILIHAN

Arahan2 dipilih utk dilaksanakan & pemilihan bergantung kepada syarat

Dilakukan dengan 3 cara: Pemilihan dgn if & else Pemilihan dgn operator bersyarat Pemilihan dgn switch, case & break

Page 4: Bab6 001

Pemilihan dgn if & else Terdapat 3 format Format 1

if (syarat) bhgn_benar;

Contoh if (x == 10)

printf(“sama dgn 10”);

Page 5: Bab6 001

Format 2 if (syarat) bhgn_benar; else bhgn_palsu;

Contoh If (x<0)

printf(“no negatif”);

else printf(“no positif”);

Pemilihan dgn if & else (samb)

Page 6: Bab6 001

Format 3 (bersarang) if (syarat 1) bhgn_benar 1; else if(syarat 2) bhgn_benar 2; : else bhgn_palsu;

Pemilihan dgn if & else (samb)

Page 7: Bab6 001

contoh if (x == 0) printf(“ no sifar “); else if(x < 0) printf(“ no negatif ”); else

printf (“ no positif “);

Pemilihan dgn if & else (samb)

Page 8: Bab6 001

Syarat,syarat1… Ungkapan logik dan hubungan mudah/kompleks

Bhgn_benar / Bhgn salah Terdiri dr 1/lebih kenyataan C. Jika lebih dr satu, mesti di letakkan di antara

tanda {}Contoh

if(x<10){ printf(“lebih kecil dpd 10);

--kira;}

else { printf(“lebih besar dpd 10);

++kira; }

Page 9: Bab6 001

Jenis struktur pemilihan: Pemilihan mudah

Hanya ada 1 @ 2 bahagian pilihan sahaja

Pemilihan Bersarang Jika lbh dr 2 pilihan 2 cara pemilihan bersarang:

Keputusan Berbilang Alternatif if…else if

Syarat if yg diberi dlm beberapa aras

Page 10: Bab6 001

Syarat if yg diberi dlm beberapa aras

Tulis satu aturcara utk mengira & memaparkan luas satu segiempat. Saiz sisi segiempat ini diberikan oleh pengguna melalui papan kekunci.

Aturcara anda mesti memastikan saiz sisi2 yg diberi bukanlah sifar atau negatif. Jika saiz yg diberikan adalah sifar, cetak mesej amaran kpd pengguna & jadikan luas sifar. Jika saiz yg diberikan adalah negatif, ambil magnitudnya shj.

Page 11: Bab6 001

if (panjang== 0 || lebar ==0){

printf("%*@$%^#***@^\n");luas=0;

}else{

if (panjang < 0)panjang = -panjang; /*cari magnitud panjang*/

if (lebar < 0 )lebar = -lebar; /* cari magnitud lebar*/

luas = panjang*lebar;}

Cth Syarat if yg diberi dlm 2 aras

Page 12: Bab6 001

Cth Syarat if yg diberi dlm 4 aras

Kementerian pertahanan hendak menyenaraikan nama-nama kakitangan lelaki yg berumur 20 hingga 26 tahun dan belum berkahwin.

Kenyataan if bersarang berikut boleh digunakan:if (jantina == 'L' )

if (taraf_perkahwinan == 'B')if (umur <=26)

if (umur>=20)printf("%s\n",nama );

ATAU kenyataan berikut juga boleh digunakan:

if ((jantina == 'L' )&& (taraf_perkahwinan == 'B')&& (umur <=26) && (umur>=20))

printf("%s\n",nama );

Page 13: Bab6 001

Pemilihan dgn operator bersyarat

Format:ekspresi_1 ? Ungkapan_benar : ungkapan_palsuMaksud:

ekspresi_1 akan diujiJika memenuhi syarat , ungkapan_benar dilaksanakanJika tidak memenuhi syarat , ungkapan_palsu dilaksanakan

Contoh(umur <12) ? harga_tiket =10 :harga tiket = 20;

Page 14: Bab6 001

Pemilihan dgn operator bersyarat

Sama dgn kenyataan if-elseif(umur <12)

harga_tiket =10;else

harga_tiket =20;Boleh juga ditulis spt berikut

harga_tiket = (umur <12) ? 10 :20;

Page 15: Bab6 001

Jika terdapat banyak pilihan dalam aturcara, lebih mudah dilakukan dgn menggunakan struktur switch-case-break berbanding if..else

Format:switch(ungkapan_kawalan){ case label_1: arahan-arahan; case label_2: arahan-arahan; case label_3: arahan-arahan; ……. default : arahan-arahan; }

Pemilihan dgn switch,case & break

Page 16: Bab6 001

Di mana: ungkapan kawalan

Ungkapan yg akan menghasilkan nilai integer atau aksara. label_1, label_2…..

Nilai kes utk menentukan pilihan Nilai ini mestilah dr jenis integer atau aksara sahaja Nombor sahih dan pembolehubah tidak dibenarkan

arahan-arahan Pernyataan C yg perlu dilakukan utk setiap label Boleh terdiri dr 1 atau lebih pernyataan dan tak perlu di

blok Walaubagaimanapun, pernyataan yg terakhir bg setiap

label (kecuali label terakhir) mestilah pernyataan break default

Optional Jika digunakan ia adalah utk menangani kes yg lain yg

tidak dilabelkan switch,case

Mesti diblokkan

Page 17: Bab6 001

Contoh:int x;

scanf("%d", &x);

switch (x)

{

case 1: puts ("satu"); break;

case 2: puts ("dua"); break;

case 3: puts ("tiga"); break;

default: puts ("bukan satu dua tiga ");

}

Pemilihan dgn switch,case & break

If(x= = 1) puts (“satu”);else if(x= = 2) puts (“dua”);else if(x= = 3) puts (“tiga”);else puts(“bukan satu,dua, tiga”);

Page 18: Bab6 001

LATIHAN

Bentukkan ungkapan dlm C bagi mengungkap syarat2 berikut:

a) nombor sama dgn atau lebih besar dari 1 tetapi lebih kecil dari 9

b) pembolehubah hrf bukan huruf q atau kc) Jika nombor adalah di antara 1 dan 9 tetapi bukan 5

cetak “nombor kegemaran saya”.

Page 19: Bab6 001

Gelung???

Blok kenyataan yg perlu dilaksanakan berulang-ulang sehingga sesuatu syarat dipenuhi

Katakunci: while, do….while, for 2 cara mengawal ulangan gelung:

Menggunakan pembilang Digunakan jika bilangan ulangan diketahui

semasa aturcara dikod Menggunakan data sentinel di dalam ungkapan

bersyarat Digunakan jika bilangan ulangan tidak

diketahui semasa aturcara dikod Data sentinel => data yg ditentukan sendiri

oleh pengaturcara sbg data penamat Ulangan di buat sehingga data sentinel

ditemui

Page 20: Bab6 001

Pernyataan for Digunakan utk ulangan yg diketahui

bilangannya Pernyataan while & do-while

Digunakan utk ulangan yg diketahui atau tidak diketahui bilangan ulangannya

Page 21: Bab6 001

PERNYATAAN while Format:

while(ungkapan syarat)

satu pernyataan c;

while(ungkapan syarat)

{ pernyataan_1; pernyataan_2; ……. pernyataan_n; } /* end pernyataan while*/

Page 22: Bab6 001

int digit =1;while (digit <= 10){ printf(“%d\

n”,digit); ++digit;}

PERNYATAAN while (contoh)

Printf(“masukkan data :”);scanf(“%d”, nombor);While (nombor != 9999){ ++bil; jumlah = jumlah + nombor; Printf(“masukkan data :”); scanf(“%d”, nombor);}

Page 23: Bab6 001

PERNYATAAN do-while Juga mempunyai peranan seperti

while Perbezaannya: dari segi kedudukan

pengujian Bagaimana??? : Berlaku pada

bahagian bawah gelung. => kawalan akan masuk ke badan

gelung dan melaksanakannya sekali, sebelum menilai ungkapan syarat

Page 24: Bab6 001

FORMAT do-whiledo { blok aturcara C;}while (ungkapan syarat);

Page 25: Bab6 001

int digit =1;do { printf(“%d\n”,digit); ++digit;} while (digit <= 10);

PERNYATAAN do-while (contoh)

do { puts(“Masukkan Y atau N=>”); scanf(“%c”, &jawapan);}while ((jawapan != ‘Y’) || jawapan != ‘N’));

Page 26: Bab6 001
Page 27: Bab6 001

PERNYATAAN for Pernyataan gelung dengan format

yg mudah tetapi bilangan ulangan yg hendak dibuat mesti diketahui semasa aturcara dikod.

Menggunakan pembolehubah kawalan utk mengawal bilangan ulangan yg dilaksanakan.

Page 28: Bab6 001

FORMAT for for(ungk_awal;ungk_syarat;ungk_peningkatan) { blok aturcara C; }cth: for(darjah=0;darjah<=360;darjah +=10) { radian = darjah*pi/180; printf(“Radian:”,radian); }

Page 29: Bab6 001

ungk_awal terdiri daripada pernyataan umpukan

utk memberi nilai awal kepada pembolehubah kawalan

ia pertama dilaksanakan dalam pernyataan for dan hanya dilaksanakan sekali

Jika pembolehubah kawalan telah diberikan nilai awal sebelum pernyataan for, ungkapan ini boleh diabai tetapi tanda ; tetap diperlukan.

Page 30: Bab6 001

ungk_syarat ungkapan yg mengawal perlaksanaan gelung Biasanya membandingkan pembolehubah

kawalan yg digunakan dgn nilainya yg akhir utk menentukan sama ada ulangan telah tamat atau belum.

Ungkapan akan dinilai setiap kali sebelum melaksanakan badan gelung.

ungk_peningkatan ungkapan yg menambah nilai pembolehubah

kawalan yg digunkan dgn kenaikan/pengurangan yg ditetapkan

boleh diabaikan jika peningkatan dilakukan di badan gelung.

tetapi tanda ; masih diperlukan

Page 31: Bab6 001

PERLAKSANAAN for1. bermula dgn melaksanakan ungk_awal.

dilaksanakan sekali sahaja

2. ungk_syarat akan dinilai. Jika BENAR, badan gelung dilaksanakan Jika SALAH, pernyataan for akan tamat

3. ungk_peningkatan dilaksanakan sebaik saja perlaksanaan badan gelung selesai. Kawalan seterusnya pergi ke langkah 2.

Page 32: Bab6 001

latihan

int digit =1;while (digit <= 10){ printf(“%d\n”,digit); ++digit;}

Page 33: Bab6 001

GELUNG BERSARANG Badan pernyataan gelung mengandungi

pernyataan gelung yg lain. Ia tidak semestinya dari jenis yg sama.

Bermakna boleh terdiri dari kombinasi pernyataan gelung.

Walaupun boleh, tetapi penggunaan gelung yg berlapis-lapis akan menjadikan aturcara susah dibaca dan kompleks.

Page 34: Bab6 001

contoh For (i=1; i<=2; i++) {

For (j = 1; j<=3; j++){ For (k=1; k<=4; k++) printf(“*”); printf(“\n”);}

printf(“\n”);

}

i j k

1 1 1

Output :*

2

*

3

*

4

*

52 1

* * * *

43 1

* * * * * * * * * * * *

* * * *

4 52 1 1

Page 35: Bab6 001

Fungsi exit()

Merupakan fungsi jenis void yg akan: mengosongkan semua buffer menutup semua fail yg dibuka semasa

perlaksanaan aturcara tersebut menamatkan perlaksanaan aturcara memulangkan kawalan kepada sistem

sebelumnya yg memulakan perlaksanaan aturcara tersebut.

Utk menggunakannya perlu memasukkan fail kepala piawai <stdlib.h>

Format : exit(status) status boleh mengambil apa sahaja nilai integer

Page 36: Bab6 001

Fungsi break pernyataan utk menamatkan struktur

pelaksanaan pernyataan while, do-while,for dan switch-case

Bila pernyataan break ditemui perlaksanaan gelung dianggap tamat walaupun ada lagi pernyataan lain (dalam badan gelung) yg belum dilaksanakan

(menyebabkan adanya baki dalam badan gelung)

Format: break;

Page 37: Bab6 001

contoh#include <stdio.h>main(){

int x;for (x = 1; x<=10; x++){

if(x==5) break; printf (“%d”, x); } printf(“\n using the break statement”); return 0;}

x

Output: 1 2 3 4

Using the break statement

12345

Page 38: Bab6 001

pernyataan continue menyebabkan baki pernyataan dalam

badan gelung (selepas pernyataan continue) diabaikan, tetapi kawalan terus melaksanakan gelung tersebut

Page 39: Bab6 001

contoh#include <stdio.h>main(){

int x;for (x = 1; x<=10; x++){

if(x==5) continue; printf (“%d”, x); } printf(“\n using the continue

statement”); return 0;}

x

Output: 1 2 3 4

Using the continue statement

123456

6

7

7

8

8

9

9

10

10

11


Top Related