Jump to content
Sign in to follow this  
nimzoindy

Nota Mengenai C & C++

Recommended Posts

1.0 PENGENALAN KEPADA C

Bahasa C adalah bahasa paras tinggi (high level language) yang mengandungi ciri-ciri bahasa paras rendah (low level language). C boleh digunakan untuk semua bidang dan boleh digunakan dengan semua teknik pengaturcaraan.

Pada akhir 80an, bahasa C telah menjadi begitu popular. Kebolehan dan kepantasan C menyebabkan ia menjadi bahasa yang paling digemari untuk penggunaan sistem operasi dan kejuruteraan. Sekarang ia menjadi bahasa yang paling popular untuk pembangunan perisian dan juga penggunaan biasa. Ini mungkin kerana masyarakat informasi pada ketika itu ini sedang menuju ke arah sistem terbuka (open system) dan sistem operasi yang berkait rapat dengan sistem terbuka ini adalah sistem operasi UNIX. Bahasa pengaturcaraan yang berkait rapat dengan UNIX pula ialah C, kerana sebahagian besar dari UNIX itu sendiri pada asalnya ditulis dalam bahasa C. Apabila UNIX semakin popular, bahasa C juga turut menjadi popular.

Pada ketika yang sama, pakej-pakej pengaturcaraan C untuk MS-DOS (Microsoft Disk Operating System), yang digunakan pada komputer-komputer peribadi IBM, telah muncul di pasaran. Di antara pakej-pakej yang popular ialah dari Borland International dan dan QuickC dari Microsoft. Turbo C dan QuickC adalah pakej-pakej C yang dilengkapi dengan (compiler), (linker) dan (editor) yang disatukan dalam sebuah (integrated environment).

Microsoft C ialah pakej untuk digunakan dalam sekitaran baris arahan (Command Line Environment). Jadi sebuah yang berasingan diperlukan. Turbo C juga dibekalkan dengan satu set penyusun dan penyambung (Compiler and Linker) untuk penggunaan seumpama ini.

Tahun-tahun 90an menyaksikan kemunculan pakej-pakej pengaturcaraan C yang disepadukan dengan sekitaran pembangunan aturcara berorientaasikan objek (Object Oriented Programming environment). Pada masa yang sama, suatu versi baru bahasa C yang berorientasikan objek (object oriented) telah muncul, iaitu C++.

Dari C++ pula telah muncul JAVA, iaitu bahasa pengaturcaraan yang sedang meningkat popularitinya dengan mendadak. Tidaklah perlu saya bicarakan tentang hal ini kerana banyak tapak-tapak web yang dikhususkan untuk Java dan lain-lain hal yang berkaitan.

Contoh 1.1 : Sebuah Aturcara C Yang Mudah

/* Ini adalah aturcara C kita yang pertama */

#include <stdio.h>

main()

{

printf("\n Ini adalah aturcara C kita yang pertama");

}

Ini adalah sebuah aturcara yang mudah dan pendek. Daripada contoh 1 ini dapatlah kita mencetak maklumat seperti di bawah ke paparan:

Ini adalah aturcara C kita yang pertama

Bahagian permulaan (kepala) aturcara ini terdiri daripada:

#include <stdio.h>

dan

main()

Arahan "#include <stdio.h>" di atas ialah arahan untuk penyusun supaya memasukkan fail stdio.h semasa penyusunan. Ia bukan sebahagian daripada arahan C tetapi arahan pra-pemproses (pre-processor) bagi penyususun.

Selain daripada baris-baris di atas, aturcara ini juga mengandungi baris komen sebagai maklumat tambahan. Lihat bagaimana semua perkataan di antara /* dan */ ditulis supaya kita atau orang lain mengetahui tujuan aturcara kita. Baris komen seperti ini tidak semestinya berada di baris permulaan aturcara akan tetapi boleh ditempatkan di mana-mana sahaja asalkan ia berada di antara aksara-aksara /* dan */. Adalah baik jika daripada permulaan lagi anda membiasakan diri supaya menggunakan baris komen ini dengan banyaknya. Ini akan menjelaskan perjalanan dan fungsi setiap blok pernyataan C anda. Cara begini adalah dianggap sebagai cara yang digunakan oleh seorang pengaturcara yang berpengalaman, mahir dan teratur hasil kerjanya.

Perhatikan juga bahawa terdapat tanda left curly braces dan right curly braces ({ dan }) untuk menandakan blok aturcara bagi fungsi main() yang merupakan rutin utama bagi aturcara ini. Di dalam contoh di atas, blok ini mengandungi satu sahaja pernyataan, iaitu pernyataan printf() yang merupakan panggilan kepada suatu fungsi output piawai yang diisytiharkan dalam fail stdio.h. Ini menjelaskan kenapa kita memasukkan fail tersebut dalam penyusunan. Perhatikan rentetan yang ditulis di antara dua simbol double quote ( "...." ) dalam printf(). Fungsi ini akan mencetak semua aksara yang terdapat dalam rentetan berkenaan. Akan tetapi terdapat simbol-simbol tertentu yang mempengaruhi nya. Dalam contoh di atas, terdapat simbol \n supaya rentetan kita dicetak pada baris yang baru.

Contoh 1.1 : Sebuah Aturcara C Yang Mudah

/* Ini adalah aturcara C kita yang pertama */

#include <stdio.h>

main()

{

printf("\n Ini adalah aturcara C kita yang pertama");

}

Ini adalah sebuah aturcara yang mudah dan pendek. Daripada contoh 1 ini dapatlah kita mencetak maklumat seperti di bawah ke paparan:

Ini adalah aturcara C kita yang pertama

Bahagian permulaan (kepala) aturcara ini terdiri daripada:

#include <stdio.h>

dan

main()

Arahan "#include <stdio.h>" di atas ialah arahan untuk penyusun supaya memasukkan fail stdio.h semasa penyusunan. Ia bukan sebahagian daripada arahan C tetapi arahan pra-pemproses (pre-processor) bagi penyususun.

Selain daripada baris-baris di atas, aturcara ini juga mengandungi baris komen sebagai maklumat tambahan. Lihat bagaimana semua perkataan di antara /* dan */ ditulis supaya kita atau orang lain mengetahui tujuan aturcara kita. Baris komen seperti ini tidak semestinya berada di baris permulaan aturcara akan tetapi boleh ditempatkan di mana-mana sahaja asalkan ia berada di antara aksara-aksara /* dan */. Adalah baik jika daripada permulaan lagi anda membiasakan diri supaya menggunakan baris komen ini dengan banyaknya. Ini akan menjelaskan perjalanan dan fungsi setiap blok pernyataan C anda. Cara begini adalah dianggap sebagai cara yang digunakan oleh seorang pengaturcara yang berpengalaman, mahir dan teratur hasil kerjanya.

Perhatikan juga bahawa terdapat tanda left curly braces dan right curly braces ({ dan }) untuk menandakan blok aturcara bagi fungsi main() yang merupakan rutin utama bagi aturcara ini. Di dalam contoh di atas, blok ini mengandungi satu sahaja pernyataan, iaitu pernyataan printf() yang merupakan panggilan kepada suatu fungsi output piawai yang diisytiharkan dalam fail stdio.h. Ini menjelaskan kenapa kita memasukkan fail tersebut dalam penyusunan. Perhatikan rentetan yang ditulis di antara dua simbol double quote ( "...." ) dalam printf(). Fungsi ini akan mencetak semua aksara yang terdapat dalam rentetan berkenaan. Akan tetapi terdapat simbol-simbol tertentu yang mempengaruhi nya. Dalam contoh di atas, terdapat simbol \n supaya rentetan kita dicetak pada baris yang baru.

2. Struktur Data C

2.1 Jenis-Jenis Data Asas

Jenis-jenis data asas dalam C boleh dibahagikan kepada tiga:

int = integer

float = nombor nyata

char = aksara

2.1.1 Jenis Int

Jenis int mewakili integer. Terdapat pula kata-kata kunci tertentu yang boleh digabungkan kepada int untuk membentuk jenis-jenis data yang lebih khusus lagi. Kata-kata kunci berkenaan ialah:

short = nombor integer 16 bit

long = nombor integer 32 bit

unsigned = nombor integer tanpa tanda

Kata kunci short dan long menentukan saiz yang digunakan untuk menyimpan data yang ditakrifkan. Untuk Turbo C misalnya, menggunakan 16 bit ruang ingatan, int (tanpa short atau long) juga 16 bit dan long int menggunakan 32 bit ruang ingatan. Saiz ini bergantung kepada sistem perisian dan yang digunakan. Bagi sebuah komputer mini, mungkin menggunakan 64 bit ruang ingatan. Saiz data menentukan kejituan. Lebih banyak bilangan bit yang digunakan, lebih jitu sesuatu nombor (data) itu. Tetapi ini juga bermakna lebih banyak ruang ingatan yang digunakan. Dengan pengisytiharan int, short int dan long int, data-data yang diisytiharkan adalah bertanda (signed), iaitu samada positif

atau negatif. Contohnya untuk satu int bersaiz 16 bit, nilai-nilai yang boleh diwakili olehnya ialah dari -32768 hingga 32767. Kata kunci unsigned digunakan untuk mengabaikan tanda positif atau negatif ini. Dengan mengabaikan tanda ini, julat nilai nombor berkenaan menjadi dua kali ganda iaitu dari 0 hingga 65535, walaupun ruang ingatan yang digunakan masih lagi 16 bit. Kata kunci unsigned ditambah kepada kata-kata kunci di atas untuk membentuk kombinasi berikut:

unsigned int

unsigned short int

unsigned long int

Oleh kerana short int dan long int masing-masing boleh diringkaskan kepada short dan long, maka dari jenis integer kita ada:

int

short

long

unsigned int

unsigned short

unsigned long

2.1.2 Jenis Float

Jenis float adalah untuk mewakili nombor nyata, atau dalam sistem komputer ia dikenali sebagai nombor titik apungan (floating point numbers). Bentuk nombor-nombor float ialah seperti salah satu yang berikut:

3.14559

6.63e-34 atau 6.63E-34 (E menandakan eksponen 10)

100

0.001

Julat nombor nyata dan kejituan yang boleh diwakili oleh sesatu nombor float itu bergantung kepada ruang ingatan yang digunakannya, biasanya 16 bit. Jenis float mempunyai dua versi yang lebih besar, iaitu (double precision, 32 bit) dan long double (64 bit). Jadi hanya tiga jenis float sahaja yang kita ada, iaitu:

float

double

long double

Tiada jenis-jenis lain seperti "unsigned float", "short double" dan sebagainya.

2.1.3 Jenis Char

Jenis char adalah untuk mewakili aksara (abjad, angka, simbol dan sebagainya). Abjad ialah huruf-huruf ABC hinga Z. Angka ialah nombor-nombor 0123 hingga 9. Manakala simbol-simbol pupla ialah seperti @, #, $ dan sebagainya.

Jenis char boleh juga dianggap sebagai int yang terhad untuk nilai-nilai dari -128 hingga 127 kerana setiap aksara diwakili oleh satu kod (nombor) tertentu. Oleh itu kata kunci unsigned boleh digunakan bersama char (menjadi unsigned char) untuk mendapatkan nilai-nilai 0 hingga 255. Penggunaan char dan int boleh ditukar-ganti jika nilai yang digunakan adalah kecil, iaitu untuk integer yang bernilai antara –128 hingga 127 atau integer tak bertanda (unaigned int) yang bernilai antara 0 dan 255.

2.2 Pengisytiharan Pembolehubah

Setiap pemblehubah yang digunakan dalam aturcara C perlu diisytiharkan, seperti kebanyakan bahasa pengaturcaraan yang lain tetapi tidak seperti di dalam BASIC dan FORTRAN di mana pembolehubah- pembolehubahnya tidak perlu diisytiharkan.

Bentuk pengisytiharan pembolehubah C ialah:

jenis NamaPembolehubah;

Contohnya:

int nombor;

float peratus;

char gred;

unsigned long nombor_matrik;

Nama pembolehubah boleh terdiri dari sebarang huruf atau nombor. Kebanyakan simbol-simbol tidak boleh digunakan dalam nama pembolehubah (dan sebarang pengcam lain) kerana ia mempunyai kegunaan-kegunaan tertentu dalam atrucara C. Tetapi simbol garis bawah (under-score '_') adalah satu pengecualian dan ia sering digunakan dalam nama-nama pembolehubah yang panjang. Contohnya seperti pembolehubah nombor_matrik di atas. Dengan menggunakan nama-nama yang panjang dan deskriptif seperti ini, kegunaan pembolehubah berkenaan akan lebih mudah difahami

2.3 Pengawalan Dan Umpukan

Semasa sesuatu pembolehubah itu disytiharkan, ia boleh diberi nilai yang tertentu. Pengisytiharan dengan cara ini dinamakan pememulaan (initialization). Contoh- contohnya adalah seperti berikut:

int nombor = 1;

float peratus = 0.5;

char gred = 'A';

Dengan menggunakan pememulaan seperti ini, pembolehubah-pembolehubah berkenaan boleh digunakan terus tanpa memerlukan umpukan terlebih dahulu. Umpukan (assignment) dilakukan sama seperti pememulaan tetapi tanpa kata kunci jenisnya. Jadi contoh-contoh berikut adalah untuk umpukan:

nombor = 2;

peratus = 10;

gred = 'B';

Nilai-nilai dari pembolehubah lain, hasil dari pengiraan, hasil dari sesuatu fungsi tertentu dan sebagainya boleh juga diumpukkan kepada sesuatu pembolehubah itu. Ini juga boleh dilakukan semasa pememulaan. Jadi contoh-contoh berikut ini adalah sah:

int x = wherex();

int y = wherey();

int a = x + y;

x = wherex() + a;

y = x + a;

Nota: Andaikan wherex() dan wherey() adalah fungsi- fungsi yang tertakrif.

2.4 Operator Dan Fungsi Matematik

Operator digunakan untuk melakukan pengiraan dan manipulasi data yang mudah. Dalam C terdapat operator-operator aritmatik dan tokokan (increment). Selain dari itu terdapat pula fungsi-fungsi matematik piawai yang boleh digunakan untuk pengiraan yang lebih kompleks (Lihat BAB 3).

2.4.1 Operator Aritmatik

Senarai operator aritmatik C adalah seperti dalam bahasa-bahasa pengaturcaraan yang lain juga, iaitu:

OPERASI SIMBOL CONTOH

Tambah (plus) + x = a + b

Tolak (minus) - x = a - b

Darab (multiply) * x = a * b

Bahagi (divide) / x = a / b

Baki (mod) % x = a % b

NOTA: x ialah pembolehubah; a dan b boleh jadi pembolehubah atau nilai yang sama jenis dengan x.

Penulisan operasi yang ditunjukkan di atas adalah yang sebaik-baiknya. Akan tetapi, aksara-aksara ruang tidak memberi kesan ke atas hasil operasi. Pernyataan-pernyataan berikut adalah setara:

a+b

a+ b

a + b

Cara yang terbaik ialah menulisnya supaya tidak menimbulkan kekeliruan, seperti dalam contoh terakhir yang ditunjukkan di atas.

2.4.2 Menggabungkan Operator Aritmatik

Operasi-operasi aritmatik boleh digabungkan untuk membuat pengiraan yang lebih kompleks. Apabila digabungkan, pengiraan dilakukan dalam jujukan tertentu. Operator-operator darab dan bahagi diberi keutamaan berbanding operator-operator tambah dan tolak. Contohnya:

6 + 4 / 2 = 6 + 2 = 8

( 6 + 4 ) / 2 = 10 / 2 = 5

Perhatikan bahawa kita menggunakan tanda kurungan untuk mengubah jujukan pengiraan. Dalam contoh pertama di atas, 4 dibahagi 2, kemudian ditambah 6. Dalam contoh kedua, 6 ditambah 4, kemudian jumlahnya dibahagi dengan 2.

2.4.2 Operator Tokokan

Operator-operator tokokan adalah singkatan kepada operator-operator aritmatik yang telah dinyatakan sebelum ini. Berikut ialah senarai operator-operator tokokan:

SIMBOL CONTOH OPERASI SETARA

++ x++ x = x+1

-- x-- x = x-1

+= x += a x = x+a

-= x -= a x = x-a

*= x *= a x = x*a

/= x /= a x = x/a

%= x %= a x = x%a

Operator-operator tokokan tambahan dan tolakan boleh digabungkan dengan umpukan seperti berikut:

PERNYATAAN PERNYATAAN SETARA

y = a + x++; y = a + x;

y = x + 1;

y = a + x--; y = a + x;

y = x - 1;

Untuk melakukan tokokan terlebih dahulu sebelum umpukan, tanda ++ atau -- boleh diletakkan di depan pembolehubah seperti berikut:

PERNYATAAN PERNYATAAN SETARA

y = ++x; x = x + 1;

y = x;

y = a + ++x; x = x + 1;

y = a + a;

2.4.3 Penukaran Jenis Data

Dalam kes-kes tertentu kita perlu menukar jenis data dari satu jenis ke satu jenis yang lain, umpamanya kita ingin mengumpukkan hasil pengiraan yang menghasilkan nombor int kepada satu pembolehubah dari jenis float. Dalam C penukaran jenis data dilakukan seperti berikut:

(jenis) nilai;

dengan jenis ialah jenis data yang baru; dan nilai ialah satu nilai tertentu samada nombor, hasil operasi matematik dan sebagainya. Contohnya:

int a;

float x;

.

.

.

x = (float) a / x;

Dalam contoh di atas, nilai a ditukarkan kepada float terlebih dahulu sebelum dibahagikan dengan x. Hasilnya diumpukkan kepada x.

2.4.4 Fungsi Matematik

Terdapat beberapa fungsi matematik yang telah tertakrif secara piawai dalam perpustakaan C. Antaranya yang sering digunakan ialah

:

NAMA FUNGSI

cos kosinus

log logaritma asas e

sin sinus

sqr kuasa dua

sqrt punca kuasa dua

Prototaip bagi fungsi-fungsi ini terdapat dalam fail HEADER math.h. Oleh itu ia perlu disertakan dalam aturcara dengan menggunakan arahan prapemproses #include. Contohnya:

#include <math.h>

float x, y;

int a;

.

.

.

y = sqrt( x );

x = sin( (float) a );

Ia boleh juga digabungkan dengan operator-operator aritmatik seperti berikut:

y = 1.5 + sqrt( x ) * sin ( x );

Senarai lengkap fungsi-fungsi matematik yang biasanya terdapat dalam math.lib disenaraikan dalam lampiran teks ini.

2.5 Pemalar

Pemalar ialah nilai yang tetap, berlawanan dengan pembolehubah yang mana nilainya kita hendak ubah-ubahkan bergantung kepada keadaan. Antara pemalar-pemalar yang kita gunakan dalam masalah-masalah matematik dan kejuruteraan ialah seperti nilai PI, pemalar Planck, Boltzman, halaju cahaya, cas elektron dan sebagainya. Jika nilai-nilai ini ingin kita gunakan dalam pengiraan, kita boleh isytiharkannya sebagai pemalar. Terdapat dua cara untuk mengisytiharkan pemalar dalam C. Cara pertama adalah dengan menggunakan #define dan cara yang kedua ialah dengan kata kunci const.

Untuk mengisytiharkan nilai PI misalnya kita boleh tulis:

#define PI = 3.1415927

atau:

const float pi = 3.1415927;

Perhatikan bahawa dengan #define kita tidak menggunakan tanda umpukan (=) dan tidak perlu meletakkan tanda ';' di hujungnya. Ini adalah kerana #define adalah arahan pengkompilasi dan bukan sebahagian dari pernyataan C. Semasa penyusunan aturcara, pengkompilasi akan menggantikan semua pemalar yang ditakrifkan dengan #define ke dalam aturcara. Jadi, kesannya adalah sama seperti kita menulis pemalar itu terus ke dalam aturcara, cuma di sini, kerja kita diringkaskan sedikit. Kita tidak perlu menulis angka-angka yang sebenar tetapi hanya perlu menulis nama yang kita beri kepadanya sahaja. Contohnya sebagai ganti menulis pengiraan seperti berikut:

x = sin( 3.145927 );

kita boleh menulisnya begini sahaja:

x = sin( PI );

Perhatikan juga bahawa dengan arahan #define kita tidak perlu menulis jenis data pemalar yang kita takrifkan. Ini juga kerana sebab yang dinyatakan tadi. Bagi const kita perlu menyatakan jenis data pemalar kita kerana pernyataan ini melibatkan peruntukan ruang ingatan seperti pembolehubah juga. Cuma bezanya kita tidak boleh mengubah nilai pemalar sebagaimana yang boleh kita lakukan terhadap pembolehubah melalui umpukan. Jika jenis pemalar tidak dinyatakan, maka pemalar itu dianggap sebagai pemalar int. Berikut adalah beberapa contoh pengisytiharan pemalar menggunakan const:

const maxint = 32767;

const char gred = 'A';

const char nama[] = "AHMAD";

(NOTA: Lihat tajuk RENTETAN untuk penerangan tentang pengisytiharan nama[] di atas)

Penggunaan sebenar #define adalah lebih luas daripada mentakrifkan pemalar dalam bentuk nombor sahaja. Malah ia boleh digunakan untuk menggantikan baris-baris aturcara. Berikut adalah beberapa contoh pentakrifan dengan #define:

#define MAXINT 32767

#define GRED A

#define NAMA AHMAD

#define FORMAT "\n %d %f "

(NOTA: Lihat aturcara contoh 7 untuk penerangan tentang pentakrifan FORMAT di atas)

Adalah menjadi kelaziman iaitu pemalar-pemalar yang ditakrif dengan menggunakan #define ditulis dalam huruf-huruf besar dan yang diisytihar dengan const ditulis dalam huruf-huruf kecil seperti pembolehubah-pembolehubah lain. Ini adalah bertujuan untuk memudahkan penulis aturcara dan juga orang lain memahami penggunaan pemalar-pemalar berkenaan.

2.6 Tatasusunan

Tatasusunan (arrays) ialah senarai berindeks bagi satu-satu jenis data tertentu. Contohnya tatasusunan bagi int ialah satu senarai nombor-nombor integer yang boleh kita rujuk melalui indeksnya. Bentuk tatasusunan dalam C ialah seperti berikut:

jenis nama[saiz];

dengan jenis ialah jenis data yang digunakan untuk membentuk tatasusunan; nama ialah nama yang diberikan kepada tatasusunan; dan saiz ialah bilangan unsur di dalam tatasusunan. Contohnya untuk membentuk tatasusunan sepuluh integer kita tulis pengisytiharan berikut:

int nombor[10];

Di sini nombor ialah nama bagi tatasusunan kita. Kita boleh berikan nilai awal kepada tatasusunan ini melalui pememulaan seperti berikut:

int nombor = { 10,20,30,40,50,60,70,80,90,100 };

Untuk menggunakan satu dari unsur dalam tatasusunan di atas, kita rujuk melalui indeksnya. Indeks pertama adalah bermula dari sifar dan indeks terakhir adalah saiz - 1. Jadi untuk tatasusunan nombor <di atas, kita ada indeks dari sifar hingga sembilan:

nombor[0]

nombor[1]

nombor[2]

.

.

.

nombor[9]

Kita boleh umpukkan nilai dari unsur pertama kepada satu pembolehubah integer x misalnya:

x = nombor[0];

atau kita beri nilai baru kepadanya:

nombor[0] = 111;

Secara umum, kita boleh menggunakan tatasusunan seperti menggunakan data jenis biasa, tetapi ia mempunyai kelebihan iaitu boleh dirujuk melalui indeksnya. (Lihat aturcara contoh 15 untuk melihat penggunaan tatasusunan dalam aturcara). Kita boleh membentuk tatasusunan dari jenis-jenis data lain seperti char dan float; termasuk jenis-jenis data penunjuk dan struktur (lihat BAB 5).

2.7 Rentetan Aksara (string of characters)

Di dalam C tidak terdapat jenis data rentetan (string) secara khusus tetapi ianya boleh dibina di dalam C dengan mengisytiharkan pembolehubah aksara dalam bentuk tatasusunan (array) atau penunjuk (pointer). Di sini penggunaan tatasusunan akan ditunjukkan kerana ia lebih mudah difahami. Penggunaan penunjuk ditunjukkan dalam BAB 5.

Bentuk pengisytiharan pembolehubah dari jenis rentetan ialah seperti berikut:

char NamaRentetan[n];

dengan n mewakili panjang rentetan (dalam bilangan aksara) yang dikehendaki.

Contohnya:

char nama[30];

char alamat[100];

Pembolehubah-pembolehubah yang diisytiharkan dari jenis rentetan boleh digunakan dengan merujuk kepada namanya sahaja. Akan tetapi oleh kerana rentetan adalah suatu tatasusunan, operasi-operasi umpukan yang biasa tidak boleh dilakukan ke atasnya, kecuali semasa pememulaan. Contohnya, kita boleh tulis pernyataan seperti ini:

char nama[30] = "Ahmad";

tetapi tidak umpukan seperti ini:

nama = "Ahmad";

Untuk tujuan umpukan seperti ini, kita perlu menggunakan fungsi khas strcpy() (string copy):

strcpy( nama, "Ahmad" );

Semasa pememulaan, jika panjang rentetan tidak dinyatakan, panjang rentetan asal akan diambil sebagai panjang rentetan berkenaan. Contohnya:

char poskod[] = "43000";

Panjang rentetan poskod di atas ialah lima aksara.

2.8 Fungsi-fungsi Piawai

Dua fungsi asas untuk dalam C ialah printf() untuk output dan scanf() input. Fungsi-fungsi ini dinamakan sedemikian rupa kerana pada asasnya, printf() mencetak (print) sesuatu pada paparan dalam bentuk tertentu (formatted) dan scanf() pula mengimbas (scan) sesuatu dari , juga dalam bentuk tertentu.

NOTA: Dalam C++, fungsi-fungsi printf() dan scanf() biasanya digantikan dengan pernyataan-pernyataan cout dan cin.

2.8.1 Fungsi printf()

Bentuk penggunaan fungsi printf() ialah:

printf( <format>, <item>, <item>, ... );

Dengan:

<format> ialah suatu string yang mengandungi arahan-arahan format yang tertentu.

<item> ialah data-data yang hendak dipaparkan.

Contohnya, untuk memaparkan nilai suatu pembolehubah jumlah dari jenis int, kita boleh tulis seperti ini:

printf("\n Jumlah = %d \n", jumlah);

Dengan:

"\n Jumlah = %d \n" ialah string format.

jumlah ialah data yang hendak dipaparkan.

Jika kita perhatikan dalam string format di atas, kita akan dapati selain dari perkataan "Jumlah", terdapat beberapa simbol lain yang dinamakan spesifikasi format dan mempunyai makna yang tertentu kepada fungsi printf(). Simbol ‘%d’ menandakan bahawa data yang hendak dipaparkan ialah dari jenis integer dalam bentuk . (Tanda ‘%’ menandakan bahawa ada data yang dilampirkan, dan huruf ‘d’ yang digabungkan kepadanya menunjukkan bahawa data berkenaan adalah dari jenis integer dan hendak ditulis dalam bentuk .)

Simbol ‘\n’ pula mewakili aksara 13 dan 10 dalam ASCII iaitu aksara Carriage Return dan Line Feed. Secara ringkas, simbol ‘\n’ ini menyebabkan kurser bergerak ke permulaan baris output yang baru. Jika diletakkan di permulaan teks (iaitu: "\n Jumlah = %d" ), ia menyebabkan data dipaparkan pada baris yang baru. Jika diletakkan di hujung teks (iaitu: "Jumlah = %d \n" ), sebarang data yang berikutnya akan dipaparkan pada baris yang baru.

Simbol-simbol seperti ‘\n’, ‘\t’ dan sebagainya dinamakan jujukan escape (escape sequence). Ia mewakili aksara-aksara khas yang terdapat dalam kod ASCII. Jadual-jadual yang mengandungi senarai dan jujukan Escape terdapat dalam LAMPIRAN. Sila ambil perhatian bahawa oleh kerana tanda % digunakan untuk spesifikasi format, maka untuk memaparkan tanda % kita gunakan %%. Contohnya, jika air ialah pembolehubah integer dengan nilai 10, maka:

printf(" Kandungan air = %d %%", air);

memberikan output:

Kandungan air = 10 %

Bagi jujukan Escape pula, untuk memaparkan tanda '\' (back slash), kita perlu tulis '\\' iaitu menulis simbol back slash itu secara berganda atau dua kali berturut-turut; dan untuk memaparkan tanda '"' (double quote), kita perlu tulis '\"' (back slash + double quote).

2.8.2 Mengawal Format Output

Lebar ruang (medan) yang digunakan untuk memaparkan data (item) boleh ditentukan dengan meletakkan satu nombor antara tanda % dan huruf dalam spesifikasi format berkenaan. Contohnya untuk memaparkan satu pembolehubah (jumlah) dalam empat ruang aksara, kita boleh tulis:

printf(" Jumlah = %4d", jumlah);

Jika jumlah ialah 10, ini memberikan output:

Jumlah = __10

NOTA: Simbol '_' menunjukkan aksara ruang (space) yang ditambah oleh printf(). Dalam output sebenar, tanda ini tidak kelihatan. Ia diletakkan dalam contoh di atas untuk memudahkan penerangan sahaja.

Seterusnya untuk data dari jenis string:

printf(" %10s = %5 ", "Jumlah", jumlah );

memberikan output:

____Jumlah = ___10

Untuk data dari jenis float, selain dari menentukan , kita juga boleh menentukan bilangan yang akan digunakan. Nilai lalai bagi bilangan nombor perpuluhan ialah enam. Contohnya, jika kita ada pembolehubah float nilai = 32000, maka:

printf("%f", nilai);

printf("%9.2f", nilai);

printf("%e", nilai);

printf("%6.1e", nilai);

masing-masing akan memberikan output:

32000.000000 (6 angka perpuluhan)

_32000.00 (9 aksara, 2 angka perpuluhan)

3.200000e+004 (6 angka perpuluhan)

3200.0e+002 (6 aksara, 1 angka perpuluhan)

2.8.3 Fungsi-fungsi output yang lain

Selain dari printf(), terdapat dua lagi piawai, iaitu puts() dan putchar(). Fungsi puts() ialah untuk memaparkan string sahaja (put string). Ia menambah aksara '\n' di hujung string yang dipaparkan. Ini menyebabkan kurser bergerak ke baris baru selepas string berkenaan dipaparkan. Secara umum, puts("string") adalah setara dengan printf("string\n") atau printf("%s\n", "string").

Fungsi putchar() pula ialah untuk sahaja. Secara umum, putchar( ch ) adalah setara dengan printf("%c", ch).

Selain dari itu, terdapat variasi dari fungsi-fungsi output ini seperti fprintf(), fputs() dan fputchar(). Fungsi-fungsi ini digunakan untuk output ke saluran-saluran output yang lain selain daripada , seperti fail pada cakera, pangkalan sesiri, pencetak dan sebagainya. Contohnya untuk mencetak pada , kita boleh tulis seperti ini:

fprintf( stdprn, "Hasil = %d", a );

dengan stdprn ialah pengcam piawai untuk saluran ke pencetak.

2.8.4 Fungsi scanf()

Secara umum, scanf() ialah untuk membaca data dari konsol atau papan kunci (keyboard). Bentuk penggunaannya ialah:

scanf( <format>, <addr>, <addr>, ... );

Kecuali beberapa pengecualian kecil, bagi scanf() adalah sama seperti untuk printf() (Lihat jadual dalam LAMPIRAN). <addr> menunjukkan alamat kepada pembolehubah yang akan digunakan untuk menyimpan data yang dimasukkan. Untuk mendapatkan alamat sesuatu pembolehubah, tanda '&' diletakkan di hadapan nama pembolehubah itu. Contohnya:

scanf("%d", &a);

Dengan mengandaikan a sebagai pembolehubah int, maka &a adalah alamat baginya di dalam ingatan. Pembolehubah dari jenis string tidak memerlukan tanda '&' kerana nama bagi string merujuk kepada alamat. Jadi kita cuma perlu tulis:

scanf("%s", nama);

jika nama adalah satu pembolehubah string.

Untuk membaca beberapa nilai data, kita gunakan (sebagai contoh):

scanf("%d %d", &a, &B);

Ini membolehkan kita membaca dua integer dari konsol. Perhatikan: terdapat satu ruang (space) antara dua simbol %d di atas. Tanda ruang ini menandakan bahawa semasa input, nilai-nilai a dan b perlu dipisahkan oleh sekurang-kurangnya satu ruang (space), tab, "newline" ([Enter]) atau sebarang kombinasi dari ketiga-tiganya.

2.8.5 Fungsi-fungsi input yang lain

Fungsi-fungsi input yang lain ialah dan . Nyata sekali, gets() ialah untuk dan getch() untuk . Bentuk penggunaan kedua-duanya ialah:

gets( string );

ch = getch();

dengan string dan ch masing-masing ialah pembolehubah-pembolehubah string dan aksara. Perhatikan: getch() digunakan secara umpukan.

Fungsi gets() menerima masuk sebarang aksara yang ditaip pada , sehinggalah [Enter] ditekan. Perbezaan antara gets() dan scanf("%s") ialah: gets() membaca semua aksara, termasuk aksara ruang (space), tetapi scanf("%s"), walaupun ia juga membaca sehingga [Enter] ditekan, tetapi sebarang aksara selepas aksara ruang (space) pertama yang ditemuinya tidak akan disimpan. Contohnya jika kita ada:

scanf("%s", nama); dan gets(nama);

dan jika rentetan "Ali bin Ahmad" ditaipkan pada sebagai jawapan kepada fungsi-fungsi tadi, maka untuk kes printf(), pembolehubah nama akan mengadungi "Ali", tetapi untuk kes gets(), nama akan mengandungi keseluruhan "Ali bin Ahmad".

Fungsi getch() membaca satu aksara dari tanpa memaparkan aksara itu ke paparan. Variasi dari dari getch() ialah getche() (get character with echo). Dengannya, aksara yang ditaip akan dipaparkan ke paparan.

Variasi lain dari fungsi-fungsi input ini ialah fscanf(), fgets() dan sebagainya, untuk kegunaan pada saluran-saluran input yang lain selain daripada seperti fail pangkalan sesiri dan lain-lain.

Contoh-Contoh Aturcara 2

Contoh 2.1 : Pengisytiharan Pembolehubah

/* Aturcara kedua ini menunjukkan pengisytiharan

pembolehubah dan melaksanakan pengiraan mudah.

Hasilnya dipaparkan ke paparan. */

#include <stdio.h>

int x, x2;

main()

{

x = 12;

x2 = x * x;

printf("\n %d %d", x, x2);

}

Aturcara ini mendedahkan kita kepada proses yang dapat dilaksanakan oleh aturcara C. Dalam aturcara ini kita mengisytiharkan dua x dan x2 seperti berikut:

int x, x2;

Perhatikan bahawa pengisytiharan ini dilakukan di luar blok fungsi main(). Kita boleh juga meletakkan pengisytiharan ini di dalamnya iaitu di bahagian awal blok selepas sahaja tanda pembuka blok seperti berikut:

main()

{

int x, x2;

Untuk aturcara yang mudah dan ringkas seperti ini, ia tidak akan memberi sebarang perubahan terhadap pelaksanaan aturcara. Kita juga ada dua iaitu:

x = 12;

x2 = x * x;

Pernyataan yang pertama di atas boleh kita gabungkan dalam pengisytiharan untuk membentuk satu seperti berikut:

int x = 12, x2;

Akan tetapi adalah menjadi satu kelaziman dalam pengaturcaraan C bahawa pememulaan dan pengisytiharan biasa tidak digabungkan. Ini adalah untuk mengelakkan kekeliruan bagi pengaturcara. Bagi penyusun, ianya adalah sama sahaja samada kita menulisnya seperti di atas atau kita menulisnya dalam bentuk yang lebih jelas seperti berikut:

int x = 12;

int x2;

Jika kita gunakan pememulaan seperti salah satu cara tadi maka pernyataan umpukan kita yang pertama di atas tidak diperlukan lagi. Pernyataan umpukan yang kedua pula ialah satu pengiraan pendek. Ia mengarahkan komputer supaya mendarabkan nilai pembolehubah x (iaitu 12) dengan nilainya sendiri. Jadi kita melakukan 12 dengan 12. Hasil pendaraban ini pula disimpan ke dalam pembolehubah x2. Pernyataan (fungsi) printf() mencetak kedua-dua nilai x dan x2 ke paparan. Perhatikan bahawa terdapat dua simbol %d di dalamnya. Simbol-simbol ini menandakan bahawa kita ingin mencetak dua nombor integer dalam bentuk desimal. Dalam penyusun-penyusun C yang mengikut draf piawaian ANSI, kita boleh menggantikan %d dengan %i. Akan tetapi simbol %d telah digunakan sekian lama dan inilah simbol yang sering digunakan.

Perhatikan juga terdapat ruang-ruang antara simbol-simbol \n, %d yang pertama dan %d yang kedua. Ini hanyalah untuk mendapatkan output yang lebih jelas. Kita boleh menulis simbol-simbol ini rapat-rapat tetapi tiada faedahnya.

3. STUKTUR ATURCARA C

3.1 Struktur Umum Aturcara C

Sebuah aturcara C terdiri daripada sekurang-kurangnya sebuah fungsi yang diberi nama main() dan boleh ditambah dengan beberapa fungsi lain dengan nama-nama yang tersendiri. Sebuah aturcara yang mudah mungkin mempunyai fungsi main() sahaja, manakala sebuah aturcara yang kompleks mungkin mengandungi sebuah fungsi main() serta berpuluh-puluh malah beratus-ratus fungsi lain.

main()

fungsi_1()

fungsi_2()

:

:

fungsi_n()

Rajah 4.1: Format Aturcara C

Sebuah fungsi pula, samada main() atau yang lainnya, adalah terdiri daripada bahagian kepala dan badan. Bahagian kepala mengandungi takrifan-takrifan, arahan-arahan preprosesor, berkenaan dan sebagainya. Secara umum, bahagian kepala ini mengandungi persiapan-persiapan awal bagi fungsi berkenaan. Bahagian badan pula hampir keseluruhannya mengandungi kod-kod aturcara bagi fungsi berkenaan. Terdapat juga takrifan-takrifan pembolehubah dan sebagainya yang diletakkan di bahagian badan sesuatu fungsi itu. Secara umum, bahagian badan ini menentukan apakah sebenarnya yang dilakukan oleh fungsi berkenaan.

Sebuah aturcara yang mudah, yang mengandungi hanya sebuah fungsi, iaitu fungsi main(), mungkin mempunyai struktur seperti ini:

#include

main()

{

int bil;

:

:

}

Rajah 4.2: Bentuk Sebuah Aturcara Mudah

Penerangan:

#include Arahan preprocessor untuk menyelit fail yang dinamakan dalam tanda <> (dalam contoh tadi, stdio.h)

main() Nama fungsi utama. Setiap aturcara C yang dilaksanakan, akan dimulakan dari fungsi main().

{ Di sini ia digunakan untuk membuka blok bagi fungsi main().

int bil; Pernyataan C untuk pememulaan, seperti yang diterangkan dalam BAB 2.

Perkara-perkara penting yang perlu diperhatikan di sini ialah:

1. Nama fungsi mesti mengandungi tanda '(' dan ')'. Tanda ini sebenarnya ialah untuk mengisi parameter-parameter fungsi berkenaan. Oleh kerana fungsi main() yang kita gunakan ini tidak berparameter, maka ia dibiarkan kosong.

2. Setiap fungsi mesti mempunyai sekurang-kurangnya sepasang pembuka dan penutup blok.

3. Setiap satu pernyataan yang lengkap, seperti pememulaan dan panggilan kepada fungsi printf() dalam contoh tadi, mesti diakhiri dengan tanda ';'.

3.2 Komen

Untuk membuatkan aturcara mudah difahami oleh pengaturcara sendiri atau sesiapa yang membacanya, komen boleh ditambah. Di dalam C, komen diletakkan di antara tanda '/*' dan tanda '*/'. Contohnya:

/* Ini satu komen */

/* Ini

juga

satu komen

*/

Perhatikan: sesuatu komen itu tidak semestinya berada dalam satu baris sahaja. Tetapi penggunaan komen yang terlalu panjang dan melewati beberapa baris hendaklah dengan hati-hati.

Ada kompiler yang membenarkan komen-komen diletakkan secara bersarang seperti ini:

/* Komen pertama

/* komen kedua */

penutup komen pertama */

Ada kompiler yang tidak membenarkannya, dan ada yang memberi pilihan kepada pengguna. Secara umum, elakkan dari menggunakan komen bersarang ini, kecuali jika anda yakin ianya dibenarkan.

Komen-komen biasanya digunakan untuk menerangkan tujuan dan penggunaan aturcara, penggunaan sesuatu pernyataan, menandakan penutup- dan sebagainya. (Lihat contoh-contoh aturcara dalam BAB 6 untuk melihat bagaimana komen-komen diletakkan).

3.3 Kawalan Aturcara

Apabila set pernyataan-pernyataan dalam sesuatu aturcara itu dilaksanakan, ia akan dimulakan dari bahagian atas set itu dan bergerak satu per satu ke bawah set, sehingga ke pernyataan yang terakhir. Selain dari itu, semua bahasa pengaturcaraan mempunyai pernyataan-pernyataan kawalan yang boleh digunakan untuk mengubah haluan pelaksanaan sesuatu aturcara itu. Ada pernyataan kawalan yang membolehkan pangaturcara membuat gelungan (loops), iaitu melaksanakan satu set pernyataan tertentu berkali-kali; membuat pilihan, membuat perbandingan dan sebagainya. Di dalam C terdapat empat set pernyataan kawalan, iaitu if & else, for, do & while, dan switch & case.

3.3.1 Pernyataan Kawalan if dan else

Pernyataan if dan else digunakan untuk melakukan perbandingan dan pilihan. Contohnya jika kita hendak menentukan samada sesuatu nombor itu positif, kita boleh membandingnya dengan sifar. Jika nombor itu lebih besar dari sifar misalnya, kita boleh laksanakan satu set pernyataan tertentu. Kita boleh gunakan pernyataan if untuk tujuan ini. Bentuk penggunaan if ialah seperti berikut:

if ( syarat ) pernyataan;

Penerangan:

1. 1. Syarat biasanya ialah satu perbandingan, tetapi boleh jadi juga hasil dari sesuatu operasi matematik atau suatu fungsi.

2. 2. Pernyataan ialah sebarang pernyataan atau set pernyataan-pernyataan C.

Contoh:

if ( a > 0 ) printf("\n a positif");

Dalam contoh di atas, perbandingan dibuat antara pembolehubah a dan sifar, iaitu samada a lebih besar daripada sifar atau tidak. Jika a lebih besar daripada sifar, maka pernyataan (fungsi) printf() selepas perbandingan itu akan dilaksanakan. Operator-operator yang boleh digunakan untuk perbandingan ialah:

OPERATOR MAKNA CONTOH

== Persamaan if ( a == b )

< Kurang daripada if ( a < b )

> Lebih daripada if ( a > b )

<= Kurang atau sama if ( a <= b )

>= Lebih atau sama if ( a >= b )

!= Tidak sama dengan if ( a != b )

Jadual 3.1: Operator-operator Perbandingan

Pernyataan if boleh digabungkan dengan pernyataan else untuk menyambung proses perbandingannya. Bentuk pernyataan if dan else ialah:

if ( syarat )

pernyataan1;

else

pernyataan2;

Jika syarat adalah benar, maka pernyataan1 akan dilaksanakan, dan jika tidak pernyataan2 akan dilaksanakan. Contohnya:

if ( x == 0 )

prinf(“\n X adalah sifar”);

else

printf(“\n X bukan sifar”);

NI SERBA SEDIKIT YG AKU DPT BLE KONGSI SESAMA.. SORRY PASAL AKU DAH LUPA LINK KAT MANA..

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...