| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| 1 Khai báo và sử dụng biến và hằng số | |
| 2 Hiểu và sử dụng các kiểu dữ liệu cơ bản | • Bao gồm: – số nguyên – số thực – ký tự – chuỗi – Boolean |
| 3 Hiểu và sử dụng đầu vào và đầu ra | |
| 4 (a) Hiểu và sử dụng khái niệm sự tuần tự | |
| (b) Hiểu và sử dụng khái niệm sự lựa chọn | • Bao gồm: – lệnh IF – lệnh CASE |
| (c) Hiểu và sử dụng khái niệm lặp lại | • Bao gồm: – vòng lặp kiểm soát bởi đếm – vòng lặp tiền điều kiện – vòng lặp hậu điều kiện |
| (d) Hiểu và sử dụng các khái niệm cộng tổng và đếm số | |
| (e) Hiểu và sử dụng khái niệm xử lý chuỗi | • Bao gồm: – độ dài – chuỗi con – hoa – thường • Ký tự đầu tiên của chuỗi có thể là vị trí 0 hoặc 1 |
| (f) Hiểu và sử dụng toán tử số học, liên hệ và logic | • Số học, giới hạn ở: – + – – / * ^ (lũy thừa) MOD DIV • Liên hệ, giới hạn ở: = < – <= – > >= <> (không bằng) • Logic, giới hạn ở: AND OR NOT |
| 5 Hiểu và sử dụng câu lệnh lồng nhau | • Bao gồm: câu lệnh lựa chọn lồng nhau và lặp lồng nhau • Thí sinh sẽ không cần viết nhiều hơn ba mức lồng nhau |
| 6 (a) Hiểu khái niệm về thủ tục, hàm và tham số (b) Định nghĩa và sử dụng thủ tục và hàm, có hoặc không có tham số (c) Hiểu và sử dụng biến cục bộ và biến toàn cục | • Thủ tục và hàm có thể có tối đa ba tham số |
| 7 Hiểu và sử dụng thủ tục thư viện | • Bao gồm: – MOD – DIV – ROUND – RANDOM |
| 8 Hiểu cách tạo ra một chương trình dễ bảo trì | • Bao gồm việc sử dụng phù hợp: – tên định nghĩa có ý nghĩa – tính năng bình luận do ngôn ngữ lập trình cung cấp – thủ tục và hàm – bình luận về cú pháp liên quan và phù hợp • Sử dụng tên định nghĩa có ý nghĩa cho: – biến – hằng – mảng – thủ tục và hàm |
Lập trình
Khoa học máy tính IGCSE · Chủ đề 8
13:16
Lập trình
Đây là một chương trình ngắn. Nó đọc năm điểm kiểm tra và in tổng. Năm điểm là tám, chín, bảy, sáu và mười, nên tổng phải là bốn mươi. Hãy xem…
Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp
8.1
Biến và hằng số
Chương trình
Nguồn: Chương trình Cambridge International
Một biến là nơi lưu trữ có tên chứa một giá trị có thể thay đổi trong khi chương trình chạy. Một hằng số là nơi lưu trữ có tên có giá trị cố định và không thay đổi.


Bạn cần khai báo chúng (nói tên và kiểu) trước khi sử dụng:
DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142

Sử dụng hằng số cho một giá trị không bao giờ thay đổi (như Pi), để nó được thiết lập ở một nơi và dễ đọc.
Biến và gán giá trị
Lặp qua từng dòng và quan sát cách mỗi biến nhận giá trị mới.
| English | Tiếng Việt |
|---|---|
| variable/ˈveərɪəbl/ | biến |
| constant/ˈkɒnstənt/ | không đổi |
| declare/dɪˈkleə/ | khai báo |
| integer/ˈɪntɪdʒə/ | integer |
| string/strɪŋ/ | chuỗi ký tự |
8.1
Kiểu dữ liệu
Một kiểu dữ liệu nói lên loại giá trị mà một biến chứa. Bạn cần biết năm kiểu cơ bản.

| Type | Holds | Example |
|---|---|---|
| integer | một số nguyên | 42, -7 |
| real | một số có dấu phẩy thập phân | 3.14, -0.5 |
| char | một ký tự đơn lẻ | 'A', '?' |
| xâu ký tự | một chuỗi các ký tự | "Hello" |
| Boolean | một trong hai giá trị | TRUE hoặc FALSE |
| English | Tiếng Việt |
|---|---|
| data type/ˈdeɪtə taɪp/ | kiểu dữ liệu |
| real/rɪəl/ | số thực |
| char/tʃɑː/ | char (ký tự) |
| Boolean/ˈbuːlɪən/ | Boolean |
8.1
Nhập và xuất
Nhập đọc một giá trị từ người dùng. Xuất hiển thị một giá trị trên màn hình.
OUTPUT "What is your name?"
INPUT Name
OUTPUT "Hello ", Name
| English | Tiếng Việt |
|---|---|
| input/ˈɪnpʊt/ | đầu vào |
| output/ˈaʊtpʊt/ | đầu ra |
8.1
Ba cấu trúc cơ bản
Mọi chương trình đều được xây dựng từ ba cấu trúc điều khiển.

Tuần tự
Tuần tự có nghĩa là các bước được thực hiện lần lượt, theo thứ tự từ trên xuống dưới.
INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT Area
Lựa chọn
Lựa chọn quyết định sẽ thực hiện những bước nào dựa trên một điều kiện. Sử dụng câu lệnh IF, hoặc câu lệnh CASE khi có nhiều lựa chọn.
IF Score >= 50
THEN
OUTPUT "Pass"
ELSE
OUTPUT "Fail"
ENDIF
CASE OF Grade
'A' : OUTPUT "Excellent"
'B' : OUTPUT "Good"
OTHERWISE OUTPUT "Keep trying"
ENDCASE
Lặp lại
Lặp lại (vòng lặp) thực thi đi lặp lại các bước. Có ba loại.
Một vòng lặp điều khiển bằng bộ đếm lặp lại một số lượng cố định lần:
FOR I ← 1 TO 5
OUTPUT "Hello"
NEXT I
Một vòng lặp tiền điều kiện kiểm tra điều kiện trước mỗi lần lặp, nên nó có thể chạy không lần nào:
WHILE Answer <> "stop" DO
INPUT Answer
ENDWHILE
Một vòng lặp hậu điều kiện kiểm tra điều kiện sau mỗi lần lặp, nên nó luôn chạy ít nhất một lần:
REPEAT
INPUT Password
UNTIL Password = "secret"

Cách một thang IF … ELSE IF đưa ra quyết định
Các điều kiện được kiểm tra từ trên xuống dưới; ĐẦU TIÊN đáp ứng điều kiện sẽ chạy và phần còn lại bị bỏ qua. Kéo điểm số và xem nhánh nào sáng lên.
Sự lựa chọn
Thay đổi giá trị và xem nhánh nào được thực thi — minh họa cho câu lệnh chọn lựa.
| English | Tiếng Việt |
|---|---|
| loop/luːp/ | vòng lặp |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | vòng lặp điều khiển bằng đếm |
| pre-condition loop/priː kənˈdɪʃn luːp/ | vòng lặp tiền điều kiện |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | vòng lặp hậu điều kiện |
| length/leŋθ/ | chiều dài |
8.1
Tổng hợp và đếm
- tổng hợp — liên tục cộng các giá trị vào tổng đang tích lũy:
Total ← Total + Value. - đếm — cộng 1 vào bộ đếm mỗi lần:
Count ← Count + 1.


Total ← 0
FOR I ← 1 TO 10
INPUT Mark
Total ← Total + Mark
NEXT I
OUTPUT Total
Ví dụ đã giải. Một chương trình phải đọc 5 điểm số, sau đó xuất tổng và trung bình.
Total ← 0
FOR I ← 1 TO 5
INPUT Mark
Total ← Total + Mark
NEXT I
Average ← Total / 5
OUTPUT Total, Average
Hai dòng mang điểm số. Total ← 0 phải nằm trước vòng lặp: đặt nó bên trong thì tổng sẽ được khởi tạo lại ở mỗi lần chạy, khiến chương trình chỉ xuất điểm số cuối cùng. Và Average ← Total / 5 phải nằm sau vòng lặp, vì tổng chưa hoàn chỉnh cho đến khi tất cả điểm số đã được cộng. Khởi tạo trước, tính toán sau — thứ tự này chính là điều mà đề bài thực sự kiểm tra.
| English | Tiếng Việt |
|---|---|
| totalling/ˈtəʊtəlɪŋ/ | tổng hợp |
| counting/ˈkaʊntɪŋ/ | đếm |
| remainder/rɪˈmeɪndə/ | phần dư |
| nested statement/ˈnestɪd ˈsteɪtmənt/ | câu lệnh lồng nhau |
8.1
Toán tử
Toán tử số học
| Toán tử | Ý nghĩa |
|---|---|
+ - * / |
cộng, trừ, nhân, chia |
^ |
mũ hóa (lũy thừa) |
MOD |
phần dư sau khi chia |
DIV |
phần nguyên của một phép chia |
Ví dụ, 17 MOD 5 là 2, và 17 DIV 5 là 3.
Toán tử quan hệ
Chúng so sánh hai giá trị và trả về kết quả Boolean: =, <, <=, >, >=, và <> (không bằng).
Toán tử logic
Chúng ghép nối các điều kiện: AND (cả hai phải đúng), OR (ít nhất một phải đúng), NOT (đảo ngược đúng/sai).

IF Age >= 13 AND Age <= 19
THEN
OUTPUT "Teenager"
ENDIF
8.1
Xử lý xâu ký tự
Một xâu ký tự được tạo bởi các ký tự. Các thao tác hữu ích:
- chiều dài — số lượng ký tự trong xâu;
- xâu con — một phần nhỏ hơn lấy ra từ xâu;
- viết hoa — chuyển chữ cái thành chữ in hoa;
- viết thường — chuyển chữ cái thành chữ in thường.
name ← "Computer"
OUTPUT LENGTH(name) // 8
OUTPUT SUBSTRING(name, 1, 4) // "Comp"
OUTPUT UCASE(name) // "COMPUTER"
OUTPUT LCASE(name) // "computer"
(Ký tự đầu tiên có thể được đếm là vị trí 0 hoặc vị trí 1, tùy thuộc vào ngôn ngữ.)
SUBSTRING: lấy một phần của chuỗi
Ký tự đầu tiên ở vị trí 1. SUBSTRING(Word, Start, Length) lấy Length ký tự bắt đầu từ Start — kéo hai tay cầm và đọc cú gọi tạo ra.
| English | Tiếng Việt |
|---|---|
| substring/ˈsʌbstrɪŋ/ | chuỗi con |
| upper case/ˈʌpə keɪs/ | chữ in hoa |
| lower case/ˈləʊə keɪs/ | chữ in thường |
8.1
Câu lệnh lồng nhau
Một câu lệnh lồng nhau là một cấu trúc điều khiển được đặt bên trong một cấu trúc khác. Bạn có thể lồng nhau cả lựa chọn và lặp lại.
FOR I ← 1 TO 3
IF MOD(I, 2) = 0
THEN
OUTPUT I, " is even"
ELSE
OUTPUT I, " is odd"
ENDIF
NEXT I
Bạn sẽ không cần viết quá ba cấp độ lồng nhau.
8.1
Thủ tục và hàm
Để tránh lặp lại mã nguồn, bạn có thể chia chương trình thành các khối có tên.
- Một thủ tục là một khối mã có tên thực hiện một nhiệm vụ. Bạn gọi nó bằng
CALL. - Một hàm giống như thủ tục, nhưng nó trả về một giá trị về nơi nó được gọi.
Một tham số là một giá trị được truyền vào thủ tục hoặc hàm (tối đa ba tham số).
PROCEDURE Greet(PersonName : STRING)
OUTPUT "Hello ", PersonName
ENDPROCEDURE
CALL Greet("Sam")
FUNCTION Square(N : INTEGER) RETURNS INTEGER
RETURN N * N
ENDFUNCTION
Answer ← Square(5) // answer is 25
Biến cục bộ và biến toàn cục
- Một biến cục bộ được khai báo bên trong thủ tục hoặc hàm. Nó chỉ có thể được sử dụng tại đó.
- Một biến toàn cục được khai báo trong chương trình chính. Nó có thể được sử dụng ở mọi nơi.
Biến cục bộ an toàn hơn, vì chúng không thể bị thay đổi nhầm lẫn từ một phần khác của chương trình.
| English | Tiếng Việt |
|---|---|
| procedure/prəˈsiːdʒə/ | thủ tục |
| function/ˈfʌŋkʃn/ | hàm |
| parameter/pəˈræmɪtə/ | parameter |
| local variable/ˈləʊkl ˈveərɪəbl/ | biến cục bộ |
| global variable/ˈɡləʊbl ˈveərɪəbl/ | biến toàn cục |
| library routine/ˈlaɪbrəri ruːˈtiːn/ | thư viện thủ tục |
| maintainable/meɪnˈteɪnəbl/ | có thể duy trì |
| meaningful identifiers/ˈmiːnɪŋfl aɪˈdentɪfaɪəz/ | tên gọi có ý nghĩa |
| comments/ˈkɒments/ | comment |
8.1
Hàm thư viện
Một hàm thư viện là một đoạn mã có sẵn mà bạn có thể sử dụng. Bạn cần biết những hàm sau:
| Hàm | Tác dụng |
|---|---|
MOD |
trả về phần dư của một phép chia |
DIV |
trả về phần nguyên của một phép chia |
ROUND |
làm tròn một số thực đến một số chữ số thập phân |
RANDOM |
trả về một số ngẫu nhiên |
8.1
Viết chương trình dễ bảo trì
Một chương trình dễ bảo trì là chương trình dễ đọc và dễ sửa đổi bởi người khác sau này. Để làm được điều đó:
- sử dụng tên gọi có ý nghĩa — tên rõ ràng cho biến, hằng, mảng, thủ tục và hàm (
totalScore, không phảix); - thêm ghi chú để giải thích các phần của mã nguồn làm gì;
- sử dụng thủ tục và hàm để chia công việc thành các khối nhỏ.
8.2
Mảng
Chương trình
| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| 1 Khai báo và sử dụng mảng một chiều (1D) và mảng hai chiều (2D) | |
| 2 Hiểu cách sử dụng mảng | • Bao gồm việc sử dụng biến làm chỉ mục trong mảng |
| 3 Ghi giá trị vào, và đọc giá trị từ, một mảng bằng cách lặp lại | • Chỉ mục đầu tiên có thể là 0 hoặc 1 • Bao gồm cả lặp lại lồng nhau |
Nguồn: Chương trình Cambridge International
Một mảng là một biến duy nhất lưu trữ nhiều giá trị cùng loại, được truy cập thông qua một chỉ mục (một số vị trí).
Mảng một chiều
Một mảng một chiều (1D) giống như một danh sách đơn.
DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
OUTPUT Scores[1]

Bạn có thể sử dụng vòng lặp để điền hoặc đọc mảng:
FOR I ← 1 TO 5
INPUT Scores[I]
NEXT I
Mảng hai chiều
Một mảng hai chiều (2D) giống như một bảng có các hàng và cột. Nó sử dụng hai chỉ mục.
DECLARE Grid : ARRAY[1:3, 1:3] OF INTEGER
Grid[1, 1] ← 5
Grid[2, 3] ← 8

Bạn đọc mảng 2D bằng cách dùng vòng lặp lồng nhau (lặp lồng).
Mảng
Chọn một hàng và một cột để đọc một ô. Mảng Cambridge đếm từ 1, và phần tử 2-D được viết bằng MỘT cặp ngoặc vuông — Grid[2, 3].
| English | Tiếng Việt |
|---|---|
| array/əˈreɪ/ | mảng (array) |
| index/ˈɪndeks/ | index |
| one-dimensional (1D) array/wʌn daɪˈmenʃənl əˈreɪ/ | mảng một chiều (1D) |
| two-dimensional (2D) array/tuː daɪˈmenʃənl əˈreɪ/ | mảng hai chiều (2D) |
8.3
Xử lý tệp tin
Chương trình
| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| 1 Hiểu mục đích của việc lưu trữ dữ liệu trong một tệp tin để chương trình sử dụng | |
| 2 Mở, đóng và sử dụng tệp tin để đọc và ghi | • Bao gồm: – đọc và ghi từng mục dữ liệu – đọc và ghi một dòng văn bản |
Nguồn: Chương trình Cambridge International
Một chương trình có thể lưu dữ liệu vào một tệp tin để dữ liệu được giữ lại sau khi chương trình dừng. Bạn phải mở tệp tin, sử dụng nó, rồi đóng nó lại.
OPENFILE "data.txt" FOR WRITE
WRITEFILE "data.txt", "Hello"
CLOSEFILE "data.txt"
OPENFILE "data.txt" FOR READ
READFILE "data.txt", Line
CLOSEFILE "data.txt"
Bạn có thể đọc và ghi từng mục dữ liệu riêng lẻ hoặc cả một dòng văn bản. Luôn đóng tệp tin khi đã hoàn thành việc sử dụng.
| English | Tiếng Việt |
|---|---|
| file/faɪl/ | tệp |
8.3
Mẹo làm bài thi
- Một biến có thể thay đổi khi chương trình đang chạy; một hằng thì cố định. Hãy học năm loại dữ liệu: nguyên (integer), thực (real), ký tự (char), chuỗi (string), Boolean.
- Mọi chương trình đều được xây dựng từ ba cấu trúc: trình tự (sequence), lựa chọn (IF / CASE), và lặp (loops).
- Vòng lặp WHILE kiểm tra điều kiện trước thân lệnh, nên nó có thể không chạy lần nào; vòng lặp REPEAT … UNTIL kiểm tra sau, nên nó luôn chạy ít nhất một lần.
MODtrả về phần dư vàDIVtrả về phần nguyên của phép chia:17 MOD 5là 2,17 DIV 5là 3.- Một hàm trả về một giá trị; một thủ tục thì không. Một biến địa phương chỉ hoạt động bên trong khối code của nó; một biến toàn cục hoạt động ở bất cứ đâu.
| English | Tiếng Việt |
|---|---|
| sequence/ˈsiːkwəns/ | dãy (sequence) |
| selection/sɪˈlekʃn/ | chọn lọc |
| iteration/ˌɪtəˈreɪʃn/ | lặp lại |
Bài học tương tác về chủ đề này
Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.