bab6 001

Post on 13-May-2015

747 Views

Category:

Travel

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

BAB 6 :PERNYATAAN KAWALAN

BAB 6 Struktur kawalan

Tujuan : mengawal aliran aturcara Jenis:

Struktur pemilihan Struktur Perulangan & Gelung

Kata kunci: if else switch case for while do

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

Pemilihan dgn if & else Terdapat 3 format Format 1

if (syarat) bhgn_benar;

Contoh if (x == 10)

printf(“sama dgn 10”);

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)

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

Pemilihan dgn if & else (samb)

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

printf (“ no positif “);

Pemilihan dgn if & else (samb)

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; }

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

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.

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

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 );

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;

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;

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

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

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”);

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”.

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

Pernyataan for Digunakan utk ulangan yg diketahui

bilangannya Pernyataan while & do-while

Digunakan utk ulangan yg diketahui atau tidak diketahui bilangan ulangannya

PERNYATAAN while Format:

while(ungkapan syarat)

satu pernyataan c;

while(ungkapan syarat)

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

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);}

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

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

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’));

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.

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); }

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.

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

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.

latihan

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

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.

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

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

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;

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

pernyataan continue menyebabkan baki pernyataan dalam

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

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