bab 6 :pernyataan kawalan
Post on 05-Feb-2016
58 Views
Preview:
DESCRIPTION
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 sahaja2. 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 k1 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 4Using 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 4Using the continue statement
123456
6
7
7
8
8
9
9
10
10
11
top related