You are on page 1of 8

Bài 02 - Lưu đồ giải thuật (*)

0. Ý nghĩa bài học

- Luyện tư duy giải thuật, tư duy logic.


- Luyện tính cách: “Chấp nhận cuộc chơi”, “kiên trì”, “nản/khó nhưng không từ bỏ”, “chủ động
tự học”, “chủ động hỏi Thầy khi lạc lối”, “kiến thức phải tự mình lĩnh ngộ ra – không cần đợi
người khác vẽ cho mình (trừ nội dung quá quá khó )!”
- Thời gian dự kiến: 1 tuần = 3h x 7 ngày = 21h/tuần (tối đa 2 tuần)
*Lưu ý: Bài có dấu (*) là bài rất quan trọng!!! Các bài còn lại thì cực quan trọng!!! .

1. Kí hiệu lưu đồ

Kí hiệu Ý nghĩa
Điểm bắt đầu, điểm kết thúc
(Chỉ có 1 đường nối. Bắt đầu là đường ra, kết thúc là đường vào)

Dữ liệu đưa vào và ra.


(Có 2 đường nối: 1 vào – 1 ra)
Xử lý, tính toán, thực thi
(Có 2 đường nối: 1 vào – 1 ra)

Dữ liệu xuất ra
(Có 2 đường nối: 1 vào – 1 ra)

So sánh điều kiện (đúng đi theo hướng đúng, sai đi theo hướng sai)
(Có 3 đường nối: 1 vào – 2 ra)

Chỉ dẫn đường đi.

Gọi hàm con, chương trình con


(Có 2 đường nối: 1 vào – 1 ra)

Điểm ghép nối (sử dụng khi lưu đồ quá dài, cần cắt ngắn, sau đó ghép
nối lại với nhau)
(Có 1 đường vào hoặc ra)
Câu hỏi:
1. Hình nào có: 1 đường vào, 1 đường ra, 1 vào hoặc 1 ra, 1 vào và 1 ra, 1 vào và 2 ra, 2 vào
và 1 ra ?
2. 1 đường vào: hình con nhộng
3. 1 đường ra: hình con nhộng
4. 1 vào hoặc 1 ra hình tròn
5. 1 vào và 1 ra hình chữ nhật
6. 1 ra 2 vào hình thoi
2. Nhập ngõ vào từ bàn phím thì dùng hình nào ?
Hình bình hành
3. Thực hiện phép tính toán thì dùng hình nào ?
Hình chữ nhật
4. So sánh a có lớn hơn b hay không thì dùng hình nào ?
Hình thoi
5. Xuất giá trị lên màn hình thì dùng hình nào ?
Hình bình hành

2. Ví dụ 1 số lưu đồ

*Giới thiệu các kiểu dL (signed, kiểu)...Chạy code các lưu đồ cho các bạn xem!!!

Câu hỏi:
0. Giải thích ý nghĩa của 3 lưu đồ (1), (2), (3). (Tăng từ trái sang phải)
- Lưu đồ 1: Tính tổng 2 số
- Lưu đồ 2: Kiểm tra xem 2 số có bằng nhau không
- Lưu đồ 3: Kiểm tra số số vừa nhập là số dương âm hay là số 0
1. Xác định: Input, Output, Process(giải thuật) cho từng lưu đồ (1), (2), (3).
- Lưu đồ 1:
+ Input: 2 số a,b nhập từ bàn phím
+ Output: Hiển thị tổng của 2 số vừa nhập
+ Process: Nhập 2 số a,b từ bàn phím. Tạo biến c có giá trị bằng tổng của 2 số vừa nhập và
in ra c
- Lưu đồ 2:
+ Input: 2 số a,b nhập từ bàn phím
+ Output: In ra màn hình Số a bằng Số b hoặc Số a không bằng Số b
+ Process: Nhập 2 số a,b từ bàn phím. Nếu a=b thì in ra màn hình Số a bằng Số b. Nếu a
không bằng b thì in ra màn hình Số a không bằng b.
- Lưu đồ 3:
+ Input: Nhập số bất kỳ từ bàn phím
+ Output: In ra số đó là số dương, âm hay số 0
+ Process: Nhập số bất kỳ từ bàn phím. Kiểm tra xem số vừa nhập có lớn hơn 0 không. Nếu
có in ra màn hình Số dương. Nếu không kiểm tra xem số vừa nhập có bé hơn 0 không. Nếu
có in ra màn hình Số âm. Nếu không in ra màn Số không.
2. Trong lưu đồ (1), (2), cho a=4, b=9. Hỏi kết quả xuất ra là gì? Tại sao?
- Trong lưu đồ 1: Kết quả xuất ra là 13 vì chương trình in ra c mà c được gán bằng giá trị của
a+b  9+4 = 13.
- Trong lưu đồ 2: Kết quả xuất ra là Số a không bằng Số b vì a=4 khác b=9.

3. Bài tập áp dụng

- Yêu cầu: KHÔNG tham khảo bất cứ tài liệu nào khác, tự tư duy và vẽ vào vở học/word/tool.
Lặp lại (Sai-sửa) cho đến khi đúng!!!
Câu hỏi:
1. Xác định Input, Output, Process xử lý. Rồi vẽ lưu đồ giải phương trình bậc nhất: ax+b=0. Xét cả
điều kiện a=0, b=0.
Input: 2 biến a, b.
Output: x. (3 TH: có nghiệm, vô nghiệm, vô số nghiệm)
Process:
- nếu a khác 0 thì: x = -b/a.
- nếu a =0 thì:
b#0: Vô nghiệm (0x + 3 = 0)
b=0: Vô số nghiệm (0x + 0 = 0)

*Vẽ lưu đồ cho các bạn xem.

2. Xác định Input, Output, Process xử lý. Rồi vẽ lưu đồ giải phương trình bậc hai: ax2+bx+c=0. Xét
cả điều kiện a=0, b=0, c=0
- Input: Hệ số a, b, c của phương trình bậc hai ax^2 + bx + c = 0.
- Output: Nghiệm của phương trình hoặc thông báo về việc không có nghiệm.
- Process xử lý:
+ Kiểm tra xem hệ số a có bằng 0 hay không. Nếu có, chuyển sang giải phương trình bậc một
bx + c = 0 và trả về nghiệm của phương trình bậc một hoặc thông báo không có nghiệm.
+ Kiểm tra xem hệ số b có bằng 0 hay không. Nếu có, giải phương trình ax² + c = 0 theo công
thức nghiệm của phương trình bậc hai và trả về nghiệm hoặc thông báo không có nghiệm.
+ Kiểm tra xem hệ số c có bằng 0 hay không. Nếu có, trả về nghiệm x = 0.
+ Nếu không phải trường hợp trên, tính delta = b² - 4ac.
+ Kiểm tra giá trị delta:
. Nếu delta < 0, thông báo không có nghiệm.
. Nếu delta = 0, tính nghiệm kép x = -b/2a và trả về.
. Nếu delta > 0, tính hai nghiệm x1 và x2 theo công thức và trả về.
- Lưu đồ:
3. Xác định Input, Output, Process xử lý. Rồi
vẽ lưu đồ tính giai thừa N! Với N nhập từ bàn
phím. (Nhập từ bàn phím, dùng hình bình
hành)
- Cho: N > 0.
- Input: Số nguyên dương N nhập từ bàn
phím.
- Output: Giai thừa N! được in ra màn
hình.
- Process:
+ Khai báo biến N, i, và p.
+ Nhập giá trị cho biến N từ bàn phím.
+ Khởi tạo giá trị p bằng 1.
+ Sử dụng vòng lặp for để tính giai
thừa của N bằng cách nhân các số từ 1 đến N
với nhau:
+ Gán p bằng p * i trong mỗi vòng lặp.
+ In ra kết quả giai thừa của N.
- Lưu đồ:

*Vẽ lưu đồ tổng n số nguyên từ 1 đến nhỏ hơn n.

4. Làm lại bài 3, xét cả N<=0: nếu N <=0 thì yêu cầu nhập lại cho đến khi N>0, sau đó tính N!
*Yêu cầu: Điều kiện còn đúng thì còn lặp!!!
- Input: Số nguyên dương N nhập từ bàn phím.
- Output: Giai thừa N! được in ra màn hình.
- Process:
+ Khai báo biến N, i, và p.
+ Yêu cầu nhập giá trị cho biến N từ bàn phím và sử dụng vòng lặp do-while để kiểm tra điều
kiện N > 0:
+ Nếu N <= 0, yêu cầu nhập lại giá trị cho N.
+ Khởi tạo giá trị p bằng 1.
+ Sử dụng vòng lặp for để tính giai thừa của N bằng cách nhân các số từ 1 đến N với nhau:
+ Gán p bằng p * i trong mỗi vòng lặp.
+ In ra kết quả giai thừa của N.

5. Xác định Input, Output, Process xử lý. Rồi


vẽ lưu đồ tính tổng các số thực khác 0, nhập từ
bàn phím. Chương trình xuất ra giá trị tổng khi
nhập số 0, và kết thúc chương trình.
*Gợi ý: chỉ cần sử dụng 1 biến để chứa giá trị
nhập vào, và 1 biến để chứa tổng.
- Input: Dãy số thực nhập từ bàn phím,
kết thúc bằng giá trị 0.
- Output: Giá trị tổng các số thực khác 0
được in ra màn hình.
- Process:
+ Khai báo biến sum và num.
+ Sử dụng vòng lặp while để nhập các giá trị từ bàn phím và tính tổng của chúng:
+ Yêu cầu người dùng nhập giá trị cho biến num.
+ Kiểm tra giá trị của num:
+ Nếu num = 0, thoát khỏi vòng lặp while.
+ Nếu num khác 0, cộng giá trị của num vào biến sum.
+ In ra kết quả tổng các số thực khác 0.
- Lưu đồ:

6. Xác định Input, Output, Process xử lý. Rồi vẽ lưu đồ nhập điểm tích lũy, xếp loại(xuất sắc, giỏi,
khá, TB) sv đó.

- Input: Điểm tích lũy (GPA) của sinh viên nhập từ bàn phím.
- Output: Xếp loại (xuất sắc, giỏi, khá, trung bình) được in ra màn hình.
- Process:
+ Khai báo biến GPA kiểu float.
+ Yêu cầu người dùng nhập điểm tích lũy của sinh viên.
+ Kiểm tra điểm GPA để xác định xếp loại của sinh viên:
. Nếu GPA lớn hơn hoặc bằng 9.0, xếp loại là "Xuất sắc".
. Nếu GPA lớn hơn hoặc bằng 8.0, xếp loại là "Giỏi".
. Nếu GPA lớn hơn hoặc bằng 7.0, xếp loại là "Khá".
. Nếu GPA lớn hơn hoặc bằng 5.0, xếp loại là "Trung bình".
. Nếu GPA nhỏ hơn 5.0, xếp loại là "Yếu".
- In ra kết quả xếp loại.
- Lưu đồ
7. Mỗi bạn cho 1 đề “hắc não”, các bạn khác làm. Rồi chia sẻ đáp án.
Đề: Xác định Input, Output, Process xử lý. Rồi vẽ lưu đồ nhập bán kính. Tính chu vi và diện tích
hình tròn Xét các điều kiện bán kính > 0 hay < 0 và = 0.
…Cho thêm nếu Học viên còn yếu…

You might also like