nota fundamental of programming

54
Konsep Asas Pengaturcaraan Data – fakta mentah yang kurang bernilai. Cth: nama pelajar, no matrik, jumlah jam kredit Data Alphanumerik – nombor, huruf, lain2 karektor Data imej – imej grafik atau gambar Data audio – bunyi, ton Data video – imej atau gambar bergerak Maklumat – data yang telah dibentuk dan diberi makna dan menjadi berguna kepada manusia. Data/maklumat boleh disimpan di dalam ingatan komputer (sementara atau kekal). Komputer melaksanakan proses pengiraan, arithmetik dan logik. Kawalan ke atas komputer dilakukan oleh manusia melalui aturcara komputer. Aturcara komputer terdiri daripada satu set arahan yang mengawal pemprosesan data di dalam komputer. Terdapat 3 elemen pengaturcaraan iaitu input, proses dan output. Input – Bahagian yang menerima data. Mengandungi maklumat yang diterima daripada peranti input (papan kekunci, tetikus, mikrofon, scanner....) Proses – Bahagian yang memproses data. Menjalankan operasi pengiraan aritmetik dan keputusan logik. Output – Bahagian yang menghantar/mengeluarkan data. Mengambil maklumat yang diproses oleh komputer dan menghantar data ke peranti output. (screen, printer, networks...) Teknik dan Alatan dalam Pembangunan Sistem Perkakasan : PC, stesen kerja, pencetak dan sebagainya Perisian : pengkompil, penyunting teks, bahasa pengaturcaraan, pakej perisian dan lain-lain. CASE (KP berbantu komputer) perisian yang menyediakan pendekatan berstrukturkan kejuruteraan kombinasi alatan perisian & metodologi membantu dalam membangunkan sistem perisian Peralatan : Peralatan akan membantu memudahkan proses pembangunan sistem dengan mengautomatikan sesetengah proses. Ia juga mengurangkan masa dan kos yang diperlukan untuk membangunkan sistem. Ia juga meningkatkan kualiti sistem yang dibangunkan. Contoh peralatan yang biasa digunakan:- Peralatan pengurusan projek - cth boleh melukis carta Gantt dan PERT. INPUT OUTPUT PROSES

Upload: ajmain-amain

Post on 04-Aug-2015

322 views

Category:

Documents


19 download

TRANSCRIPT

Page 1: Nota Fundamental of Programming

Konsep Asas Pengaturcaraan Data – fakta mentah yang kurang bernilai. Cth: nama pelajar, no matrik, jumlah jam kredit

• Data Alphanumerik – nombor, huruf, lain2 karektor

• Data imej – imej grafik atau gambar

• Data audio – bunyi, ton

• Data video – imej atau gambar bergerak Maklumat – data yang telah dibentuk dan diberi makna dan menjadi berguna kepada manusia. Data/maklumat boleh disimpan di dalam ingatan komputer (sementara atau kekal). Komputer melaksanakan proses pengiraan, arithmetik dan logik. Kawalan ke atas komputer dilakukan oleh manusia melalui aturcara komputer. Aturcara komputer terdiri daripada satu set arahan yang mengawal pemprosesan data di dalam komputer. Terdapat 3 elemen pengaturcaraan iaitu input, proses dan output.

• Input – Bahagian yang menerima data. Mengandungi maklumat yang diterima daripada peranti input (papan kekunci, tetikus, mikrofon, scanner....)

• Proses – Bahagian yang memproses data. Menjalankan operasi pengiraan aritmetik dan keputusan logik.

• Output – Bahagian yang menghantar/mengeluarkan data. Mengambil maklumat yang diproses oleh komputer dan menghantar data ke peranti output. (screen, printer, networks...)

Teknik dan Alatan dalam Pembangunan Sistem

Perkakasan :

– PC, stesen kerja, pencetak dan sebagainya

Perisian :

• pengkompil, penyunting teks, bahasa pengaturcaraan, pakej perisian dan lain-lain.

• CASE (KP berbantu komputer)

– perisian yang menyediakan pendekatan berstrukturkan kejuruteraan

– kombinasi alatan perisian & metodologi

– membantu dalam membangunkan sistem perisian

Peralatan :

• Peralatan akan membantu memudahkan proses pembangunan sistem dengan mengautomatikan

sesetengah proses.

• Ia juga mengurangkan masa dan kos yang diperlukan untuk membangunkan sistem.

• Ia juga meningkatkan kualiti sistem yang dibangunkan.

• Contoh peralatan yang biasa digunakan:-

– Peralatan pengurusan projek - cth boleh melukis carta Gantt dan PERT.

INPUT OUTPUT

PROSES

Page 2: Nota Fundamental of Programming

– Sistem pengurusan pangkalan data

membantu organisasi mengurus maklumat dalam bentuk lebih tersesun dan flaksibel.

– Kamus Data - Juga dipanggil ‘repository data’ mem

data atau maklumat.

– Peralatan melukis

– Peralatan CASE

dalam banyak cara.

Kenapa perlu guna teknik-teknik dan peralatan:

• Untuk menghasilkan perisian yang bebas ralat d

• Untuk menghasilkan perisian yang memenuhi permintaan pengguna.

• Untuk menghasilkan sistem yang lebih cekap dan pantas.

• Untuk menghasilkan perisian yang mudah difahami dan dibuat pengubahsuaian.

• Untuk menghasilkan perisian yang didokumentasi dengan baik untuk memudahkan

penyelenggaraan

• Untuk menghasilkan perisian yang mudah digunakan oleh pengguna.

• Untuk menghasilkan perisian yang dihantar (disiapkan) pada masa yang ditetapkan.

• Untuk menghasilkan perisian yang

Sistem pengurusan pangkalan data - cth Microsoft Access, Fox Pro dan Orecle dapat

membantu organisasi mengurus maklumat dalam bentuk lebih tersesun dan flaksibel.

Juga dipanggil ‘repository data’ membantu bagi mengurus penyimpanan

data atau maklumat.

Peralatan melukis - cth Visio Professional boleh membantu melukis ERD dan DFD.

Peralatan CASE - cth sistem Architect, Rational Rose dan Visible Analyst membantu

cara.

teknik dan peralatan:-

Untuk menghasilkan perisian yang bebas ralat dan mengeluarkan input yang salah.

Untuk menghasilkan perisian yang memenuhi permintaan pengguna.

Untuk menghasilkan sistem yang lebih cekap dan pantas.

Untuk menghasilkan perisian yang mudah difahami dan dibuat pengubahsuaian.

perisian yang didokumentasi dengan baik untuk memudahkan

Untuk menghasilkan perisian yang mudah digunakan oleh pengguna.

Untuk menghasilkan perisian yang dihantar (disiapkan) pada masa yang ditetapkan.

Untuk menghasilkan perisian yang tidak mahal/membazir

cth Microsoft Access, Fox Pro dan Orecle dapat

membantu organisasi mengurus maklumat dalam bentuk lebih tersesun dan flaksibel.

bantu bagi mengurus penyimpanan

cth Visio Professional boleh membantu melukis ERD dan DFD.

cth sistem Architect, Rational Rose dan Visible Analyst membantu

an mengeluarkan input yang salah.

Untuk menghasilkan perisian yang mudah difahami dan dibuat pengubahsuaian.

perisian yang didokumentasi dengan baik untuk memudahkan

Untuk menghasilkan perisian yang dihantar (disiapkan) pada masa yang ditetapkan.

Page 3: Nota Fundamental of Programming

Proses Pembangunan Perisian

Proses adalah satu siri langkah-langkah yang melibatkan aktiviti, kekangan, dan sumber-sumber yang

akan menghasilkan output yang dingini. Proses pembangunan perisian merupakan aktiviti utama dlm

pembangunan perisian dan ia juga disebut sebagai kita hayat perisian (software life cycle). Metodologi,

paradigma, kaedah, teknik & alatan diperlukan dalam membangunkan sesuatu perisian.

Fasa ialah peringkat dalam pembangunan projek perisian. Setiap fasa mempunyai aktiviti tertentu dan ia

boleh terdiri daripada fasa yang terpisah atau bertindih.

Batu tanda atau lebih dikenali sebagai milestone. Ia merupakan titik akhir bagi sesuatu fasa. Milestone

menerangkan siri hasilan yang boleh dilihat secara rasmi. Ia penting bagi penilaian projek iaitu dengan

membuat penilaian output bagi setiap fasa.

Penilaian projek boleh menentukan perkara berikut sama ada :

• pembangunan perisian boleh diteruskan ke fasa berikutnya

• perlukan sebarang perubahan

• keseluruhan projek diberhentikan

Fasa umum kitar hayat pembangunan perisian terdiri daripada :

• Perancangan – Merupakan subset kepada aktiviti pengurusan projek. Perancangan diperlukan

untuk menentukan objektif umum, skop kerja, sumber (peralatan & kakitangan), kos dan jadual

perancangan kerja).

“Perancangan yang baik dapat menghasilkan spekulasi kos & jadual kerja yang rapi & tepat

sebagaimana yang dijangkakan”

• Analisa keperluan – Menentukan APA yang mesti sistem lakukan.Diperlukan untuk menyelidiki

keperluan perisian dengan mengenalpasti keperluan pengguna, organisasi dan piawaian. Hasil

daripada analisa keperluan, kita boleh menentukan fungsi yang mesti ada pada sistem.

“Merupakan rangka cadangan sistem”

• Rekabentuk sistem - Menentukan BAGAIMANA sistem akan menyelesaikan masalah. Ia

menterjemahkan fungsi kepada komponen perisian dengan memecahkan masalah kepada modul

berstruktur. Modul ialah pecahan sistem terkecil yang digambarkan dalam bentuk algoritma/kod

pseudo.

• Implimentasi - MENTERJEMAH rekabentuk kpd kod aturcara. Ia biasanya dilakukan oleh

pengaturcara. Fasa ini adalah fasa yang paling mudah jika fasa analisa & rekabentuk dilakukan

dengan betul dan lengkap.

• Verifikasi & validasi - Penyemakan & penentusahan ke atas spesifikasi keperluan, rekabentuk

sistem dan aturcara. Fasa ini dilakukan untuk mengenalpasti ralat

• Operasi & penyelenggaraan – Dilakukan setelah perisian diserahkan kpd pengguna. Operasi

meliputi aktiviti latihan kepada pengguna, manual dan sokongan teknikal. Penyelenggaraan

dilakukan apabila terdapat keperluan utk perubahan ke atas perisian yg telah beroperasi samada

ralat atau peningkatan keupayaan,

Page 4: Nota Fundamental of Programming

Paradigma ialah keseluruhan proses pembangunan perisian. Ia mengandungi beberapa fasa tertakrif.

Setiap fasa mempunyai matlamat dan produk.

Cth: fasa Analisa dlm model Air Terjun

• matlamat: menakrifkan keperluan pengguna

• produk: model sistem, definisi & spesifikasi keperluan Teknik ialah tatacara utk menyelesaikan tugas. Setiap teknik mempunyai :

• Teknik digunakan untuk membentuk aktiviti-aktiviti pembangunan perisian spesifik

• Teknik-teknik yang biasa digunakan seperti:- – Model Konseptual – Model Entiti-Hubungan – Normalization – Rajah Aliran Data (DFD) – Pokok keputusan dan Jadual keputusan – Spesifikasi proses/English berstruktur – Rajah Struktur – Objek Orientasi – Dan lain-lain

• Setiap teknik di atas mungkin digunakan pada fasa-fasa tertentu dalam kitar hayat pembangunan perisian.

Kaedah ialah cara sistematik yang terdiri dari langkah-langkah bersiri (fasa), dibantu oleh beberapa teknik, peraturan & garis panduan utk menghasilkan sistem. Setiap fasa mempunyai input, output dan tujuan yang tertakrif. Kaedah yang berlainan boleh digunakan dalam fasa yang berlainan di dalam paradigma pembangunan perisian. Kaedah yg sistematik mempunyai panduan tentang prosedur, dokumentasi, piawaian, batu tanda dan lain-lain. Cth kaedah : UML, OMT, SADM Teknik-teknik dalam SADM : DFD, ERD “Pelbagai teknik digunakan utk menggambarkan perspektif yg berlainan”

Metodologi ialah gabungan paradigma, kaedah, polisi, prosedur, peraturan, piawai, teknik, alatan, bahasa pengaturcaraan & metodologi lain yang digunakan untuk menganalisa keperluan & rekabentuk sistem.

Model-Model Proses Pembangunan Perisian Tujuan :

• Mewujudkan pemahaman yang sama terhadap aktiviti, sumber dan kekangan

• Membantu mencari ketidakkonsistenan , pertindihan (redundancy) di dalam proses

• Model sepatutnya mencerminkan matlamat pembangunan

• Setiap proses mestilah disesuaikan untuk situasi khusus di mana ia akan digunakan

Contoh model-model proses:

• Model Air Terjun

• Model V

• Model Prototaip

• Model Peningkatan

• Model Transformasi

• Model Spiral

Page 5: Nota Fundamental of Programming

Model Air Terjun

Kebaikan :

• Mudah dterangkan kepada pelanggan yang tidak biasa dengan pembangunan perisian

• Model ini boleh memberikan pembangun perisian pandangan tahappembangunan

• Kebanyakan model lain adalah ubahsuai dar Kelemahan :

• Tidak menggambarkan cara kod dihasilkan difahami

• Tidak menyediakan panduan untuk mengendalikan sebarang perubahan yang berlaku pada produk dan aktiviti

• Gagal untuk mengganggap perisian sebagai satu proses penyelesaian masalah terjun adalah hasil dari proses pembangunan perkakasan

Mudah dterangkan kepada pelanggan yang tidak biasa dengan pembangunan perisian

Model ini boleh memberikan pembangun perisian pandangan tahap-tinggi semasa proses

Kebanyakan model lain adalah ubahsuai dari model air terjun

gambarkan cara kod dihasilkan kecuali sesuatu perisian itu sudah benar

Tidak menyediakan panduan untuk mengendalikan sebarang perubahan yang berlaku pada

Gagal untuk mengganggap perisian sebagai satu proses penyelesaian masalah terjun adalah hasil dari proses pembangunan perkakasan

Mudah dterangkan kepada pelanggan yang tidak biasa dengan pembangunan perisian

tinggi semasa proses

kecuali sesuatu perisian itu sudah benar-benar

Tidak menyediakan panduan untuk mengendalikan sebarang perubahan yang berlaku pada

Gagal untuk mengganggap perisian sebagai satu proses penyelesaian masalah – model air

Page 6: Nota Fundamental of Programming

Model V

Model ini merupakan variasi model air terjun yang menunjukkan bagaimana aktiviti pengujian yang dijalankan berkait dengan analisa dan rekabentuk.ketepatan program & mengesahkan rekakeperluan sistem dengan menghubungkaitkan aktiviti pengujian dengan setiap spesifikasi

erupakan variasi model air terjun yang menunjukkan bagaimana aktiviti pengujian yang

dengan analisa dan rekabentuk. Pengujian unit dan integrasi merujuk kepada tepatan program & mengesahkan rekabentuk program. Ujian penerimaan adalah untuk menilai

keperluan sistem dengan menghubungkaitkan aktiviti pengujian dengan setiap spesifikasi

erupakan variasi model air terjun yang menunjukkan bagaimana aktiviti pengujian yang Pengujian unit dan integrasi merujuk kepada

Ujian penerimaan adalah untuk menilai keperluan sistem dengan menghubungkaitkan aktiviti pengujian dengan setiap spesifikasi elemen

Page 7: Nota Fundamental of Programming

Model Prototaip Model Prototaip membina rangka sistem yang meliputiVersi perisian dirancang ~ prototaip bagi mewakili keseluruhan fungsi difahami)

Pendekatan yang digunakan dalam Model Prototaip

• Prototaip penjelajahan – Prototaip yang disahkan (produk teras) akan digunakan sebagai komponen k

yang ingin dibangunkan – Perubahan akan dibuat di

• Prototaip pakai-buang – Prototaip yang

• tidak menepati kehendak pengguna • masa & kos untu

Kelebihan Model Prototaip

– keperluan pengguna y– tingkatkan peranan pengguna ~ kualiti

Kelemahan Model Prototaip:

• Menyukarkan aktiviti pengurusan projek

• Sistem yang dihasilkan kurang berstruktur. Oleh itu, ia

• Memerlukan jurutera perisian yg pakar & bermotivasi tinggi

Model Prototaip membina rangka sistem yang meliputi keperluan pengguna pada Versi perisian dirancang ~ prototaip bagi mewakili keseluruhan fungsi dan bahagian kr

Pendekatan yang digunakan dalam Model Prototaip :

g disahkan (produk teras) akan digunakan sebagai komponen kg ingin dibangunkan

Perubahan akan dibuat di peringkat pembangunan sebenar sistem

tidak menepati kehendak pengguna uk memperbaiki tinggi

keperluan pengguna yang tidak lengkap tingkatkan peranan pengguna ~ kualiti

Menyukarkan aktiviti pengurusan projek kerana terdapat ulangan pembaikan prototaip

ang dihasilkan kurang berstruktur. Oleh itu, ia menyukarkan proses penyenggaraan

Memerlukan jurutera perisian yg pakar & bermotivasi tinggi

pada peringkat awal bahagian kritikal (sukar

g disahkan (produk teras) akan digunakan sebagai komponen kepada perisian

ulangan pembaikan prototaip

menyukarkan proses penyenggaraan

Page 8: Nota Fundamental of Programming

Model Peningkatan

Model ini sesuai untuk projek yan

penyerahan (versi). Justifikasi pendekatan

– beberapa fungsi perlu disiapkan dulu

– saiz kumpulan

– kekangan peruntukan kewangan

Model Transformasi Formal

Model ini mewakilkan keperluan pengguna dalam

Kebaikan :

– tepat, formal & ketat

– sesuai utk sistem yg kritikal

Kelemahan :

– masa pembangunan panjang

– kurang tenaga mahir

– spesifikasi tidak difahami oleh pengguna

ang besar & kos terhad. Sistem dibahagikan kepad

ustifikasi pendekatan :

beberapa fungsi perlu disiapkan dulu

kekangan peruntukan kewangan

Formal

Model ini mewakilkan keperluan pengguna dalam bentuk spesifikasi formal.

sesuai utk sistem yg kritikal

masa pembangunan panjang

spesifikasi tidak difahami oleh pengguna

da beberapa peringkat

Page 9: Nota Fundamental of Programming

Model Spiral

Model ini menggabungkan proses pembang

pembangunan. Terdapat 4 sektor utama

– Menentukan objektif, alternatif & kekangan

– Penilaian alternatif, mengenalpasti & menyelesaikan risiko

– Membangun & mengesahkan produk

– Merancang fasa berikut

Sektor dalam setiap gelung wakili aktiviti di setiap fasa

enggabungkan proses pembangunan perisian & analisis risiko. Setiap

Terdapat 4 sektor utama :

Menentukan objektif, alternatif & kekangan

Penilaian alternatif, mengenalpasti & menyelesaikan risiko

gun & mengesahkan produk

Merancang fasa berikut

m setiap gelung wakili aktiviti di setiap fasa

Setiap gelung wakili fasa

Page 10: Nota Fundamental of Programming

Sektor A

• Beberapa peringkat perancangan

• Mengkaji

– objektif fasa yg dilaksanakan

– alternatif untuk mencapai objektif

– kekangan yang dihadapi u

Sektor B

• Setiap alternatif dinilai

• Kenalpasti risiko yang dihadapi

• Kenalpasti penyelesaian terhadap risiko

Sektor C

• Model pembangunan dipilih

• Tidak mewajibkan penggunaan satu model pembangunan d

pembangunan sistem

Sektor D

• Menilai produk yang dihasilkan

• Kebenaran untuk meneruskan aktiviti k

A->B B->C C->D D->A ke peringkat yg lebih tinggi

Jadual perancangan & kos berubah meng

Kelebihan :

– Penyenggaraan sistem untuk

– Model yang terancang

– Mengelakkan kemungkinan masalah

Beberapa peringkat perancangan

objektif fasa yg dilaksanakan

k mencapai objektif

g dihadapi untuk setiap alternatif

g dihadapi

Kenalpasti penyelesaian terhadap risiko

Model pembangunan dipilih

Tidak mewajibkan penggunaan satu model pembangunan dalam satu kitaran @ keseluruhan

g dihasilkan

k meneruskan aktiviti kepada peringkat seterusnya

>A ke peringkat yg lebih tinggi

dual perancangan & kos berubah menggambarkan status semasa

nyenggaraan sistem untuk meningkatkan keupayaan

g terancang

Mengelakkan kemungkinan masalah

m satu kitaran @ keseluruhan

Page 11: Nota Fundamental of Programming

Kelemahan :

– Analisis risiko sukar yang perlukan pakar

– Ulangan tidak mudah dikawal

– Masih belum diterima umum

Penyelesaian Masalah Aturcara ditulis untuk menyelesaikan sesuatu masalah. Pengaturcara perlu merancang supaya arahan-arahan ditulis secara sistematik supaya masalah dapat diselesaikan secara cekap oleh pemproses Contoh: 1. Apakah masalah ?

Cari purata bagi 3 nombor yang diberi.

2. Merancang – Apa yang perlu dibuat ?

3. Kod

Begin Int a, b, c, jum, purata; Read (a,b,c); Jum = a + b + c; Purata = jum/3; Write(a,b,c); End;

Masalah dalam pembangunan perisian

Untuk memastikan perisian adalah reliable (iaitu membuat kerja mengikut apa yang diperlukan)

Page 12: Nota Fundamental of Programming

− Contoh : mungkin aturcara ditulis untuk mengira gred 1000 pelajar tetapi 1 juta pelajar telah didaftar dan perisian pengiraan gred tidak dapat mengira pelajar selebihnya

Bila perisian berskala besar diperlukan bagi menyelesaikan masalah-masalah lebih kompleks, banyak langkah-langkah perlu di ambil supaya perisian yang dibangunkan adalah reliable seperti mengadakan pasukan pengaturcara dengan tugas-tugas tertentu dan banyak pengujian dibuat sebelum perisian diguna

Pasukan pembangun perisian:

− Juruanalisa sistem merancang, merekabentuk projek pembangunan perisian − Pengaturcara yang bekerja berkumpulan untuk mengkod − Kumpulan software quality assurance bagi menentukan pengukur-pengukur yang dapat

memastikan bahawa perisian adalah reliable

Jenis ujian: − Alpha version - prototaip perisian yang biasanya lengkap pada permulaan schedule

pembangunan projek / bila perisian diguna oleh organisasi sendiri dan kesilapan akan dilaporkan dan akan dibetulkan

− Beta version - pelepasan produk setelah mencapai standard pengujian yang minima / perisian diuji oleh pengguna-pengguna sebenar sebelum ia sebenarnya dijual

Page 13: Nota Fundamental of Programming

Sejarah ringkas C++ 1969 – Bermula dengan BCPL (Basic Combined Programming Language) yang ditulis oleh Richards di

Universiti Cambridge, Amerika Syarikat. Bahasa BCPL adalah bahasa aras rendah yang saling berkait dengan arkitektur komputer.

1970 – Thompson menulis bahasa seakan BCPL untuk siskomputer DEC PDP-7 dan menamakannya sebagai bahasa B.

1978 – Apabila perisian yang lebih mesra pengguna diperlukan, bahasa BCPL dan B tidak lagi sesuai digunakan kerana pengaturcara perlukan bahasa berstruktur yang mampelbagai struktur data. C telah dipopularkan oleh Kernighan dan Ritchie dari Makmal Bell di Amerika Syarikat melalui penerbitan piawai untuk semua pengkompil C selama beberapa dekad. Iaoleh Ritchie untuk sistem operasi UNIX pada komputer DEC PDPberkembang bersama UNIX dan kini digunakan dalam semua sistem komputer.

1983 – Banyak pengkompil C yang direka untuk memenuhi kehNational Standard Institute) ditugaskan untuk menyelaraskan bahasa C.

1988 - Hasil penyelarasan oleh jawatankuasa tersebut, ANSI C diperkenalkan dan diterima sebagai bahasa piawai. Stroustrup memperkenalkan bahasa C++objek.

Aras Bahasa Pengaturcaraan KomputerBahasa pengaturcaraan dikategorikan kepada 4 jenis :1. Bahasa Mesin 2. Bahasa Himpunan (Assembly)3. Bahasa Aras Tinggi 4. Bahasa Pengaturcaraan Pembangun Aplikasi Pantas (Bahasa RAD) Bahasa Mesin Bahasa mesin adalah bahasa asal komputer yang ditentukan oleh jenis perkakasan yang ada dalam komputer tersebut dan juga dikenali sebagai bahasa aras rendah. Komputer hanya boleh memahami

ngan BCPL (Basic Combined Programming Language) yang ditulis oleh Richards di Universiti Cambridge, Amerika Syarikat. Bahasa BCPL adalah bahasa aras rendah yang saling berkait dengan arkitektur komputer. Thompson menulis bahasa seakan BCPL untuk sistem UNIX yang awalnya digunakan dalam

7 dan menamakannya sebagai bahasa B. Apabila perisian yang lebih mesra pengguna diperlukan, bahasa BCPL dan B tidak lagi sesuai digunakan kerana pengaturcara perlukan bahasa berstruktur yang mampu mengendalikan pelbagai struktur data. C telah dipopularkan oleh Kernighan dan Ritchie dari Makmal Bell di Amerika Syarikat melalui penerbitan The C Programming Language dan buku ini telah menjadi piawai untuk semua pengkompil C selama beberapa dekad. Ia dikenali sebagai K&R C dan ditulis oleh Ritchie untuk sistem operasi UNIX pada komputer DEC PDP-11. Di peringkat permulaan, C berkembang bersama UNIX dan kini digunakan dalam semua sistem komputer.Banyak pengkompil C yang direka untuk memenuhi kehendak pengaturcara dan ANSI (American National Standard Institute) ditugaskan untuk menyelaraskan bahasa C. Hasil penyelarasan oleh jawatankuasa tersebut, ANSI C diperkenalkan dan diterima sebagai bahasa piawai. Stroustrup memperkenalkan bahasa C++ iaitu bahasa yang berorientasikan

Aras Bahasa Pengaturcaraan Komputer Bahasa pengaturcaraan dikategorikan kepada 4 jenis :

(Assembly)

Bahasa Pengaturcaraan Pembangun Aplikasi Pantas (Bahasa RAD)

Bahasa mesin adalah bahasa asal komputer yang ditentukan oleh jenis perkakasan yang ada dalam komputer tersebut dan juga dikenali sebagai bahasa aras rendah. Komputer hanya boleh memahami

ngan BCPL (Basic Combined Programming Language) yang ditulis oleh Richards di Universiti Cambridge, Amerika Syarikat. Bahasa BCPL adalah bahasa aras rendah yang saling

tem UNIX yang awalnya digunakan dalam

Apabila perisian yang lebih mesra pengguna diperlukan, bahasa BCPL dan B tidak lagi sesuai pu mengendalikan

pelbagai struktur data. C telah dipopularkan oleh Kernighan dan Ritchie dari Makmal Bell di dan buku ini telah menjadi

dikenali sebagai K&R C dan ditulis 11. Di peringkat permulaan, C

berkembang bersama UNIX dan kini digunakan dalam semua sistem komputer. endak pengaturcara dan ANSI (American

Hasil penyelarasan oleh jawatankuasa tersebut, ANSI C diperkenalkan dan diterima sebagai

iaitu bahasa yang berorientasikan

Bahasa mesin adalah bahasa asal komputer yang ditentukan oleh jenis perkakasan yang ada dalam komputer tersebut dan juga dikenali sebagai bahasa aras rendah. Komputer hanya boleh memahami

Page 14: Nota Fundamental of Programming

bahasa mesinnya sendiri. Ia terdiri daripada himpunan rentetan yang dikurangkan ke nombor binari iaitu 1 dan 0 yang boleh difahami oleh komputer secara terus. Contoh kod sumber bahasa mesin:

Walaupun bahasa ini difahami oleh komputer tanpa perlu penterjemah, ia memakan masa untuk menulisnya dan masa yang diperlukan untuk memahaminya adalah lebih lama. Anda juga mudah membuat kesilapan ketika menaip kod kerana ia sendiri terdiri daripada dua nombor sahaja. Bahasa Himpunan Pengaturcara mula menggunakan bahasa seakan singkatan Bahasa Inggeris yang dinamakan Bahasa Himpunan. Penterjemah bahasa ini ke bahasa mesin dikenali sebagai penghimpun (Assembler). Antara bahasa himpunan yang digunakan ialah Z80 language, Intel 8086, Motorola 68000 dan sebagainya. Contoh bahasa himpunan (Z80) yang membuat operasi pendaraban 4x5 :

Antara kelebihan bahasa himpunan ialah lebih mudah dibaca dan lebih mudah ditulis. Walau bagaimanapun, bahasa himpunan juga mempunyai kelemahan iaitu aturcara yang ditulis lebih perlahan untuk dijalankan dan memakan ruang yang lebih banyak dari Bahasa Mesin. Anda tidak dapat menggunakan aturcara dalam Bahasa Himpunan dalam komputer yang lain. Selain itu, menulis aturcara dalam Bahasa Himpunan juga memakan masa yang lama da cerewet. Bahasa Aras Tinggi Untuk mempercepatkan lagi proses pengaturcara komputer (programmer), Bahasa Aras Tinggi diperkenalkan. Walaupun hanya dengan pernyataan yang ringkas, banyak tugas dapat dijalankan. Perisian penterjemah yang dikenali sebagai pengkompil (compiler) digunakan untuk menukar aturcara komputer dalam Bahasa Aras Tinggi ke Bahasa Mesin yang difahami oleh komputer. Berikut adalah contoh aturcara dalam bahasa pengaturcaraan C++ :

Antara kelebihan Bahasa Aras Tinggi ialah :

• Anda berupaya untuk menulis aturcara dengan lebih pantas jika dibandingkan dengan Bahasa Mesin dan Bahasa Himpunan.

• Mempelajari serta menguasai Bahasa Pengaturcaraan Aras Tinggi adalah lebih cepat.

• Membaca dan menyunting Bahasa Aras Tinggi adalah lebih mudah.

• Aturcara yang dihasilkan adalah “mudah alih” dan boleh digunakan dalam pelbagai jenis komputer.

0010 1010 0001 1101

0011 1100 1010 1111

0101 0110 1101 0101

1101 1111 0010 1001

ld a,5h

ld d,a

ld a,0h

lagi:

add a,4h

jrnz lagi

end

#include <iostream.h>

Int main ()

{

cout <<”Syabas!”;

return 0;

}

Page 15: Nota Fundamental of Programming

Bahasa Aras Tinggi juga mempunyai kelemahan seperti :

• Menghasilkan aturcara yang lebih panjang dan perlahan jika dibandingkan dengan Bahasa Mesin dan Bahasa Himpunan.

• Seakan-akan Bahasa Inggeris yang menyebabkan menulis aturcara pengkompil amat sukar. Contoh Bahasa Aras Tinggi :

• Pascal

• BASIC

• Ada

• C

• C++

• JAVA

Bahasa Pengaturcaraan Pembangun Aplikasi Pantas Kebanyakan bahasa pengaturcaraan yang digunakan tidak lama dahulu dicipta ketika komputer hanya menggunakan teks. Kini dengan pengunaan Sistem Pengendalian Windows, perngaturcara perlu memasukkan perintah untuk mengawal saiz tetingkap, tetikus dan sebagainya. Windows OS berfungsi menggunakan GUI atau Antara Muka Pengguna Grafik. GUI adalah singkatan untuk Graphical User Interface. Oleh itu, pengaturcara memerlukan bahasa aturcara yang memberi kemudahan untuk menghasilkan aturcara yang mengandungi GUI. Untuk membantu pengaturcara membina antara muka GUI, bahasa RAD diperkenalkan (Rapid Application Development).

Tiga contoh bahasa Pengaturcaraan RAD ialah :

• Visual BASIC (berasal dari bahasa BASIC)

• Delphi (berasal dari bahasa Pascal)

• C++ Builder (berasal dari bahasa C++) Kelebihan Bahasa Pengaturcaraan RAD ialah :

• Berupaya menulis aturcara dengan antaramuka GUI dengan lebih pantas jika dibandingkan dengan bahasa asalnya.

• RAD memudahkan proses menghasilkan aturcara yang mengandungi antaramuka GUI. Jadi, anda dapat menumpukan perhatian terhadap menghasilkan isi kandungan aturcara.

• Oleh sebab Bahasa RAD berasal daripada Bahasa Aras Tinggi yang pernah dipelajari, menguasai Bahasa RAD adalah lebih mudah dan pantas.

Page 16: Nota Fundamental of Programming

Menukar Bahasa Pengaturcaraan C++ ke Kod Boleh Laku

Proses Pengkompilan

Penterjemahan Proses menterjemah dilakukan oleh penterjemah (interpreter) iaitu program yang melaksanakan program lain. Ia merupakan kaedah alternatif untuk menukarkan kod sumber kepada bahasa mesin. Setiap arahan kod sumber akan diterjemahkan ke dalam bahasa mesin dan dilancarkan serta merta. Penterjemah harus disediakan bersama-sama dengan setiap program pada setiap sistem yang akan digunakan. Kebanyakan penterjemah adalah fail yang diletakkan di dalam direktori yang sama dengan kod sumber supaya perisian hasil daripada proses penterjemahan dapat dilancarkan terus seperti perisian yang terhasil dari proses pengkompilan.

Kod boleh laku juga dikenali sebagai bahasa aras rendah iaitu bahasa yang difahami komputer. Pengkompilan Pengkompil adalah program yang menterjemahkan kod sumber ke dalam kod objek. Pengkompil akan melihat arahan secara keseluruhan, menyusun dan menukarnya ke dalam bahasa mesin. Proses di mana penukaran kod sumber aras tinggi kepada kod boleh laku dikenali sebagai proses pengkompilan. Apabila anda mengkompil kod sumber (source code), ia akan menghasilkan kod mentah (kod aras rendah) yang dikenali sebagai kod objek (object code). Anda perlu memautkan semua kod objek untuk menghasilkan kod boleh laku biasanya dengan sambungan .exe dan ini akan dilakukan oleh pemaut (Linker). Tugas utama pemaut adalah menghasilkan sebuah fail kod boleh laku daripada beberapa modul kod objek. Proses pengkompilan dilakukan menggunakan pengkompil. Contoh pengkompil C++ ialah Borland C++ dan Microsoft Visual C++. Fasa dalam proses pengkompilan:

• Fasa 1 – Pengkompil kenalpasti semua arahan dalam kod sumber dan menyemaknya samaada terdapat kesalahan atau pepijat dari sudut penulisan dan logik aturcara (sintaks dan semantik).

• Fasa 2 – Pengkompil menterjemahkan setiap arahan ke dalam bahasa mesin dan disimpan dalam kod objek.

• Fasa 3 - Kod objek akan dipaut dan digabungkan dengan aturcara lain sebelumnya dan aturcara sistem pengoperasian – runtime library.

• Fasa 4 – Fail yang telah selesai dihubungkan (executable file - *.exe) disimpan secara bersendiri dan bersedia untuk beroperasi dan digunakan.

Page 17: Nota Fundamental of Programming

Proses pengkompilan vs. penterjemahan.

Pengkompilan Penterjemahan

• Melihat keseluruhan kod sumber, mengumpul dan menyusunnya

• Menganalisa dan melaksanakan setiap baris kod secara berturutan.

• Hasilnya lebih efektif serta mudah disebarkan

• Kurang efektif dan agak sukar disebarkan

• Proses pembetulan sukar dilakukan serta merta

• Memudahkan proses pembetulan dilakukan serta merta

• Lebih cepat utk melarikan program tetapi masa lama utk mengkompil & melarikannya

• Ambil masa lebih lama utk melarikan program tapi lebih pantas utk terjemah

• Kurang sesuai

• Penting dlm kitaran edit-interpreting-debug utk proses prototaip atau ujian.

• Lebih cepat untuk melarikan kod yg telah dikompil – terus melaksanakan “action”

• Lambat untuk menterjemah setiap baris arahan – perlu analisis setiap penyataan

Istilah dalam pengaturcaraan Berikut adalah istilah yang biasa digunakan dalam pengaturcaraan :

• Kata kunci – perkataan yang dikhaskan oleh sesebuah bahasa pengaturcaraan. Jadi, anda tidak dibenarkan untuk menggunakannya untuk tujuan sendiri.

• Sintaks – peraturan yang mesti dipatuhi apabila menaip pernyataan dan lain binaa. Untuk elakkan ralat dalam sesuatu program, sintaks mesti dipatuhi.

• Semantik – merujuk kepada maksud di sebalik peraturan sintaks.

• Algoritma – penjelasan bagi setiap langkah ketika menyelesaikan masalah.

• Fungsi pustaka (library) – mengembangkan keupayaan asal bahasa pengaturcaraan dengan membekalkan banyak subrutin untuk matematik, pengendalian rentetan, pemprosesan fail dan sebagainya.

• Masa kompil – jangka waktu pengkompil membaca fail kod sumber dan menghasilkan kod objek. Ralat masa-kompil adalah ralat sintaks yang dikesan ketikan pengkompilan.

• Masa jalanan (run time) – jangka masa perisian dijalankan. Ralat masa jalanan adalah kesilapan sintaks yang ditemui dalam logic aturcara.

• Penyahpepijatan (debug) – proses mencari dan mambaiki ralat masa jalanan (atau pepijat)

Page 18: Nota Fundamental of Programming

Proses menulis aturcara

Terdapat tiga perkara yang mesti diambil kira sebelum menulis aturcara :

• Pengguna – siapakah yang akan menggunakan aturcara tersebut.

• Komputer – Komputer manakah yang akan dimuatkan dengan aturcara tersebut. Apakah sistem operasi yang akan digunakan. Adakah komputer tersebut berdiri sendiri atau rangkaian komputer pelanggan/pelayan(clientserver).

• Anda – Adakah anda akan menulis aturcara sendiri atau mengupah pengaturcara yang lain. Jika mengupah pengaturcara yang lain, bahagian manakah dalam aturcara yang akan dihasilkan oleh mereka.

Proses menulis aturcara memakan masa yang lama dan cerewet. Anda perlu tahu apa yang dikehendaki pelanggan terlebih dahulu untuk mengelakkan berlakunya perubahan spesifikasi aturcara pada saat-saat akhir yang akan memakan masa untuk membaiki aturcara tersebut. Sebelum menulis aturcara yang sebenar, perngaturcara menulis contoh dasar terlebih dahulu untuk ditunjukkan kepada pelanggan. Biasanya contoh dasar menunjukkan antaramuka perisian seperti tetingkap, kekotak dialog dan menu jatuh-bawah (window, dialog box, scroll down menu). Apabila pelanggan berpuas hati dengan contoh dasar yang anda bina, teruskan membina kod menggunakan contoh dasar sebagai panduan untuk menyiapkan kod aturcara. Algoritma digunakan untuk menyelesaikan masalah yang diberikan oleh pelanggan. Ia boleh dikategorikan kepada dua jenis iaitu kod pseudo dan carta alir. Kod Pseudo (Pseudo Code) Kod pseudo adalah satu garis panduan struktur aturcara supaya dapat melihat semua data yang mungkin diperlukan dalam penulisan kod aturcara yang sebenar. Contoh kod pseudo bagi penyelesaian masalah kepada purata 4 nombor integer. Kod pseudo :

1. Mula 2. Baca 4 nombor integer 3. Dapatkan purata bagi 4 nombor integer 4. Kira purata = (no1 + no2 + no3 + no4)/4 5. Cetak purata bagi 4 nombor integer. 6. Tamat

Carta Alir (Flow Chart) Satu lagi cara membina algoritma adalah dengan menggunakan grafik yang dikenali sebagai carta alir. Berikut adalah simbol yang digunakan dalam carta alir. Simbol Terminal Menandakan permulaan atau penamat sesuatu algoritma. Simbol permulaan mesti ditulis ‘Mula’ dan titik penamat ditulis ‘Tamat’. Simbol Proses Mewakili operasi seperti pengiraan dan pemberian nilai awal. Simbol Data Data input/output. Setiap simbol ini biasanya mengandungi arahan baca (input) dan cetak (output).

Page 19: Nota Fundamental of Programming

Simbol Keputusan Simbol ini biasanya mempunyai kata kunci jika. Aliran untuk benar adalah ke bucu bahagian bawah dan aliran palsu adalah dari bucu kanan simbol. Simbol Proses Pratakrif Modul atau fungsi yang telah sedia tertakrif dalam aturcara Simbol Penyambung Simbol ini mewakili penyambung dalam halaman yang sama. Simbol Penyambung Halaman Berbeza Simbol ini mewakili penyambung dalam halaman yang berlainan. Simbol aliran Menunjukkan aliran atau tertib langkah penyelesaian.

Contoh carta alir bagi penyelesaian masalah kepada purata 4 nombor integer.

MULA

Cetak Purata

Purata = (no1+no2+no3+no4)/4

Baca 4 nombor integer, no1, no2, no3, no4

TAMAT

Page 20: Nota Fundamental of Programming

TAJUK : PENGENALAN KEPADA C++ TUJUAN : Bab ini menerangkan proses menulis aturcara melalui pemahaman algoritma.

Struktur Bahasa C++

Pernyataan cout<<”Hello world!” menyuruh komputer menghantar rentetan Hello world! Ke objek cout. Objek cout adalah peranti output, biasanya skrin monitor. Katakunci endl digunakan untuk mengakhirkan cetakan dengan baris baru. Pernyataan return 0; menyebabkan fungsi main mengembalikan nilai sifar untuk memberitahu sistem pengendalian komputer bahasa aturcara diberhentikan tanpa sebarang ralat. Seterusnya, anda akan mempelajari struktur program yang dalam C++ .

Komen Komen digunakan untuk memasukkan nota ke dalam kod sumber (source code) untuk memberitahu apa yang aturcara buat. Ia boleh digunakan untuk memasukkan butiran mengenai aturcara atau pengaturcara yang menulis atau mengubah kod sumber tersebut. Ia penting untuk penyelenggaraan pada masa akan datang (future maintenance) kerana pengaturcara akan merujuk kepada komen yang terdapat dalam source code untuk memahami sesuatu aturcara dengan cepat dan tepat. Terdapat 2 jenis :

• Multi-line comment Bermula dengan /* dan diakhiri dengan */ Ia boleh digunakan untuk komen yang melebihi satu baris pernyataan. Contoh : /* Aturcara saya yang pertama */

• Single line comment Bermula dengan // Setiap baris komen perlu dimulakan dengan // Contoh : // Aturcara saya yang pertama

Arahan Prapemproses (Preprocessor) Tanda # dalam aturcara mewakili arahan prapemproses. Biasanya digunakan bersama fail pengepala.

Fail Pengepala (Header Files) ini mengandungi maklumat yang diperlukan untuk melarikan aturcara. Ia diproses oleh prapemproses (preprocessor) sebelum aturcara dikompil. Format untuk menggunakan header file ialah dengan menggunakan arahan #include. Dalam contoh di atas, fail iostream digunakan. IOSTREAM adalah singkatan bagi Input/Output Stream yang mengandungi fungsi dan katakunci yang diperlukan untuk fungsi input dan output. Dalam kes ini, cout.

#include <iostream.h>

//Aturcara ini memaparkan Hello world! pada skrin komputer

int main()

{

cout<<”Hello world!”<<endl;

return 0;

}

Page 21: Nota Fundamental of Programming

Penamat (Terminator) Setiap pernyataan mestilah diakhiri dengan penamat pernyataan iaitu koma bertindih (;) Jika tidak, anda

akan menerima utusan ralat ketika mengkompil aturcara tersebut. Pernyataan prapemproses tidak memerlukan tanda penamat. Fungsi Fungsi ialah satu blok pernyataan yang juga dikenali sebagai modul atau subrutin. Dalam C++, satu modul atau satu subrutin dikenali sebagai fungsi. Fungsi ditakrifkan oleh nama fungsi dan badan fungsi. Dalam contoh di atas, main() ialah nama fungsi. Badan fungsi diletakkan dalam kurungan { }. Apabila anda ingin menulis sesuatu aturcara, fungsi main wajib ada dalam aturcara anda. { mewakili permulaan bagi badan aturcara } mewakili pengakhiran bagi badan aturcara Terdapat pelbagai cara bagi menakrifkan fungsi. void main ( )

{

……

Arahan;

}

void main( )

{

……

Arahan;

return;

}

int main( )

{

……

Arahan;

return 0;

}

main( )

{

……

Arahan;

return 0;

}

Pernyataan Return Pernyataan return 0; menyebabkan fungsi main mengembalikan nilai sifar untuk memberitahu sistem pengendalian komputer bahasa aturcara diberhentikan tanpa sebarang ralat. Apabila aturcara anda mempunyai void pada nama fungsi, ia bermakna tiada nilai yang akan dipulangkan kepada Operating System (OS). Pernyataan return mengalih kawalan dari aturcara kepada OS.

Asas Input & Output Dalam iostream library, operasi input dan output bagi aturcara disokong oleh dua arus data iaitu cin untuk input (biasanya dikaitkan dengan keyboard) dan cout untuk output (biasanya terus kepada skrin). Dengan menggunakan dua arus data ini, anda boleh berinteraksi dengan pengguna dalam aturcara anda kerana mesej boleh dipaparkan pada skrin dan mampu untuk menerima data yang dimasukkan daripada keyboard. Tiga aliran piawai bagi input dan output ialah :

• cout //piawai output

• cin //piawai input

• cerr //piawai ralat

• Output – cout digunakan bersama pengendali output << yang akan menghantar nilai ungkapan di sebelah kanan ke objek di sebelah kiri. Nilai ungkapan dihantar keluar ke arus cout. cout<<“Selamat Datang”; cout<<100; cout<<variable_name; Format pertama digunakan untuk paparkan nilai rentetan aksara kepada skrin. Format kedua digunakan untuk paparkan nilai nombor. Format ketiga digunakan untuk paparkan nilai yang terdapat dalam variable_name.

• Input – cin digunakan bersama pengendali input >> dan diikuti oleh pembolehubah yang akan menyimpan data yang diterima. cin>>no_matrik;

Page 22: Nota Fundamental of Programming

Contoh : #include <iostream.h>

void main()

{

int i;

float x;

cout<< "Taipkan satu nilai perpuluhan:";

cin>> x;

cout<< "Taipkan satu nombor integer positif:"<<endl;

cin>> i;

if(i<1)

cerr <<"ralat i="<< i <<endl;

cout <<"i * x = "<< i *x;

}

Cuba anda perhatikan, penggunaan cout dan cerr kelihatan serupa tapi hakikatnya kedua-duanya mempunyai stream yang berbeza. Pengaturcara boleh menentukan arah tuju cout atau cerr contohnya meletakkan semua mesej yang normal dalam console atau fail “msg.log” dan semua mesej ralat dalam fail “error.log”. Anda akan mempelajari lebih lanjut mengenai penggunaan cerr dalam silibus pembelajaran yang lebih advance. Perkataan Simpanan (Reserved words) Dalam C++, terdapat satu set perkataan yang mempunyai maksud yang tersendiri dan tidak boleh digunakan untuk tujuan yang lain. Perkataan simpanan mesti ditulis dalam huruf kecil. Dalam contoh di atas, return adalah salah satu perkataan reserved yang terdapat dalam C++. Ia digunakan untuk

memulangkan satu nilai. Semua perkataan reserved ditaip dalam huruf kecil. Jadual 1 adalah senarai perkataan reserved.

asm else new this

auto enum operator throw

bool explicit private true

break export protected try

case extern public typedef

catch false register typeid

char float reinterpret_cast typename

class for return union

const friend short unsigned

const_cast goto signed using

continue if sizeof virtual

default inline static void

delete int static_cast volatile

do long struct wchar_t

Page 23: Nota Fundamental of Programming

double mutable switch while

dynamic_cast namespace template

Jadual 1

Set Aksara C++ (character set) Hampir semua komputer pada masa kini menggunakan set aksara ASCII (American Standard Code for Information Interchange) atau lebih dikenali sebagai ASCII code. Rentetan aksara mengandungi satu urutan aksara dan panjangnya bergantung kepada jumlah aksara yang terdapat dalam rentetan tersebut.

• Case-sensitive language Huruf besar, Uppercase letters (A-Z) dan huruf kecil, lowercase letters (a-z)

• Nombor/Digit 0-9

• Special characters !, #, {,@,*, %,-,/, ! dan lain-lain

Panjang rentetan aksara boleh dipaparkan dengan menggunakan fungsi pratakrif iaitu strlen() yang terdapat dalam header file string.h. Panjang rentetan aksara bersamaan dengan bilangan aksara

ditambah satu kerana aksara null ditambah pada penghujung rentetan. Aksara null menggunakan simbol \0. Contoh di bawah akan menghasilkan output 8. cout<<strlen(“Syabas!”);

Tanda ‘ ’ digunakan untuk mewakili satu aksara dan tanda “ ” untuk mewakili rentetan aksara. Contoh : ‘S’ mewakili aksara S dan menggunakan 1byte memory. “S” mewakili satu rentetan aksara dan menggunakan 2byte memory (1byte untuk aksara S dan 1byte untuk aksara null) Pengecam (Identifiers) Pengecam adalah takrifan pengguna. Ia digunakan untuk menyimpan nilai atau data dan boleh terdiri daripada pelbagai jenis data. Peraturan untuk menamakan pengecam :

• Maksimum 31 character

• Boleh digabungkan dengan huruf, digit dan underscores.

• Ruang kosong (blankspace) tidak dibenarkan untuk digunakan dalam pengecam.

• Aksara pertama dalam pengecam mestilah huruf

• Huruf besar dan huruf kecil dianggap mempunyai maksud yang berbeza (case sensitive).

Contoh pengecam yang sah: Monthly_Salary

Month1

email_add

gaji_tahun_ini

gaji

Contoh pengecam yang tidak sah: Monthly Salary

1stMonth

email@

gaji tahun ini

-gaji

Page 24: Nota Fundamental of Programming

Jenis Data Bahasa C++ menyediakan pelbagai jenis data untuk digunakan dalam aturcara. Selain itu, ia juga mempunyai jenis data terbitan seperti jenis tatasusunan, penunding dan struktur iaitu jenis data yang menghimpunkan jenis data mudah. Jenis data yang asas terdiri daripada jenis aksara (character), integer, titik apung (floating point) dan bool. Jenis data membezakan cara atau saiz data disimpan di dalam ingatan. Jenis data ini penting untuk membolehkan komputer mengenal pasti jenis data dan dapat melaksanakan pengendalian ke atasnya.

i. Character – char, signed char, unsigned char – Mewakili nilai bagi character (character code) yang diuruskan oleh program. Setiap

character mempunyai nilai kod yang tersendiri. ii. Signed integer

– signed char, signed short int, signed int & signed long int – mewakili nilai integer yang boleh menguruskan nilai negatif

iii. Unsigned integer – unsigned char, unsigned short int, unsigned int & unsigned long int – mewakili nilai integer yang tidak boleh menguruskan nilai negatif

iv. Floating – float, double & long double – mewakili nombor perpuluhan atau eksponen.

v. Bool – bool – mewakili nilai Boolean. Ia boleh terdiri daripada : Benar(True) or Salah(False).

Signed – bertanda Unsigned – tak bertanda

Jenis Data Contoh

int int i,j,k, 48, -97;

char char ch, ‘A’, ‘*’, ‘Apa tengok-tengok?’;

float float x=4.02;

double double gpa, x=3.23, 4.12; …………sehingga 16 titik perpuluhan

Jenis Keyword Saiz

dalam bit Julat (Value range)

Aksara Char 8 0 to 255

integer

Int 16 -32768 to 32767

Unsigned 16 0 to 65535

Long 32 0 to 4,294,967,295

Titik apung

(floating

Point)

Float 32 ± 3.4 · 10± 38

(~7 digits)

Double 64 ± 1.7 · 10± 308

(~15 digits)

Pembolehubah (Variables) Pembolehubah adalah salah satu jenis pengecam. Pembolehubah adalah pengecam yang nilainya boleh berubah semasa perlaksanaan aturcara. Ia mesti diisytiharkan sebelum boleh digunakan. Sintaks : data_type variable_list; data_type variable1,variable2, variable3,....., variableN;

Page 25: Nota Fundamental of Programming

Jenis Data Nama Pembolehubah

int jam;

char ch;

float balance;

Contoh pengisytiharan pembolehubah: int x;

float balance;

char ch;

int y;

Jika pembolehubah mempunyai jenis data yang sama, anda boleh menggabungkan kesemuanya dalam satu pengisytharan. int x, y, z;

char ch, chr;

float f, balance;

Pembolehubah boleh dikategorikan kepada:

• Pembolehubah setempat (local)

• Pembolehubah sejagat (global)

• Pembolehubah statik

• Pembolehubah luaran

Pembolehubah setempat Pembolehubah stempat merupakan privacy kepada definisi fungsi. Setiap fungsi mempunyai pemboleh ubahnya yang tersendiri dan boleh diubah tanpa mempengaruhi pembolehubah yang mempunyai nama yang sama di dalam fungsi yang lain. Untuk mengisytiharkan pemboleh ubah setempat, letakkan pengisytiharan di dalam definisi fungsi.

Contoh: #include <math.h>

double Pythagoras (double a, double b)

{

}

Pembolehubah sejagat (global) Pembolehubah global mempunnyai skop dan jangka hayat yang menambah ke seluruh fail. Pembolehubah global membolehkan fungsi-fungsi untuk berkomunikasi dengan berkongsi maklumat. Untuk mengisytiharkan pembolehubah global, takrifkan ia di luar ke semua fungsi.

Contoh:

#include <iostream.h>

#include <math.h>

void pythagoras (void);

void setvars (void);

double a,b,c;

void main( )

{

Page 26: Nota Fundamental of Programming

setvars( );

pythagoras( );

cout << “The hypotenus is “<<c;

}

void pythagoras (void)

{

c=sqrt (a*a+b*b)

}

void setvars(void)

{

}

Pembolehubah statik Pemboleh ubah statik menggabungkan kebolehlihatan pemboleh ubah tempatan dengan pemboleh ubah global. Ini berguna apabila kita mahukan pemboleh ubah tempatan yang mengekalkan nilainya di antara panggilan fungsi.

Contoh:

void print_vars (int i, int j, int k)

{

static int count=0;

cout << “The value is”<<i;

cout <<”The value is”<<j;

cout <<”The value is”<<k;

count = count +1;

cout <<”I’ve been called”<<count<<”time(s)”;

}

Pembolehubah luaran Apabila program membesar dari segi saiz, biasanya ia akan dibahagikan kepada beberapa modul, dikompilkan dan menyambungkan modul-modul tersebut. Setiap fungsi boleh dilihat secara automatik pada semua modul kecuali kita mengisytiharkannya sebagai “static”. Pembolehubah hanya boleh dilihat di dalam modul di mana ia diisytiharkan kecuali kita membuatnya sebagai pembolehubah luaran. Untuk mengisytiharkan pembolehubah luaran, isytiharkan pembolehubah sebagai global di dalam satu modul. Setiap modul yang mahu menggunakan pembolehubah ini, perlu memasukkan “extern” dalam pengisytiharan. Kita boleh juga memasukkan kesemua pembolehubah luaran ini ke dalam satu header file yang kemudiannya dimasukkan ke dalam setiap projek yang menggunakan pembolehubah tersebut. Mengumpukkan Nilai Awal Pembolehubah Pembolehubah global secara lalainya (default) akan diberi nilai sifar. Pembolehubah setempat secara lalainya (default) akan diberi sebarang nilai. Cara yang paling lazim digunakan untuk mendapatkan nilai pembolehubah adalah dengan menggunakan umpukan. Tanda ‘=’ disebut pengendali umpukan.

Sintaks: Variable_name = ungkapan;

Ungkapan dinilai dan hasilnya dikaitkan dengan variable_name. Pengendali persamaan pula menggunakan simbol ‘==’. Contohnya pernyataan x==y bermaksud x adalah sama dengan y.

Page 27: Nota Fundamental of Programming

Pemalar (Constant) Pemalar adalah salah satu dari pengecam. Berbeza dari pembolehubah, pemalar memegang nilai yang btidak berubah semasa perlaksanaan program. Pengisytiharan boleh dilakukan bergantung kepada jenis data yang menyimpan nilai pemalar. Sintaks :

#define namaPemalar nilaiPemalar

Perhatikan bahawa jenis data bagi pemalar tidak ditentukan (seperti int, float dan lain-lain). #define

menukarkan nilai namaPemalar kepada nilaiPemalar setiap kali prapemproses menemuinya. Oleh

kerana prapemproses dijalankan sebelum pengkompil, pengkompil anda hanya dapat mengesan nilaiPemalar setiap kali anda meletakkan namaPemalar.

Contoh :

#define PI 3.147

Pengisytiharan di atas adalah cara lama yang digunakan dalam C. Dalam C++, penggunaan const

adalah lebih sesuai.

Sintaks : const jenisData namaPemalar = nilaiPemalar;

Contoh : const int maksimum = 100;

Dengan pengisytiharan di atas, pengkompil dapat kuatkuasakan penggunaan pemalar mengikut jenis

data yang diisytiharkan.

Backslash character constant Backslash character constant juga dikenali sebagai ‘Escape sequence’. Ia digunakan bersama character constant yang lain.

Pemalar Enum Pemalar enum digunakan untuk mentakrifkan jenis pemalar baru yang mana nilainya terhad kepada satu set nilai yang telah ditetapkan. Sintaks:

enum namaPemalar{senarai nilai};

Contoh:

enum hari{ahad, isnin, selasa, rabu, khamis, jumaat, sabtu};

Setiap senarai nilai mempunyai nilai integer. Dalam contoh di atas, ahad diumpukkan dengan nilai 0,

isnin dengan nilai 1, selasa dengan nilai 2, rabu dengan nilai 3 dan seterusnya. Programmer boleh

Character Maksud

\n Baris baru (newline)

\t Tab mendatar

\a Bunyikan loceng komputer (beep)

\r Pembawa kembali. Kembalikan cursor ke permulaan baris pertama.

\’ Cetak aksara ’

\” Cetak aksara ”

Page 28: Nota Fundamental of Programming

juga menggunakan nilai khas dengan mengisytiharkan seperti berikut. Contohnya anda mahukan ahad

mengembalikan nilai 1, isnin mengembalikan nilai 2 dan seterusnya. enum hari{ahad=1, isnin, selasa, rabu, khamis, jumaat, sabtu};

Pemalar enum ditakrifkan supaya kod lebih mudah dibaca. Selepas pengisytiharan enum, anda boleh

menggunakan namaPemalar sebagai user-defined type. Di dalam C, keyword enum diperlukan semasa

pengisytiharan tetapi dalam C++, anda boleh mengabaikan keyword tersebut semasa pengisytiharan. Contoh:

hari{ahad=1, isnin, selasa, rabu, khamis, jumaat, sabtu};

Contoh program :

int main() {

enum WeekendDay {Saturday, Sunday};

enum Fruit {Apple, Orange, Pear};

WeekendDay w;

Fruit f=Pear;

w=Orange;

w=f;

}

Pernyataan (Expressions)

Pernyataan C++ yang paling mudah terdiri mengandungi single variable, literal constant atau symbolic constant. Contoh :

Pernyataan Penerangan

PI A symbolic constant (ditakrifkan di dalam program)

20 A literal constant

Rate A variable

Symbolic constant memegang nilai yang diumpukkan kepadanya semasa anda mengisytiharkan

constant.

Literal constant memegang nilainya yang tersendiri.

Variable memegang nilai semasa yang diumpukkan oleh program.

Pernyataan yang kompleks terdiri daripada pernyataan yang mudah yang dihubungkan dengan operator.

Contoh :

2 + 8

2 dan 8 adalah sub-pernyataan dan + adalah operator tokokan.

Page 29: Nota Fundamental of Programming

Pernyataan C++ yang lebih kompleks adalah seperti berikut:

1.25 / 8 + 5 * rate + rate * rate / cost

Apabila pernyataan mengandungi pelbagai operator, pernyataan ini akan dinilai bergantung kepada

keutamaan dalam operator (precedence)

Pengendali (Operators) Operator ialah symbol yang mengarahkan C++ untuk melakukan operasi atau tindakan ke atas satu atau lebih operand. Operand ialah sesuatu yang diambil tindakan oleh operand adalah pernyataan.

Pengendali Umpukan (Assignment OperatorPengedali umpukan ialah tanda ‘tanda ‘=’ di dalam algebra. Jika anda menulis x=y;

Di dalam C++ program, ia tidak bermaknadiumpukkan kepada x”. Dalam pernyataan C++, pernyataan tetapi di sebelah kiri mestilah terdiri daripada pembolehubah. Jadi, ia sepatutnya seperti di bawah.

pembolehubah = pernyataan;

Apabila dilaksanakan, pernyataan

Pengendali Matematik (MathematicalPengendali matematik melakukan operasi matematik seperti penambahan, penolakan, pendaraban dan

sebagainya. C++ mempunyai dua operator unari dan 5 operator binari.

Operator Unari

Ia dinamakan sebagai unary kerana hanya melibatkan satu operand.

Operator Simbol

Tokokan ++

Susutan --

Operator tokokan dan susutan hanya boleh digunakan bersama pembolehubah, tidak boleh digunakan

bersama constant.

++x; bersamaan dengan

--y; bersamaan dengan

Pernyataan C++ yang lebih kompleks adalah seperti berikut:

1.25 / 8 + 5 * rate + rate * rate / cost

Apabila pernyataan mengandungi pelbagai operator, pernyataan ini akan dinilai bergantung kepada

(precedence).

ialah symbol yang mengarahkan C++ untuk melakukan operasi atau tindakan ke atas satu atau sesuatu yang diambil tindakan oleh operator. Di dalam C++, semua

Pengendali Umpukan (Assignment Operators) Pengedali umpukan ialah tanda ‘=’ . Di dalam bahasa pengaturcaraan, tanda ‘=’ tidak sama dengan

di dalam algebra. Jika anda menulis

Di dalam C++ program, ia tidak bermakna “x sama dengan y” tetapi membawa maksud Dalam pernyataan C++, sebelah kanan boleh terdiri daripada apa

pernyataan tetapi di sebelah kiri mestilah terdiri daripada pembolehubah. Jadi, ia sepatutnya seperti di

lehubah = pernyataan;

pernyataan dinilai dan hasilnya akan diumpukkan kepada

Mathematical Operators) Pengendali matematik melakukan operasi matematik seperti penambahan, penolakan, pendaraban dan

ebagainya. C++ mempunyai dua operator unari dan 5 operator binari.

Ia dinamakan sebagai unary kerana hanya melibatkan satu operand.

Simbol Operasi

Tambah operand

dengan 1

Tolak operand dengan 1

Operator tokokan dan susutan hanya boleh digunakan bersama pembolehubah, tidak boleh digunakan

bersamaan dengan x=x+1;

bersamaan dengan y=y-1;

Apabila pernyataan mengandungi pelbagai operator, pernyataan ini akan dinilai bergantung kepada

ialah symbol yang mengarahkan C++ untuk melakukan operasi atau tindakan ke atas satu atau . Di dalam C++, semua

tidak sama dengan

tetapi membawa maksud “nilai y sebelah kanan boleh terdiri daripada apa-apa

pernyataan tetapi di sebelah kiri mestilah terdiri daripada pembolehubah. Jadi, ia sepatutnya seperti di

dinilai dan hasilnya akan diumpukkan kepada pembolehubah.

Pengendali matematik melakukan operasi matematik seperti penambahan, penolakan, pendaraban dan

Contoh

++x, x++

--x, x--

Operator tokokan dan susutan hanya boleh digunakan bersama pembolehubah, tidak boleh digunakan

Page 30: Nota Fundamental of Programming

Operator unari boleh diletakkan sebelum operand(prefix mode) atau selepas operand(postfix mode).

Kedua-dua mod ini tidak sama. Apa yang membezakan di antara kedua-dua mod ini ialah bila operasi

penambahan atau penolakan dilaksanakan.

Prefix mode - Operator tokokan atau susutan mengubah nilai operand sebelum digunakan.

Postfix mode - Operator tokokan atau susutan mengubah nilai operand selepas digunakan.

Contoh:

Prefix

x = 10;

y = ++x;

Selepas perlaksanaan, x=11, y=11

Postfix

x = 10;

y = x++;

Selepas perlaksanaan, x=11, y=10

Operator Binari

Ia dinamakan sebagai binari kerana melibatkan dua operand.

Operator Symbol Operasi Contoh

Tambah + Tambah dua operand x + y

Tolak - Tolak operand kedua daripada operand pertama x – y

Darab * Darab dua operand x * y

Bahagi / Bahagi operand pertama dengan operand kedua x / y

Modulus % Pulangkan baki apabila bahagi operand pertama

dengan operand kedua

x % y

Page 31: Nota Fundamental of Programming

Keutamaan Operator & Parentheses

Keutamaan operator (Operator precendence) ialah urutan bagi perlaksaan operasi. Setiap operasi ada

keutamaan yang spesifik. Apabila pernyataan dilaksanakan, operator yang mempunyai keutamaan paling

tinggi akan dilaksanakan terlebih dahulu.

Operators Relative precedence

++ -- 1

* / % 2

+ - 3

Jika pernyataan mengandungi level keutamaan yang sama, operator akan dilaksanakan mengikut urutan

dari kiri ke kanan.

Anda juga boleh mengubah urutan bagi penilaian dengan menggunakan parentheses iaitu symbol ().

Sub-pernyataan yang berada di dalam () akan dinilai terlebih dahulu tanpa mempedulikan keutamaan

operator yang lain.

Contoh:

x = (4 + 5) * 3;

Compound Assigment Operators

Compound Assigment Operators ini membolehkan untuk memendekkan kaedah penulisan dengan

menggabungkan operator binari dengan pengendali umpukan.

Contoh:

x = x + 5;

Dengan menggunakan operator ini, anda boleh menulisnya seperti di bawah

x += 5;

Apabila ditulis Membawa maksud

x *= y x = x * y

y -= z + 1 y = y - z + 1

a /= b a = a / b

x += y / 8 x = x + y / 8

y %= 3 y = y % 3

Page 32: Nota Fundamental of Programming

Pengendali Hubungan (Relational Operators)

Operator ini digunakan untuk membandingkan dua pernyataan.

Operator Simbol Pertanyaan Contoh

Sama dengan == Adakah operand 1 sama dengan operand 2? x == y

Lebih besar > Adakah operand 1 lebih besar dari operand

2?

x > y

Lebih kecil < Adakah operand 1 lebih kecil dari operand

2?

x < y

Lebih besar

atau sama

>= Adakah operand 1 lebih besar atau sama

dengan operand 2?

x >= y

Lebih kecil

atau sama

<= Adakah operand 1 lebih kecil atau sama

dengan operand 2?

x <= y

Tidak sama != Adakah operand 1 tidak sama dengan

operand 2?

x != y

Pernyataan yang mengandungi relational operator akan dinilai samada benar(True) atau salah(False).

“True” diambilkira sama dengan “yes”, juga dikira sama dengan 1.

“False” diambilkira sama dengan “no”, juga dikira sama dengan 0.

Keutamaan Relational Operators

Semua relational operator mempunyai keutamaan yang lebih rendah berbanding operator matematik. Contoh :

if (x + 5>y)

Pernyataan di atas membawa maksud, hasil tambah x dan 5 dibandingkan dengan nilai y.

Page 33: Nota Fundamental of Programming

Ia juga boleh ditulis dengan parentheses untuk lebih mudah dibaca. if ((x + 5)>y)

Operators Relative precedence

< <= > >= 1

!= == 2

Pengendali Logik (Logical Operators)

Pengedali logik bit membuat kira-kira logik dalam 1 bit. Gunakan 0 sebagai false, dan 1 sebagai true.

Anda juga boleh gunakan nilai selain dari 1 dan 0 tetapi kebiasaanya programmer menggunakan nilai 1

sebagai true.

Operator Simbol Contoh

AND && exp1 && exp2

OR || exp1 || exp2

NOT ! !exp1

Pernyataan Penilaian

(exp1 && exp2) True (1) jika kedua-dua exp1 dan exp2 adalah true;

false (0) jika sebaliknya.

(exp1 || exp2) True (1) jika salah satu exp1 dan exp2 adalah true; false

(0) hanya jika kedua-duanya adalah false.

(!exp1 ) False (0) jika exp1 adalah true; true (1) jika exp1 adalah

false.

Page 34: Nota Fundamental of Programming

Operators Relative precedence

&& 1

|| 2

Pernyataan yang menggunakan logical operators dinilai samaada true atau false. Operator ini

mempunyai keutamaan yang lebih rendah daripada relational operators.

Fungsi Sumber Matematik (Mathematical Library)

Fungsi sumber matematik membantu programmer menjalankan pengiraan matematik. Contoh dasar

serta takrif fungsi pengiraan matematik disimpan di dalam header file math.h dan cmath. Antara fungsi

matematik yang biasa digunakan adalah seperti jadual di bawah.

Function Meaning

sin(x) Sine of an angle x (measured in radians)

cos(x) Cosine of an angle x (measured in radians)

tan(x) Tangent of an angle x (measured in radians)

asin(x) Sin-1 (x) where x (measured in radians)

acos(x) Cos-1 (x) where x (measured in radians)

exp(x) Exponential function of x (ex)

log(x) logarithm of x

log 10(x) Logarithm of number x to the base 10

sqrt(x) Square root of x

pow(x, y) x raised to the power y

Page 35: Nota Fundamental of Programming

abs(x) Absolute value of integer number x

fabs(x) Absolute value of real number x

Apabila menulis aturcara yang menggunakan fungsi yang disenaraikan, sertakan arahan di bawah.

#include <math.h>

Jika arahan tersebut tidak disertakan, pengkompil akan memaparkan mesej ralat.

Contoh:

#include <iostream.h>

#include <math.h>

//menentukan nilai sin, cos dan tan x

main()

{

double x;

cout <<”Nilai x adalah dalam radian.\n”;

for(x=0;x<=1;x+=0.2)

{

cout<<“sin ”<<x<<“ adalah “<<sin(x)<<endl;

cout<<“cos ”<<x<<“ adalah “<<cos(x)<<endl;

cout<<“tan ”<<x<<“ adalah “<<tan(x)<<endl;

}

}

Menentukan format nombor bagi hasil akhir

Apabila constant dan pembolehubah yang mempunyai jenis data yang berlainan digabungkan dalam

pernyataan, ia akan ditukarkan kepada jenis data yang sama semasa penilaian dijalankan. Di dalam C++,

jenis data atau operand mempunyai saiz data yang berbeza. Semasa penukaran, jenis data yang bersaiz

lebih kecil akan ditukarkan kepada jenis data yang lebih besar. Hanya selepas penukaran jenis data

dilakukan, penilaian pernyataan akan dijalankan hasil dikeluarkan.

Contoh:

1: int iVar;

2: float fVar;

3: double dVar;

4: hasil = iVar + (fVar * dVar) – (fVar + iVar);

exp1 = pernyataan1

exp3 exp1 exp2

Page 36: Nota Fundamental of Programming

Langkah 1: Pada baris 4, exp1 akan dilaksanakan terlebih dahulu. fVar akan ditukarkan sebagai double dan hasil bagi exp1 adalah jenis double. Langkah 2: Dalam exp2, iVar akan dinilai sebagai float dan hasil bagi exp2 adalah jenis float.

Langkah 3: exp3 akan ditukarkan sebagai double. Apabila keseluruhan pernyataan dinilai, exp2 akan ditukarkan kepada double dan hasil akhir juga adalah jenis double. Cast Casting dilakukan untuk memaksa pernyataan ditukarkan kepada jenis data yang dikehendaki. Sintaks:

(jenis) pernyataan;

Cast juga adalah sejenis operator dan amat berguna pada masa-masa tertentu. Anda mungkin ingin kekalkan jenis data yang asal bagi pembolehubah tetapi dalam masa yang sama ingin membuat pengiraan menggunakan pembolehubah yang jenis datanya berbeza. Jadi, casting adalah jalan penyelesaiannya. Contoh: 1: int iVar;

2: float fVar;

3: hasil = (float)iVar + fVar;

Dalam contoh di atas, semasa penilaian dijalankan iVar dinilai dipaksa untuk dinilai sebagai float

supaya hasil akhir nanti adalah jenis float. Pada masa yang sama, iVar tetap kekal sebagai jenis int.

Direktif Prapemproses (Preprocessor directives) Preprocessor directives adalah arahan yang dimasukkan ke dalam program bukan untuk program tersebut tetapi untuk prapemproses. Prapemproses dilaksanakan secara automatik oleh pengkompil apabila kita mengkompil program C++. Ia bertanggungjawab untuk menentusahkan(verify) kod program. Semua directives mesti terdiri daripada satu baris kod dan tidak perlu diakhiri dengan semicolon ; #define Digunakan untuk mengisytiharkan constant dan macro. Sintaks:

#define nama nilai

Fungsinya adalah untuk mentakrifkan macro yang dipanggil nama dan menggantikan nama yang

terdapat di dalam program dengan nilai yang diberi.

Contoh:

#define MAX_WIDTH 100

int lebar = MAX_WIDTH;

Contoh di atas mengumpukkan nilai 100 kepada lebar.

#undefine Takrif ini mepunyai fungsi yang sebaliknya berbanding dengan #define. Apa yang dilakukan ialah mengabaikan #define yang sebelumnya. Contoh :

Page 37: Nota Fundamental of Programming

#define MAX_WIDTH 100

int lebar = MAX_WIDTH;

#undefine MAX_WIDTH

#define MAX_WIDTH 200

int lebar = MAX_WIDTH;

Dalam contoh di atas, nilai baru bagi lebar ialah 200.

#ifdef, #ifndef, #if, #endif, #else dan #elif #ifdef bermaksud ‘if defined’ yang membenarkan sebahagian program dikompil hanya jika constant tersebut sudah ditakrifkan terlebih dahulu. Sintaks :

#ifdef nama

//arahan

#endif

Contoh :

#ifdef MAX_WIDTH

int lebar = MAX_WIDTH;

#endif

Dalam contoh di atas, jika MAX_WIDTH telah ditakrifkan, barulah arahan int lebar = MAX_WIDTH;

akan dilaksanakan. Jika tidak, arahan tersebut tidak akan dikompil. #ifndef bermaksud ‘if not defined’ yang melakukan operasi yang berlawanan dengan #ifdef. Arahan akan dilaksanakan hanya jika constant tersebut tidak ditakrifkan. Contoh :

#ifndef MAX_WIDTH

#define MAX_WIDTH 100

#endif

int lebar = MAX_WIDTH;

Dalam contoh di atas, jika MAX_WIDTH tidak ditakrifkan sebelum ini, ia akan mentakrifkan dengan nilai

100 tetapi jika sebelumnya memang telah ditakrifkan dengan satu nilai yang lain contohnya 50, ia akan

kekal dengan nilai 50.

#if, #else dan #elif (elif = else if) pula akan menyebabkan arahan selepasnya dikompil jika syarat dipenuhi. Contoh :

#if MAX_WIDTH>200

#undef MAX_WIDTH

#define MAX_WIDTH 200

#elif MAX_WIDTH<50

#undef MAX_WIDTH

#define MAX_WIDTH 50

#else

#undef MAX_WIDTH

#define MAX_WIDTH 100

#endif

Page 38: Nota Fundamental of Programming

int lebar = MAX_WIDTH;

Cuba anda perhatikan kod yang berwarna merah. Ia saling berkait membentuk struktur if. #include Takrif ini biasa digunakan seperti yang anda lihat contoh-contoh dalam tajuk sebelum ini. Apabila prapemproses menemui #include, ia akan menggantikan kandungan bagi keseluruhan fail tersebut. Sintaks:

#include “file”

atau

#include <file>

Apa yang membezakan kedua-dua contoh di atas adalah direktori fail yang dirujuk. “file” digunakan untuk dirujuk dalam direktori yang sama dengan fail yang mengandungi directive ini

dan hanya dalam kes jika tidak dijumpai, pengkompil akan merujuk ke dalam default directory yang telah dikonfigurasikan untuk mencari standard header files. <file> digunakan untuk merujuk terus ke dalam default directory yang telah dikonfigurasikan untuk

mencari standard header files.

Fail Pengepala (Header Files)

Header files adalah fungsi pratakrif yang boleh digunakan untuk membantu programmer dalam penulisan program yang lebih cepat. Oleh sebab semua header files telah diuji dan tidak mengandungi ralat, program yang ditulis oleh programmer juga akan kurang mengandungi ralat. Untuk menggunakan header files tersebut, anda mestilah menggunakan arahan prapemproses #include

Berikut adalah standard header files yang digunakan dalam C++.

Containers

<bitset> Provides the specialized container class std::bitset, a bit array.

<deque> Provides the container class template std::deque, a double-ended queue.

<list> Provides the container class template std::list, a doubly linked list.

<map> Provides the container class templates std::map and std::multimap,

sorted associativearray and multimap.

<queue> Provides the container adapter class std::queue, a single-ended queue.

<set> Provides the container class templates std::set and std::multiset, sorted

associative containersor sets.

<stack> Provides the container adapter class std::stack, a stack.

<vector> Provides the container class template std::vector, a dynamic array.

General

<algorithm> Provides definitions of many container algorithms.

<functional> Provides several function objects, designed for use with the standard algorithms.

<iterator> Provides classes and templates for working with iterators.

<locale> Provides classes and templates for working with locales.

<memory> Provides facilities for memory management in C++, including the class

template std::auto_ptr.

Page 39: Nota Fundamental of Programming

<stdexcept> Contains standard exception classes such

as std::logic_error and std::runtime_error, bothderived from std::exception.

<utility> Provides the template class std::pair, for working with pairs (two-member tuples) of

objects.

Strings

<string>

Provides the C++ standard string classes and templates.

Streams and Input/Output

<fstream> Provides facilities for file-based input and output. See fstream.

<ios> Provides several types and functions basic to the operation of iostreams.

<iostream> Provides C++ input and output fundamentals. See iostream.

<iosfwd> Provides forward declarations of several I/O-related class templates.

<iomanip> Provides facilities to manipulate output formatting, such as the base used when

formatting integers andthe precision of floating point values.

<istream> Provides the template class std::istream and other supporting classes for input.

<ostream> Provides the template class std::ostream and other supporting classes for output.

<sstream> Provides the template class std::sstream and other supporting classes for string

manipulation.

<streambuf> Provides reading and writing functionality to/from certain types of character sequences,

such as externalfiles or strings.

Numerics

<complex> Provides class template std::complex and associated functions for working

with complex numbers.

<numeric> Provides algorithms for numerical processing

<valarray> Provides the template class std::valarray, an array class optimized for numeric

processing.

Language Support

<exception> Provides several types and functions related to exception handling,

including std::exception, thebase class of all exceptions thrown by the Standard Library

<limits> Provides the template class std::numeric_limits, used for describing properties of

fundamentalnumeric types.

<new> Provides operators new and delete and other functions and types composing the

fundamentals ofC++ memory management.

<typeinfo> Provides facilities for working with C++ run-time type information.

Page 40: Nota Fundamental of Programming

TAJUK : MEMAHAMI STRUKTUR LOGIKAL

TUJUAN : Bab ini menerangkan pengenalan struktur logikal, bagaimana mengenalpasti kriteria pemilihan (selection) serta penggunaan pernyataan if-else dan switch. Ia juga menerangkan mengenai struktur pengulangan (repetition or iteration structure).

3.01 Pengenalan kepada Struktur Logikal Secara lalai (default), program melaksanakan arahan secara jujukan (sequentially) atau baris demi baris. Terdapat beberapa pernyataan C++ yang membolehkan programmer mengawal pernyataan yang akan dijalankan selain dari baris berikutnya. Ini disebut pertukaran kawal. Ia terbahagi kepada 3 kategori iaitu :

• Selection statements • Iteration statements • Jump statements

Pertukaran kawal menggunakan simbol berlian yang juga dikenali sebagai simbol keputusan. 3.02 Kenalpasti Kriteria Pilihan Mengarahkan program untuk membuat pilihan adalah paling senang dalam C++. Ia boleh dilaksanakan dengan menggunakan pernyataan pilihan (selection statements). Terdapat 4 jenis selection statements iaitu :

• Pernyataan If

• Pernyataan If-else

• Pengendali bersyarat ?:

• Pernyataan Switch

Pernyataan If dikenali sebagai struktur satu pilihan kerana ia memilih atau mengabaikan satu pernyataan. Pernyataan If-else dikenali sebagai struktur dwi pilihan kerana ia memilih antara dua pernyataan. Pengendali bersyarat ?: berfungsi seakan-akan struktur pilihan If-else. Pernyataan Switch dikenali sebagai struktur pelbagai pilihan kerana ia memilih tindakan dari banyak pernyataan.

3.03 Pernyataan if-else dan switch Pernyataan if Struktur pilihan if digunakan untuk memilih tindakan alternatif. Sintaksnya adalah seperti berikut: Syarat adalah ungkapan integer dan pernyataan adalah mana-mana pernyataan boleh laku (executable statements). Pernyataan hanya boleh dijalankan jika syarat dipenuhi iaitu benar.

Carta alir bagi struktur pilihan if

if (syarat) pernyataan;

Page 41: Nota Fundamental of Programming

Carta alir bagi perbandingan dua nombor integer

Contoh program bagi carta alir di atas

Mari kita lihat contoh bagi program di atas. Baris 4 dan 5 : 2 pemboleh ubah integer iaitu var1 dan var2 diisytiharkan.

Baris 7 dan 8 : var1 dan var2 masing-masing diumpukkan dengan nilai 10 dan 5.

Baris 10 : pernyataan if membandingkan adakah var1 lebih besar daripada var2. Dalam kes ini adalah benar. Baris 11 : Oleh kerana pernyataan pada baris 10 adalah benar, maka baris 11 dilaksanakan. Contoh output bagi program di atas : 10 lebih besar dari 5 Pernyataan if-else

1: #include <iostream.h>

2: void main()

3: {

4: int var1;

5: int var2;

6:

7: var1=10;

8: var2=5;

9:

10: if(var1>var2)

11: cout<<var1<<“ lebih besar dari ”<<var2;

12: }

Page 42: Nota Fundamental of Programming

Dalam pernyataan ini, C++ menjalankan pernyataan kedua jika pernyataan pertama tidak dipatuhi. Sintaks bagi struktur ini adalah :

Syarat adalah ungkapan integer. Pernyataan1 dijalankan jika syarat dipenuhi (true) dan pernyataan2 dijalankan jika syarat tidak dipenuhi (false).

Carta alir bagi struktur pilihan if-else

Aturcara yang dapat membezakan antara nombor ganjil dan genap:

If (syarat)

Pernyataan1;

else pernyataan2;

1: #include <iostream.h>

2: void main()

3: {

4: int nombor;

5:

6: cout<< “Masukkan satu nombor :”;

7: cin>>nombor;

8: if( (nombor!=0) && (nombor%2)==0 )

9: {

10: cout<< “Nombor genap”<<endl;

11: }

12: else

13: {

14: cout<< “Nombor ganjil atau nombor ialah 0”<<endl;

15: } 16: }

Page 43: Nota Fundamental of Programming

Mari kita lihat contoh bagi program di atas. Baris 4 : pembolehubah nombor diisytiharkan

Baris 6 : mesej dipaparkan meminta satu nombor dimasukkan. Baris 7 : nilai yang dimasukkan dipegang oleh pembolehubah nombor

Baris 8 : baris ini mengandungi dua syarat yang perlu dipatuhi iaitu (nombor !=0) dan (nombor%2) ==0. Jika kedua-dua syarat dipatuhi iaitu kedua-dua hasil adalah benar, arahan pada baris 10 akan dilaksanakan. Baris 10 : baris ini hanya akan dilaksanakan jika hasil dari baris 8 adalah palsu. Struktur pilihan If Bersarang dan Pernyataan Berblok Anda juga boleh menggunakan struktur pilihan if bersarang. Sintaks adalah seperti berikut :

Struktur Pilihan If-else Bersarang

Contoh output bagi program di atas. Contoh 1 : Masukkan satu nombor :5 Nombor ganjil atau nombor adalah 0 Contoh 2 : Masukkan satu nombor :2 Nombor genap

Struktur pilihan if bersarang ialah pernyataan if yang ditulis di dalam pernyataan if yang lain. Dalam program, ia boleh terdiri daripada banyak pernyataan if bersarang.

Contoh program yang menggunakan struktur pilihan if bersarang

Dalam program di atas, terdapat banyak pernyataan berblok. Blok bagi kod dimulai dengan pembuka curly brace ({) dan diakhiri dengan penutup curly brace (})

if (syarat1)

if(syarat2)

pernyataan1;

else

pernyataan2;

else

pernyataan3;

1 pair 1 pair

if(jantina = ‘L’)

{

if(umur<=12)

{

cout<< “Good Day Master”<<endl;

}

else

{

cout<< “Good Day Mister”<<endl;

}

}

else if(jantina = ‘P’)

{

if(umur<=12)

{

cout<< “Good Day Miss”<<endl;

}

else

{

cout<< “Good Day Madam”<<endl;

}

}

Page 44: Nota Fundamental of Programming

Anda juga boleh menggunakan struktur pilihan if-else bersarang. Struktur ini menguji pelbagai syarat dengan meletakkan if-else bagi setiap pilihan struktur. Sebagai contoh, lihat kod psuedo berikut:

Jika markah 80 atau lebih, paparkan “A” Lain Jika markah 70 atau lebih, paparkan “B” Lain Jika markah 60 atau lebih, paparkan “C” Lain Jika markah 50 atau lebih, paparkan “D” Lain Paparkan “E”

Contoh program bagi kod pseudo di atas.

Pengendali Bersyarat ?: Pengendali bersyarat adalah singkata bagi pernyataan struktur if-else. Simbol yang digunakan adalah ? dan : dalam format pertigaan (ternary). Pengendali bersyarat mempunyai tiga kendalian. Sintaksnya adalah seperti berikut : Jika syarat mengembalikan nilai benar, pernyataan1 dijalankan. Jika syarat mengembalikan nilai palsu, pernyataan2 dijalankan. Contoh : Pengendali bersyarat lazimnya digunakan apabila syarat dan pernyataan yang dijalankan adalah ringkas.

syarat? pernyataan1:pernyataan2;

#include <iostream.h>

void main()

{

int markah;

cout<<“Masukkan nilai markah: \n”;

cin>>markah;

cout<<(markah>=50? “Syabas! Anda lulus.\n” : “Maaf, anda gagal.\n”); }

#include <iostream.h>

void main()

{

int markah;

cout<<“Masukkan markah: \n”;

cin>>markah;

if(markah>=80)

cout<<”Anda mendapat A”<<endl;

else if(markah>=70)

cout<<”Anda mendapat B”<<endl;

else if(markah>=60)

cout<<”Anda mendapat C”<<endl;

else if(markah>=50)

cout<<”Anda mendapat D”<<endl;

else

cout<<”Anda mendapat E”<<endl; }

Page 45: Nota Fundamental of Programming

Struktur Pilihan Switch Struktur pilihan switch selalunya digunakan sebagai alternatif kepada pernyataan if-else yang banyak dan kompleks. Ia mempunyai satu siri label case dan satu pilihan case lalai (default). Pernyataan switch adalah seperti pernyataan majmuk if dengan pelbagai kemungkinan jawapan. Ia lebih senang dibaca dan senang difahami berbanding pernyataan if-else. Sintaks adalah seperti berikut: Pernyataan switch menilai ungkapan dan mencari nilai yang sepadan dengan pemalar yang disenaraikan. Jika sepadan, pernyataan yang disenaraikan dalam case tersebut dijalankan. Perhatikan

bahawa ungkapan mesti dinilai dalam integer dan pemalar mesti terdiri daripada pemalar integer. Char juga adalah pemalar integer. Contoh : Perhatikan bahawa setiap pernyataan di bawah case terdapat break. Pernyataan break digunakan untuk memberhentikan compiler daripada terus melaksanakan arahan pada setiap case. Jika break tidak digunakan, semua arahan di bawah case akan dilaksanakan.

switch(ungkapan)

{

case pemalar1: pernyataan1;

break;

case pemalar2: pernyataan2;

break;

………

………

case pemalarN: pernyataanN;

break;

default:pernyataan;

}

#include <iostream.h>

void main()

{

char gred;

cout<<”Sila masukkan gred markah anda (A-F) : \n”;

cin>>gred;

switch(gred)

{

case ‘A’:

cout<<”Markah minimum ialah 80”<<endl;

break;

case ‘B’:

cout<<”Markah minimum ialah 60”<<endl;

break;

case ‘C’:

cout<<”Markah minimum ialah 50”<<endl;

break;

case ‘D’:

cout<<”Markah minimum ialah 40”<<endl;

break;

default:

cout<<”Markah ialah di antara 0-39”<<endl;

} }

Page 46: Nota Fundamental of Programming

4.0 Memahami Struktur Lelaran 4.01 Pengenalan (Iteration/Repetition Structure) Lelaran adalah pernyataan berulang atau blok pernyataan dalam sesebuah program. C++ mempunyai tiga pernyataan lelaran iaitu:

• Pernyataan while

• Pernyataan do-while

• Pengendali for Pernyataan lelaran juga dikenali sebagai gegelung (loop). Loop akan diteruskan selagi keadaan adalah true. Apabila loop mengembalikan nilai false, loop akan ditamatkan. Struktur Lelaran while

Sintaks :

while(syarat) pernyataan;

Carta alir :

Contoh : #include <iostream.h>

void main()

{

char ans;

int num1, num2, hasil;

cout<<“Anda ingin mencari hasil tambah dua nombor?(y/n)”;

cin>>ans;

while(ans==‘y’||ans==‘Y’)

{

cout<<“Masukkan nombor pertama: “;

cin>>num1;

cout<<“Masukkan nombor kedua: “;

cin>>num2;

hasil = num1+num2;

cout<<“Hasil tambah bagi “<<num1<<“ dan ”<<num2<<“ adalah “<<hasil;

cout<<“\nAnda ingin teruskan?(y/n)”;

cin>>ans;

}

}

Page 47: Nota Fundamental of Programming

Struktur Lelaran do-while

Sintaks :

do pernyataan while(syarat);

Carta alir :

Contoh : #include <iostream.h>

void main()

{

char ans;

int num1, num2, hasil;

do

{

cout<<“Masukkan nombor pertama: “;

cin>>num1;

cout<<“Masukkan nombor kedua: “;

cin>>num2;

hasil = num1+num2;

cout<<“Hasil tambah bagi “<<num1<<“ dan ”<<num2<<“ adalah

“<<hasil;

cout<<“\nAnda ingin teruskan?(y/n)”;

cin>>ans;

}

while(ans==‘y’||ans==‘Y’);

}

Page 48: Nota Fundamental of Programming

Struktur Lelaran for

Sintaks :

for(initialize;condition test;incrementation);

{

Statements;

}

Carta alir :

Contoh 1: #include <iostream.h>

void main()

{

int count;

for(count=1; count<=10; count++)

{

cout<<count*count <<“ “;

}

cout<<endl;

}

Output:

Page 49: Nota Fundamental of Programming

Contoh 2: #include <iostream.h>

void main()

{

int count,line;

for(line=1; line<=10; line++)

{

for(count=1; count<=line; count++)

{

cout<<"*";

}

cout<<endl;

}

cout<<endl;

}

Output:

Page 50: Nota Fundamental of Programming

Fungsi Dalam bab sebelum ini, program yang paling kompleks terdiri daripada satu fungsi main () yang mengandungi pelbagai pernyataan, pengendali operator, struktur pilihan, gelung dan sebagainya. Apabila program bertambah kompleks dan besar, anda mesti memecahkan program anda kepada beberapa fungsi. Secara logiknya juga, task yang lebih kecil lebih senang diuruskan berbanding task yang besar. Begitu juga fungsi. Di bawah adalah aliran aturcara yang memanggil fungsi.

Fungsi main() memanggil contohFungsi()

Selepas contohFungsi()dilaksanakan, aturcara akan kembali kepada arahan seterusnya iaitu pernyataan2

Sintaks: Jenis_Fungsi nama_fungsi(senaraiParameter)

{

pernyataan;

return nilai;

}

Jenis_Fungsi adalah jenis data bagi nilai yang akan dipulangkan oleh nama_fungsi apabila pernyataan return dilaksanakan. Jenis data boleh terdiri daripada int, char, double dan lain-lain seperti yang telah anda pelajari. Di dalam fungsi, selepas pengiraan dilaksanakan , anda boleh menghantar hasil pengiraan kepada fungsi yang memanggil supaya nilai tersebut boleh digunakan untuk tujuan yang lain. Jika anda tidak mentakrifkan Jenis_Fungsi, secara default pengkompil akan menganggap

Jenis_Fungsi yang akan dipulangkan adalah jenis int. Terdapat satu lagi jenis data yang biasa digunakan iaitu void. Void bermaksud ‘nothing’ dan digunakan apabila fungsi tidak memulangkan apa-apa nilai. Pernyataan return boleh diabaikan jika anda menggunakan fungsi jenis void kerana tiada nilai yang akan dipulangkan. nama_fungsi ialah nama yang diberikan kepada fungsi dan mesti dimulakan dengan huruf atau

underscore character ‘_’ dan boleh mengandungi huruf, digit dan underscore. nama_fungsi mestilah

dipilih untuk menggambarkan peranan fungsi tersebut seperti tambah(), tolak(),

tambah_nama(), susun_markah() dan sebagainya.

senaraiParameter ialah data atau nilai yang dihantar kepada fungsi yang memanggil apabila anda

memanggil fungsi tersebut. Contoh : int hasil_tambah(int no1, int no2, int no3)

{

jumlah = no1 + no2 + no3;

return jumlah;

}

main()

{

pernyataan1;

panggil contohFungsi();

pernyataan2; }

contohFungsi()

{

pernyataan; }

Page 51: Nota Fundamental of Programming

Fungsi tanpa parameter Kadang-kadang, fungsi tidak perlukan parameter untuk dihantar. Sintaks :

Nama_fungsi()

atau Nama_fungsi(void)

Prototaip Fungsi Apabila anda membina aturcara yang besar dan kadangkala perlukan pengurusan dilakukan di dalam fail yang berbeza, anda mestilah mengisytiharkan fungsi yang anda buat supaya pengkompil tau fungsi atau fail yang manakah yang harus dirujuk. Prototaip fungsi juga dikenali sebagai pengisytiharan fungsi. Sintaks : Jenis_Fungsi nama_fungsi(senaraiParameter);

Perhatikan bahawa sintaks kelihatan sama tetapi apa yang membezakan prototaip fungsi dengan fungsi itu sendiri ialah prototaip fungsi tidak mengandungi nama parameter. Contoh : int hasil_tambah(int, int, int);

Contoh program:

//program ini tidak memulangkan nilai dan tidak ada parameter

#include <iostream.h>

void tambah(); //prototaip fungsi

void main()

{

Cout<< “Panggil fungsi tambah()” <<endl;

Add(); //panggil fungsi tambah()

Cout<< “Baru balik dari selesaikan fungsi tambah()”<<endl;

}

void tambah()

{

int no1, no2, total;

cout<< “Masukkan nombor pertama: ” <<endl;

cin>>no1;

cout<< “Masukkan nombor kedua: ” <<endl;

cin>>no2;

total = no1 + no2;

cout<< “Hasil tambah ialah: ” <<endl;

}

Page 52: Nota Fundamental of Programming

Memanggil fungsi dengan nilai (calling function by value) Apabila parameter dihantar melalui nilai, fungsi yang dipanggil akan wujudkan pembolehubah baru yang mempunyai jenis data yang sama dengan parameter tersebut dan menyalin nilai bagi parameter itu ke dalam pembolehubah baru. Menghantar parameter dengan nilai adalah berguna apabila fungsi tersebut tidak mengubah nilai pembolehubah dalam fungsi yang dipanggil. Contoh program: //program ini tidak memulangkan nilai tetapi ada parameter

//program ini memanggil fungsi by value

#include <iostream.h>

void tukar(int, int); //prototaip fungsi

void main()

{

int no1, no2;

cout<< “Masukkan nombor pertama: ” <<endl;

cin>>no1;

cout<< “Masukkan nombor kedua: ” <<endl;

cin>>no2;

tukar(no1, no2);

cout<< no1<< “ ” <<no2<<endl;

}

void tukar(int var1, int var2)

{

int temp;

temp=var1;

var1=var2;

var2=temp;

cout<< var1<< “ ” << var2<<endl;

}

Contoh program: //program ini tidak memulangkan nilai tetapi ada parameter

//program ini memanggil fungsi by value

#include <iostream.h>

void tukar(int, int); //prototaip fungsi

void main()

{

int no1, no2;

cout<< “Masukkan nombor pertama: ” <<endl;

cin>>no1;

cout<< “Masukkan nombor kedua: ” <<endl;

cin>>no2;

tukar(no1, no2);

cout<< no1<< “ ” <<no2<<endl;

}

void tukar(int var1, int var2)

{

int temp;

Page 53: Nota Fundamental of Programming

temp=var1;

var1=var2;

var2=temp;

cout<< var1<< “ ” << var2<<endl;

}

Memanggil fungsi dengan rujukan (calling function by reference) Kaedah ini menggunakan alamat bagi nilai tersebut untuk dihantar kepada fungsi. Simbol ampersand ‘&’ digunakan untuk mewakili parameter yang dipanggil menggunakan kaedah ini. Contoh:

//program ini memanggil fungsi by reference

#include <iostream.h>

void tukar(int &, int &); //prototaip fungsi

void main()

{

int no1, no2;

cout<< “Masukkan nombor pertama: ” <<endl;

cin>>no1;

cout<< “Masukkan nombor kedua: ” <<endl;

cin>>no2;

tukar(no1, no2);

cout<< no1<< “ ” <<no2<<endl;

}

void tukar(int &var1, int &var2)

{

int temp;

temp=var1;

var1=var2;

var2=temp;

cout<< var1<< “ ” << var2<<endl;

}

Perbezaan di antara calling by value dan calling by reference calling by value :

no1 no2 no1 no2

var1 var2 var1 var2

Gambaran memori semasa perlaksanaan fungsi tukar()

Gambaran memori selepas Keseleruhan program dilaksanakan

Page 54: Nota Fundamental of Programming

calling by reference :

no1 no2 no1 no2

Gambaran memori semasa perlaksanaan fungsi tukar()

Gambaran memori selepas Keseleruhan program dilaksanakan

var1 var2 var1 var2