Lompat ke konten

Desain Algoritma dan Pemecahan Masalah

Ilmu Komputer A-Level · Topik 9

Pelajaran video untuk topik ini Buka halaman video
14:52

Pemikiran Komputasional

Berikut sebuah tugas: bangun sistem untuk mengelola stok seluruh toko — setiap produk, setiap penjualan, setiap pengiriman, setiap laporan. Sebagai satu masalah raksasa, itu terlalu besar untuk…

Narasi bahasa Inggris · Subtitle bahasa Inggris + 中文 disematkan langsung

9.1

Berpikir komputasional

Silabus
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman tentang abstraksi Kebutuhan dan manfaat menggunakan abstraksi Jelaskan tujuan abstraksi Hasilkan model abstrak dari sistem hanya dengan memasukkan detail esensial
Jelaskan dan gunakan dekomposisi Pecahkan masalah menjadi sub-masalah yang mengarah pada konsep modul program (prosedur / fungsi)

Sumber: Silabus Cambridge International

Berpikir komputasional adalah kumpulan alat mental untuk menganalisis masalah dan merancang solusi yang dapat dijalankan komputer. Dua hal penting adalah abstraksi dan dekomposisi.

Teka-teki silang sebagian selesai
Berpikir komputasional memecah masalah besar menjadi bagian-bagian kecil yang lebih mudah — seperti memecahkan teka-teki silang

Abstraksi

Abstraksi berarti menjaga fitur-fitur esensial dari masalah dan mengabaikan detail yang tidak relevan, memberikan model yang lebih sederhana.

Contoh-contoh:

  • peta jaringan kereta api mempertahankan stasiun dan jalur tetapi menghilangkan geografisnya.
  • kelas dalam pemrograman berorientasi objek hanya mempertahankan atribut dan metode yang dibutuhkan sistem.
  • fungsi menyembunyikan sebagian pekerjaan di balik sebuah nama.

Model lengkap dari masalah nyata apa pun akan terlalu besar untuk dipikirkan, jadi abstraksi sangat penting.

Penguji meminta tujuan abstraksi dan manfaat-nya. Tujuan: untuk menghasilkan model yang lebih sederhana dari sebuah masalah yang hanya berisi detail yang diperlukan untuk menyelesaikannya. Manfaat: masalah menjadi lebih mudah dipahami dan diprogram; program lebih kecil dan lebih cepat ditulis serta diuji; model yang sama dapat digunakan kembali untuk masalah serupa. Ketika Anda diminta untuk membuat model abstrak dari suatu sistem, sebutkan hanya data dan tindakan yang dibutuhkan oleh tugas tersebut. Untuk jadwal sekolah, ini berarti kelas, ruang, guru, dan periode; bukan berarti warna ruangan atau usia guru.

Abstraksi mengubah peta geografi nyata yang berantakan (rute berkelok dengan bangunan berserakan) menjadi peta metro yang bersih — lingkaran stasiun yang teratur pada garis lurus, mempertahankan stasiun dan jalur, namun menghilangkan aspek geografisnya
Abstraksi mempertahankan hal-hal esensial (stasiun dan jalur) dan menghilangkan detail yang tidak relevan (geografi)

Dekomposisi

Dekomposisi berarti memecah masalah besar menjadi sub-masalah yang lebih kecil, masing-masing lebih mudah diselesaikan dan ditangani satu per satu.

  1. temukan bagian utama dari tugas.
  2. pecahkan setiap bagian menjadi sub-tugas yang lebih kecil.
  3. lanjutkan hingga setiap bagian cukup kecil untuk dirancang secara langsung.
  4. selesaikan tugas-tugas kecil dan gabungkan hasilnya.

Untuk pengendalian stok: "kelola stok" → "catat penjualan", "catat pengiriman", "hasilkan laporan" → ("catat penjualan") "cari produk", "kurangi jumlah stok", "simpan transaksi". Dekomposisi membuat masalah besar dapat dikelola, memungkinkan tim membagi pekerjaan, dan memberikan kode modular — setiap modul menjadi prosedur atau fungsi.

"Jelaskan mengapa dekomposisi digunakan" adalah soal bernilai tiga dengan struktur tetap. Berikan tiga manfaat terpisah: setiap sub-masalah cukup kecil untuk dirancang, diprogram, dan diujinya sendiri; programmer berbeda dapat bekerja pada modul yang berbeda secara bersamaan; modul yang sudah ada (atau rutinitas perpustakaan) dapat digunakan kembali, dan kesalahan lebih mudah ditemukan karena terletak di dalam satu modul. Peta struktur (topik 12) adalah diagram dari dekomposisi: program di bagian atas, modul-modul di bawahnya, dan data yang dilewatkan di antaranya.

Pohon dengan "Kelola stok" di puncak yang bercabang menjadi modul "Catat penjualan", "Catat pengiriman" dan "Hasilkan laporan", dan "Catat penjualan" terpecah menjadi sub-tugas "Cari produk", "Kurangi jumlah stok" dan "Simpan transaksi"
Mendekomposisikan program menjadi modul dan sub-modul
Jelajahi

Menyelesaikan masalah dengan cara komputasional

Ikuti keempat pilar berdasar urutan penggunaannya — pecahkan masalahnya, temukan apa yang berulang, sederhanakan ke esensinya, lalu tulis langkah-langkahnya.

Kosa kata Latih
English Bahasa Indonesia
computational thinking/ˌkɒmpjuːˈteɪʃənl ˈθɪŋkɪŋ/ berpikir komputasional
abstraction/əbˈstrækʃn/ abstraksi
decomposition/ˌdiːkɒmpəˈzɪʃn/ dekomposisi
sub-problem/sʌb ˈprɒbləm/ sub-masalah
procedure/prəˈsiːdʒə/ prosedur
modules/ˈmɒdjuːlz/ modul
algorithm/ˈælɡərɪθəm/ algoritma
sequence/ˈsiːkwəns/ urutan
unambiguous/ʌnæmˈbɪɡjuːəs/ tak ambigu
deterministic/dɪˌtɜːmɪˈnɪstɪk/ deterministik
9.2

Algoritma

Silabus
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman bahwa algoritma adalah solusi untuk masalah yang dinyatakan sebagai urutan langkah-langkah yang terdefinisi
Gunakan nama identifikator yang sesuai untuk representasi data yang digunakan oleh suatu masalah dan wakili ini menggunakan tabel identifikator
Tulis pseudocode yang berisi input, proses dan output
Tulis pseudocode menggunakan tiga konstruk dasar urutan, seleksi dan iterasi (pengulangan)
Dokumentasikan algoritma sederhana menggunakan deskripsi bahasa Inggris terstruktur, flowchart atau pseudocode
Tulis pseudocode dari: • deskripsi bahasa Inggris terstruktur • flowchart
Gambar flowchart dari: • deskripsi bahasa Inggris terstruktur • pseudocode
Jelaskan dan gunakan proses penyempurnaan bertahap untuk mengekspresikan algoritma hingga tingkat detail dari mana tugas dapat diprogram
Gunakan pernyataan logika untuk mendefinisikan bagian-bagian solusi algoritma

Sumber: Silabus Cambridge International

Bubble sort, pass by pass

Sebuah algoritma adalah solusi yang dinyatakan sebagai serangkaian langkah terdefinisi. Setiap langkah tidak ambigu (satu makna), deterministik (input yang sama → output yang sama), finite (langkah-langkah berakhir), dan efektif (setiap langkah dapat dilakukan). Algoritma menyatakan apa yang harus dilakukan, terlepas dari bahasa pemrograman yang digunakan untuk mengimplementasikannya.

Jelajahi

Seleksi: ikuti cabang IF / ELSE

Seret skor dan lihat cabang mana yang berjalan. Seleksi menguji setiap kondisi secara bergantian dan mengambil YANG PERTAMA yang benar — itulah cara kerja IF … ELSE IF … ELSE.

9.2

Tabel pengenal

Ketika Anda memulai algoritma, daftarkan setiap komponen data dalam tabel pengenal — pengenal-nya (nama variabel), tipe data, dan deskripsi. Tabel ujian memiliki tepat tiga kolom ini:

Pengenal Tipe data Deskripsi
Category STRING kategori produk
SaleDate DATE kapan barang tersebut dijual
ItemCost REAL biaya barang
InStock BOOLEAN TRUE jika tersedia
Sales ARRAY[1:30] OF REAL total penjualan harian selama 30 hari terakhir

Gunakan nama deskriptif (ItemCost, bukan x): pengenal dimulai dengan huruf, tidak mengandung spasi, dan ditulis sama setiap kali muncul. Tipe umum adalah INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, serta array. Tabel memaksa Anda untuk menamai setiap bagian data sebelum menulis kode, dan pertanyaan "lengkapi tabel pengenal" memberikan satu nilai untuk setiap tipe data atau deskripsi yang benar, jadi tulis tipe persis seperti panduan pseudocode.

Tabel pengenal yang mencantumkan setiap variabel beserta nama, tipe data, dan deskripsinya, misalnya ItemCost sebagai REAL untuk biaya item *Tabel pengenal menamai setiap bagian data sebelum Anda menulis kode

Kosa kata Latih
English Bahasa Indonesia
identifier table/aɪˈdentɪfaɪə ˈteɪbl/ tabel pengenal
identifier/aɪˈdentɪfaɪə/ pengenal
Boolean/ˈbuːlɪən/ Boolean
pseudocode/ˈsuːdəʊkəʊd/ pseudocode
9.2

Pseudocode — tiga konstruk dasar

Pseudocode adalah cara terstruktur dan netral bahasa untuk mendeskripsikan algoritma.

Tiga konstruk dasar sebagai mini-flowchart: urutan menjalankan langkah A lalu B lalu C; seleksi menguji kondisi dan melakukan X atau Y; iterasi mengulang badan program selama kondisi terpenuhi, dengan pengulangan kembali ke awal
Tiga blok pembangun dari setiap algoritma: urutan, seleksi, dan iterasi

1. Urutan

Langkah-langkah berjalan satu setelah lainnya (urutan):

INPUT Name
INPUT Age
OUTPUT "Hello", Name

2. Seleksi

Pilihan langkah mana yang akan dijalankan, berdasarkan suatu kondisi (seleksi):

IF Age >= 18 THEN
    OUTPUT "Adult"
ELSE
    OUTPUT "Minor"
ENDIF

Untuk opsi tambahan, gunakan CASE OF ... ENDCASE.

3. Iterasi

Pengulangan sebuah blok (iterasi, sebuah perulangan):

FOR i ← 1 TO 10
    OUTPUT i
NEXT i

Perulangan WHILE menguji kondisi sebelum setiap putaran (mungkin berjalan nol kali); perulangan REPEAT...UNTIL menguji setelah setiap putaran (selalu berjalan setidaknya sekali).

WHILE Total < 100 DO
    INPUT Value
    Total ← Total + Value
ENDWHILE

REPEAT
    INPUT Mark
UNTIL Mark >= 0 AND Mark <= 100
Dua flowchart berdampingan. WHILE menguji kondisi terlebih dahulu, sehingga badan program mungkin tidak pernah berjalan: berlian berada di atas badan program dan cabang No keluar dari loop. REPEAT UNTIL menjalankan badan program terlebih dahulu dan mengujinya setelahnya, sehingga badan program selalu berjalan setidaknya sekali: badan program berada di atas berlian dan cabang No kembali ke badan program
Perulangan WHILE menguji sebelum badan berjalan; perulangan REPEAT ... UNTIL menguji setelahnya, sehingga badannya selalu berjalan setidaknya sekali

Memilih jenis perulangan itu sendiri bernilai poin: FOR ketika Anda tahu berapa kali (perulangan yang dikendalikan hitung; count-controlled loop); WHILE ketika perulangan mungkin tidak berjalan sama sekali (perulangan pre-kondisi; pre-condition loop); REPEAT ... UNTIL ketika harus berjalan setidaknya sekali, seperti dalam validasi input (perulangan post-kondisi; post-condition loop). Jawaban "deskripsikan konstruk iterasi" menyebutkan nama konstruk, mengatakan di mana kondisi diuji, dan memberikan konsekuensinya (nol kali atau setidaknya sekali).

Operasi umum

  • penugasan: x ← 5 (tanda panah; = untuk perbandingan).
  • input/output: INPUT variable, OUTPUT expression.
  • perbandingan =, <>, <, >, <=, >=; logika AND, OR, NOT.
  • aritmatika + - * /, tambah DIV (pembagian bulat) dan MOD (sisa bagi).
  • string: LENGTH, LEFT, RIGHT, MID, dan & untuk penggabungan (menyambungkan).

Pseudocode yang diharapkan dalam ujian

Setiap jawapan pseudocode dinilai mengikut panduan pseudocode yang diterbitkan oleh Cambridge. Tulis bentuk ini dengan tepat:

Konstruksi Pseudocode
Pembolehubah DECLARE Total : INTEGER
Array DECLARE Marks : ARRAY[1:30] OF REAL
Pemalar CONSTANT MaxTries = 3
Penugasan Total ← Total + Value
Masukan / keluaran INPUT Name
OUTPUT "Hello ", Name
Pemilihan CASE OF Choice
1 : OUTPUT "Add"
OTHERWISE OUTPUT "Error"
ENDCASE
Putaran FOR FOR i ← 1 TO 10 STEP 2 ... NEXT i
Putaran WHILE WHILE Total < 100 DO ... ENDWHILE
Putaran REPEAT REPEAT ... UNTIL Mark >= 0
Aritmatika integer 17 DIV 5 = 3
17 MOD 5 = 2
String LENGTH(S), LEFT(S, 3), RIGHT(S, 2)
MID(S, 2, 4), UCASE(S), LCASE(S)
Penukaran INT(3.7) = 3, NUM_TO_STR(12)
STR_TO_NUM("4.5"), ASC('A') = 65, CHR(66) = 'B'
Rawak RAND(100)
INT(RAND(100)) + 1

RAND(100) memberikan nombor nyata dari 0 hingga (tetapi tidak termasuk) 100. INT(RAND(100)) + 1 memberikan integer dari 1 hingga 100.

Dua tabiat mendapat markah dalam setiap soalan: nyatakan setiap pembolehubah yang anda gunakan, dengan jenis daripada jadual pengenal anda, dan inisialisasikan setiap pesaing dan jumlah (Count ← 0, Total ← 0) sebelum putaran yang mengubahnya.

Masukan → Proses → Keluaran

Setiap program mengikuti bentuk ini:

INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT "Area = ", Area

Menyenaraikan masukan dan keluaran terlebih dahulu menjadikan algoritma lebih kemas.

Contoh kerja. Tulis pseudocode yang memasukkan 100 integer dan mengeluarkan berapa banyak darinya, serta jumlah mereka, yang terletak antara 10 dan 20 termasuk.

Jadual pengenal: Count : INTEGER (pesaing putaran), Value : INTEGER (integer baru-baru dimasukkan), InRange : INTEGER (berapa banyak yang berada dalam julat), Total : INTEGER (jumlah mereka).

DECLARE Count, Value, InRange, Total : INTEGER
InRange ← 0
Total ← 0
FOR Count ← 1 TO 100
    INPUT Value
    IF Value >= 10 AND Value <= 20 THEN
        InRange ← InRange + 1
        Total ← Total + Value
    ENDIF
NEXT Count
OUTPUT InRange, Total

Jika soalan kemudian meminta anda "kenal pasti dua konstruksi dan nyatakan bagaimana setiap satu digunakan", jawab dalam bentuk yang sama: putaran, putaran FOR, mengulangkan masukan sebanyak 100 kali; pemilihan, pernyataan IF, menambah nilai hanya apabila ia berada dalam julat.

Contoh kerja. Sebuah program memilih integer rahsia dari 1 hingga 100. Pengguna mengira sehingga mereka betul; selepas setiap tebak salah program mengatakan "Terlalu rendah" atau "Terlalu tinggi", dan pada akhirnya ia mengeluarkan berapa banyak tebak yang telah dibuat.

Jadual pengenal: Secret : INTEGER (nombor yang perlu ditebak), Guess : INTEGER (masukan pengguna), Tries : INTEGER (berapa banyak tebak sehingga kini).

DECLARE Secret, Guess, Tries : INTEGER
Secret ← INT(RAND(100)) + 1
Tries ← 0
REPEAT
    INPUT Guess
    Tries ← Tries + 1
    IF Guess < Secret THEN
        OUTPUT "Too low"
    ELSE
        IF Guess > Secret THEN
            OUTPUT "Too high"
        ENDIF
    ENDIF
UNTIL Guess = Secret
OUTPUT "You took ", Tries, " guesses"

Putaran REPEAT ... UNTIL adalah pilihan yang sesuai kerana pengguna mesti menebak sekurang-kurangnya sekali. Markah adalah untuk: nombor rawak dalam julat yang betul, putaran yang berakhir pada tebak yang betul, pesaing yang bermula daripada sifar dan meningkat di dalam putaran, dua mesej di bawah syarat yang betul, dan keluaran akhir.

Peta alir permainan tebak-tebakan: Mula, kemudian tetapkan Rahsia kepada integer rawak dari 1 hingga 100 dan Cubaan kepada 0, kemudian masukkan tebakan, tambah satu kepada Cubaan, uji sama ada tebakan sama dengan rahsia (Ya membawa kepada keluaran Cubaan dan Berhenti), sebaliknya uji sama ada tebakan lebih kecil (Ya output Terlalu rendah, Tidak output Terlalu tinggi), dan kedua-dua keluaran kembali ke masukan
Permainan tebak-tebakan yang sama sebagai peta alir: dua berlian keputusan adalah dua pernyataan IF, dan anak panah kembali adalah putaran REPEAT ... UNTIL

Contoh kerja. Keluarkan dua integer rawak yang berbeza, masing-masing antara $-10$ dan $10$ termasuk.

Terdapat 21 nilai yang mungkin, jadi INT(RAND(21)) memberikan 0 hingga 20 dan menolak 10 memindahkan julatnya kepada $-10$ hingga $10$. Nombor kedua mesti dijana semula sehingga ia berbeza dari yang pertama:

DECLARE First, Second : INTEGER
First ← INT(RAND(21)) - 10
REPEAT
    Second ← INT(RAND(21)) - 10
UNTIL Second <> First
OUTPUT First, Second
Setiap program mengikuti bentuk masukan, kemudian proses, kemudian keluaran, ditunjukkan dengan contoh kawasan: masukkan panjang dan lebar, proses dengan mendarab, keluarkan kawasan
Setiap program mengikuti bentuk Masukan, Proses, Keluaran
Jelajahi

IF … ELSE pemilihan

Ubah nilai dan saksikan cabang mana yang berjalan — bagaimana program membuat keputusan.

Kosa kata Latih
English Bahasa Indonesia
variable/ˈveərɪəbl/ pembolehubah
data type/ˈdeɪtə taɪp/ tipe data
flowchart/ˈfləʊtʃɑːt/ flowchart
selection/sɪˈlekʃn/ pemilihan
iteration/ˌɪtəˈreɪʃn/ iterasi
loop/luːp/ gelung
count-controlled loop/kaʊnt kənˈtrəʊld luːp/ loop terkontrol hitung
pre-condition loop/priː kənˈdɪʃn luːp/ loop pra-kondisi
post-condition loop/pəʊst kənˈdɪʃn luːp/ loop pasca-kondisi
assignment/əˈsaɪnmənt/ penugasan
concatenation/kənˌkætəˈneɪʃn/ konkatenasi
initialise/ɪˈnɪʃəlaɪz/ inisialisasi
counter/ˈkaʊntə/ counter
structured English/ˈstrʌktʃəd ˈɪŋɡlɪʃ/ bahasa Inggris terstruktur
stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ penyempurnaan bertahap
logic statement/ˈlɒdʒɪk ˈsteɪtmənt/ pernyataan logika
precedence/ˈpresɪdəns/ precedence
De Morgan's law/də ˈmɔːɡənz lɔː/ hukum De Morgan
9.2

Tiga notasi

Algoritma yang sama boleh ditulis dengan tiga cara.

  • bahasa Inggeris terstruktur — bahasa semula jadi dengan perenggan dan kata kunci tetap; baik untuk penerangan tahap tinggi.
  • peta alir — rajah dengan bentuk piawai:
Bentuk Makna
Segi empat tepat bulat Mula / Berhenti
Jajar genjang Masukan / Keluaran
Segi empat tepat Proses
Berlian Keputusan
Anak panah Aliran kawalan
  • pseudocode — notasi kata kunci di atas; paling dekat dengan kod.

Anda sepatutnya dapat menukar antara mana-mana pasangan: setiap IF adalah berlian keputusan, setiap putaran adalah anak panah balik, dan urutan adalah segi empat tepat bertindih.

IF ... THEN ... ELSE ... ENDIF

Peta alir untuk purata nombor: terminator Mula dan Berhenti bulat, jajar genjang masukan/keluaran, segi empat tepat proses, dan berlian keputusan "count < n?" yang cabang Ya kembali ke membaca nilai seterusnya *Peta alir untuk purata senarai nombor, menggunakan bentuk piawai

9.2

Penyempurnaan bertingkat

Penyempurnaan bertingkat bermula dengan garis besar tahap tinggi dan mengembangkan setiap langkah sehingga ia cukup kecil untuk dikod. Untuk purata $n$ nombor:

Tahap 1:

Read in the numbers
Compute the average
Output the average

Tahap 2:

INPUT n
total ← 0
FOR i ← 1 TO n
    INPUT value
    total ← total + value
NEXT i
average ← total / n
OUTPUT average

Setiap penyempurnaan mengekalkan struktur sebelumnya dan menambah butiran.

Soalan "terapkan penyempurnaan bertingkat" enam markah memberikan anda garis besar tahap tinggi dan mahukan setiap langkah dikembangkan kepada pernyataan konkret yang boleh dikod oleh seorang pengaturcaraan. Kekalkan langkah-langkah dalam urutan yang sama, beri nama data yang dibaca atau dihasilkan oleh setiap langkah, dan berhenti apabila setiap baris merupakan masukan tunggal, penugasan, keluaran, putaran atau syarat. Sebagai contoh, "sahkan kata laluan" menjadi: masukkan kata laluan; semak panjangnya sekurang-kurangnya 8; semak ia mengandungi sekurang-kurangnya satu digit; output "diterima" jika kedua-dua semakan berjaya, sebaliknya output "ditolak".

Penyempurnaan bertingkat: garis besar Tahap 1 (baca dalam nombor, kira purata, output purata) dikembangkan kepada pseudocode terperinci Tahap 2 dengan putaran masukan dan pembahagian
Penyempurnaan bertahap: kembangkan setiap langkah tingkat tinggi menjadi pseudocode yang terperinci
Jelajahi

Penyempurnaan bertahap: outline hingga kode

Turunkan level-levelnya. Anda memulai dengan seluruh tugas dalam satu baris dan terus menguraikan setiap langkah menjadi yang lebih kecil — hingga setiap langkah cukup sederhana untuk diprogram langsung.

9.2

Pernyataan logik

Sebuah pernyataan logik adalah syarat Boolean yang mengawal percabangan, dibina daripada perbandingan (x > 10), penyambung (AND, OR, NOT) dan kurung. Gunakan ia sebagai syarat bagi IF, WHILE atau REPEAT...UNTIL:

WHILE attempts < 3 AND NOT loggedIn DO
    INPUT password
    IF password = correctPassword THEN
        loggedIn ← TRUE
    ELSE
        attempts ← attempts + 1
    ENDIF
ENDWHILE

Kecutuhan (tertinggi ke terendah): NOT, kemudian AND, kemudian OR. Gunakan kurung jika tidak pasti. Kesilapan biasa:

  • a = 1 OR 2 adalah salah — tulis a = 1 OR a = 2.
  • NOT a > 5 bermaksud NOT (a > 5), iaitu a <= 5.
  • NOT (A AND B) sama dengan (NOT A) OR (NOT B) (Hukum De Morgan) — berguna untuk mempermudahkan syarat.

Menukar ayat kepada pernyataan logik adalah kemahiran yang diuji secara langsung dalam kertas peperiksaan. "Tiket percuma untuk sesiapa di bawah 5 atau melebihi 65" menjadi Age < 5 OR Age > 65. "Markah sah jika ia merupakan nombor bulat dari 0 hingga 100" menjadi Mark >= 0 AND Mark <= 100. "Gelung berhenti apabila fail tamat atau sepuluh rekod telah dibaca" menjadi UNTIL EOF(File) OR Count = 10. Tulis setiap perbandingan secara penuh: Age > 65 dan Age < 5, jangan pernah Age > 65 OR < 5.

Pohon parsing untuk "cubaan < 3 DAN TIDAK masukLog": TIDAK merujuk kepada masukLog terlebih dahulu, kemudian DAN menggabungkan itu dengan cubaan < 3
Kecutuhan: TIDAK melekat pada masukLog terlebih dahulu, kemudian AND menggabungkan kedua-dua belah

Contoh berkerja. Tulis jadual pengenal pasti dan pseudocode untuk membaca 10 nombor dan mengeluarkan nilai terbesar. Jadual pengenal pasti menamakan setiap pembolehubah dengan jenis data dan tujuannya: Count : INTEGER (pengira gelung), Num : REAL (nombor yang baru dibaca), Max : REAL (nilai terbesar sehingga kini).

Max ← -999999
FOR Count ← 1 TO 10
    INPUT Num
    IF Num > Max THEN
        Max ← Num
    ENDIF
NEXT Count
OUTPUT Max

Keputusan reka bentuk yang membawa markah ialah mewujudkan Max: ia mesti dimulakan lebih rendah daripada sebarang input yang mungkin - atau, lebih selamat lagi, tetapkan kepada nombor pertama yang dibaca. Inisialisasi ia kepada 0 dan algoritma akan kembali 0 untuk senarai nombor negatif, sebuah ralat yang jejak anda hanya mendedahkan jika data ujian termasuk nombor negatif.

9.2

Definisi yang diterima oleh penguji

Soal definisi dinilai berdasarkan frasa tetap. Hafalkan ini persis, dan berikan hanya satu jawaban.

Istilah Definisi
abstraksi mengekalkan butiran utama masalah dan meninggalkan butiran yang tidak diperlukan
penguraian memecahkan masalah kepada sub-masalah yang lebih kecil, masing-masing yang boleh diselesaikan secara berasingan
algoritma penyelesaian bagi suatu masalah yang dinyatakan sebagai satu siri langkah-langkah yang ditakrifkan
jadual pengenal pasti satu jadual yang menyenaraikan setiap pengenal pasti yang digunakan dalam algoritma bersama jenis datanya dan penerangan tentang tujuan
pseudocode cara yang teratur dan bebas bahasa untuk menulis langkah-langkah algoritma
carta alir rajah yang menunjukkan langkah-langkah dan keputusan algoritma menggunakan simbol piawai yang disambungkan oleh anak panah
jujukan nyataan yang dieksekusi satu demi satu mengikut urutan penulisan
pemilihan memilih nyataan mana yang perlu dieksekusi mengikut satu syarat
pengiterasian mengulang sekumpulan nyataan semasa, atau sehingga, satu syarat berlaku
penyempurnaan bertahap memecahkan setiap langkah sketsa kepada langkah-langkah yang lebih kecil, berulang kali, sehingga setiap langkah boleh dikodkan secara langsung
pernyataan logik satu syarat yang dibina daripada perbandingan dan operator AND, OR dan NOT yang memberikan nilai TRUE atau FALSE
9.2

Tips ujian

  • Takrifkan algoritma sebagai satu siri langkah yang jelas, terhingga, deterministik, dan bebas bahasa.
  • Gunakan tiga binaan dengan betul — jujukan, pemilihan, pengiterasian — dan kekalkan jadual pengenal pasti dengan jenis data.
  • Pecahkan masalah melalui penguraian dan abstraksi, kemudian penyempurnaan bertahap.
  • Tulis pseudocode yang sebenarnya boleh berjalan: nyatakan pembolehubah dan ikuti gaya pseudocode peperiksaan.

Kesalahan umum

  • Menggunakan = untuk menetapkan nilai. Penetapan ialah ←; = ialah perbandingan.
  • Melupakan ENDIF, ENDWHILE, ENDCASE atau NEXT. Setiap binaan ditutup, dan kata penutup adalah tempat markah bagi binaan tersebut diperiksa.
  • Tidak mewujudkan jumlah atau pengira sebelum gelung, jadi algoritma menambah kepada nilai yang tidak pernah wujud.
  • Menggunakan gelung FOR apabila bilangan pengulangan tidak diketahui. Membaca sehingga nilai pengawal atau tekaan yang betul memerlukan WHILE atau REPEAT ... UNTIL.
  • Menulis Age > 65 OR < 5. Setiap bahagian OR dan AND mesti merupakan perbandingan lengkap.
  • Menjawab "jelaskan mengapa penguraian digunakan" dengan satu faedah ditulis tiga cara. Tiga markah memerlukan tiga faedah yang berbeza.

Pelajaran interaktif untuk topik ini

Kerjakan langkah demi langkah, dengan latihan pengecekan instan.

Soal-Soil Masa Lalu

Topik lain dalam Ilmu Komputer A-Level

Masuk atau buat akun

IGCSE, A-Level & AP