nota fundamental of programming
TRANSCRIPT
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
– 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.
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,
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
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
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
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
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
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
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
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)
− 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
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
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;
}
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.
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.
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)
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).
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
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;
}
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;
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
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
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;
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( )
{
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.
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 ”
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.
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
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
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
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.
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.
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
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
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 :
#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
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.
<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.
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;
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: }
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: }
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;
}
}
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; }
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;
} }
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;
}
}
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’);
}
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:
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:
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; }
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;
}
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;
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
calling by reference :
no1 no2 no1 no2
Gambaran memori semasa perlaksanaan fungsi tukar()
Gambaran memori selepas Keseleruhan program dilaksanakan
var1 var2 var1 var2