#include <fail header
fail>
simbol #
dipanggil arahan
prapemproses.
include
Bertujuan untuk mentakrifkan
pencam piawai daripada pustaka piawai. Menyebabkan prapemproses memasukkan satu
salinan fail header piawai seperti
<stdio.h> ke dalam aturcara
pada baris dimana arahan tersebut ditemui. Fail stdio.h mengandungi maklumat mengenai fungsi piawai untuk input
atau ouput seperti scanf() dan printf
Contoh lain: #include <math.h> arahan header ini adalah untuk fungsi matematik.
Define
Bertujuan untuk mencipta
makro pemalar contohnya
#define NAMA nilai
NAMA dikenali sebagai makro pemalar maksudnya nilainya tetap
setelah ditakrifkan sedemikian, kebiasannya ia ditulis dengan huruf besar untuk
membezakan pencan dan pemboleh ubah yang biasa.
Kurungan <….>
menunjukkan fail ini ditemui
ditempat yang biasa contohnya dalam
sistem unix ia dinamakan fail .profile.
PROTOTAIP FUNGSI UTAMA
int main(void){
badan fungsi
}
merupakan pengistiharan
fungsi utama
main
menunjukkan arahan bermula
perlaksanaan aturcara
terdiri dari dua bahagian
-
pengisytiharan
pembolehubah
-
badan
aturcara
tanda kurungan ()
dibuat selepas main
memberitau pengkompil bahawa ia adalah satu fungsi.
int
pembolehubeh berjenis
jejari/diameter suatu intiger bernombor bulat, dinyatakan sebagai jenis nilai
bagi fungsi main, mengisytiharkan bahawa nilai yang akan dipulangkan oleh
fungsi main bejenis integer yang benilai kosong kepada sistem pengoperasian
sekiranya perlaksanaan berakhir dengan jayanya.
Void
menunjukkan fungsi main()
tidak menerima apa-apa input data daripada sistem pengoperasian sebelum ia
memulakan perlaksanaan. Jika aturcara ini tidak perlu mengembalikan sebarang
nilai dan tidak menerima nilai maka kita tulisnya sebagai void main(void)
{………..}
lekuk {
menunjukkan permulaan badan
fungsi main().
Lekuk }
Printf(format output (“..”)[. Senarai _nilai(\n));
Printf()
-format output merupakan satu rentetan yang menentukan bentuk output bagi nilai-nilai yang disenaraikan.
Contonya printf (“ayat pertama)
-senarai_nilai pula boleh terdiri daripada pemboleh ubah,
pemalar,ungkapan atau gabungan semuanya.
“………”
Rentetan ini menentukan
output yang hendak dicetak pada paparan.
Simbol %
Ialah intiger
\n
dibaca sebagai backslash n. aksara istimewa ini
mewakili aksara yang dipanggil garis
baru. Aksara ini tidak dicetak. Tujuannya untuk meletakkan kursor di permulaan
baris yang baru. Boleh juga diletak di tengah ayat untuk membezakan garis.
Contohnya (“selamat datang\nDalam alam aturcara\n”);
selaian aksara \n aksara lain
yang boleh di isi seperti:
\a bermaksud loceng
\b aksara sebelum (backspace)
\f muka baru (form feed)
\r ke lajur pertama (carriage return)
\t tab
\v tab menegak (vertical tab)
\\ \
\’ ‘
\” “
055 aksara nilai perlapan
\xA9 aksara nilai perenam belasan 0xA9
\0 aksara nol
untuk mencetak nilai format output pula mempunyai spekasi
nilai seperti:
%s outputnya
rentetan aksara
contohnya: untuk cetak
pembolehubah nama yang dipaparkan radiah sahaja boleh ditulis
void main() {
char nama [] = “Radiah”
prinf(“%s”, “nama”)
outputnya:
Radiah
%c outputnya
aksara
contohnya: printf(%c %c %c”,
‘U’ , ’K’ , ’M’ );
outputnya
U K M
Atau
aksara1 = ‘U’;
aksara2 = ‘K’;
aksara 3 = ‘M’;
printf(“%c %c %c ,
aksara1,aksara2, aksara3);
outptnya
U K M
Untuk mewujudkan lebar medan
antara dua aksara atau lebih..
Contohnya:
Printf(“%c%3c%7c”,
‘U’ , ‘K’, ‘M’);
Outputnya
U--K------M MAKSUD tanda‘-‘ merupakan ruang kosong
yang telah dijumlahkan dalam a/c tadi.
%d
outputnya intiger
dan
%f untuk
mencetak nila intiger outputnya float/double
contohnya:
void main() {
int nom1;
float nom2;
nom1 = 5
nom2 = 33.77;
printf(“NILAI pertama = %d\n”,nom);
printf(“NILAI kedua = %f\n”, nom2);
}
outputnya
Nilai pertama = 5
Nilai kedua = 33.770000
Atau lebar medan menentukan
format nilai intiger
Contoh
Printf(“%5d”, 1234); Outputnya: -1234
Printf(“%6d”, 1234); Outputnye : --1234 iaitu
bertambah dua ruang kosong begitulah nombor seterusnya
*nombor 1 hingg 4 tetap mencetak satu ruang kosong
format
spesifikasi bagi nilai nyata terdiri dari dua bahagian iaitu lebar medan
minimum dan ruang bagi keperisian digit
perpuluhan iaitu dalam format:
%m.nf
m adalah
lebar medan minimum keseluruhan.
n ialah
nilai kepersisian iaitu bilangan ruang selepas titik perpuluhan.
contoh:
printf(“%6.1f”, 12.12345); outputnya: --12.1
printf(“%6.2f”, 12.12345); outputnya: -12.12
printf(“%6.3f”, 12.12345); outputnya: 12.123
atau
sekiranya digit berikut
adalah 5 atau lebih besar, digit kepersisian terakahir perlu ditambah satu
contoh:
jika input: 12.3456789
printf(“%6.3f\n”);
outputnya:
12.346. (oleh kerana digit
perpuluhan berikutnya – iaitu 7 lebih daripada enam maka digit yang
ke
tiga ditambah satu menjadi 6)
*sekiranya nilai n lebih
besar daripada bilangan digit perpuluhan nombor tersebut, maka digit 0 akan
ditambah di hujung nilai. Contohnya nilai 12.5 jika ditulis dalam spesifikasi
format %6.3f adalah 12.500.
*terdapat 6 ruang lebar medan
untuk aksara pada output, berubah mengikut a/c.
atau
kita juga boleh hanya
menyatakakan bilangan digit perpuluhan yang ingin dicetak. Lebar medan untuk
digunakan bergantung kepada bilangan digit perpuluhan yang hendak dicetak
contoh:
input: 12.3456789 à prinf(“%.1f”); à outputnya: 12.3
input 12.3456789 à prinf(“%.2f”); à outputnya: 12.35
Kesimpulan
1.
jika input : 12.345678
jenis
ouput:
(“%d
: %2d : %8d) à (%d)777 : (%2d) 777 : (%8d) ~~~~~777.
(“%f
: %6.1f : %.4 : %8.3f”) à (%f) 12.345678 : (%.6.1f)
~~12.3 : (%.4f) 12.3457 : (%8.3f) ~~12.346.
2. jika input: 555.55555.
jenis output:
(“%f : %6.1f : %.4f : %8.3f”) à (%f) 555.55556 : (%6.1f) ~555.6 : (%.4f)
555.5556 : (%8.3f) ~555.556.
gabungan spesifikasi output
contoh:
void main () {
int umur:
float tinggi:
umur = 21;
tinggi = 1.73;
printf(“Ali berumur %d tahun dan dengan ketinggian %f
cm\n”, umur, tinggi;
}
Char
Digunakan
untuk mewakilkan aksara seperti huruf, digit atau simbol khas seperti ‘?’,
nilai suatu aksara boleh dibaca, dicetak dan tukarkan kepada suatu nilai
intiger, perbandingan nilai aksara boleh dilakukan dengan menggunakan
prngoperasi sama dengan atau tidak sama dengan (= = atau !=), dan pengoperasi
hubungan <,<=, dan >=.
Tanda
‘….’
Tanda
kutip tunggal, untuk mengumpukkan suatu aksara kepada suatu pembolehubah,
contoh ‘A’ ‘Z’, ‘3’ ‘?’.
Underscore _
Pembolehubah/pencam
ini hanya untuk membezekan dua perkataan seperti nom_metrik, yang biasa
digunakan ailah membezakan antara huruf besar dan kecil seperti sukomSembilan.
Simbol
=
Diguna
untuk mengumpukkan nilai kepada pembolehubah, berfungsi sama seperti ¬
dimaksudkan menyelesaikan ungkpan di bahagian sebelah kanan dahulu dan kemudian
barulah mengumpukkan nilainya kepada pembolehubah di sebelah kiri. Simbole ini
tidak sama denagan simbol dalam matematik.
Simbol
= =
Untuk
perbandingan atau semakan
float
Nombor nyata, pembolehubah
ini digunakan pada nombor perpuluhan sahaja atau nombor nyata.
%e
outputnya float/double menggunakan tatatanda saintifik
Semikolon ;
Fungsi printf diakhiri dengan
semikolon kerana semua pengisytiharan dan penyataan dalam C mesti diakhiri
dengan semikolon.
Return 0;
Intiger bernilai 0
dipulangkan oleh fungsi main() kepada sistem pengoperasian.permulaan ini
bermaksud aturcara telah tamat dengan jayanya.
Scanf()
Fungsi
ini membenarkan kita berinteraksi dengan aturcara yang di tulis. Input adalah
daripada papan kekunci.nilai yang diinput dipadankan dengan pemboleh ubah
berdasarkan format yang diberikan.
Contoh:
Scanf(format_input [, senarai
pemboleh ubah]0);
Format input merupakan rentetan aksara yang menentukan bentuk rentetan input.
Rentetan ini hampir sama dengan printf.
Senarai_pembolehubah merupakan alamat loksi ingatan bagi pemboleh ubat
yang dipadankan denagan nilai yang diinput.
%s bemaksut
bagi input rentetan aksara
%c
bagi input aksara
%d
bagi input integer
%f
bagi input float
%lf
bagi input doble
%Lf
bagi input long doble
untuk
input pemboleh ubah asas (intiger, nyata dan aksara) kita perlu menyenaraikan
alamat lokasi ingatan bagi pemboleh ubah tersebut.
& menandakan
alamat lokasi dinyatakan dengan menggunakan pengeroperasi terhadap nama
pemboleh ubah tersebut seperti
scanf (“%c%d”, &aks,
&nom);
akan membaca dua input.
Andaikan aks dan nom adalah masing pemboleh ubah berjenis char dan int. input
pertama untuk disimpan dalam ingatan berjenis pembolehubah char manakala input
kedua bejenis nom pula disimpan dalam ingatan berjenis pembolehubah int
contoh
void main() {
int hari, bulan, tahun;
scanf(“%d %d %d”, &hari, &bulan, &tahun);
printf(“Hari: %d, Bulan: %d, Tahun: %d”, hari, bulan,
thun);
}
outputnya, sekiranya terdapat
ruang kita menginput untuk hari,
bulan dan tahun. Cntohnya
31 8 1999 selepas menekan
kunci <anter>
outputnya setiap nilai input
terdapat ruang kosong telah diumpukkan seperti
hari: 31, bulan: 8, tahun
:1999
aritamatik
+ tambah
- tolak
* darab
/ bahagi, terbahagi kepada pembahagian intiger dan
pembahagian nyata
% modulo,
operasi ini menghasilkan nilai baki daripada pembahagian intiger. Operasi ini
hanya dilakukan terhadap operan inigesahaja seperti., 5 % 3 = 2, 7 % 2 = 1, 12 % 2 = 0
Paras keutamaan
tinggi *,/,%
rendah +,-
-ungkapan aritmatik dinilai
mengikut paras keutamaan. Pengoperasi paras keutaaan paling tinggi akan dinilai
dahulu.
-sekiranya paras keutamaan
adalah sama, maka ungkapan tersebut dinilai daripada kiri ke kanan.
-sekiranya tidak mahu dinilai
mengikut paras keutamaan kita perlu membuat kurungan. Unkapan dalam kurungan
dinilai terlebih dahaulu.kurungan tersarang(kurungan dalam kurungan dikira
terlebih dahulu.
-dalam menilis ungkapan
algebra penting menggunakan kurungan untuk mmbezakan ungkapan aritmatik biasa
dan C, seperti;
15+5+7 ungkapan C (15
+ 5 +7) / 2
2
Contoh soalan:
Untuk setiap ungkapan algebra
berikut, tuliskan ungkapan aritmatik C yang setara dengannya. Kemudian
tunjukkan bagaimmana andda memperolehi nilai bagi ungkapanaritmatik C tersebut
jika benilai
a) b-a * c+b
à b-a*-c+b
=2- 5 * -5+2
= 2+(-5*-5)+2
=2+2.5+2
=27 +2
= 29.
b)
a+a
– b +c
b c
à a+(a/b)
– (b/c)+c
=5+(5/2)-(2/-5)+(-5)
=5+2 – (2/-5) +(-5)
=5+2+0-5
=2
c)
b-c +a
c+a b
à (b-c/c+a)+(a/b)
=((2-(-5) / (-5+5))+(5/2)
=(2+5/-5+5)+(5/2)
=(7/0)+(5/2)
=0+2
=2
Kita boleh melakukan beberapa
proses umpukan dalam satu pernyataan seperti:
a = b =(c = 40) /*umpukkan nilai 40 kepada pembolehubah c */
a = (b = (c =40)) /* ungkapan
c = 40 menghasilkan nilai 40. Nilai ini akan diumpuk kepad b iaitu bernilai 40
*/
(a = (b = (c = 40)) /* disini
nilai diumpuk puila kepada a */
Iaitu nilai asal pembolehubah
ditambah atau didarab dengan satu nilai lain dan kemudian diumpukkan kembali
kepada nilai asal, seperti,
bil = bil + 5
dalam C pernyataan
pengoperasi majmuk ditilis seperti ini
Pengoperasi Contoh Makna
+= bil
+= 5; bil = bil + 5;
-= bil
-= 5; bil = bil – 5;
*= bil
*= 5; bil = bil * 5;
/= bil
/= 5; bil = bil / 5;
%= bil
%= 5; bil = bil % 5;
Paras keutamaan operasi
majmuk adalah paling rendah. Ini
bermakna pengoperasi ini akan dinilai paling akhir sekali semasamenyelesaikan
suatu ungkapan seperti
Gaji += jamKerja * kadar * 2:
Pernyataan di atas dapat
diselesaikan seperti:
ó gaji = gaji + (jamKerja * kadar *2)
Digunakan untuk perbandingan
data, tugasnya untuk membandingkan nilai dua ungkapan seperti <, <=,
>, >=, ==, !=.
Operasi ini hanya dapat
menguji satu hubungan pada satu masa ketika
Operasi ini untuk menguji
beberapa kes yang berkaitan untuk menentukan keputusan simbol operasi ini
seperti:
&& dan
|| atau
! tak
&&, || mesti
mempunyai dua operan manakala ! hanya satu operan shj.
Rujuk m/s 116
++ tokok operan sebanyak 1
-- susut operan sebanyak 1
pengoperasi ini memerlukan
satu operan sahaj iaitu suatu pembolehubah intiger, makna bagi ungkapan tokok
dan susut seperti berikut
Ungkapan Makna Pernyataan
i++ i = i
+ 1 i += 1; maksud ungkapan
tersebut ialah nilai i ditokok selepas
digunakan dalam ungkapan.
++i i = i
+ 1 i += 1; maksud ungkapan
tersebut ialah nilai I ditokok sebelum digunakan dalam ungkapan.
i-- i =
i – 1 i -= 1; maksud
ungkapan tersebut ialah nilai I disusut selepas digunakan dalam ungkapan
--i i =
i – 1 i -= 1; maksud
ungkapan tersebut ialah nilai I disusut sebelum digunakan dalam ungkapan
-
kedudukan
pengoperasi terseut tidak memberi kesan, iaitu sama ada di hadapan (prefix)
atau di belakang (postfix) pemboleh ubah tersebu.
Contoh postfix
i = 5
j = i++ - 2
Nilai asal 5 ditolakdengan 2;
menjadikan j = 3. Kemudian barulah nilai i ditokok menjadi 6 atau sama juaga
dengan contoh ini
i = 5;
j = i – 2;
i++;
Contoh prefix
i= 5;
j = ++i – 2;
Nilai asal 5 ditokok terlebih
dahulu menjadi 6, kemidian ditolak dengan 2; menjadikan j bernilai 4. Kaedah
kedua
i = 5;
i++;
j = i –2;
Kaedah menjawab soalan
nombor 11 muka surat 124 |
||||||||
i |
X |
Y |
j=j+(i++-i) =j+(i-i) nilai i++ |
Z=x*PI+y |
j=i |
4.2f |
.4f |
8.3f |
5 |
2.5 |
27.3678 |
j=5+(5-5) j= 5 nilai i++ j= 6 |
Z=(25*3.14159)+27.3678 Z=7.8539751+27.3678 Z=35.221275 |
j=6 |
35.22 |
35.2218 |
--35.222 |
-1 |
1.2 |
-0.9987 |
J=5+(-1+1) J=5 Nilai I++ J=0 Atau 5+(-1--1) = 5+0=5 I++=-1+1 J= 0 Atau J=j+(I++-i) =5+(-1-5) =5-6=-1 |
Z=(1.2*3.14159)+(-09987) Z=3.769908+-09987 Z=2.771208 |
j=0 |
2.77 |
2.7712 |
---2.771 |
|
|
|
|
|
|
|
|
Pengoperasi Acu
Iaitu menggabungkan pembolehubah daripada jenis yang
berbeza. Satu operasi terhadap dua intiger hasilnya intiger begitu operan
nyata. Tetapi jika suatu operasi dilakukan terhadap satu operan intiger dan
satu operan nyata, maka hasilnya adalah nilai nyata seperti;
8 / 5 + 1.5 – 12.5
ó 1 + 10 * 1.5 –12.5 /*8/5 adalah pembahagi intiger*/
ó 1+ 15.0 – 12.5 /*10*1.5
menghasilkan nilai nyata */
ó 1 + 2.5 /* 15.0-12.5 menghasilkan nilai
nyata */
ó 3.5 /* 1+2.5 nilai nyata */
contoh
int jumlah, bilangan ;
float purata;
…….
Purata = jumlah / bilangan;
Jadikan purata dikekalkan
bernilai nyata iaitu dengan menukar purata
= ((float) jumlah) / ((float) bilangan);….untuk mengelakkan komputer
melakukan pembundaran.
Penjelasan m/s 120
STRUKTUR PENYATA KAWALAN
Penyataaan if
Digunakan untuk mewakili
struktur pilihan. Struktur pilihan membolehkan dan melaksanakan hanya satu daripada
beberapa pilihan berdasarkan kepada syarat tertentu
Contoh
if (ungkapan)
Penyata;
Penyataan akan dilaksanakan hanya jika
nilai unglakapan bukan sifar (benar).
Penyataan boleh juga terdiri daripada
satu penyataan. Ini dikenalisebagai pernyataan
majmuk. Pernyataaan majmuk mesti diapit oleh tanda { dan }.
Contoh
if (k < j) {
Min = k; /*dilaksanakan jika k < j */
Printf(“k
lebih kecil dari j\n”) /* dilaksanakan jika k < j
palsu */
}
Ungkapan boleh terdiri daripada ungkapan
hubungan atau ungkapan logik yang mempunyai nilai benar atau palsu.
Bentuk 2 (if-else) iaitu bentuk dwi pemilihan
Contoh
if (ungkapan)
Pernyataan-1;
else
Pernyataan-2
Jika
nilai ungkapan adalah bukan sifar
(benar) maka pernyataan-1 akan dilaksanakan. Sebaliknya jika nilai ungkapan
adalah sifar (palsu) maka pernyataan
2 pula dilaksanakan. Pernyataan satu dan pernyataan 2 juga boleh teridri
daripada penyataan majmuk (yang diapait oleh tanda { dan }. Conth M/S 130.
Bentuk 3 (if-else-if)
Bentuk
ketiga pernyataaan if-else-if adalah setara dengan struktur multi-pilihan.
Contohnya,
if ( ungkapan 1)
Pernyataan 1;
else if
(ungkapan 2)
Pernyataan 2;
else
Pernyataan
3;
Pernyataan
1 akan dilaksanakan jika nilai ungkapa 1 adalah bukan sifar (benar). Pernyataan
2 pula akan dilaksanakan jika nilai ungkapan 1 adalah sifar (palsu) dan nilai
ungkapan 2 adalah bukan sifar (benar),
pernyataan 3 pula akan dilaksanakan jika ungkapan 1 dan ungkapan 2 bernilai sifar (palsu).
Dengan
kata lain jika unkapan 1 merupakan pertama kali bernilai bukan sifar(benar)
setelah pernyataan satu dilaksanakan, kesemua ujian lain diabaikan jika tidak
ungkapan 2 dilaksana ..begitulah seterusnya. Contoh M/S 132
Pernyataan if-else dua paras/Multi Paras.
Kadagkala untuk menentukan pilihan memerlukan
pernyataan if-else dua paras.
Contoh untuk mencari nilai maksimum dianatara tiga
nilai a, b, c.
if (a>b) {
if (a>b)
maks =
a; Blok
A
else paras2
maks =
c;
}
else {
if
(b>c)
maks =b; Blok B
else paras2
maks =
c;
}
Aturcara
di atas terdiri dari satu pernyataan if-else (paras1) yang mana pernyataan satu
(blokA) dan pernyataan 2 (blok B) adalah juga pernyataan if-else. Apabila ujian
paras 1 adalah benar maka pernyataan if-else pada blok a akan dilaksanakan .
sekiranya palsu, maka blok B pula dilaksanakan.
Masalah else terjuntai (dangling else problem)
Kena lebih berhati-hati apabila menulis pernyataan
if-else dua paras ataupun multi paras, kebiasaannya kita menggunakan { dan }
untuk menunjukkan blok bagi pernyataan tersebut.
Selain itu gaya penulisan juga penting, lazimnya kita
tulis paras kedua pernyataan dengan langkau 3 ruang dan seterusnya paras ke
tiga dengn langkau 6 ruangdaripada lajur pertama.
Pernyataan switch dan break.
Digunakan untuk memilih satu sahaja daripada beberapa
pilihan. Pernyataan ini sangat berguna apabila pilihan adalah berdasarkan nilai
bagi satu pembolehh ubah atau ungkapan mudah. Nilai ungkapan ini boleh daripada
jenis int dan char, tetapi tidak daripada jenis float. Contoh,
Switch (ungkapan) {
case ungkapan-1;
Pernyataan-1;
break;
case ungkapan-2;
Penyataan-2;
break;
:
case ungkapan-m;
pernyataan-m;
break-m;
default; /*boleh diabaikan*/
pernyatan-n;
break;
}
Pernyataan switch akan dinilai dan cuba dipadankan
dengan satu daripada ungkapan-1 hingga ungkapan-m pada case. Jika dapat
dipadankan , pernyataan untuk case berkenaan akan dilaksanakan dan diikuti
pernyataan break.
Pernyataan break ini akan membawa keluar pernyataan
swith tanpa melaksanakan penyataan pernyataan case berikutnya. Jika ungkapan
tidak dapat dipadankan, dan wujud pernyataan difault maka pernyataan-n
dilaksanakan. Jika tidak wujud pernyataan difault kawalan akan keluar daripada
pernyatan switch.
Contoh,
void main() {
int nombor;
sacanf (“%d”, &nombor);
switch (nombor) {
case 1;
printf(“satu\n”);
case 2;
printf(“dua\n”);
default;
printf(“lain-lain\n”);
}
}
contoh lain di muka surat 138
Pernyataan
for
For membolehkan kita
mengulangi bahagian aturcara tertentu sehingga bilangan ulangan yang ditentukan
(bilagan ditentukan)
Bentuk umum pernyataan for
adalah seperti berikut:
For (awalan:ujian: pengemaskinian)
Pernyataan;
Contoh:
For (bil = 1; bil <= 8; bil++)
Printf(“%d\t”,bil)
Cara menjawab:
Bil=1 bil<=8 cetak
bil bil++
1<=8 1 2
2<=8 2 3
3<=8 3 4
4<=8 4 5
5<=8 5 6
6<=8 6 7
7<=8 7 8
8<=8 8 9 (selepas ini nilai adalah palsu)
penegenaskinian tidak semestinya ungkapan tokok/susut. Seperti:
for (digit = 0; digit <=20; digit +=2)
printf(“%d\t”, digit);
outputnya nanti ialah 2, 4,
6, …..20.
pernyataan dalam
gelung for boleh merupakan sebarang
pernyataan (seperti pernyataan if, switch
dan sebagainya) dan bolehjuga merupakan pernyataan majmuk yang diapit oleh {
dan }
gaya penulisan seperti pernyataan majmuk ditulis 3 langkau ruang dan tanda } ditilis selari dengan pernyataan for.
medan dalam pernyataan for (iaitu ungkapan awalan, ujian dan prngemadkinian) boleh
diabaikan dari pernyataan for tersebut contohnya for (digit = 0; digit <=9; digit++ jika diabaikan menjadi for
( ;
digit < 9; ) {
apabila kita mengabaikan
medan tertentu, tanda ; yang memisahkan ketiga-tga medan tersebut perlu kekal,
cara ini tidak digalakkan keran pernyataan for memberi ringkasan mengenai
ungkapan awalan, pengemaskinian dan ujian
penamat dalam satu baris.
Akibat pengabaian semua medan
dalam pernyataan for akan menghasilkan gelung yang tidak terhingga dan hanya
akan berhenti sehingga komputer ditutup. Seperti for ( ; ;
) {
Pernyataan
while
Ia adalah gelung berkawal
syarat. Pernyataaan while dapat menghasilakan gelung yang lebih umum berbanding
dengan for ia bergelung sehingga syarat tertentu tercapai
Pernyataan while
tidak perlukan maklumat bilangan gelungan tersebut berlaku tetapi hanya
meletakkan syarat untuk terus bergelung conto sitaks while:
While (ungkapan)
Pernyataaan;
Ungkapan biasanya merupakan ungkapan hubungan atau ungkapan logik atau ungkapan
hubungan majmuk. Ia merupakan mengawal
gelung. Ia menghasilkan nilai benar
(bukan sifar) atau palsu (sifar).
Contohnya :
Jumlah = i = 0;
Printf(“Masukkan nombor yang lebih besar daripada 0 “);
Sacanf(“%d”, &n);
While(i !=n ) { /*semak syarat pengawal gelung*/
Jumlah += i;
i++; /*mengemaskini
pengawal gelung */
}
cara menjawabnya ialah.:
nilai n. while(i !=n) jumlah=jumlah+=i i++
7 0!=7 jumlah=0+0=0 1
1!=7 jumlah=0+1=1 2
2!=7 jumlah=1+2=3 3
3!=7 jumlah=3+3=6 4
4!=7 jumlah=6+4=10 5
5!=7 jumlah=10+5=15 6
6!=7 jumlah=15+6=21 7
7!=7 tamat
Pernyataaan while dapat juga ditulis dalam bentuk
pernyataan for, biasanya pernyataan while adalah setara dengan pembilang gelung
dalam pernyataan for.
Contoh pernyataan for
For(awalan; ujian;
pengemaskinian)
Pernyataan;
Contoh gelung while pula
ialah
awalan;
while(ujian) {
pernyataan;
pengemaskinian;
}
contoh sebenar while
digit = 0;
while (digit < 9) {
jumlah +=i;
digit++
}
jika ditukar dalam bentuk pernyataan for :
for (digit = 0; digit <9;
digit++) {
jumlah += i;
}
untuk lebih jelas rujuk m/s
157
Contoh penggunaan pernyataan
while.aturcara ini menginput data bil,. Kemudia aturcara akan membaca input sebanyak
bil dan mengira bilangan nombor genap dan ganjil, seterusnya rumusan akan
dicetak.
#include <stdio.h>
void main() {
int bil, i, genap, ganjil, nilai;
i = genap = ganjil = 0;
Printf(“masukkan bilangan data”)
Scanf(“%d”,, &bil);
while (i >
bil ) {
printf(“masukkan nombor positif “);
Scanf(“%d”, &nilai)’;
if (nilai % 2 ==0)
genap++
else
ganjil++
i++
}
printf(bilangan nilai
genap\t%d\n”, genap);
printf(“bilangan nilai
ganjil|t%d\n”, ganjil);
}
caramenjawab
bil i<bil nilai
% 2=0 kira genap kira ganjil i++ kira
ganjil kira genap
10 0<10 8 %2=0 1 - 1 5 5
1<10 4 %2=0 2 - 2
2<10 3 %2=0 1 3
3<10 2 %2=0 3 4
4<10 1 2 5
5<10 5 %2=0 3 6
6<10 6 %2=0 4 4 7
7<10 9 %2=0 5 8
8<10 10 %2=0 5 9
9<10 7 %2=0 (tamat)
Semua contoh di atas pernyataan while bergelung
sehingga syarat tertentu dicapai. Kesemua syarat ini berdasarkan kepada nilai
pengawal gelung. Nilai pengawal gelung ini dikemaskini dalam badan gelung.
Selain daripada gelung sebegini, pernyataan while
juga dapat mewakili gelung berkawal
sentinel. Gelung berkawalkan sentinel memerlukan satu nilai sentinel yang
merupakan syarat bagi memberhentikan gelung. Contohnya
Genap = ganjil = 0
Printf(“masukkan nombor
positif (negatif untuk tamat)”);
Scanf(“%d”, &nilai);
While (nilai >= 0) { /*
GELUNG SEHINGGA DATA SENTINEL */
if (nilai % 2 == 0)
Genap++;
else
Ganjil++;
Printf(“masukkan nombor
positif (negatif untuk tamat)”);
……
Perntaaan
do-while m/s 161
Gelung berkawal syarat dan
sentinel juga boleh di tulis menggunakan do-while. Tetapi syarat untuk tamat
gelung diuji di akhir gelung. Ini
bermakna gelung ini akan dilaksanakan sekurang-kurangnya sekali sebelum syarat
ujian di nilai. Contohnya
Do
Pernyataan
While ( ungkapan );
Contoh :
Printf(“Maukkan nombor yang
lebih besar daripada 0”);
Scanf(“%d”. &n);
Jumlah = 1 = 0;
Do{
Jumlah += i; /*jumlah = 0 + 1 +…..+ n-1 */
i ++;
} while ( i !=n); /*
langkah pengujian di akhir gelung /*
cara menjawab:
N jumlah I++ selagi (I !=n)
0+0=0 1 I !=5
0+1=1 2 I !=5
1+2=3 3 I !=5
3+3=6 4 I !=5
6+4=10 5 I !=5
Pernyataan
Continue
Bukan satu pernyataan gelung
tetapi merupakan pernyataan kawalan yang membolehkan kita menyambung terus
gelungan berikutnya tanpa melaksanakan pernyataan seterusnya dalam badan
gelung, ia juga boleh dugunakan dalam semua pernyataan geluang iaitu while,
do-while dan for, sinteksnya ialah
Continue;
Seperti
For (i = 0; i <= 9; i++ {
if (i % 2)
continue;
else
Printf(“%d adalah nombor genap\n”, I);
Printf(“Cetak hanya bila genap ! \n”);
}
output bagi atur cara ini
ialah
0 adalah nombor genap
cetak hanya bila genap !
2 adalah nombor genap
cetak hanya bila genap
……..sehingga nombor 8.
Contoh aturcara berikut
menunjukkan penggunaa pernyataan continue. Aturcara ini meminta input bilangan
data dan bergelung untuk menerima input data tersebut untuk mencari nilai
jumlah. Diakhir gelung, aturcara akan mengira
purata bagi nilai data yang diimput. Sfar dan negatif tidak diambil.
Void main ()
int n, bil, jumlah, i, data”);
Scanf(%d”, &n);
Bil = jumlah = 0;
for (i = 0; i < n;
i++) {
Printf(“data: “)
if (data <= 0)
continue; /* jika data sifar atau negatif
input lagi */
Jumlah += data;
Bil++;
}
purata = (float) jumlah /
bil;
printf(“\nBilangan data lebih
daripada 0;: %d\n”, bil);
printf(“jumlah: %d\n”,
jumlah);
printf(“purata : %2f\n”,
purata);
}
contah cara menjawab
jika nilai n=7
dan data yang dinput ialah
20, 15, -5, 7, 11, 0, 1
n i=0 i<7 input data data<=0 jumlah+=data b++ I++ bil jumlah purata
7 0<7 20 20<=0 0+20=20 1 1
1<7 15 15<=0 20+15=35 2 2
2<7 -5 -5<=0 3
3<7 7 7<=0 35+7=42 3 4
4<7 11 11<=0 42+11=53 4 5
5<7 0 0<=0 6
6<7 1 1<=0 53+1=54 5 7
5 7 10.8
output bilangan data lebih
daripada angka 0:5
jumlah 54
jumlah / bil = purata 10.8000
Pernyataan
break dalam gelung
Pernyataan ini boleh
digunakan dalam gelung while, do-while atau faktor
Pernyataan brek disini menetukan
bagaimana ia digunakan untuk keluar daripada gelung pada keadaan tertentu.
Contoh
Printf(“Masukkan nombor 1
hingga 10: “)
Scanf(“%d”, &nilai); /*nilai ditentukan oleh kita*/
For (i = 1; i <= 10; I++)
{
if (i == nilai)
Break;
Printf(“%d”, i);
}
printf(“\nKeluar daripada
gelung apabila nilai %d”, I);
contoh masukkan nilai 6,
apbila gelung tiba ke nilai 6 gelung akan berhenti iaitu pernyataan brek telah
dilaksanakan.
Pernyataan diatas adlah ubahsuai dari data yang
berbentuk sentinel negatif yang memerlukan dua kali pernyataan scanf dalam
ungkapan while.
Contoh pengubahsuaian yang
dilakukan menggunakan gelung tidak terhingga.
Genap = ganjil = 0
While (1) { /* 1 sentiasa benar è gelung tidak terhingga*/
Printf(“Maukkan nombor
positif (negatif untuk tamat)”);
Scanf(“%d”, &nilai);
if (nilai >= 0) /*UJI
DATA SENTINEL DISINI*/
Break /*GELUNG TAMAT*/
if (nilai % 2 == 0)
Genap++;
else
Ganjil++;
Printf(“Bilangan nilai
genap\t%d\n”, genap);
Printf(“Bilangan nilai
ganjil\t%d\n”, ganjil);
Jika berlaku penyarangan
gelung, brealk akan keluar daripada gelung yang paling dalam.
Gelung tersarang
Berlaku apabila satu daripada
pernyataaqn dalam gelung adalah pernyataan gelung. Apabila berlaku penyarangan
elung paling dalam sekali akan diaksanakan sehingga berulang kpepada tamt dan
kembali ke gelung luar semula.
Contoh penyarangan gelung
for.
For (i = 0; i < 2; i++)
{ /* paras satu */
For (j=0; j < 5; j++)
{ /* paras 2 */
Printf(“d, %d\t”, i, j);
} /* tamat paras 2*/
printf(“\n”);
} /*tamat paras 1
penjelasan/huraian m/s 169
i j printf(“..”,
i, j) printf(“\n);
0 0 0,
0\t
1
0,
1\t
2
0,
2\t
3
0,
3\t
4
0,
4\t \n
1 0 1,
0\t
1
1,
1\t
2
1,
2\t
3
1,
3\t
4
1,
4\t \n
Untuk lebih lanjut rujuk m/s
170, 171, 172.
Contoh aturcara mengira gaji.
#include <studioh>
main() {
float jam_kerja, kadar_sejam,
gaji_kasar, gaji_bersih;
float gaji_kenaCukai, cukai,
Jum_maksima, kadar_lebihMasa;
gaji_kasar = gaji_bersih=0;
gaji_kenaCukai = 500.00;
cukai = 50.00;
jum_maksima = 40.0;
kadar_lebihMasa =2.0;
printf (“\n Masukkan jumlah
kerja darab kadar sejam”);
scanf (“%f %f”,
&jam_kerja, &kadar_sejam);
if (jam_kerja <=jam_maksima)
gaji_kasar=jam_kerja * kadar_sejam;
else
gaji_kasar= (jam_maksima * kadar_sejam + ((jam_kerja-jam_maksima) *
kadar_lebihmasa * kadar_sejam
if (gaji_kasar > gaji_kenaCukai)
gaji_bersih = gaji_kasar-cukai;
else
gaji_bersih = gaji_kasar;
printf (“\n gaji_kasar =
%.2f”, gaji_kasar);
printf (“\n gaji_bersih =
%.2f”, gaji_bersih;
}
Soalan 5 m/s 175.
i=1 |
i<=5 |
C. Luar\n |
C,i |
J=i |
J<=i |
C. \tDalam\t |
C. j |
k=1 |
k<=j |
C. k |
k++ |
\n |
J++ |
I++ |
|
1<=5 |
Luar |
1 |
1 |
1<=1 |
dalam |
1 |
1 |
1<=1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=1 |
X |
- |
\n |
2 |
|
|
|
|
|
|
2<=1 |
X |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
||||||||
|
2<=5 |
Luar |
2 |
1 |
1<=2 |
dalam |
1 |
1 |
1<=1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=1 |
X |
- |
\n |
2 |
|
|
|
|
|
2 |
2<=2 |
dalam |
1 |
1 |
1<=2 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=2 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=2 |
X |
- |
\n |
3 |
|
|
|
|
|
3 |
3<=2 |
x |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
||||||||
|
3<=5 |
Luar |
3 |
1 |
1<=3 |
dalam |
1 |
1 |
1<=1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=1 |
X |
|
\n |
2 |
|
|
|
|
|
2 |
2<=3 |
dalam |
2 |
1 |
1<=2 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=2 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=2 |
X |
- |
- |
3 |
|
|
|
|
|
3 |
3<=3 |
dalam |
3 |
1 |
1<=3 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=3 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=3 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=3 |
X |
- |
- |
4 |
|
|
|
|
|
4 |
4<=3 |
x |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
||||||||
|
4<=5 |
Luar |
4 |
1 |
1<=4 |
dalam |
1 |
1 |
1<=1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=1 |
X |
- |
\n |
2 |
|
|
|
|
|
2 |
2<=4 |
dalam |
2 |
1 |
1<=2 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=2 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=2 |
X |
- |
\n |
3 |
|
|
|
|
|
3 |
3<=4 |
dalam |
3 |
1 |
1<=3 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=3 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=3 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=3 |
X |
- |
\n |
4 |
|
|
|
|
|
4 |
4<=4 |
dalam |
4 |
1 |
1<=4 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=4 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=4 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=4 |
4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
5<=4 |
X |
- |
\n |
5 |
|
|
|
|
|
5 |
5<=4 |
x |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
||||||||
|
5<=5 |
luar |
5 |
1 |
1<=5 |
dalam |
1 |
1 |
1<=1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=1 |
X |
- |
\n |
2 |
|
|
|
|
|
2 |
2<=5 |
dalam |
2 |
1 |
1<=2 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=2 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=2 |
X |
- |
\n |
3 |
|
|
|
|
|
3 |
3<=5 |
dalam |
3 |
1 |
1<=3 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=3 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=3 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=3 |
x |
- |
\n |
4 |
|
|
|
|
|
4 |
4<=5 |
dalam |
4 |
1 |
1<=4 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=4 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=4 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=4 |
4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
5<=4 |
x |
- |
\n |
5 |
|
|
|
|
|
5 |
5<=5 |
dalam |
5 |
1 |
1<=5 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
2<=5 |
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
3<=5 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
4<=5 |
4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
5<=5 |
5 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
6<=5 |
x |
- |
\n |
6 |
|
|
|
|
|
6 |
6<=5 |
x |
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
||||||||
|
6<=5 |
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Output yang terhasil daripada
Soalan 5 m/s 175.
luar 1
dalam 1 1
luar 2
dalam 1 1
dalam 2 12
luar 3
dalam 1 1
dalam 2 12
dalam 3 123
luar 4
dalam 1 1
dalam 2
12
dalam 3 123
dalam 4 1234
luar 5
dalam 1 1
dalam 2 12
dalam 3 123
dalam 4 1234
dalam 5 12345
Jawapan soalan nom. 14 m/s
177.
N=5 |
I=0 |
I<N |
J=0 |
J<I |
C.J\t |
J++ |
\n |
I++ |
I=0 |
I<N |
J=0 |
J<N-I |
C.J\t |
J++ |
\n |
I++ |
|
0 |
0<5 |
0 |
0<0 |
X |
|
|
1 |
0 |
0<5 |
0 |
0<5-0 |
0 |
1 |
|
|
|
1 |
1<5 |
0 |
0<1 |
0 |
1 |
|
|
0 |
|
1 |
1<5 |
1 |
2 |
|
|
|
|
|
2 |
1<1 |
X |
|
\n |
2 |
0 |
|
2 |
2<5 |
2 |
3 |
|
|
|
2 |
2<5 |
0 |
0<2 |
0 |
1 |
|
|
0 |
|
3 |
3<5 |
3 |
4 |
|
|
|
|
|
1 |
1<2 |
1 |
2 |
|
|
0 |
|
4 |
4<5 |
4 |
5 |
|
|
|
|
|
2 |
2<2 |
X |
|
\n |
3 |
0 |
|
5 |
5<5 |
X |
|
\n |
1 |
|
3 |
3<5 |
0 |
0<3 |
0 |
1 |
|
|
1 |
1<5 |
0 |
0<5-1 |
0 |
1 |
|
|
|
|
|
1 |
1<3 |
1 |
2 |
|
|
1 |
|
1 |
1<4 |
1 |
2 |
|
|
|
|
|
2 |
2<3 |
2 |
3 |
|
|
1 |
|
2 |
2<4 |
2 |
3 |
|
|
|
|
|
3 |
3<3 |
X |
|
\n |
4 |
1 |
|
3 |
3<4 |
3 |
4 |
|
|
|
4 |
4<5 |
0 |
0<4 |
0 |
1 |
|
|
1 |
|
4 |
4<4 |
X |
|
\n |
2 |
|
|
|
1 |
1<4 |
1 |
2 |
|
|
2 |
2<5 |
0 |
0<4-1 |
0 |
1 |
|
|
|
|
|
2 |
2<4 |
2 |
3 |
|
|
2 |
|
1 |
1<3 |
1 |
2 |
|
|
|
|
|
3 |
3<4 |
3 |
4 |
|
|
2 |
|
2 |
2<3 |
2 |
3 |
|
|
|
|
|
4 |
4<4 |
X |
|
\n |
5 |
2 |
|
3 |
3<3 |
X |
|
\n |
3 |
|
5 |
5<5 |
x |
X |
X |
x |
X |
x |
3 |
3<5 |
0 |
0<3-1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
3 |
|
1 |
1>2 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
3 |
|
2 |
2<2 |
x |
|
\n |
4 |
|
|
|
|
|
|
|
|
|
4 |
4<5 |
0 |
0<2-1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
4 |
|
1 |
1<1 |
x |
|
\n |
5 |
|
|
|
|
|
|
|
|
|
|
5<5 |
X |
x |
x |
x |
x |
X |
Output yang terhasil.
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
0 1 2 3
0
1 2
0 1
0
FUNGSI
Fungsi ialah gabungan
pernyataan yang dibentuk untuk melaksanakan suatu tugas.
Contoh fungsi muadah;
Y=sqrt(x);
Sqrt(x) à adalah panggilan fungsi
Sqrt à nama fungsi
X à argumen
*perlu diingat takrifan
fungsi dia atas perlu bersesuaian denan pustaka piawai iaiatu #include
<math.h> . sebelum ini kita telah banyak menggunakan pustaka piawai
seperti #include <stdio.h> untuk fungsi main() bagi mengawal protype
fungsi printf, scanf dll.
Rekabentuk atas bawah.
Bermula dari masalah asal
pada paras paling atas dan beranjak ke sabmasalah pada setiap paras paling
rendah. Proses ini hampir sama dengan alkhawarizmi
Mekanisma kerja fungsi.
Satu cara untuk mengimplement
reka bentuk atas bawah ialah mentakrifkan funsi milik mereka sendiri.
Contoh mudah mereka fungsi .
#include <stdio.h> à arahan pemproses bagi pustaka piawai.
Lukis_bulatan()
Lukis_garissilang()
Lukis_garis dasar()
Lukis_segitiga()
·
fungsi
di atas adalah satu prototype atau pengistiharan fungsi-funsi yang dibuat
sebelum fungsi main()
Prototype
fungsi
Disitiharkan
sebelum fungsi main.
Jenisdata nama fungsi(senarai
takrifan parameter sebenar);
Prototype
fungis memberitahu pengkompil C maklumat mengenai parameter iatu bilangan dan
jenis data bagi parameter yang akan dihantar kepada kepada fungsi dan memberi
tahu jenis nilai yang akan dipulangkan oleh fungsi tersebut.
Jenisdata à sesuatu
fungsi ditentukan oleh nilai yang dipulangkan oleh fungsi trsbt.
1.
void tidak memulangkan sebarang nilai.
2.
float
memulangkan nilai float
3.
int
memulangkan nilai integer
4.
Dll.
Senarai takrifan parameter
sebenar à senarai jenis bagi setiap
parameter yang dipisahkan oleh koma.
Contoh;
int lukisSegiempat(int lebar, int tinggi); /*
input integer output integer*/
*sebarang
nama pencam parameter boleh ditulis atau tidak kerana ia tidak akan memberi
kesan kepada prototype.
Panggilan
fungsi.
Sintaks am;
Nama fungsi(senarai_parameter_sebenar)
Senarai_parameter_sebenar ialah
parameter yang dihantar sebagai input kepada fungsi
Nama fungsi berfungsi untk melaksanakan fungsi, apabila nama funsi dipanggila.
Kawalan a/c akan berpindah kepada namafungsi().
Takrifan
fungsi
Merupakan
kod aturcara C yang menerangkan apa yang dilakukan oleh suatu fungsi
Sepert;
Jenis_data nama
fungsi(senarai takrifan parameter) {
Pengisytiharan pemboleh ubah setempat;
Pernyataan
}
·
sebelub
tanda { adalah kepala takrifan fungsi dan antara { dan } merupakan badan bagi
takrifan fungsi.
Jenis_data à ialah jenis yang dipulangkan oleh fungsi,
jika tidak kata kunci void digunakan.
Nama fungsi à mesti
mematuhi sarat seperti pencam/ pemboleh ubah yang dibenarkan
Senarai parameter à ialah pengisytiharan parameter yang
dipisahkan oleh koma, parameter-parameter ini dihantar sebagai input.
Fungsi
dengan parameter.
Jenis data Nama fungsi(parameter)
1.
parameter
sebenar (parameter pada panggilan fungsi)
2.
parameter
formal (parameter pada takrifan fungsi)
*biasanya parameter sebenar
dan formal mesti sepadan.
Contoh
fungsi dengan rameter;
1.
float kira_luas(int);
à fungsi kira_luas() akan
memulangkan (output) satu nilai berjenis float dan senarai parameter int
menerima (input) argumen/ parameter berjenis integer.
2.
Void padam_paparan(void);
à fungsi tidak mengoutput
sebarang parameter dan menginput sebarang
nilai
3.
float kira(int jam, int jum);
à fungsi mengoutput parameter
bernilai float dang menginput parameter berjenis integer.
Pernyataan
return
Fungsi
mengembalikan nilai dengan pernyataan return
Return;
atau
return ungkapan
return bila
dilaksanakan, kawalan a/c akan dikembalikan kepada persekitaran yg memanggil
dengan serta-merta
ungkapan boleh terdiri daripada pemalar, pembolehubah atau pun ungkapan lain
(iaitu arithmatik, mantik atau hubungan) seperti return (45*6+jumlah(x);
contoh;
return;
return 787;
return luas;
return ++a;
return (a+b+c);
Skop pembolehubah.
1.
pembolehubah
setempat (local)
à boleh diubah nilainya didalam fungsi yang
mengisytiharkanya. Tidak boleh diganggu oleh fungsi lain. Diisytiharkan selepas
tanda { suatu fungsi.
Contoh;
Int main(void0 {
Int I, j; à
pembolehubah setempat bagi fungsi main();
:
}
2.
pembolehubah
sejagat (global)
à dikenali oleh seluruh a/c termasuk fungsi,
boleh diubah oleh sebarang fungsi. Diisytiharkan sebelum takrifan fungsi
main().
Int I, j; à pembolehubah sejagat
Int main(void) {
:
}
I = 1 |
N = 4 |
I<=4 |
J=kira (I, I*I) |
Ctk I= J= |
I++ |
Jum = 0 |
K = i |
K<=j |
Jum += k |
K++ |
Return jum |
Kira int I, int j |
1 |
4 |
I<=4 |
1, 1x1=1 |
|
|
0 |
K= 1 |
1<=1 |
1 = 0+1 |
2 |
|
|
|
|
|
|
|
|
|
2=1 |
2<=1 |
x |
|
1 |
1 , 1 |
|
|
|
Jum à j = 1 |
i=1 j=1 |
2 |
|
|
|
|
|
|
|
|
|
2<=4 |
2,2x2=4 |
|
|
0 |
K=2 |
2<=4 |
2=0+2 |
3 |
|
|
|
|
|
|
|
|
|
|
3<=4 |
5=2+3 |
4 |
|
|
|
|
|
|
|
|
|
|
4<=4 |
9=5+4 |
5 |
|
|
|
|
|
|
|
|
|
|
5<=4 |
x |
|
9 |
2 , 9 |
|
|
|
Jum à j = 9 |
I = 2 j = 9 |
3 |
|
|
|
|
|
|
|
|
|
3<=4 |
3,3x3=9 |
|
|
0 |
K=3 |
3<=9 |
3=0+3 |
4 |
|
|
|
|
|
|
|
|
|
|
4<=9 |
7=3+4 |
5 |
|
|
|
|
|
|
|
|
|
|
5<=9 |
12=7+5 |
6 |
|
|
|
|
|
|
|
|
|
|
6<=9 |
18=12+6 |
7 |
|
|
|
|
|
|
|
|
|
|
7<=9 |
25=18+7 |
8 |
|
|
|
|
|
|
|
|
|
|
8<=9 |
33=25+8 |
9 |
|
|
|
|
|
|
|
|
|
|
9<=9 |
42=33+9 |
10 |
|
|
|
|
|
|
|
|
|
|
10<=9 |
X |
|
42 |
3 , 42 |
|
|
|
Jum à j = 42 |
I = 3 J = 42 |
4 |
|
|
|
|
|
|
|
|
|
4<=4 |
4,4x4=16 |
|
|
0 |
K=4 |
4<=16 |
4=0+4 |
5 |
|
|
|
|
|
|
|
|
|
|
5<=16 |
9= 4+5 |
6 |
|
|
|
|
|
|
|
|
|
|
6<=16 |
15=9+6 |
7 |
|
|
|
|
|
|
|
|
|
|
7<=16 |
22=15+7 |
8 |
|
|
|
|
|
|
|
|
|
|
8<=16 |
30=22+8 |
9 |
|
|
|
|
|
|
|
|
|
|
9<=16 |
39=30+9 |
10 |
|
|
|
|
|
|
|
|
|
|
10<=16 |
49=39+10 |
11 |
|
|
|
|
|
|
|
|
|
|
11<=16 |
60=49+11 |
12 |
|
|
|
|
|
|
|
|
|
|
12<=16 |
72=60+12 |
13 |
|
|
|
|
|
|
|
|
|
|
13<=16 |
85=72+13 |
14 |
|
|
|
|
|
|
|
|
|
|
14<=16 |
99=85+14 |
15 |
|
|
|
|
|
|
|
|
|
|
15<=16 |
114=99+15 |
16 |
|
|
|
|
|
|
|
|
|
|
16<=16 |
130=114+16 |
17 |
|
|
|
|
|
|
|
|
|
|
17<=15 |
x |
|
130 |
4 , 130 |
|
|
|
Jum à j = 130 |
I = 4 J = 130 |
5 |
|
|
|
|
|
|
|
|
|
5<=4 |
x |
|
|
|
|
|
|
|
|
|
i |
j |
Markah[i] |
Markah[j] |
Sementara |
1 |
2 |
12 |
70 |
|
1 |
2 |
70 |
12 |
70 |
1 |
2 |
12 |
70 |
70 |
1 |
3 |
12 |
40 |
70 |
1 |
4 |
12 |
60 |
70 |
1 |
5 |
12 |
23 |
70 |
1 |
6 |
12 |
100 |
70 |
1 |
7 |
12 |
32 |
70 |
1 |
8 |
12 |
16 |
70 |
1 |
9 |
12 |
9 |
70 |
1 |
9 |
12 |
9 |
12 |
1 |
9 |
9 |
12 |
12 |
2 |
9 |
70 |
40 |
60 |
23 |
100 |
32 |
16 |
12 |
i |
j |
Markah[I] |
Markah[j] |
Sementara |
2 |
3 |
70 |
40 |
|
2 |
3 |
70 |
40 |
70 |
2 |
3 |
40 |
70 |
70 |
2 |
4 |
40 |
60 |
70 |
2 |
5 |
40 |
23 |
70 |
2 |
5 |
40 |
23 |
40 |
2 |
5 |
23 |
40 |
40 |
2 |
6 |
23 |
100 |
40 |
2 |
7 |
23 |
32 |
40 |
2 |
8 |
23 |
16 |
40 |
2 |
8 |
23 |
16 |
23 |
2 |
8 |
16 |
23 |
23 |
2 |
9 |
16 |
12 |
23 |
2 |
9 |
16 |
12 |
16 |
2 |
9 |
12 |
16 |
16 |
2 |
9 |
12 |
70 |
60 |
40 |
100 |
32 |
23 |
16 |
i |
j |
Markah[I] |
Markah[j] |
Sementara |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
j |
Markah[I] |
Markah[j] |
Sementara |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
j |
Markah[I] |
Markah[j] |
Sementara |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|