Planning & pseudocode · Lên kế hoạch & mã giả
Plan before you code
- An algorithm is a clear list of steps that solves a problem.
- Good programmers plan the steps before they type code.
- A plan helps you spot mistakes early and explain your idea.
Lập kế hoạch trước khi code
- Một thuật toán là danh sách các bước rõ ràng giúp giải quyết một vấn đề.
- Các lập trình viên giỏi lập kế hoạch các bước trước khi gõ mã.
- Kế hoạch giúp bạn phát hiện lỗi sớm và giải thích ý tưởng của mình.
Decomposition
- Decomposition means breaking a big problem into smaller parts.
- Solve each small part on its own.
- Small parts are easier to write, test, and fix.
Phân rã (Decomposition)
- Phân rã (Decomposition) có nghĩa là chia nhỏ một vấn đề lớn thành các phần nhỏ hơn.
- Giải quyết từng phần nhỏ riêng lẻ.
- Các phần nhỏ dễ viết, kiểm thử và sửa lỗi hơn.
Abstraction
- Abstraction means keeping only the details that matter.
- You hide the parts you do not need right now.
- A map is an abstraction: it shows roads, not every tree.
Trừu tượng hóa (Abstraction)
- Trừu tượng hóa (Abstraction) có nghĩa là giữ lại chỉ những chi tiết quan trọng.
- Bạn ẩn đi các phần không cần thiết ngay lúc này.
- Bản đồ là một ví dụ về trừu tượng: nó hiển thị đường sá, không phải từng cái cây.
Structured English
- Structured English writes the steps as plain numbered sentences.
- It is not real code, so anyone can read it.
Tiếng Anh có cấu trúc (Structured English)
- Tiếng Anh có cấu trúc viết các bước dưới dạng câu đơn giản được đánh số.
- Nó không phải là mã thật, nên ai cũng có thể đọc được.
1. Read the number.
2. If it can be divided by 2 with no remainder, it is even.
3. Otherwise it is odd.
4. Output the answer.
Flowcharts
- A flowchart draws the steps as boxes joined by arrows.
- A rectangle is a step; a diamond is a decision (yes / no).
Sơ đồ tư duy (Flowcharts)
- Sơ đồ tư duy (Flowchart) vẽ các bước dưới dạng hộp nối với nhau bằng mũi tên.
- Hình chữ nhật đại diện cho một bước; hình thoi đại diện cho một quyết định (có / không).
( start )
|
[ read n ]
|
< n > 0 ? > --no--> [ output "not positive" ]
| yes
[ output "positive" ]
|
( end )
Three building blocks
- Sequence: steps run one after another.
- Selection:
if/elif/elsechooses a path. - Iteration:
for/whilerepeats steps.
Ba khối xây dựng
- Dãy lệnh: các bước thực hiện tuần tự, lần lượt.
- Lựa chọn:
if/elif/elsechọn một đường đi. - Lặp lại:
for/whilelặp lại các bước.
In Cambridge pseudocode
- The same plan in pseudocode, then in Python below.
Trong pseudocode Cambridge
- Cùng một kế hoạch bằng pseudocode, sau đó là Python ở bên dưới.
Total ← 0
FOR I ← 0 TO LENGTH(Numbers) - 1
Total ← Total + Numbers[I]
NEXT I
Average ← Total / LENGTH(Numbers)
OUTPUT Average
numbers = [4, 8, 6]
total = 0
for n in numbers:
total = total + n
average = total / len(numbers)
print(average)
Common mistakes
- Pseudocode is a plan in plain words — it does not have to run.
- Break the problem into small steps before you write any code.
- Plan the input → process → output.
Lỗi thường gặp
- Pseudocode là kế hoạch bằng lời nói đơn giản — nó không cần phải chạy được.
- Chia nhỏ bài toán thành các bước nhỏ trước khi viết bất kỳ mã nào.
- Lập kế hoạch cho phần: đầu vào → xử lý → đầu ra.
Now you try
- Each task gives you a plan in words. Turn it into Python.
- Press Check answer to test your code.
Bây giờ bạn thử
- Mỗi bài tập cung cấp cho bạn một kế hoạch bằng lời. Chuyển đổi nó sang Python.
- Nhấn Check answer (Kiểm tra câu trả lời) để thử mã của bạn.
An algorithm is ordered steps · Thuật toán là các bước có thứ tự
Pseudocode is just the steps in order, before you write real code. · Mã giả chỉ là các bước theo thứ tự, trước khi viết code thật.
Follow this plan: read a whole number; if it divides by 2 with no remainder print Even, otherwise print Odd. For input 4, print Even. · Thực hiện theo kế hoạch này: đọc một số nguyên; nếu nó chia hết cho 2 không có dư, in ra Even, ngược lại in ra Odd. Với đầu vào là 4, hãy in ra Even.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Follow this plan: read a number N; add up every whole number from 1 to N; print the total. For input 5, print 15. · Tuân theo kế hoạch này: đọc số N; cộng tổng mọi số nguyên từ 1 đến N; in tổng. Với đầu vào 5, in 15.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Decompose this into a function. Write count_vowels(word) that returns how many letters of word are vowels (a e i o u, lowercase). · Phân tách phần này thành một hàm. Viết count_vowels(word) trả về số lượng chữ cái của word là nguyên âm (a e i o u, viết thường).
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Follow this plan for every number from 1 to 15: if it divides by both 3 and 5, print FizzBuzz; else if it divides by 3, print Fizz; else if it divides by 5, print Buzz; otherwise print the number. · Tuân theo kế hoạch này cho mỗi số từ 1 đến 15: nếu nó chia hết cho cả 3 và 5, in FizzBuzz; nếu không nếu chia hết cho 3, in Fizz; nếu không nếu chia hết cho 5, in Buzz; ngược lại in số đó.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.