Contoh : Perisian Microsoft word merupakan satu contoh program computer – yang
berfungsi untuk pengeditan teks atau penulisan teks.
Latihan :
Dengan contoh yang sesuai, terangkan apa yang anda faham dengan program computer.
**********************************************************************************
***
1
MODUL PROGRAMMING SEMESTER 2
2
MODUL PROGRAMMING SEMESTER 2
3
MODUL PROGRAMMING SEMESTER 2
**********************************************************************************
***
a. Himpunan
Menterjemah bahasa himpunan terus kepada bahasa mesin
b. Kompiler
Kompiler adalah program komputer (perisian Komputer) yang menterjemah
tulisan dalam bentuk teks ke dalam bahasa mesin.
Kompiler (Pengkompilan) menterjemahkan bahasa aras tinggi kepada bahasa
aras rendah seperti bahasa mesin atau bahasa himpunan.
Menukarkan keseluruhan sumber kod program ke dalam bahasa mesin sebelum
dilaksanakan.
Menterjemah keseluruhan kod sumber pada satu masa sebelum ia dilaksanakan.
Hasil pengkompilan adalah bahasa mesin dan kod objek akan terhasil.
Kelebihan: Program yang dihasil dilarikan dengan sangat cepat.
4
MODUL PROGRAMMING SEMESTER 2
c. Pentaksiran
Menukarkan bahasa aturcara aras tinggi kepada bahasa aturcara aras rendah.
Menterjemahkan dan malaksanakan kod sumber satu baris demi baris dalam
masa yang berbeza.
Tiada kod Objek disimpan/dihasilkan semasa proses pentaksiran.
Kelemahan : Lambat.
5
MODUL PROGRAMMING SEMESTER 2
Fasa Keterangan
Fasa Edit Proses menggunakan perisian penyunting (Editor)
seperti Turbo C untuk menaip kod aturcara dan
menghasilkan program C.
Aturcara yang ditulis akan disimpan dalam storan
terutamanya storan skunder seperti hardisk.
Aturcara ini disimpan dengan nama yang sesuai dan
penghujungnya disambung dengan .c
Contoh : kira.c
Fasa Pra-proses Fasa ini dilaksanakan sebelum fasa pengkompilan.
(pre-process) fasa dimana program memproses kod aturcara
sebelum di hantar ke proses pengkompilan.
Operasi ini dikawal oleh perintah-perintah dan arahan-
arahan khas prapemprosesan.
Arahan-arahan prapemprosesan akan menggantikan
kod sumber sebelum dihantar ke fasa pengkompilan.
Arahan prapemprosesan akan mengikut peraturan
sintaks khas pengaturcaraan C.
6
MODUL PROGRAMMING SEMESTER 2
-Ralat Runtime
Merujukkan ralat yang berlaku semasa melaksanakan suatu program aturcara.
Ralat ini mungkin disebab tidak cukup memori dalam system semasa
melaksanakan proses kompilan.
-Ralat Sintak
Merujuk kepada ralat yang berlaku disebabkan kesalahan kod ejaan dan
penggunaan simbol-simbol.
Contoh : pritf à printf atau Printf à printf
-Ralat Logik
Merujuk ralat yang berlaku disebabkan penggunan operasi atau logik yang salah
atau silap.
Operasi yang dimaksud ialah operasi matematik dalam aturcara C.
Contoh : dalam pengiraan purata
o Purata=a+b+c/3 à purata=(a+b+c)/3
o Umur<34
7
MODUL PROGRAMMING SEMESTER 2
C. STRUKTUR PROGRAM C
– Komen/Tajuk
printf(“PURATA = %d”,purata);
{
Blok
Sub purata=(a+b)/2
Fungsi
return purata
8
MODUL PROGRAMMING SEMESTER 2
• Komen/Tajuk
• Arahan #include
• Arahan #define
– Pembolehubah global ialah pembolehubah yang boleh diguna oleh semua blok
fungsi.
– Pemboleh ubah setempat ialah pemboleh ubah yang hanya digunakan untuk blok
fungsi tersebut sahaja.
9
MODUL PROGRAMMING SEMESTER 2
#include<fail pengepala>
Terdapat dua jenis fail kepada; iaitu fail kepada standard yang terdapat
dalam perpustakana C (Library C) dan fail kepala yang ditulis oleh
pengguna.
10
MODUL PROGRAMMING SEMESTER 2
Fungsi:
o Contoh :
#include<stdio.h>
#define teks “LUAS SEGIEMPAT : %d”
#define luas(L,P) L*P
int main()
{
int luas;
int panjang=12;
int lebar=10;
luas=luas(panjang,lebar);
return 0;
}
11
MODUL PROGRAMMING SEMESTER 2
char , int, float, double, case, auto, continue, default, do, else, if, entry, enum, extern, for
goto, long, register, return, short, sizeof, static, struct, switch, typedef, union, unsigned,
void, while
12
MODUL PROGRAMMING SEMESTER 2
a) Nama Pembolehubah
Pemboleh ubah adalah satu contoh pengecam.
Untuk mengisytihar pembolehubah perlu kenalpasti nama dan jenis data yang
diwakili.
Pemboleh ubah yang sebagai pengecam boleh ditakrifkan oleh pengguna.
Nama pembolehubah yang diisytihar perlu :
i. Sesuai (makna sesuai dengan apa yang diwakili olehnya. Contoh kalau
pembolehubahnya berkaitan dengan panjang mesti pilih nama yang sesuai
untuk mewakili panjang)
ii. Mudah difahami
Nama ini digunakan untuk menamakan ruang ingatan yang menyimpan
pembolehubah tersebut.
Panjang
iii. Kata simpanan C tidak boleh digunakan sebagai nama pemboleh ubah.
Contoh kata simpanan C yang tidak boleh digunakan : int, float, double…dll
Panjang Nama pembolehubah hanya boleh sehingga 31 aksara sahaja. Jika panjang
lebih daripada 31, maka aksara ke 32 ke atas tidak lagi diambil kira.
Contoh-contoh nama pembolehubah yang sah/betul adalah seperti berikut :
13
MODUL PROGRAMMING SEMESTER 2
luasSegitiga luas_segitiga
Huruf pada nama pembolehubah adalah kes sensitif maknanya huruf besar dan
huruf kecil yang digunakan adalah dianggap berbaza
c) Jenis-jenis Pembolehubah
Pembolehubah boleh mewakili berbagai jenis data.
Jenis data yang digunakan akan menentukan jenis pembolehubahnya.
Jadual dibawah menunjukkan jenis data asas yang digunakan dalam bahasa C:
Aksara char
Integer int
d) Pengisytiharan Pembolehubah
Fungsi pembolehubah adalah untuk digunakan untuk menyimpan data input dan
hasil pengiraan atau manipulasi logik.
Nilai yang simpan boleh berubah sepanjang pelaksanaan aturcara.
Format pengisytiharan pemboleh ubah adalah seperti berikut :
i. Jenis data + pembolehubah + ;
Int panjang;
14
MODUL PROGRAMMING SEMESTER 2
float tinggi;
char huruf;
char namaMurid[20];
JENIS DATA
15
MODUL PROGRAMMING SEMESTER 2
Saiz sel integer bergantuung kepada jenis sistem komputer yang digunakan.
Pemalar merujuk kepada suatu nilai yang tetap dan tidak boleh berubah sepanjang
pelaksanaan atur cara.
Pemalar boleh dikategorikan bebrapa jenis berdasarkan jenis datanya.
a) Pemalar Integer
Merujuk kepada nilai nombor integer yang tetap.
Cara pengisytiharan seperti berikut :
b) Pemalar Nyata
Merujuk kepada nilai nombor nyata yang tetap.
Cara pengisytiharan seperti berikut :
c) Pemalar Aksara
Merujuk kepada nilai aksara yang tetap.
Cara pengisytiharan seperti berikut :
d) Pemalar rentetan
Merujuk kepada nilai rentetan yang tetap.
Cara pengisytiharan seperti berikut :
const char[7]=”KELUAR”;
16
MODUL PROGRAMMING SEMESTER 2
a) Data struktur
Merujuk kepada satu koleksi data yang berlainan jenis.
struct student {
char firstName[20];
char lastName[20];
char SSN[9];
float gpa;
};
Pengenalan Operator.
1. Simbol matematik yang kita guna seperti +, -, x, < dan > dan lain-lain adalah dikenali sebagai
operator.
2. Simbol operator ini digunakan untuk memanipulasi data.
Operator Aritmetik
1. Untuk membolehkan aturcara kita memlakukan pengiraan aritmetik, maka kita perlu
operator ritmetik.
2. Operator aritmetik bahasa C sama dengan operator aritmetik dalam matematik.
3. Berikut merupakan simbol operator untuk aritmetik matematik.
17
MODUL PROGRAMMING SEMESTER 2
+ Tambah 25 + 8 33
- Tolak 120-64 56
* Darab 3*7 21
/ Bahagi 66/6 11
4. Perhatian simbol darab adalah * dan bukannya x. dan simbol bahagi adalah / bukannya \.
5. Untuk mancari baki pembahagi suatu nombor, kita guna simbol % . Cara adalah seperti
berikut :
8. Menulis ungkapan aritmetik dalam bahasa C. contoh –contoh adalah seperti dibawah :
18
MODUL PROGRAMMING SEMESTER 2
Operator logikal
|| atau A || B A atau B
19
MODUL PROGRAMMING SEMESTER 2
Untuk jadi benar kedua-dua mesti benar, jika terdapat satu palsu maka hasilnya adalah
palsu.
Untuk hasil Benar, sekurang-kurangnya satu adalah benar. Jika kedua-dua palsu maka
hasilnya adalah palsu.
! Benar = Palsu
!Palsu = Benar
6. Kesimpulannya operator logik akan memberi dua keputusan sahaja iaitu Benar atau Palsu.
Dalam bahasa C, Benar diwakili dengan 1 dan Palsu diwakili dengan 0.
Jika diberi a =2, b=7 dan c=9. Tentukan ungkapan berikut benar atau palsu
a * b && c + 5
20
MODUL PROGRAMMING SEMESTER 2
(2 * 7) && (9+5)
14 && 14
= Benar (1)
== Sama dengan 7 == 5
21
MODUL PROGRAMMING SEMESTER 2
1. Tentukan ungkapan berikut Benar atau Salah. Jika diberi a=1, b=5, c=15 dan d = 25.
(c >= (b * 3)) || (a == 3)
(15 >=15) || 0
1 || 0
Terdapat pelbbagai fungsi dalam perpustakaan C yang digunakan untuk aktiviti input data
dan output data.
Dua fungsi yang ingin diterangkan disini ialah
1. printf()
2. scanf()
DATA OUTPUT
Fungsi printf()
22
MODUL PROGRAMMING SEMESTER 2
printf(“Paparan teks atau format nilai Output pembolehubah”, nilai atau pembolehubah)
Contoh 3 :
int umur=17;
Format output
• format yang akan dipaparkan mengikut format yang telah ditentukan.
• Biasanya dimula dengan tanda “ dan akhir dengan “
• Boleh di masukkan format output nilai pembolehubah.
23
MODUL PROGRAMMING SEMESTER 2
Contoh 1 : printf(“Nama saya %s”,”Gan Hock Jin”); Output : Nama saya Gan Hock Jin
24
MODUL PROGRAMMING SEMESTER 2
Contoh 1 : printf(“Umur saya ialah %d tahun”,17); Output : Umur saya ialah 17 tahun
Contoh 2 : printf(“Hasil tambah 15 dan 67 ialah %d”,15+67); Output : Hasil tambah 15 dan 67 ialah
82
int no2=67;
float no2=67.5;
25
MODUL PROGRAMMING SEMESTER 2
“%6” dalan fungsi printf() akan mengarah computer menyediakan 6 runagan kosong
pada device output seperti berikut:
123 dan -123 pada fungsi printf() membezakan dari segi kedudukan nombor itu di
tempatkan. 123 adalah nilai positif,kedudukannya akan ditempatkan di kanan petak
kosong; manakala -123 adalah nilai negative kedudukannya akan ditempatkan di kiri
petak ruangan kosong. Kedudukan kedua-dua boleh digambarkan seperti rajah di
bawah
** printf(“%6d”,123);
1 2 3
**printf(“%6d”,-123);
1 2 3
26
MODUL PROGRAMMING SEMESTER 2
printf(“%6.2d”,3.4);
3 . 4 0
printf(“%6.1f”,3.4);
3 . 4
DATA INPUT
Fungsi Scanf()
format Input memanggil fungsi tentang format data yang akan diinputkan.
format Input dimula dengan “ dan akhir dengan “.
format Input boleh terdiri daripada beberapa nilai format input,contoh seperti
begitu:
27
MODUL PROGRAMMING SEMESTER 2
**Untuk format input aksara (charater) – depan pembolehubah mesti simpan tanda &
**Untuk format input integer – depan pembolehubah mesti simpan tanda &
**Untuk format input float– depan pembolehubah mesti simpan tanda &
**Untuk format input rentetan (string) – depan pembolehubah tidak perlu simpan tanda &
** Perhatikan output; bila kita masukkan nama “Faridah Ahmad” paparan hanya kepada
perkataan “Faridah” sahaja. Ini disebabkan fungsi scanf() hanya memaparkan perkataan
pertama sesuatu ayat sahaja.
**Untuk mengatasi masalah ini kita perlu menggunakan fungsi gets() sebagai ganti kepada
fungsi scanf().
28
MODUL PROGRAMMING SEMESTER 2
29
MODUL PROGRAMMING SEMESTER 2
Menterjemahkan reke bentuk algoritma yang dibuat dalam langkah 2 ke dalam bentuk kod
aturcara atau kod sumber C.
Setelah selesainya pengekodan program, program tersebut perlu diuji supaya ia bebas
daripada sebarang ralat.
Ralat program mungkin terdiri daripada ralat runtime, ralat logikal dan ralat sintaks.
Jika terdapatnya ralat. Pengaturcara akan melaksanakan Nyahpijatkan (Debug) untuk
membentulkan kesalahan tersebut.
Dokumentasi Program
1. Dokumentasi Dalaman
2. Dokumentasi Luaran
Dokumentasi Dalaman merujuk kepada dokumentasi teknikal yang ditulis dalam program ;
mengenai komen/penerangan suatu pernyataan kod.
30
MODUL PROGRAMMING SEMESTER 2
Tujuan Dokumentasi dalaman ini adalah untuk rujukkan pengaturcara atau pengaturcara baru
yang akan mengambil alih tugas pengubahsuai program.
Dokumentasi dalaman ini sangat berguna kepada pengaturcara kerana dokumentasi ini
Dokumentasi Luaran merujuk kepada Manual Penggunaan tentang program yang telah dibina.
Manual Penggunaan ini termasuklah penerangan tentang tujuan system, cara-cara penggunaan
dan carta aliran kerja Manual Penggunaan sangat penting kepada pengguna system
Penyelenggaraan Program :
Mula
Kod pseudo:
31 Mula
Input panjang dan lebar
1. Juga dikenali sebagai struktur kawalan bersyarat atau conditional control structure.
2. Merujuk kepada satu program dilaksanakan dengan adanya pilihan-pilihan yang ditetapkan.
a) Kenyataan if
b) Kenyataan if……else
c) Kenyataan if …..else if …..else
d) Kenyataan if tersarang (If bersarang)
e) Kenyataan switch…case
32
MODUL PROGRAMMING SEMESTER 2
a) Pernyataan if.
#include<stdio.h>
void main()
{
char jantina;
Mula
KOD PSUEDO:
Mula
Input Jantina
Input Jantina
Tamat
Tamat
33
MODUL PROGRAMMING SEMESTER 2
#include<stdio.h>
void main()
{
char jantina;
if(jantina==’L’)
printf(“Anda adalah lelaki.”);
if(jantina==’P’)
printf(“Anda adalah Perempuan”);
Mula
Mula
Tamat
Tamat
b) Pernyataan if …else
#include<stdio.h>
void main()
34
MODUL PROGRAMMING SEMESTER 2
char jantina;
if(pilihan==’L’)
printf(“Anda adalah lelaki.”);
else
Mula
KOD PSUEDO:
Input Jantina
Mula
Input Jantina
Jan=
’L’ Cetak Lelaki Jika jantina sama dengan ‘L’ maka
Cetak “Anda adalah lelaki.”
sebalik
Cetak Perempuan Cetak “Anda adalah perempuan”
Tamat
Tamat
35
MODUL PROGRAMMING SEMESTER 2
2. Contoh :
#include<stdio.h>
void main()
{
int pilihan;
if(pilihan==1)
printf(“Anda memdapat sebuah kereta”);
else if (pilihan==2)
printf(“Anda mendapat sebuah motorsikal”);
else if (pilihan==3)
printf(“Anda mendapat sebuah meja”);
else if (pilihan==4)
printf(“Anda mendapat sebuah kerusi”);
else
printf(“Sila masukkan 1 hingga 4 sahaja”);
36
MODUL PROGRAMMING SEMESTER 2
Mula
Input pilihan
Pilihan=1
Cetak ..Kereta
KOD PSUEDO:
Mula
Pilihan=2
Input pilihan
Cetak ..motorsikal
Jika pilihan sama dengan 1 maka
Cetak “Anda memdapat sebuah kereta”
Pilihan=4
sebalik
Cetak …kerusi Cetak Sila masukkan 1 hingga 4 sahaja”
Tamat
Cetak ……4sahaja
Tamat
37
MODUL PROGRAMMING SEMESTER 2
d) Pernyataan If tersarang
If(pilihan==1)
If(nama==’chee’)
printf(“……..”);
else
printf(“…..”)
else
printf(“……”)
e) Pernyataan switch….case
#include<stdio.h>
void main()
{
int pilihan;
switch(pilihan)
{
Case 1:
printf(“1”);
break;
Case 2:
printf(“2”);
break;
Case 3:
printf(“3”);
break;
Default :
printf(“4”);
}
38
MODUL PROGRAMMING SEMESTER 2
Mula
Input pilihan
KOD PSUEDO:
Mula
case 1
Cetak 2 Kes2 :
break Cetak 2
Berhenti
Kes 3 :
case3
Cetak 3
Cetak 3 break Berhenti
Default :
Cetak 4
Cetak 4 Tamat
Tamat
1. Struktur kawalan yang program akan diulangi selagi syarat tidak dipenuhi.
39
MODUL PROGRAMMING SEMESTER 2
a) Kenyataan while
b) Kenyataan do…while
c) Kenyataan for
KENYATAAN “while”
ujian
while( ujian )
{
Kenyataan
badan
pengemaskini
}
dalam badan hendak diulang.Bila ujian tersebut memenuhi syarat maka ulangan
int i=0;
int jumlah=0;
while(i<6)
40
MODUL PROGRAMMING SEMESTER 2
{
printf(“%d”,jumlah)
jumlah +=1;
i++;
}
mula
Isytihar
Int i=0
Jumlah=0
Kemaskini
i++
Kemaskini
I<6 Cetak jumlah Jumlah +=1
Tamat
Kod Psuedo :
Mula
Cetak jumlah
Kemaskini jumlah +=1
Kemaskini i ++
41
MODUL PROGRAMMING SEMESTER 2
Tamat selagi
Tamat
KENYATAAN do…while
1. kenyataan ini seakan-akan sama dengan kenyataan while. Yang terdiri daripada ujian dan badan.
2. Beza antara kenyataan do..while dan while ialah do..while akan melaksanakan kenyataan dalam
badan dahulu kemudian baru uji ujian bersyarat manakala kenyataan while akan membuat ujian
bersyarat kemudian baru melaksanakan kenyataan dalam badan.
do {
badan
kenyataan
} while(ujian); ujian
int i=0;
int jumlah=0;
do {
printf(“%d”,jumlah)
jumlah +=1;
i++;
} while(i<6);
42
MODUL PROGRAMMING SEMESTER 2
mula
Isytihar
Int i=0
Jumlah=0
Cetak jumlah
Kemaskini
Jumlah +=1
Kemaskini
i++
I<6
Tamat
KOD PSUEDO
Mula
Cetak jumlah
Kemaskini jumlah +=1
Kemaskini i ++
Tamat laksana
43
MODUL PROGRAMMING SEMESTER 2
Tamat
KENYATAAN “FOR”
for(awalan,ujian,pengemaskinian)
Ungkapan
3. Berdasarkan contoh di atas, pernytaan for terdapat tiga ungkapan; iaitu awalan, ujian dan
pengemaskinian.
#include<stdio.h>
void main()
{ Awalan: Tetapan nilai awalan
int x; untuk pembolehubah
for(x=1;x>11;x++)
Ujian: Menentukkan berapakali
hendak diulang. (10 kali ulang)
printf(“&”);
} pengemaskinian: mengemaskini
nilai x untuk setiap kali ualangan
44
MODUL PROGRAMMING SEMESTER 2
8. Tentukan apakah output yang akan dihasilkan daripada aturcara for berikut:
for(x=10;x>0;x--)
printf(“%d”,x);
Mula
Set Awalan
X=10
KEMASKINI
X=X-1
X>0
Cetakan x
Tamat
KOD PSUEDO:
45
Mula
PERNYATAAN “break”
1. Pernyataan break adalah satu contoh pernyataan kawalan ulangan (loop control statement).
a. untuk menamatkan pernyataan “case” yang terdapat dalam pernyataan switch. Ini bermakna ia
b. untuk menamatkan pernyataan perintah loop (for, while, do…while) secara paksaan.
PERNYATAAN “continue”
1. Pernyataan continue adalah satu contoh pernyataan kawalan ulangan (loop control statement).
2. Fungsinya ialah mengembalikan suatu ulangan (loop) kembali semula ke kedudukan mengujian.
46
MODUL PROGRAMMING SEMESTER 2
FUNGSI (FUNCTION)
APA ITU FUNGSI
1. Merupakan blok kod yang terdiri daripada jenis fungsi, nama fungsi ,parameter dan kenyataan difinisi
(takrifan).
2. Format Definisi fungsi adalah seperti berikut :
Jenis Fungsi
void KiraLuasSegiempat(int panjang,int lebar)
Nama Fungsi
parameter
{
luas=panjang * lebar ;
Jenis Fungsi :
47
MODUL PROGRAMMING SEMESTER 2
Merujuk kepada Jenis nilai kembali fungsi tersebut. Jenis fungsi contoh di atas ialah void.
Jika guna “void” ia tidak mengembalikan nilai, nilai akan dicetak dalam fungsi tersebut juga.
Jika guna jenis fungsi “int” ia akan mengembalikan nilai. Contoh seperti di bawah akan
mengembalikan jenis nilai int.
{
int luas;
luas=panjang * lebar ;
return luas;
Nama Fungsi : Nama yang ditetapkan untuk fungsi, mesti guna nama yang sesuai.
Parameter : Nilai pembolehubah dari fungsi utama akan dihantar dari fungsi uatama ke fungsi untuk
tujuan mengiraan
PROTOTAIP FUNGSI
Merujuk kepada pengisytiharan fungsi yang tidak mempunyai badan fungsi tetapi
mengandungi jenis fungsi, nama fungsi dan bahagian parameter terdiri daripada jenis
pembolehubah.
Fungsi Prototaip fungsi adalah untuk memberitahu compiler jenis nilai yang akan
dikembalikan ke fungsi utama, jumlah parameter menunjukkan berapa jenis nilai yang akan
diterima.
Format penulisan prototaip fungsi adalah seperti berikut:
SOALAN :
1. Apakah jenis data prototaip fungsi di atas? Jwp: void – tidak kembali nilai
2.Apakah Jenis data yang akan diterima oleh fungsi dari fungsi utama? Jwp : jenis
integer.
3. Berapa jenis nilai yang akan diterima. Jwp: dua.
PEMANGGIL FUNGSI
Merujuk kepada pengisytiharan fungsi yang terdiri daripada nama fungi dan parameter
fungsi yang terdiri daripada pembolehubah yang di isytihar daam fungsi utama; tanpa
mengandungi jenis fungsi.
Fungsi Pemanggil fungsi adalah untuk menghantar nilai dari fungsi ke sub fungsi atau
menerima nilai yang dikembalikan dari sub fungsi.
Format penulisan pemanggil fungsi adalah seperti berikut :
48
MODUL PROGRAMMING SEMESTER 2
Terdapat tiga cara mencetak nilai yang dikembalikan daripada sub fungsi.
kiraLuasSegiempat(panjang,lebar);
o Cara 2:
int luas;
luas=kiraLuasSegiempat(panjang,lebar);
printf(“%d”,luas);
o Cara 3:
printf(“%d”, kiraLuasSegiempat(panjang,lebar);
#inclued<stdio.h>
void main()
{
int panjang,lebar;
}
49
MODUL PROGRAMMING SEMESTER 2
JENIS-JENIS FUNGSI
50
MODUL PROGRAMMING SEMESTER 2
a) penglibatan fungsi yang tidak mengahantar nilai ke sub fungsi dan tidak mengembalikan nilai ke
fungsi utama.
int luasSegiempat(int,int)
MENU UTAMA
void main()
{ 1. LELAKI
int pilihan; 2. PEREMPUAN
void luasSegiempat()
{
printf(“MENU UTAMA\n\n”);
printf(“1. LELAKI\n”);
printf(“2. PEREMPUAN\n”);
51
MODUL PROGRAMMING SEMESTER 2
b) penglibatan fungsi yang menghantar nilai daripada fungsi utama tetapi tidak mengembalikkan
nilai
ke fungsi utama.
#include<stdio.h>
void luasSegiempat(int,int)
void main()
{
int panjang,lebar;
52
MODUL PROGRAMMING SEMESTER 2
c) penglibatan fungsi yang menghantar nilai daripada fungsi utama dan mengembalikkan nilai
ke fungsi utama.
#include<stdio.h>
int luasSegiempat(int,int);
void main()
{
int panjang,lebar;
int luas; Perhatikan ..
luasSegiempat(panjang,lebar);
53
MODUL PROGRAMMING SEMESTER 2
Mula
Isystihar prototaip
int luasSegiempat(int,int)
Isystihar pembolehubah
#include<stdio.h> int panjang,lebar,luas
void luasSegiempat(int,int);
Input Panjang
int main()
{
int panjang,lebar; Input lebar
int luas;
luasSegiempat(panjang,lebar)
printf("Masukkan panjang = ");
scanf("%d",&panjang);
Mula
printf("Masukkan lebar = ");
scanf("%d",&lebar);
luasSegiempat(panjang,lebar);
luasSegiempat(panjang,lebar)
}
Cetak Luas
54
MODUL PROGRAMMING SEMESTER 2
1. Kod-kod dalam fungsi utama boleh dipecahkan. Untuk membentuk sub fungsi supaya fungsi
utama
Lebih kemas dan kodnya tidak terlalu panjang.
2. Dibawah merupakan satu aturcara yang lengkap untuk mencari hasil penambahan dua nilai
nombor.
Katakan kod fungsi utama ini akan dipecahkan untuk membentuk satu sub fungsi yang bernama :
#include<stdio.h>
int kiraJumlah(int,int);
int kiraJumlah(int a,int b)
{
void main()
Int jumlah;
{
int no1,no2,jumlah;
jumlah= a + b;
printf("Masukkan Nombor Pertama :");
printf("JUMLAH : %d",jumlah);
scanf("%d",&no1);
}
printf("Masukkan Nombor Kedua :");
scanf("%d",&no2);
kiraJumlah(no1,no2);
jumlah=no1+no2;
kiraJumlah(no1,no2);
LATIHAN KENDIRI 1
Di bawah ini menunjukkan satu fungsi utama sebuah aturcara C. Aturcara dibangunkan untuk mencari purata tiga nombor.
55
MODUL PROGRAMMING SEMESTER 2
#include<stdio.h>
int main()
{
int no1,no2,no3;
int purata;
printf(“Masukkan No 1 : “);
scanf(“%d”,&no1);
printf(“Masukkan No 2 : “);
scanf(“%d”,&no2);
printf(“PURATA = %d”,purata);
a) Asingkan fungsi utama ini kepada sub fungsi “void purataTigaNo(int a,int b,int c)”. Tulis segmen kod untuk sub fungsi
tersebut.
printf(“PURATA = %d”,purata);
b) Tulis segmen kod untuk fungsi utama setelah proses pengasingan tersebut.
int main()
{
int no1,no2,no3;
printf(“Masukkan No 1 : “);
scanf(“%d”,&no1);
printf(“Masukkan No 2 : “);
scanf(“%d”,&no2);
purataTigaNo(no1,no2,no3);
Merujuk kepada fungsi yang bukan dibina oleh programmer dan ia merupakan fungsi dalaman yang disimpan
dalam perpustakaan C.
Fungsi piawaian yang selalu kita guna adalah fungsi input/output,seperti :
56
MODUL PROGRAMMING SEMESTER 2
Fungsi lain adalah seperti gets( ), puts( ), strcpy( ) dan lain-lain lagi.
Dalam bahagian ini, kita akan berbincang tentang fungsi yang berasaskan matematikal
Fungsi matematikal ini, perlu diisytiharkan header files “math.h” seperti berikut #include<math.h>
a) sqrt( )
#include<math.h>
Hasil Output :
int main()
{
float x = 16; 4.000000
printf(“%f”,sqrt(x) );
}
b) log( )
#include<math.h>
Hasil Output :
int main()
{
float x = 8.0;
2.079442
printf(“%f”,log(x) );
}
c) log10( )
#include<math.h>
Hasil Output :
int main()
{
float x = 8.0;
0.903090
printf(“%f”,log10(x) );
}
d) pow( )
o Contoh aturcara
#include<math.h>
Hasil Output :
57
8.114653
MODUL PROGRAMMING SEMESTER 2
int main()
{
float x = 3.2;
float y=1.8;
printf(“%f”,pow(x,y) );
}
e) hypot( )
o Contoh aturcara
#include<math.h>
Hasil Output :
int main()
{
float x = 8.0;
10.000000
float y=6.0;
printf(“%f”,hypot(x,y) );
}
f) floor( )
o Merupakan fungsi yang akan mengembalikkan nilai integer terbesar yang tidak melebihi x.
o Contoh aturcara
#include<math.h>
Hasil Output :
int main()
{
float x = 8.3;
8.000000
printf(“%f”,floor(x) );
}
g) ceil ( )
o Merupakan fungsi yang akan mengembalikkan nilai integer terbesar yang tidak melebihi x.
o Contoh aturcara
#include<math.h>
Hasil Output :
int main()
{
float x = 8.3;
9.000000
printf(“%f”,ceil(x) );
}
h) exp ( )
58
MODUL PROGRAMMING SEMESTER 2
#include<math.h>
Hasil Output :
int main()
{
float x = 8.3;
2980.957987
printf(“%f”,exp(x) );
}
CONTOH SOALAN
atau
x= [ (a*c) – (d*d) ]
sqrt(x)
TATASUSUN (ARRAY)
2. Indeks tatasusun akan dignakan untuk menuding ke maklumat dalam tatasusun yang ingin dicapai.
JENIS TATASUSUN
59
MODUL PROGRAMMING SEMESTER 2
1. Penggunaan tatasusun sama dengan pembolehubah lain, iaitu ia mesti diisytiharkan terlebih
dahulu sbelum boleh digunakan.
4. Pengisytiharan tatasusun “int nombor[5]” . Memori komputer akan menyediakan ruangan seperti
dibawah ini :
alamat indek
Indek [0]
Indek [1]
Indek [2]
Indek [3]
Indek [4]
1. Mengumpuk nilai awal (nombor) untuk tatasusun satu dimensi dan cara mencapai nilai
tersebut.
#include<stdio.h>
SOALAN :
60
MODUL PROGRAMMING SEMESTER 2
a) printf(“%d”,nombor[1]);
B) printf(“%d”,nombor[3]);
2. Mengumpuk nilai awal (aksara) untuk tatasusun satu dimensi dan cara mencapai nilai tersebut.
#include<stdio.h>
Cara penetapan nilai awal.
void main() Saiz indek adalah saiz 4,maka 4 nilai
{ saja boleh dimasukkan.
Tanda’’ digunakan untuk setiap aksara
char huruf[4]={‘a’,’b’,’c’,’d’};
a Indek[0]
printf(“%c”,huruf[0]); b Indek[1]
c Indek[2]
} d Indek[3]
SOALAN :
Apakah nilai output bagi aturcara C berikut :
a) printf(“%c”,huruf[2]);
B) printf(“%c”,huruf[3]);
3. Mengumpuk nilai awal ( rentetan(string) ) untuk tatasusun satu dimensi dan cara mencapai nilai
tersebut.
#include<stdio.h>
SOALAN :
Apakah nilai output bagi aturcara C berikut :
a) printf(“%c”,nama[2]);
B) printf(“%c”,nama[3]);
61
MODUL PROGRAMMING SEMESTER 2
1. Anda masih ingin pernyata for ? Format penulaisan pernyataan for adalah seperti berikut :
for(awalan,ujian,pengemaskinian)
{
Ungkapan
}
Contoh :
For(a=0;a<4;a++)
{
ungkapan
}
2. Penggunaan pernyata dalam for adalah untuk mengemakini nilai indek melalui cara perulangan
kawalan.
#include<stdio.h>
Tuliskan aturcara output menggunakan pernyata for untuk memaparkan huruf a dan c.
62
MODUL PROGRAMMING SEMESTER 2
#include<stdio.h>
Ulang 1 : Masukkan nilai ke-1 dalam
void main()
{ indek[0]-nilai a=0
void main()
{
int nombor[5];
int a,b;
int jumlah=0;
for(a=0;a<5;a++)
{
printf("masukkan nombor : ");
scanf("%d",&nombor[a]);
}
for(b=0;b<5;b++)
{
printf("%d", nombor[b]);
jumlah=jumlah+nombor[b];
}
printf("PURATA : %d",jumlah/5);
63
MODUL PROGRAMMING SEMESTER 2
SOALAN :
Buat satu aturcara lengkap untuk memasukkan 4 nilai nombor dan paparkan jumlah lima
nilai
nombor tersebut.
LATIHAN
#include<stdio.h> //baris1
for(i=0;i<6;i++) //baris6
{ //baris7
printf("Masukkan Nilai ke- %d ",i+1); //baris8
scanf("%d",&nilai[i]); //baris9
} //baris10
} //baris12
b) Apakah output yang akan dipaparkan bagi ulangan “pernyataan for” yang pertama untuk baris ke
baris ke 8
d) Ubah ungkapan aturcara baris ke 11, untuk mempaparkan semua nilai yang diinputkan.
64
MODUL PROGRAMMING SEMESTER 2
f) Tuliskan ungkapan aturcata untuk mengira jumlah semua nilai yang dimasukkan.
Contoh Soalan:
Buat satu aturcara lengkap untuk mengira jumlah pelajar,jumlah pelajar lelaki dan jumlah pelajar
perempuan yang diinputkan.
#include<stdio.h>
void main()
{
char jantina[5]={'L','P','P','L','L'};
int kaunter=0;
int jumPel=0;
int jumL=0;
int jumP=0;
int i;
for(i=0;i<5;i++)
{
if(jantina[i]=='L')
{
kaunter=1;
jumL=jumL+kaunter;
}
else
{
kaunter=1;
jumP=jumP+kaunter;
}
kaunter=1;
65
MODUL PROGRAMMING SEMESTER 2
jumPel=jumPel+kaunter;
}//Tamat for
}//tamat main
baris
4. Setelah pengisytiharan selesai,bahasa C akan menyimpan ruangan tatasusun2 dimesi dalam
memori seperti berikut :
0 1 2 3
0 (0,0) (0,1) (0,2) (0,3)
1 (1,0) (1,1) (1,2) (1,3)
2 (2,0) (2,1) (2,2) (2,3)
0 1
0 1 (0,0) 2 (0,1)
1 3 (1,0) 5 (1,1)
66
MODUL PROGRAMMING SEMESTER 2
2 6 (2,0) 7 (2,1)
3 8 (3,0) 9 (3,1)
Latihan
Nilai[5][4]
#include<stdio.h>
void main()
{
printf("%d",nombor[1][1]);
67
MODUL PROGRAMMING SEMESTER 2
0 1 2 3 4 5 6 7 8 9
0 J o h n K o n g \0
1 A m i n a h J o \0
2 H e l e n A i \0
3. Untuk paparan nama “John Kong”, kod aturcara yang perlu ditulis adalah seperti berikut :
printf(“%s”,nama[0]);
4. Untuk memaparkan huruf ”K” pada nama John Kong, kod aturcara berikut perlu ditulis.
printf(”%c”,nama[0][5]);
Apakah kod aturcara untuk memaparkan huruf ”J” pada nama Aminah Jo?.
68
MODUL PROGRAMMING SEMESTER 2
#include<stdio.h>
void main()
{
int nombor[4][2];
int x,y;
printf("%d",nombor[1][1]);
#include<stdio.h>
void main()
{
int nombor[4][2];
int x,y;
for(x=0;x<4;x++)
{
for(y=0;y<2;y++)
{
printf("Masukkan Nombor : ");
scanf("%d",&nombor[x][y]);
}
}
for(x=0;x<4;x++)
{
for(y=0;y<2;y++)
{
printf("%d",nombor[x][y]);
}
}
69
MODUL PROGRAMMING SEMESTER 2
#include <stdio.h>
void main()
{
#include <stdio.h>
void main()
{
char arr[3][14];
int i;
for(i=0;i<3;i++)
{
printf("Masukkan Nama anda : ");
scanf("%s",arr[i]);
}
}
ISIHAN SISIPAN ( INSERTION SORTING ) DAN ISIHAN GELEMBUNG (BUBBLE SORTING)
70
MODUL PROGRAMMING SEMESTER 2
2. Isihan secara menaikan bermakna menyusun data-data dari nilai yang terkecil kepada nilai yang
terbesar.
3. Isihan secara menurun pula bermakna menyususn data-data dari nilai terbesar kepada nilai
terkecil.
ISIHAN SISIPAN
1. Isihan sisipan menggunakan konsep semak dari mula hingga akhir dan kemudian sisip.
2. Contoh Isihan sisipan untuk jujukan nombor di bawah ini secara isihan menaik.
56 34 78 29
Laluan 1
56 34 78 29
56 34 78 29
56 34 78 29
56 34 78 29
29 56 34 78 29 disisip pada kedudukan ke 1
Lalauan 2
29 56 34 78
29 56 34 78
29 56 34 78
29 56 34 78
29 34 56 78 34 disisip pada kedudukan ke 2
Laluan 3
29 34 56 78
29 34 56 78
29 34 56 78
29 34 56 78
29 34 56 78 56 dikekalkan pada kedudukan ke 3
Laluan 4
29 34 56 78
71
MODUL PROGRAMMING SEMESTER 2
29 34 56 78
29 34 56 78
29 34 56 78
29 34 56 78 78 dikekalkan pada kedudukan ke 4
Laluan 1(Path1)
ACB, ADB, ABC, AAC, AAA
ACB, ADB, ABC, AAC, AAA Periksa unsur dari mula-akhir
ACB, ADB, ABC, AAC, AAA
ACB, ADB, ABC, AAC, AAA
ACB, ADB, ABC, AAC, AAA
AAA, ACB, ADB, ABC, AAC ( AAA ialah unsur pertama/dipindahkan)
Laluan 2
AAA, ACB, ADB, ABC, AAC
AAA, ACB, ADB, ABC, AAC Periksa unsur dari mula-akhir
AAA, ACB, ADB, ABC, AAC
AAA, ACB, ADB, ABC, AAC
AAA, ACB, ADB, ABC, AAC
AAA, AAC, ACB, ADB, ABC ( AAC ialah unsur kedua/dipindahkan)
Laluan 3
AAA, AAC, ACB, ADB, ABC
AAA, AAC, ACB, ADB, ABC
AAA, AAC, ACB, ADB, ABC Periksa unsur dari mula-akhir
AAA, AAC, ACB, ADB, ABC
AAA, AAC, ACB, ADB, ABC
AAA, AAC, ABC, ACB, ADB (ABC ialah unsur ketiga/dipindahkan)
Laluan 4
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB Periksa unsur dari mula-akhir
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB (ACB ialah unsur keempat/dikekalkan)
Laluan 5
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB Periksa unsur dari mula-akhir
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB
AAA, AAC, ABC, ACB, ADB (ADB ialah unsur kelima/dikekalkan)
72
MODUL PROGRAMMING SEMESTER 2
Maka,
AAA, AAC, ABC, ACB, ADB (Susunan Secara Menaik Terhasil)
ISIHAN GELEMBUNG
1. Isihan gelembung ini menggunakan konsep perbandingan iaitu perbandingan di antara dua data.
2. Contoh Isihan gelembung bagi jujukan teks di bawah secara menaik adalah seperti berikut :
Daripada dua kaedah isihan yang ditunjuk di atas, kesimpulan yang dapat dibuat ialah isiahan
gelembung adalag kaedah yang lebih berkesan dan cepat dalam isihan data-data.
LATIHAN :
73
MODUL PROGRAMMING SEMESTER 2
a) isihan sisipan
b) isihan gelembung
74
MODUL PROGRAMMING SEMESTER 2
13. }
14. }
15. }
16. int k;
17. for(k=0;k<5;k++) {printf("%d ",a[k]);} printf("\n");
18. }
Dalam Sains Komputer, Carian Linear (linear search) adalah algoritma carian secara carian
secara jujukan atau urutan
Sesuai untuk mencari satu set data.
Cara operasinya ialah menyemak setiap elemen dalam senarai secara perbandingan
sehingga padan dengan item yang hendak dicari.
Contoh Aturcara carian secara linear
#include<stdio.h>
#include<stdlib.h>
int main()
{
int no[5]={1,3,5,7,9};
int noDicari=9;
int i=0;
for (i=0;i<5;i++)
{
printf("No %d ",no[i]);
if(noDicari==no[i])
{
printf("No %d dapat dicari",noDicari);
return 0; //tamat
}
}
printf("No %d dapat dapat dicari",noDicari);
KONSEP DAN PERNYATAAN DATA STRUKTUR
Struktur adalah satu kumpulan pembolehubah yg dikumpulkan & dirujuk di bawah satu nama @
pencam.
Struktur ialah jenis data yang ditakrif oleh pengguna
data terdiri dari jenis yang berlainan yang membentuk maklumat mengenai sesuatu data
berbeza dengan tatasusunan yang terdiri dari jenis data yang sama
2. Binaan Data yang disimpan dalam bentuk lajur dan setiap lajur akan menghasilkan satu rekod.
3. kaedah penyimpanan data adalah seperti penyimpanan rekod dalam bahasa Pascal (bentuk
jadual).
75
MODUL PROGRAMMING SEMESTER 2
struct butirMarkah
{
char nama[20];
char jantina;
int BI;
int BM;
int SNS;
float purata;
};
2. Arahan struct memberitahu pengkompilan bahasa C bahwa aturcara telah menakrifkan satu data
berstruktur yang dinamakan markah.
3. Jika kita ingin memasukan butiran markah untuk pelajar kelas Siber, kita perlu isytiharkan satu
pembolehubah seperti berikut :
Cara 1:
Cara 2:
struct butirMarkah
{
char nama[20];
char jantina;
int BI;
int BM;
int SNS;
float purata;
}pelSiber;
76
MODUL PROGRAMMING SEMESTER 2
1. Untuk memasukkan nama,jantina dan markah BM,BI ,SNS dan purata untuk kelas siber adalah
seperti berikut :
strpcpy(pelSiber.nama,”Helen John”);
**penggunaan fungsi strcpy() perlu mengiytiharkan #include<string.h> .Nama Helen John perlu
menggunakan tanda “ “.
pelSiber.BI=78;
pelSiber.BM=56;
pelSiber.SNS=78;
pelSiber.purata=70.7;
printf(“Nama :\n”);
gets(pelSiber.nama);
printf(“Jantina :\n”);
scanf(“%c”,& pelSiber.jantina);
printf(“BI :\n”);
scanf(“%c”,& pelSiber.BI);
printf(“BM :\n”);
scanf(“%c”,& pelSiber.BM);
printf(“SNS :\n”);
scanf(“%c”,& pelSiber.SNS);
printf(“PURATA :\n”);
scanf(“%c”,& pelSiber.purata);
E) PAPARAN HASIL OUTPUT STRUKTUR DATA.
77
MODUL PROGRAMMING SEMESTER 2
1. Cara memaparkan hasil output data dalam struktur adalah seperti berikut :
1. Jika kita ingin membina satu data struktur bagi menyimpan butiran Markah Ujian untuk
memasukan butiran 3 orang pelajar,maka kita perlu menggunakan struktur data yang melipatkan
tatasusun (array).
Cara 1:
struct butirMarkah
{
char nama[20];
char jantina;
int BI;
int BM;
int SNS;
float purata;
}pelSiber[3];
Cara 2:
*** Perhatian data struktur di atas. Berapa bilangan markah ujian pelajar yang boleh dimasukkan?
78
MODUL PROGRAMMING SEMESTER 2
Cara 1:
Cara 2:
strcpy(pelSiber[0].nama,"Ah Chong");
pelSiber[0].jantina='L';
pelSiber[0].BI=78;
pelSiber[0].BM=56;
pelSiber[0].SNS=78;
pelSiber[0].purata=70.7;
** kod di atas hanya mengumpuan butiran markah Ah Chong Sahaja. Indek [0] adalah indek rujukan
untuk butiran markah Ah Chong. Cara 1 adalah lebih berkesan dan tidak memerlukan penulisan kod
aturcara yang panjang.
- struktur data secara tatasusun memerlukan penginputan data secara berulang-ulang. Maka
bagi memasukkan data secara berulang ini. Penggunaan kenyataan “while”,”do..while” dan
“for” perlu digunakan.
- Berikut merupakan contoh penginputan data mengguakan kenyataan for.
int i;
for(i=0;i<3;i++)
{
printf("\n\nSila Masukkan data ujian berikut : \n\n");
79
MODUL PROGRAMMING SEMESTER 2
fflush(stdin);
printf("Nama : ");
gets(kelasSiber[i].nama);
printf("\nmarkah BM : ");
scanf("%d",&kelasSiber[i].markBM);
printf("\nmarkah BI : ");
scanf("%d",&kelasSiber[i].markBI);
printf("\nmarkah SN : ");
scanf("%d",&kelasSiber[i].markSN);
printf("\nPurata : ");
scanf("%f",&kelasSiber[i].purata);
- Berdasarkan penginput data di atas, data-data tersebut boleh dipapar semula melalui cara
berikut :
for(i=0;i<3;i++)
{
printf("Nama : %s\n",kelasSiber[i].nama);
printf("BM : %d\n",kelasSiber[i].markBM);
printf("BI : %d\n",kelasSiber[i].markBI);
printf("SN : %d\n",kelasSiber[i].markSN);
printf("Purata : %.1f\n\n",kelasSiber[i].purata);
6. Contoh di atas adalah paparan untuk semua data kelasSiber secara tatasusun. Bagaimana pula
cara kita hendak paparkan nama seseorang itu. Katakan kita ada satu pengisytiharan seperti begitu :
Kompiler akan mengarah computer di simpan secara bertatasusun dalam memori computer
berdasarkan indek seperti berikut :
AhChong L 78 45 67 34.5
pelSiber[1].nama pelSiber[1].jantina pelSiber[1].BI pelSiber[1].BM pelSiber[1].SNS pelSiber[1].purata
Helen Ai P 23 23 23 23.0
pelSiber[2].nama pelSiber[2].jantina pelSiber[2].BI pelSiber[2].BM pelSiber[2].SNS pelSiber[2].purata
80
MODUL PROGRAMMING SEMESTER 2
Aminah T P 50 50 45 45.6
Jadi untuk paparkan nama ah chong, penulisan aturcara adalah seperti berikut :
printf(“%s”,pelSiber[o].nama);
Alamat
indek nama
Ah Chong
**Kita hanya perlu merujuk kepada alamat indek sesuatu output yang perlu kita cetak.
81