SAINS KOMPUTER • Tingkatan 4 • Bab 1: Pengaturcaraan
1.2 Algoritma
Setiap atur cara komputer bermula sebagai satu idea penyelesaian. Algoritma ialah set arahan yang menyusun idea itu supaya masalah dapat diselesaikan langkah demi langkah, sebelum ia ditulis sebagai kod dalam bahasa pengaturcaraan.
Objektif Pembelajaran
- Menyatakan maksud algoritma dan menggunakan analisis IPO untuk menyatakan penyelesaian kepada masalah.
- Mewakilkan algoritma dalam dua format, iaitu pseudokod dan carta alir, menggunakan simbol piawai yang betul.
- Membina algoritma dengan menggunakan tiga struktur kawalan, iaitu urutan, pilihan dan pengulangan.
- Menguji algoritma secara manual serta mengenal pasti dan membaiki ralat dalam algoritma.
- Mengesan nilai pemboleh ubah pada setiap tahap, menentukan output yang betul, dan menterjemah algoritma ke dalam bahasa pengaturcaraan.
Apakah itu algoritma?
Algoritma ialah satu set arahan untuk menyelesaikan masalah. Arahan terperinci yang dapat diikuti sehingga tugasan terlaksana dengan jayanya ialah satu bentuk algoritma dalam kehidupan harian.
Algoritma juga ialah idea atau cara penyelesaian masalah dalam bentuk abstrak berasaskan arahan-arahan asas. Algoritma dapat dihalusi dengan menambahkan butiran.
Algoritma berbanding atur cara
Atur cara komputer ialah algoritma komputer yang ditulis dalam bahasa pengaturcaraan yang boleh dilaksanakan oleh komputer.
Oleh itu algoritma ialah ideanya, manakala atur cara ialah pelaksanaannya. Algoritma berbentuk universal, jadi simbol dan perkataan yang digunakan tidak perlu bersandarkan kepada mana-mana bahasa pengaturcaraan.
Tiga ciri wajib algoritma
- 1Butiran jelas — arahan cukup terperinci untuk diikuti tanpa tekaan.
- 2Boleh dilaksanakan — setiap arahan benar-benar dapat dijalankan.
- 3Mempunyai batasan — mempunyai permulaan dan pengakhiran, dan selesai dalam waktu yang terbatas.
Analisis IPO
Analisis IPO dibuat untuk mengenal pasti data input, proses untuk mengubah nilai data kepada maklumat, dan paparan output maklumat setelah proses.
1
Input — kenal pasti data yang perlu dibaca daripada pengguna atau persekitaran.
2
Proses — langkah-langkah ataupun rumusan untuk memproses data input kepada output.
3
Output — kenal pasti output yang dikehendaki, iaitu apa yang perlu dipaparkan pada skrin di akhir atur cara.
Dua format perwakilan algoritma
Pseudokod
Pseudokod ialah senarai struktur kawalan komputer yang ditulis dalam bahasa pertuturan manusia dan mempunyai nombor turutan.
Pseudokod bukanlah bahasa pengaturcaraan komputer. Setiap arahan diletakkan dalam baris baharu yang diberikan nombor siri.
Carta alir
Carta alir ialah alternatif kepada pseudokod yang menggunakan simbol grafik untuk mewakili arahan-arahan penyelesaian.
Carta alir terdiri daripada nod dan garis penghubung. Anak panah menunjukkan aliran aktiviti.
Jadual 1.1: Simbol-simbol piawai carta alir
| Nama nod |
Bentuk |
Fungsi |
| Terminal mula |
Bujur |
Permulaan algoritma dalam carta alir. |
| Terminal tamat |
Bujur |
Penamat algoritma dalam carta alir. |
| Input/Output |
Jajaran selari |
Membaca input atau memaparkan output ke skrin. |
| Proses |
Segi empat tepat |
Arahan untuk memproses input dalam bentuk ungkapan, memproses fail dan sebagainya. |
| Penghubung |
Bulatan |
Titik sambungan untuk menyambungkan carta alir yang terpisah. |
| Syarat |
Rombus |
Menguji syarat yang terkandung dalam nod rombus. Terdapat satu anak panah masuk dan dua anak panah keluar, satu bagi syarat yang dipenuhi dan satu lagi bagi syarat yang gagal. |
| Aliran aktiviti |
Anak panah |
Menghubungkan nod-nod untuk menunjukkan aliran proses. |
Satu algoritma, dua perwakilan
Pseudokod dan carta alir di bawah mewakili algoritma yang sama, iaitu atur cara yang menerima tahun kelahiran pengguna dan memaparkan umurnya.
Pseudokod
1. MULA
2. INPUT TAHUN_LAHIR
3. UMUR = TAHUN_SEMASA - TAHUN_LAHIR
4. OUTPUT UMUR
5. TAMAT
Jadual 1.2: Operator-operator aritmetik
| Operator |
Makna |
+ |
Penambahan |
- |
Penolakan |
* |
Pendaraban |
/ |
Pembahagian |
( ) |
Kurungan |
Simbol asterisk (*) digunakan untuk pendaraban dan garis sendeng (/) untuk pembahagian kerana tiada simbol darab dan bahagi pada papan kekunci piawai.
1. Struktur kawalan urutan
Struktur kawalan urutan melaksanakan arahan-arahan komputer satu per satu. Urutan arahan yang betul adalah penting kerana urutan yang berlainan boleh memberikan output yang berlainan.
Urutan linear algoritma dipersembahkan sebagai susunan penyataan-penyataan secara linear: input data, memproses data, kemudian output hasil.
Sintaks pseudokod — urutan
MULA
Penyataan 1
Penyataan 2
Penyataan 3
TAMAT
Nilai boleh dimasukkan ke dalam pemboleh ubah melalui dua cara. Input interaktif membaca nilai daripada pengguna, manakala umpukan menyimpan nilai yang sudah ditetapkan. Umpukan menggunakan simbol =, bermakna nilai di sebelah kanan disimpan di dalam pemboleh ubah di sebelah kiri.
Contoh umpukan
tahun_lahir = 1963
umur = 21
Nilai pemboleh ubah yang diumpuk adalah sama setiap kali atur cara dijalankan, berbeza daripada input interaktif.
2. Struktur kawalan pilihan
Struktur kawalan pilihan memberikan perisian komputer keupayaan untuk membuat keputusan berasaskan syarat yang telah ditentukan pengatur cara. Ciri umumnya ialah satu syarat yang menentukan satu daripada dua cabang dipilih. Sekiranya satu urutan sudah terpilih, urutan satu lagi akan diabaikan.
Syarat yang digunakan ialah ungkapan logik. Ungkapan logik menilai data untuk menghasilkan keputusan "Benar" atau "Palsu". Operator hubungan membandingkan nilai dalam pemboleh ubah dengan nilai yang diuji.
Jadual 1.3: Operator-operator hubungan
| Operator |
Makna |
< |
Lebih kecil daripada |
<= |
Lebih kecil daripada atau sama |
> |
Lebih besar daripada |
>= |
Lebih besar daripada atau sama |
!= |
Tidak sama dengan |
== |
Sama dengan |
Sintaks pseudokod — pilihan
JIKA SYARAT_BENAR MULA_JIKA
BLOK PENYATAAN 1
TAMAT_JIKA
JIKA_TIDAK MULA_JIKA_TIDAK
BLOK PENYATAAN 2
TAMAT_JIKA_TIDAK
Blok penyataan bagi keputusan "Benar" mesti berada di antara MULA_JIKA dan TAMAT_JIKA, manakala blok penyataan bagi keputusan "Palsu" mesti berada di antara MULA_JIKA_TIDAK dan TAMAT_JIKA_TIDAK.
Contoh pilihan: kelayakan memohon lesen memandu
Pseudokod
1. MULA
2. PAPAR "Masukkan umur pemohon:"
3. INPUT umur
4. JIKA umur > 16 MULA_JIKA
OUTPUT "Anda boleh pohon lesen."
TAMAT_JIKA
JIKA_TIDAK MULA_JIKA_TIDAK
OUTPUT "Anda belum cukup umur."
TAMAT_JIKA_TIDAK
5. TAMAT
3. Struktur kawalan pengulangan
Struktur kawalan pengulangan mengulang arahan-arahan komputer dalam blok. Ulangan boleh berlangsung sehingga menerima syarat berhenti ataupun mencapai bilangan yang sudah ditetapkan.
Syarat diletakkan selepas kata kunci SELAGI. Tidak seperti kawalan pilihan, kawalan pengulangan menggunakan keputusan syarat "Benar" untuk mengulang arahan-arahan dalam blok penyataan. Perbezaan ketara pada carta alir ialah hala tuju anak panah bagi keputusan "Benar" yang berpatah balik supaya pengulangan boleh dilaksanakan.
Sintaks pseudokod — pengulangan
SELAGI SYARAT MULA_SELAGI
BLOK PENYATAAN
TAMAT_SELAGI
Contoh pengulangan: memaparkan teks sebanyak 5 kali
Pseudokod
1. MULA
2. pembilang = 0
3. SELAGI pembilang < 5 MULA_SELAGI
OUTPUT "Saya gembira hadir ke sekolah hari ini."
pembilang = pembilang + 1
TAMAT_SELAGI
4. TAMAT
Ciri-ciri algoritma yang telah diuji
Mudah difahami, maka mudah ditulis sebagai atur cara komputer. Lengkap, iaitu memenuhi semua keperluan penyelesaian masalah. Efisien, iaitu berfungsi dengan pantas dan tidak memakan banyak ruang memori. Memenuhi kriteria reka bentuk perisian yang ingin dibangunkan.
Tiga jenis ralat dan hubungannya dengan ralat algoritma
| Jenis ralat |
Penerangan |
| Ralat sintaks |
Tidak wujud dalam algoritma. Berlaku kerana menggunakan bahasa pengaturcaraan dengan cuai, dan biasanya ditemui secara automatik oleh perisian kompiler. Ralat algoritma tidak menyebabkan ralat sintaks. |
| Ralat logik |
Berlaku kerana perisian yang dihasilkan tidak menjalankan fungsi-fungsi yang sepatutnya, tidak lengkap, ataupun fungsi menghasilkan output yang tidak tepat. |
| Ralat masa larian |
Ralat yang timbul apabila atur cara dijalankan, termasuk atur cara yang tidak dapat dimulakan, menjadi sangat perlahan ataupun tidak responsif. Antara puncanya ialah urutan yang tidak betul, pemboleh ubah yang tidak mengandungi nilai, pembahagian dengan sifar, dan syarat pengulangan yang salah sehingga ulangan tidak boleh berhenti. |
Empat langkah pengujian algoritma
Pengujian algoritma ialah pemeriksaan secara manual dan teliti. Ia juga dikenali sebagai desk-checking kerana teknik ini menggunakan kertas dan pensel.
1
Kenal pasti "Output Dijangka" bagi setiap input uji, secara hitungan manual.
2
Tentukan "Output Diperoleh" dengan menjejak algoritma baris demi baris menggunakan jadual.
3
Bandingkan "Output Diperoleh" dengan "Output Dijangka".
4
Analisis dan baiki ralat dalam algoritma, kemudian uji semula.
Bilangan lajur jadual pengujian ialah bilangan pemboleh ubah tambah 2: satu lajur untuk nombor baris, satu lajur bagi setiap pemboleh ubah, dan satu lajur terakhir I/O untuk input pengguna dan output yang diperoleh. Bilangan barisnya pula sama dengan bilangan baris tahap algoritma.
Contoh pengujian: algoritma yang mengandungi ralat
Algoritma sebelum dibaiki
1. MULA
2. INPUT nama
3. PAPAR "Hello "
4. TAMAT
Perbandingan Output Dijangka dengan Output Diperoleh
| Input uji |
Output Dijangka |
Output Diperoleh |
| Adam |
Hello Adam |
Hello |
| Zhi-Yi |
Hello Zhi-Yi |
Hello |
| Darshini |
Hello Darshini |
Hello |
Output Diperoleh tidak sama dengan Output Dijangka bagi ketiga-tiga input uji. Kesimpulannya, algoritma mengandungi ralat, iaitu kegagalan input dipamerkan dalam output. Baris 3 perlu memaparkan nilai pemboleh ubah nama bersama teks "Hello ".
Algoritma selepas dibaiki
1. MULA
2. INPUT nama
3. PAPAR "Hello " + nama
4. TAMAT
Selepas pembaikan, ketiga-tiga input uji menghasilkan Output Diperoleh yang sama dengan Output Dijangka, iaitu Hello Adam, Hello Zhi-Yi dan Hello Darshini.
Algoritma mengumpuk dan mengubah nilai sesuatu pemboleh ubah, jadi nilai pemboleh ubah adalah tidak tetap. Setiap baris algoritma mungkin membuat perubahan pada pemboleh ubah tertentu.
Menjejak satu pemboleh ubah
Pseudokod
1. MULA
2. INPUT z = 100
3. z = z/2
4. z = z * 4
5. z = z * 0.25 + z
6. PAPAR z
7. TAMAT
Jadual pengesanan nilai pemboleh ubah z
| No |
z |
I/O |
| 1 |
– |
– |
| 2 |
100 |
100 |
| 3 |
50 |
– |
| 4 |
200 |
– |
| 5 |
250 |
– |
| 6 |
250 |
250 |
| 7 |
– |
– |
Pada baris 2, z diumpuk dengan 100. Baris 3 membahagikannya menjadi 50, baris 4 mendarabkannya dengan 4 menjadi 200, dan baris 5 menambah 25% daripada 200, iaitu 50, kepada nilai asalnya sehingga menjadi 250. Baris 6 memaparkan 250 tanpa mengubahnya, dan pada baris 7 semua nilai dibersihkan kerana algoritma sudah tamat.
Menentukan output yang betul
Membandingkan output algoritma dengan output dijangka merupakan satu-satunya cara untuk menentukan kesahihan output algoritma. Jika output algoritma betul, ia sepatutnya bersamaan dengan output dijangka.
Pseudokod
1. MULA
2. INPUT x
3. INPUT y
4. jumlah = x + y
5. PAPAR jumlah
6. TAMAT
Jadual pengujian bagi input x = 12 dan y = 88
| No |
x |
y |
jumlah |
I/O |
| 1 |
– |
– |
– |
– |
| 2 |
12 |
– |
– |
– |
| 3 |
12 |
88 |
– |
– |
| 4 |
12 |
88 |
12 + 88 = 100 |
– |
| 5 |
12 |
88 |
100 |
jumlah = 100 |
| 6 |
– |
– |
– |
– |
Bagi input x = 12 dan y = 88, output dijangka ialah 100. Output algoritma juga 100, maka algoritma telah mencapai ketepatan nilai dalam ujian ini. Untuk kepastian, ulang ujian menggunakan nilai input yang berbeza dan tentukan output dijangka bagi setiap satu.
Algoritma berbentuk universal, jadi simbol dan perkataan yang digunakan tidak perlu bersandarkan kepada mana-mana bahasa pengaturcaraan. Antara bahasa pengaturcaraan yang sering digunakan ialah Visual Basic (VB), Java dan C#.
Terjemahan setiap baris algoritma kepada kod komputer (Java)
| Algoritma |
Kod komputer (Java) |
MULA |
public static void main(String[] args){ |
PAPAR "Masukkan nama pengguna:" |
System.out.print("Masukkan nama pengguna: "); |
INPUT nama |
String nama = new java.util.Scanner(System.in).nextLine(); |
PAPAR "Hello " + nama |
System.out.println("Hello " + nama); |
TAMAT |
} |
Perhatikan bahawa satu baris algoritma tidak semestinya menjadi satu baris kod yang ringkas. Walaupun begitu, setiap baris algoritma mesti ada padanannya dalam kod supaya tiada arahan tertinggal.
1
Nyatakan tiga ciri wajib bagi sebuah algoritma.
Butiran jelas, boleh dilaksanakan dan mempunyai batasan, iaitu mempunyai permulaan serta pengakhiran dan selesai dalam waktu yang terbatas.
2
Satu algoritma mengumpuk z = 100, kemudian z = z/2, kemudian z = z * 4. Apakah nilai z selepas baris ketiga itu?
200. Nilai 100 dibahagi dengan 2 menjadi 50, kemudian 50 didarab dengan 4 menjadi 200.
3
Mengapakah ralat sintaks bukan berpunca daripada ralat algoritma?
Kerana ralat sintaks berlaku akibat kecuaian pengatur cara ketika menulis kod dalam bahasa pengaturcaraan, dan ia biasanya ditemui oleh perisian kompiler. Algoritma pula tidak terikat kepada sintaks mana-mana bahasa pengaturcaraan, jadi ralat algoritma tidak menyebabkan ralat sintaks. Ralat algoritma menyebabkan ralat logik dan ralat masa larian.
- 1Melukis carta alir dengan anak panah yang tidak bersentuhan dengan nod yang diwakilinya. Carta alir sedemikian dikira sebagai tidak lengkap.
- 2Menganggap pseudokod boleh dilaksanakan terus oleh komputer. Pseudokod ditulis dalam bahasa pertuturan harian dan bukan bahasa pengaturcaraan.
- 3Menulis syarat pengulangan yang tidak pernah menjadi "Palsu", misalnya terlupa mengemas kini nilai pembilang di dalam blok penyataan, sehingga ulangan tidak boleh berhenti.
- 4Menggunakan nama pemboleh ubah yang belum diumpuk atau tidak pernah dibaca sebagai input, sehingga nilainya kekal
null dan output menjadi salah.
- 5Memaparkan teks sahaja tanpa menggabungkan nilai pemboleh ubah, misalnya menulis
PAPAR "Hello " dan bukan PAPAR "Hello " + nama.
- 6Menguji algoritma hanya selepas kod ditulis. Pembetulan di peringkat kod mengambil masa yang lebih lama dan lebih mahal daripada pembetulan di peringkat algoritma.
- 7Menukar simbol nod carta alir: menggunakan segi empat tepat (Proses) untuk menguji syarat sedangkan syarat mesti menggunakan rombus, atau menggunakan segi empat tepat untuk membaca input sedangkan Input/Output mesti menggunakan jajaran selari. Ingat juga bahawa bujur ialah terminal MULA/TAMAT, manakala bulatan ialah nod Penghubung untuk menyambung carta alir yang terpisah.
Salah Faham
Algoritma dan atur cara ialah perkara yang sama.
Fakta Betul
Algoritma ialah idea penyelesaian dalam bentuk abstrak. Atur cara ialah algoritma itu yang sudah ditulis dalam bahasa pengaturcaraan dan boleh dilaksanakan oleh komputer.
Salah Faham
Pseudokod dan carta alir menghasilkan dua algoritma yang berbeza.
Fakta Betul
Kedua-duanya ialah dua format perwakilan bagi algoritma yang sama. Satu menggunakan bahasa pertuturan bernombor, satu lagi menggunakan simbol grafik.
Salah Faham
Ralat sintaks berpunca daripada ralat algoritma.
Fakta Betul
Ralat algoritma tidak menyebabkan ralat sintaks. Ralat sintaks berpunca daripada kecuaian pengatur cara semasa menulis kod, manakala ralat algoritma membawa kepada ralat logik dan ralat masa larian.
Salah Faham
Nod syarat dalam carta alir pengulangan berfungsi sama seperti dalam carta alir pilihan.
Fakta Betul
Dalam pilihan, dua cabang bertemu semula sebelum TAMAT. Dalam pengulangan, cabang "Benar" berpatah balik ke laluan masuk nod syarat supaya blok penyataan boleh diulang.
Salah Faham
Tanda = dan == membawa maksud yang sama.
Fakta Betul
= ialah simbol umpukan, iaitu menyimpan nilai di sebelah kanan ke dalam pemboleh ubah di sebelah kiri. == ialah operator hubungan yang membandingkan dua nilai dan menghasilkan keputusan "Benar" atau "Palsu".
- Algoritma ialah satu set arahan untuk menyelesaikan masalah; ciri wajibnya ialah butiran jelas, boleh dilaksanakan dan mempunyai batasan.
- Analisis IPO mengenal pasti data input, proses yang mengubah data kepada maklumat, dan output yang perlu dipaparkan.
- Algoritma diwakili dalam dua format, iaitu pseudokod yang bernombor dan ditulis dalam bahasa pertuturan, dan carta alir yang menggunakan nod simbol piawai serta garis penghubung beranak panah.
- Terdapat tiga struktur kawalan: urutan melaksanakan arahan satu per satu; pilihan memilih satu daripada dua cabang berdasarkan ungkapan logik; pengulangan mengulang blok penyataan selagi syarat "Benar".
- Umpukan menyimpan nilai di sebelah kanan simbol
= ke dalam pemboleh ubah di sebelah kiri, dan nilainya sama setiap kali atur cara dijalankan.
- Algoritma diuji secara manual (desk-checking) melalui empat langkah: tentukan Output Dijangka, tentukan Output Diperoleh, bandingkan kedua-duanya, kemudian analisis dan baiki ralat.
- Ralat algoritma membawa kepada ralat logik dan ralat masa larian, tetapi bukan ralat sintaks yang berpunca daripada kecuaian pengatur cara.
- Jadual pemboleh ubah mengesan nilai pada setiap tahap algoritma, dan output algoritma disahkan dengan membandingkannya dengan output dijangka.
- Setiap baris algoritma akhirnya diterjemah kepada kod dalam bahasa pengaturcaraan seperti Java.
A. Kuiz Objektif
B. Isi Tempat Kosong
C. Padankan Nod Carta Alir dengan Fungsinya
Seret nama nod ke fungsi yang betul. Jika menggunakan telefon, tekan pilihan jawapan dahulu, kemudian tekan kotak padanan.
Nama Nod
Terminal
Input/Output
Proses
Syarat
Fungsi
1 Menandakan permulaan dan penamat algoritma dalam carta alir.
2 Membaca input atau memaparkan output ke skrin.
3 Memproses input dalam bentuk ungkapan, termasuk umpukan nilai.
4 Menguji syarat, dengan satu anak panah masuk dan dua anak panah keluar.
Algoritma Atur Cara Analisis IPO Pseudokod Carta Alir Nod Pemboleh Ubah Umpukan Struktur Kawalan Urutan Struktur Kawalan Pilihan Struktur Kawalan Pengulangan Ungkapan Logik Operator Hubungan Desk-checking Output Dijangka Ralat Logik