Đây là một nhiệm vụ: xây dựng hệ thống quản lý tồn kho của cả một cửa hàng — mọi sản phẩm, mọi lần bán, mọi lô hàng, mọi báo cáo. Xét như một vấn đề lớn, nó quá to để…
English narration · English + 中文 subtitles burned in · Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp
9.1
Computational thinking · Tư duy tính toán
Syllabus · Chương trình
English
Candidates should be able to:
Notes and guidance
Show an understanding of abstraction
Need for and benefits of using abstraction Describe the purpose of abstraction Produce an abstract model of a system by only including essential details
Describe and use decomposition
Break down problems into sub-problems leading to the concept of a program module (procedure / function)
Tiếng Việt
Thí sinh cần có thể:
Ghi chú và hướng dẫn
Thể hiện sự hiểu biết về trừu tượng hóa
Nhu cầu và lợi ích của việc sử dụng trừu tượng hóa Mô tả mục đích của trừu tượng hóa Xây dựng một mô hình trừu tượng của hệ thống chỉ bằng cách bao gồm các chi tiết thiết yếu
Mô tả và sử dụng phân rã
Chia nhỏ các vấn đề thành các vấn đề con dẫn đến khái niệm về một mô-đun chương trình (hàm / thủ tục)
Source: Cambridge International syllabus · Nguồn: Chương trình Cambridge International
English
Computational thinking 计算思维 is the set of mental tools for analysing a problem and designing a solution a computer can run. Two key ones are abstraction and decomposition.
Abstraction
Abstraction 抽象 means keeping the essential features of a problem and ignoring the irrelevant detail, giving a simpler model.
Examples:
a train-network map keeps the stations and lines but drops the geography.
a class in object-oriented programming keeps only the attributes and methods the system needs.
a function hides a piece of work behind a name.
A full model of any real problem would be too big to reason about, so abstraction is essential.
The examiner asks for the purpose of abstraction and for its benefits. Purpose: to produce a simpler model of a problem that contains only the details needed to solve it. Benefits: the problem is easier to understand and to program; the program is smaller and faster to write and test; the same model can be reused for similar problems. When you are asked to produce an abstract model of a system, list only the data and actions the task needs. For a school timetable that means the classes, rooms, teachers and periods; it does not mean the colour of the rooms or the age of the teachers.
Decomposition
Decomposition 分解 means breaking a large problem into smaller sub-problems, each easier to solve and tackled one at a time.
find the main parts of the task.
break each into smaller sub-tasks.
continue until each is small enough to design directly.
solve the small tasks and combine them.
For stock control: "manage stock" → "record sales", "record deliveries", "produce reports" → ("record sales") "look up product", "decrease stock count", "save the transaction". Decomposition makes big problems manageable, lets a team divide the work, and gives modular code — each module becomes a procedure 过程 or function.
"Explain why decomposition is used" is a three-mark question with a fixed shape. Give three separate benefits: each sub-problem 子问题 is small enough to design, code and test on its own; different programmers can work on different modules 模块 at the same time; a module that already exists (or a library routine) can be reused, and a fault is easier to find because it lies inside one module. A structure chart (topic 12) is the diagram of a decomposition: the program at the top, its modules beneath, and the data passed between them.
Tiếng Việt
Tư duy tính toán là tập hợp các công cụ tư duy để phân tích một vấn đề và thiết kế một giải pháp mà máy tính có thể thực thi. Hai yếu tố cốt lõi là trừu tượng hóa và phân rã.
Tư duy tính toán chia nhỏ một vấn đề lớn thành các phần nhỏ hơn, dễ giải quyết hơn — giống như việc giải một bài puzzle
Trừu tượng hóa
Trừu tượng hóa có nghĩa là giữ lại các đặc điểm thiết yếu của một vấn đề và bỏ qua các chi tiết không liên quan, tạo ra một mô hình đơn giản hơn.
Ví dụ:
bản đồ mạng lưới tàu hỏa giữ lại các ga và tuyến đường nhưng bỏ qua địa lý.
một class trong lập trình hướng đối tượng chỉ giữ lại các thuộc tính và phương thức mà hệ thống cần.
một hàm ẩn đi một phần công việc dưới một cái tên.
Một mô hình đầy đủ của bất kỳ vấn đề thực tế nào sẽ quá lớn để suy luận, nên trừu tượng hóa là cần thiết.
Người ra đề yêu cầu giải thích mục đích của sự trừu tượng và các lợi ích của nó. Mục đích: tạo ra một mô hình đơn giản hơn cho vấn đề, chỉ chứa những chi tiết cần thiết để giải quyết nó. Lợi ích: vấn đề dễ hiểu và dễ lập trình hơn; chương trình nhỏ gọn hơn, nhanh chóng viết và kiểm thử hơn; cùng một mô hình có thể tái sử dụng cho các vấn đề tương tự. Khi được yêu cầu tạo mô hình trừu tượng cho một hệ thống, chỉ liệt kê dữ liệu và hành động mà tác vụ cần. Ví dụ với bảng thời khóa biểu trường học, điều đó có nghĩa là các lớp học, phòng học, giáo viên và tiết học; không phải màu sắc phòng học hay độ tuổi của giáo viên.
Trừu tượng giữ lại những yếu tố cốt lõi (các ga và tuyến) và loại bỏ chi tiết không liên quan (bản đồ địa lý)
Phân rã (Decomposition)
Phân rã có nghĩa là chia một vấn đề lớn thành các vấn đề con nhỏ hơn, mỗi vấn đề con dễ giải quyết hơn và được giải quyết từng bước một.
xác định các phần chính của tác vụ.
chia mỗi phần thành các tác vụ con nhỏ hơn.
tiếp tục cho đến khi mỗi phần đủ nhỏ để thiết kế trực tiếp.
giải quyết các tác vụ nhỏ và kết hợp chúng lại.
Đối với quản lý tồn kho: "quản lý tồn kho" → "ghi nhận bán hàng", "ghi nhận giao hàng", "tạo báo cáo" → ("ghi nhận bán hàng") "tra cứu sản phẩm", "giảm số lượng tồn kho", "lưu giao dịch". Phân rã giúp các vấn đề lớn trở nên khả thi, cho phép nhóm chia sẻ công việc và tạo ra mã code theo mô-đun — mỗi mô-đun trở thành một thủ tục hoặc hàm.
Câu hỏi "Giải thích tại sao phân rã được sử dụng" là câu hỏi 3 điểm với cấu trúc cố định. Hãy đưa ra ba lợi ích riêng biệt: mỗi vấn đề con đủ nhỏ để thiết kế, viết code và kiểm thử độc lập; các lập trình viên khác nhau có thể làm việc trên các mô-đun khác nhau cùng lúc; một mô-đun đã tồn tại (hoặc thủ tục thư viện) có thể tái sử dụng, và lỗi dễ tìm thấy hơn vì nó nằm bên trong một mô-đun cụ thể. Biểu đồ cấu trúc (chủ đề 12) là sơ đồ của sự phân rã: chương trình ở trên cùng, các mô-đun của nó bên dưới, và dữ liệu truyền giữa chúng.
Phân rã một chương trình thành các module và sub-modules
Explore · Khám phá
Solving a problem the computational way · Giải quyết một vấn đề theo cách tính toán
Step through the four cornerstones in the order you'd use them — break the problem down, spot what repeats, strip it to essentials, then write the steps. · Tiến hành qua bốn trụ cột theo thứ tự bạn sẽ sử dụng chúng — phân rã vấn đề, nhận diện sự lặp lại, loại bỏ chi tiết không cần thiết, sau đó viết các bước.
Show understanding that an algorithm is a solution to a problem expressed as a sequence of defined steps
Use suitable identifier names for the representation of data used by a problem and represent these using an identifier table
Write pseudocode that contains input, process and output
Write pseudocode using the three basic constructs of sequence, selection and iteration (repetition)
Document a simple algorithm using a structured English description, a flowchart or pseudocode
Write pseudocode from: • a structured English description • a flowchart
Draw a flowchart from: • a structured English description • pseudocode
Describe and use the process of stepwise refinement to express an algorithm to a level of detail from which the task may be programmed
Use logic statements to define parts of an algorithm solution
Tiếng Việt
Thí sinh cần có thể:
Ghi chú và hướng dẫn
Thể hiện sự hiểu biết rằng một thuật toán là lời giải cho một vấn đề được biểu diễn dưới dạng một chuỗi các bước xác định
Sử dụng tên định danh phù hợp để biểu diễn dữ liệu được sử dụng bởi một vấn đề và biểu diễn chúng bằng một bảng định danh
Viết giả mã chứa đầu vào, xử lý và đầu ra
Viết giả mã sử dụng ba kiến trúc cơ bản của trình tự, lựa chọn và lặp lại (vùng lặp)
Tài liệu hóa một thuật toán đơn giản bằng mô tả tiếng Anh có cấu trúc, sơ đồ khối hoặc giả mã
Viết giả mã từ: • mô tả tiếng Anh có cấu trúc • sơ đồ khối
Vẽ sơ đồ khối từ: • mô tả tiếng Anh có cấu trúc • giả mã
Mô tả và sử dụng quá trình tinh chỉnh từng bước để biểu diễn một thuật toán ở mức độ chi tiết mà từ đó có thể lập trình được nhiệm vụ
Sử dụng các mệnh đề logic để xác định các phần của lời giải thuật toán
Source: Cambridge International syllabus · Nguồn: Chương trình Cambridge International
English
Bubble sort, pass by pass
An algorithm 算法 is a solution expressed as a sequence of defined steps. Each step is unambiguous 无歧义 (one meaning), deterministic 确定性 (same input → same output), finite (the steps end), and effective (each can be done). An algorithm says what to do, independent of the programming language used to implement it.
Tiếng Việt
Thuật toán sắp xếp nổi bọt, qua từng lượt
Một thuật toán là một phương pháp giải quyết được diễn đạt dưới dạng chuỗi các bước xác định. Mỗi bước không mơ hồ (có một ý nghĩa), xác định (cùng đầu vào → cùng đầu ra), hữu hạn (các bước kết thúc), và hiệu quả (mỗi bước đều có thể thực hiện). Một thuật toán nói cần làm gì, độc lập với ngôn ngữ lập trình được dùng để triển khai nó.
Explore · Khám phá
Selection: follow the IF / ELSE branches · Lựa chọn: đi theo các nhánh IF / ELSE
Drag the score and watch which branch runs. Selection tests each condition in turn and takes the FIRST one that is true — that is how IF … ELSE IF … ELSE works. · Kéo điểm số và xem nhánh nào được thực thi. Sự lựa chọn kiểm tra từng điều kiện một và chọn NHÁNH ĐẦU TIÊN đúng — đó là cách hoạt động của IF … ELSE IF … ELSE.
When you start an algorithm, list every piece of data in an identifier table 标识符表 — its identifier 标识符 (the variable 变量 name), data type 数据类型, and description. The exam's table has exactly these three columns:
Identifier
Data type
Description
Category
STRING
the product category
SaleDate
DATE
when the item was sold
ItemCost
REAL
cost of the item
InStock
BOOLEAN
TRUE if in stock
Sales
ARRAY[1:30] OF REAL
the last 30 daily sales totals
Use descriptive names (ItemCost, not x): an identifier starts with a letter, contains no spaces, and is written the same way every time it appears. Common types are INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, plus arrays. The table forces you to name every piece of data before writing code, and a "complete the identifier table" question gives one mark for each correct data type or description, so write the type exactly as the pseudocode guide does.
Tiếng Việt
Khi bắt đầu một thuật toán, hãy liệt kê mọi piece dữ liệu vào một bảng ký hiệu — bao gồm ký hiệu (tên biến), kiểu dữ liệu, và mô tả. Bảng kiểm tra sẽ có đúng ba cột này:
Ký hiệu
Kiểu dữ liệu
Mô tả
Category
STRING
danh mục sản phẩm
SaleDate
DATE
thời điểm mặt hàng được bán
ItemCost
REAL
giá thành của mặt hàng
InStock
BOOLEAN
TRUE nếu còn trong kho
Sales
ARRAY[1:30] OF REAL
tổng doanh số hàng ngày trong 30 lần gần nhất
Sử dụng tên mô tả (ItemCost, không phải x): một ký hiệu bắt đầu bằng chữ cái, không chứa khoảng trắng, và được viết giống hệt nhau mỗi lần xuất hiện. Các kiểu phổ biến là INTEGER, REAL, STRING, CHAR, BOOLEAN, DATE, cộng thêm mảng. Bảng buộc bạn phải đặt tên cho mọi piece dữ liệu trước khi viết code, và câu hỏi "hoàn thành bảng ký hiệu" sẽ cho 1 điểm cho mỗi kiểu dữ liệu hoặc mô tả đúng, vì vậy hãy viết kiểu chính xác như hướng dẫn pseudocode yêu cầu.
Bảng ký danh đặt tên cho mọi mảnh dữ liệu trước khi bạn viết code
Pseudocode — the three basic constructs · Pseudocode — Ba kiến trúc cơ bản
English
Pseudocode 伪代码 is a structured, language-neutral way to describe algorithms.
1. Sequence
Steps run one after another (sequence 顺序):
2. Selection
A choice of which steps run, based on a condition (selection 选择):
For more options, use CASE OF ... ENDCASE.
3. Iteration
Repeating a block (iteration 迭代, a loop 循环):
A WHILE loop tests the condition before each pass (may run zero times); a REPEAT...UNTIL loop tests after each pass (always runs at least once).
Choosing the loop is itself a mark: FOR when you know how many times (a count-controlled loop 计数循环); WHILE when the loop might not run at all (a pre-condition loop 前测循环); REPEAT ... UNTIL when it must run at least once, as in validating an input (a post-condition loop 后测循环). A "describe the iteration construct" answer names the construct, says where the condition is tested, and gives the consequence (zero times or at least once).
Common operations
assignment 赋值: x ← 5 (an arrow; = is for comparison).
RAND(100) gives a real number from 0 up to (but not including) 100. INT(RAND(100)) + 1 gives an integer from 1 to 100.
Two habits earn marks on every question: declare every variable you use, with the type from your identifier table, and initialise 初始化 every counter 计数器 and total (Count ← 0, Total ← 0) before the loop that changes it.
Input → Process → Output
Every program follows this shape:
Listing the inputs and outputs first makes the algorithm cleaner.
Worked example. Write pseudocode that inputs 100 integers and outputs how many of them, and the total of those, that lie between 10 and 20 inclusive.
Identifier table: Count : INTEGER (loop counter), Value : INTEGER (the integer just input), InRange : INTEGER (how many were in range), Total : INTEGER (their sum).
If the question then asks you to "identify two constructs and state how each is used", answer in the same shape: iteration, the FOR loop, repeats the input 100 times; selection, the IF statement, adds a value only when it is in range.
Worked example. A program picks a secret integer from 1 to 100. The user guesses until they are right; after each wrong guess the program says "Too low" or "Too high", and at the end it outputs how many guesses were made.
Identifier table: Secret : INTEGER (the number to guess), Guess : INTEGER (the user's input), Tries : INTEGER (how many guesses so far).
A REPEAT ... UNTIL loop is the right choice because the user must guess at least once. The marks are for: the random number in the right range, a loop that ends on a correct guess, the counter that starts at zero and increases inside the loop, the two messages under the right conditions, and the final output.
Worked example. Output two different random integers, each between $-10$ and $10$ inclusive.
There are 21 possible values, so INT(RAND(21)) gives 0 to 20 and subtracting 10 shifts it to the range $-10$ to $10$. The second number must be generated again until it differs from the first:
Tiếng Việt
Pseudocode là cách mô tả thuật toán mang tính cấu trúc, trung lập với ngôn ngữ.
Ba khối xây dựng cơ bản của bất kỳ thuật toán nào: tuần tự, chọn lọc và lặp
1. Tuần tự
Các bước chạy lần lượt theo thứ tự (tuần tự):
INPUT Name
INPUT Age
OUTPUT "Hello", Name
2. Chọn lọc
Lựa chọn các bước nào sẽ chạy, dựa trên một điều kiện (chọn lọc):
IF Age >= 18 THEN
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
Để có nhiều tùy chọn hơn, hãy dùng CASE OF ... ENDCASE.
3. Lặp
Lặp lại một khối lệnh (lặp, một vòng lặp):
FOR i ← 1 TO 10
OUTPUT i
NEXT i
Vòng lặp WHILE kiểm tra điều kiện trước mỗi lượt chạy (có thể chạy 0 lần); vòng lặp REPEAT...UNTIL kiểm tra sau mỗi lượt chạy (luôn chạy ít nhất một lần).
WHILE Total < 100 DO
INPUT Value
Total ← Total + Value
ENDWHILE
REPEAT
INPUT Mark
UNTIL Mark >= 0 AND Mark <= 100
Vòng lặp WHILE kiểm tra trước khi thân lệnh chạy; vòng lặp REPEAT ... UNTIL kiểm tra sau khi thân lệnh chạy, nên thân lệnh luôn chạy ít nhất một lần
Việc chọn loại vòng lặp chính là điểm số: FOR khi bạn biết số lần lặp (một vòng lặp kiểm soát đếm; WHILE khi vòng lặp có thể không chạy chút nào (một vòng lặp tiền điều kiện); REPEAT ... UNTIL khi nó phải chạy ít nhất một lần, như trong việc xác thực đầu vào (một vòng lặp hậu điều kiện). Câu trả lời "mô tả cấu trúc lặp" cần nêu tên cấu trúc, chỉ ra nơi điều kiện được kiểm tra, và đưa ra hệ quả (không chạy lần nào hoặc chạy ít nhất một lần).
Các phép toán thường gặp
gán: x ← 5 (một mũi tên; = dùng để so sánh).
nhập/xuất: INPUT variable, OUTPUT expression.
so sánh =, <>, <, >, <=, >=; logic AND, OR, NOT.
phép toán số học + - * /, cộng DIV (phép chia lấy phần nguyên) và MOD (phần dư).
chuỗi: LENGTH, LEFT, RIGHT, MID, và & để nối (ghép nối).
Mã giả mà đề thi yêu cầu
Mọi câu trả lời伪代码都会被剑桥出版的伪代码指南评分。请严格写出以下格式:
结构
伪代码
变量
DECLARE Total : INTEGER
数组
DECLARE Marks : ARRAY[1:30] OF REAL
常量
CONSTANT MaxTries = 3
赋值
Total ← Total + Value
输入 / 输出
INPUT Name OUTPUT "Hello ", Name
选择
CASE OF Choice 1 : OUTPUT "Add" OTHERWISE OUTPUT "Error" ENDCASE
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
Nếu câu hỏi sau đó yêu cầu bạn "xác định hai cấu trúc và phát biểu cách mỗi cấu trúc được sử dụng", hãy trả lời theo cùng định dạng: lặp lại, vòng lặp FOR, lặp lại việc nhập liệu 100 lần; lựa chọn, câu lệnh IF, cộng giá trị chỉ khi nó nằm trong phạm vi.
DECLARE First, Second : INTEGER
First ← INT(RAND(21)) - 10
REPEAT
Second ← INT(RAND(21)) - 10
UNTIL Second <> First
OUTPUT First, Second
每个程序都遵循输入、处理、输出的结构
Explore · Khám phá
IF … ELSE selection · IF … ELSE chọn lọc
Change the value and watch which branch runs — how a program makes a decision. · Thay đổi giá trị và quan sát nhánh nào chạy — cách chương trình đưa ra quyết định.
Stepwise refinement 逐步求精 starts with a high-level outline and expands each step until it is small enough to code. For an average of $n$ numbers:
Level 1:
Level 2:
Each refinement keeps the previous structure and adds detail.
A six-mark "apply stepwise refinement" question gives you a high-level outline and wants each step expanded into the concrete statements a programmer could code. Keep the steps in the same order, name the data each step reads or produces, and stop when every line is a single input, assignment, output, loop or condition. For example, "validate the password" becomes: input the password; check its length is at least 8; check it contains at least one digit; output "accepted" if both checks pass, otherwise output "rejected".
Tiếng Việt
逐步细化从一个高层次大纲开始,并展开每一步直到它足够小以便编码。对于$n$个数的平均值:
第1层:
Read in the numbers
Compute the average
Output the average
第2层:
INPUT n
total ← 0
FOR i ← 1 TO n
INPUT value
total ← total + value
NEXT i
average ← total / n
OUTPUT average
Tinh chỉnh từng bước: mở rộng mỗi bước cấp cao thành giả mã chi tiết
Explore · Khám phá
Stepwise refinement: outline to code · Sự tinh luyện từng bước: dàn ý sang mã
Step down the levels. You start with the whole task in one line and keep expanding each step into smaller ones — until every step is simple enough to code directly. · Đi xuống các cấp độ. Bạn bắt đầu với toàn bộ nhiệm vụ trong một dòng và tiếp tục mở rộng từng bước thành những bước nhỏ hơn — cho đến khi mỗi bước đơn giản enough để mã hóa trực tiếp.
9.2
Logic statements · Câu lệnh logic
English
A logic statement 逻辑语句 is a Boolean 布尔 condition that controls branching, built from comparisons (x > 10), connectives (AND, OR, NOT) and brackets. Use it as the condition of IF, WHILE or REPEAT...UNTIL:
Precedence 优先级 (highest to lowest): NOT, then AND, then OR. Use brackets when unsure. Common mistakes:
a = 1 OR 2 is wrong — write a = 1 OR a = 2.
NOT a > 5 means NOT (a > 5), i.e. a <= 5.
NOT (A AND B) is the same as (NOT A) OR (NOT B) (De Morgan's law 德摩根定律) — handy for simplifying conditions.
Turning a sentence into a logic statement is a skill the papers test directly. "A ticket is free for anyone under 5 or over 65" becomes Age < 5 OR Age > 65. "A mark is valid if it is a whole number from 0 to 100" becomes Mark >= 0 AND Mark <= 100. "The loop stops when the file is finished or ten records have been read" becomes UNTIL EOF(File) OR Count = 10. Write each comparison in full: Age > 65 and Age < 5, never Age > 65 OR < 5.
Worked example. Write an identifier table and pseudocode to read 10 numbers and output the largest. The identifier table names each variable with its data type and purpose: Count : INTEGER (loop counter), Num : REAL (the number just read), Max : REAL (largest so far).
The design decision carrying the marks is initialising Max: it must start lower than any possible input - or, safer still, be set to the first number read. Initialise it to 0 and the algorithm wrongly returns 0 for a list of negative numbers, a bug your trace only exposes if the test data include a negative.
Tiếng Việt
Một câu lệnh logic là một điều kiện Boolean điều khiển nhánh, được xây dựng từ phép so sánh (x > 10), toán tử kết hợp (AND, OR, NOT) và ngoặc. Sử dụng nó như điều kiện của IF, WHILE hoặc REPEAT...UNTIL:
WHILE attempts < 3 AND NOT loggedIn DO
INPUT password
IF password = correctPassword THEN
loggedIn ← TRUE
ELSE
attempts ← attempts + 1
ENDIF
ENDWHILE
Độ ưu tiên (cao nhất đến thấp nhất): NOT, sau đó AND, rồi OR. Sử dụng ngoặc khi không chắc chắn. Lỗi thường gặp:
a = 1 OR 2 là sai — hãy viết a = 1 OR a = 2.
NOT a > 5 có nghĩa là NOT (a > 5), tức là a <= 5.
NOT (A AND B) giống hệt với (NOT A) OR (NOT B) (Định luật De Morgan) — hữu ích để rút gọn điều kiện.
Biến câu văn thành câu lệnh logic là kỹ năng mà đề thi kiểm tra trực tiếp. "Vé miễn phí cho bất kỳ ai dưới 5 tuổi hoặc trên 65 tuổi" trở thành Age < 5 OR Age > 65. "Điểm số hợp lệ nếu nó là số nguyên từ 0 đến 100" trở thành Mark >= 0 AND Mark <= 100. "Vòng lặp dừng lại khi file đã đọc xong hoặc đã đọc mười bản ghi" trở thành UNTIL EOF(File) OR Count = 10. Viết đầy đủ mỗi phép so sánh: Age > 65 và Age < 5, tuyệt đối không viết Age > 65 OR < 5.
Độ ưu tiên: NOT gắn vào loggedIn trước, sau đó AND kết hợp hai vế
Ví dụ minh họa. Viết bảng định danh và giả mã để đọc 10 số và xuất ra số lớn nhất. Bảng định danh đặt tên cho từng biến kèm kiểu dữ liệu và mục đích: Count : INTEGER (bộ đếm vòng lặp), Num : REAL (số vừa được đọc), Max : REAL (số lớn nhất tính đến thời điểm đó).
Max ← -999999
FOR Count ← 1 TO 10
INPUT Num
IF Num > Max THEN
Max ← Num
ENDIF
NEXT Count
OUTPUT Max
Quyết định thiết kế mang điểm số chính là khởi tạo Max: nó phải bắt đầu thấp hơn bất kỳ giá trị đầu vào nào có thể xảy ra - hoặc an toàn hơn, hãy gán cho nó số đầu tiên được đọc. Khởi tạo nó là 0 thì thuật toán sẽ trả về sai là 0 cho danh sách các số âm, một lỗi chỉ bị phát hiện qua việc theo dõi thuật toán nếu dữ liệu thử nghiệm bao gồm số âm.
9.2
Definitions the examiner accepts · Các định nghĩa mà giám khảo chấp nhận
English
A definition question is marked against fixed wording. Learn these exactly, and give one answer only.
Term
Definition
abstraction
keeping the essential details of a problem and leaving out the details that are not needed
decomposition
breaking a problem down into smaller sub-problems, each of which can be solved separately
algorithm
a solution to a problem expressed as a sequence of defined steps
identifier table
a table listing each identifier used in an algorithm with its data type and a description of its purpose
pseudocode
a structured, language-independent way of writing the steps of an algorithm
flowchart
a diagram that shows the steps and decisions of an algorithm using standard symbols joined by arrows
sequence
statements executed one after another in the order written
selection
choosing which statements to execute according to a condition
iteration
repeating a group of statements while, or until, a condition holds
stepwise refinement
breaking each step of an outline into smaller steps, repeatedly, until each step can be coded directly
logic statement
a condition built from comparisons and the operators AND, OR and NOT that evaluates to TRUE or FALSE
Tiếng Việt
Câu hỏi định nghĩa được chấm dựa trên văn phong cố định. Hãy học thuộc những định nghĩa này và chỉ đưa ra một đáp án duy nhất.
Thuật ngữ
Định nghĩa
trừu tượng hóa
giữ lại các chi tiết cốt lõi của bài toán và bỏ qua các chi tiết không cần thiết
phân tách
chia nhỏ bài toán thành các bài toán con nhỏ hơn, mỗi cái có thể giải quyết riêng biệt
thuật toán
lời giải cho một bài toán được biểu diễn dưới dạng chuỗi các bước xác định
bảng định danh
bảng liệt kê từng định danh được sử dụng trong thuật toán kèm kiểu dữ liệu và mô tả mục đích của nó
giả mã
cách viết cấu trúc, độc lập với ngôn ngữ, các bước của thuật toán
sơ đồ khối
biểu đồ hiển thị các bước và quyết định của thuật toán bằng các ký hiệu tiêu chuẩn nối với nhau bằng mũi tên
tuần tự
các câu lệnh được thực thi lần lượt theo thứ tự đã viết
chọn lọc
lựa chọn câu lệnh nào sẽ được thực thi dựa trên một điều kiện
lặp lại
lặp đi lặp lại một nhóm câu lệnh trong khi hoặc cho đến khi một điều kiện còn đúng
tinh chỉnh từng bước
chia nhỏ từng bước của phác thảo thành các bước nhỏ hơn, liên tục cho đến khi mỗi bước có thể viết code trực tiếp
câu lệnh logic
điều kiện được xây dựng từ các phép so sánh và các toán tử AND, OR và NOT, đánh giá ra TRUE hoặc FALSE
9.2
Exam tips · Mẹo làm bài thi
English
Define an algorithm as an unambiguous, finite, deterministic sequence of steps, independent of language.
Use the three constructs correctly — sequence, selection, iteration — and keep an identifier table with data types.
Break a problem down by decomposition and abstraction, then stepwise refinement.
Write pseudocode that would actually run: declare variables and follow the exam's pseudocode style.
Common mistakes
Using = to assign a value. Assignment is ←; = is a comparison.
Forgetting ENDIF, ENDWHILE, ENDCASE or NEXT. Every construct closes, and the closing word is where the mark for the construct is checked.
Not initialising a total or counter before the loop, so the algorithm adds to a value that never existed.
Using a FOR loop when the number of repetitions is unknown. Reading until a sentinel value or a correct guess needs WHILE or REPEAT ... UNTIL.
Writing Age > 65 OR < 5. Each side of OR and AND must be a complete comparison.
Answering "explain why decomposition is used" with one benefit written three ways. Three marks need three different benefits.
Tiếng Việt
Định nghĩa thuật toán là một chuỗi các bước rõ ràng, hữu hạn, xác định, độc lập với ngôn ngữ.
Sử dụng đúng ba cấu trúc — tuần tự, chọn lọc, lặp lại — và giữ bảng định danh có kiểu dữ liệu.
Chia nhỏ bài toán bằng phân tách và trừu tượng hóa, sau đó tinh chỉnh từng bước.
Viết giả mã có thể chạy được: khai báo biến và tuân theo phong cách giả mã của đề thi.
Lỗi thường gặp
Sử dụng = để gán giá trị. Gán giá trị là ←; = là phép so sánh.
Quên ENDIF, ENDWHILE, ENDCASE hoặc NEXT. Mỗi cấu trúc đều phải đóng, và từ đóng ở cuối chính là nơi chấm điểm cho cấu trúc đó được kiểm tra.
Không khởi tạo tổng hoặc bộ đếm trước vòng lặp, khiến thuật toán cộng vào một giá trị chưa bao giờ tồn tại.
Sử dụng vòng lặp FOR khi số lần lặp chưa biết. Đọc cho đến khi gặp giá trị dấu hiệu hoặc đoán đúng cần WHILE hoặc REPEAT ... UNTIL.
Viết Age > 65 OR < 5. Mỗi vế của OR và AND phải là một phép so sánh hoàn chỉnh.
Trả lời "giải thích vì sao sử dụng phân tách" bằng cách viết ba lợi ích theo ba cách khác nhau. Ba điểm số cần ba lợi ích khác nhau.
Interactive lessons on this topic · Bài học tương tác về chủ đề này
Work through it step by step, with instant-check exercises. · Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.
More topics in A-Level Computer Science · Khoa học máy tính A-Level · Nhiều chủ đề hơn trong A-Level Computer Science · Khoa học máy tính A-Level
Pick one and the site follows you — notes, papers, videos and practice all open on it. · Chọn một môn và trang sẽ điều hướng theo — ghi chú, tài liệu, video và bài tập đều mở ở đó.
Type to search notes, lessons, code, vocabulary and past-paper questions across every subject. · Nhập để tìm ghi chú, bài học, mã, từ vựng và câu hỏi đề thi cũ trên mọi môn học.