You are on page 1of 29

TỪ BÀI TOÁN ĐẾN

CHƯƠNG TRÌNH
(2 tiết)
1. Bài toán và xác định bài toán
Ví dụ 1: Tính tổng các số tự nhiên từ 1 đến 100
Ví dụ 2: Tính quãng đường ô tô đi được trong 2 giờ
với vận tốc 60 km/h
a) Khái niệm:
- Bài toán trong Tin học là một việc nào đó mà con
người muốn máy tính thực hiện
b) Xác định bài toán:
- Input: thông tin đưa vào máy
- Output: thông tin ra
Ví dụ 3:
Xác định bài toán tìm ước chung lớn nhất của 2 số
nguyên dương A và B
- Input: A, B nguyên dương
- Output: ước chung lớn nhất của A và B
2. Giải bài toán trên máy tính
- Chính là đưa cho máy tính dãy hữu hạn các thao tác đơn
giản mà nó có thể thực hiện được để từ Input ta nhận
được Output
- Các bước giải bài toán trên máy tính:
B1: Xác định bài toán
B2: Lựa chọn, mô tả thuật toán
B3: Viết chương trình
3. Thuật toán và mô tả thuật toán
a) Khái niệm:
- Thuật toán là một dãy hữu hạn các thao tác được sắp
xếp theo một trình tự xác định sao cho sau khi thực hiện
dãy thao tác ấy, từ input của bài toán ta nhận được
output cần tìm
b) Biểu diễn thuật toán
Cách 1: Liệt kê từng bước
Cách 2: Sử dụng sơ đồ khối
Qui ước

Hình Ý nghĩa

Thể hiện thao tác so sánh

Thể hiện các phép tính toán

Thể hiện thao tác nhập / xuất dữ liệu

Quy định trình tự thực hiện các thao tác


4. Một số ví dụ về thuật toán
Ví dụ 4: Cho số nguyên dương N. Kiểm tra tính nguyên tố của
một số nguyên dương N
Xác định bài toán:
- input: N nguyên dương
- Output: “N nguyên tố” hoặc “N không nguyên tố”
Ý tưởng: Dựa vào định nghĩa: Một số nguyên dương N là số
nguyên tố nếu nó lớn hơn 1 và chỉ có đúng hai ước là 1 và
chính nó”
Xét các trường hợp

- Nếu N=1 thì N không nguyên tố

- Nếu 1<N<4 thì N là số nguyên tố

- Nếu N>=4 và không có ước số trong phạm vi từ


2 đến phần nguyên căn bậc hai của N thì N là
số nguyên tố
Mô phỏng thuật toán kiểm tra tính nguyên tố
Trường hợp 1: N=45 (=6)

i 2 3 45 không là số
nguyên tố
N/i 45/2 45/3
Chia hết Không Chia hết
không?
29 là số nguyên
tố
Trường hợp 2: N=29 (

i 2 3 4 5
N/i 29/2 29/3 29/4 29/5
Chia hết Không Không Không Không
không?
Cách 1: Liệt kê các bước

B1: Nhập số nguyên dương N;


B2: Nếu N=1 thông báo n không nguyên tố, kết thúc
B3: Nếu N<4 thông báo n là số nguyên tố, kết thúc
B4: i 2;
B5: Nếu i > thông báo N là số nguyên tố, kết thúc
B6: Nếu N chia hết cho i thì thông báo N không nguyên tố
rồi kết thúc
B7: i  i +1 rồi quay lại B5
Nhập N

§ Cách 2: Vẽ
N
=1 ? sơ đồ khối
S
§
N<
4?
S
i2

§
Thông báo N là số
i>? nguyên tố rồi kết thúc
S
S
N có chia
i  i +1
hết cho i ?

Thông báo N không


§
là số nguyên tố rồi
kết thúc
Thuật toán sắp xếp

Hình a Hình b

Hãy tìm cách sắp xếp học sinh đứng chào cờ


(hình a) theo thứ tự thấp trước cao sau (hình b)
Thuật toán sắp xếp bằng tráo đổi

-Xác định bài toán


 Input: N nguyên dương
 Output: “N nguyên tố” hoặc “N không nguyên tố”
Ý tưởng

Với mỗi cặp số hạng đứng liền kề trong dãy, nếu


số trước lớn hơn số sau ta đổi vị trí chúng cho
nhau. Việc đó được lặp lại cho đến khi không có
sự đổi chỗ nào xảy ra nữa.
 Mô
Vớiphỏng thuật
N = 6 và dãytoán sắp6xếp
A gồm bằngnhư
số hạng tráosau
đổi
3 5 9 8 1 7
 Lượt thứ nhất  Lượt thứ hai

3 5 9 8 1 7 3 5 8 1 7 9

3 5 8 9 1 7 3 5 1 8 7 9

3 5 1 7 8 9
3 5 8 1 9 7
 Lượt thứ ba
3 5 8 1 7 9
 Lượt thứ tư
3 1 5 7 8 9 3 5 1 7 8 9
3 1 5 7 8 9
1 3 5 7 8 9
Cách 1: Liệt kê các bước
B1: Nhập N và các số hạng a1, a2,…, aN;
B2: M  N;
B3: Nếu M < 2 thì đưa ra dãy A đã sắp xếp rồi kết thúc
B4: M  M – 1; i  0;
B5: i  i +1;
B6: Nếu i > M thì quay lại B3
B7: Nếu ai > ai+1 thì tráo đổi ai với ai+1 cho nhau;
B8: Quay lại B5.
Nhập N và
a1, a2,..., aN

MN
§

M<2?
Đưa ra A đã sắp xếp rồi kết

S thúc
M  M - 1; i 0

ii+1

§
i>M?
C¸ch 2
S VÏ s¬ ®å khèi
Tráo đổi ai
§
và ai+1 ai > ai+1 ?

S
BÀI TẬP
Bài 1: Xác định bài toán tìm ước chung lớn nhất của 2
số nguyên dương A và B
- Input: A, B nguyên dương
- Output: ước chung lớn nhất của A và B
Ý tưởng:

Nếu M=N
- Đúng: UCLN=M (hoặc N) => Kết thúc
- Sai => Xét: nếu M>N đúng: M=M-N, ngược lại
N=N-M
Quá trình lặp lại cho đến khi M=N
Cách 1: Liệt kê các bước
B1: Nhập M, N;
B2: Nếu M = N thì UCLN = M (hoặc N), chuyển sang B5;
B3: Nếu M >N thì M  M - N rồi quay lại B2;
B4: N  N – M rồi quay B2;
B5: Đưa ra kết quả UCLN rồi kết thúc
Mô phỏng thuật toán tìm UCLN
L­ượt
1 2 3
NhËp
M= 25M,N,N= 10 M 25 15 5 5
N 10 10 10 5
§

515
25
M
=5==N
=105???
10 §ưa
¦CLNra(25,10)
M ; KÕt= 5thóc

S
§

M
15
525>>>10
>10
10
N? M
M
M25
M
15---10
N10

N
N N
= 10--M
5
Bài 2: Giải phương trình bậc hai:
ax +bx+c=0 (a khác 0)
2

• Input: a,b,c
• Output: Nghiệm của phương trình
• Thuật toán
S¬ ®å thuËt to¸n gi¶i phương tr×nh bËc hai

NhËp vµo a, b, c

2
D=b - 4ac

®
D<0 PT v« nghiÖm

s
®

D=0 PT cã nghiÖm x= - b/2a

s
PT cã 2 nghiÖm
x1,x2 = ( -b ±ÖD )/2a
THUẬT TOÁN TÌM MAX

Người ta đặt 5 quả bóng có kích thước khác nhau


trong hộp đã được đậy nắp như hình bên. Chỉ dùng tay
hãy tìm ra quả bóng có kích thước lớn nhấtthước lín
nhÊt .
Thuật toán tìm số lớn nhất

Xác định bài toán


INPUT: Số nguyên dương N và dãy N số
nguyên a1, a2, …, aN (ai với i: 1N).
OUTPUT: Số lớn nhất (Max) của dãy số
Ý tưởng:
- Đặt Max=a1
- Lần lượt cho i chạy từ 2 đến N, so sánh
giá trị ai với giá trị Max, nếu ai > Max thì
Max = ai
Cách 1: Liệt kê các bước

B1: Nhập N và dãy a1,…, aN;

B2: Max = a1 ; i = 2
B3: Nếu i>N thì đưa giá trị Max rồi kết thúc
B4:
B4.1: Nếu Max < ai thì Max = ai
B4.2: i = i+1 rồi quay lại B3
Cách 2: Sơ đồ khối

Nhập N và dãy a1,…,aN B1: Nhập N và dãy a1,…,aN

Max  a1 ; i  2 B2: Max = a1; i = 2;


§
i>N? Đưa ra Max rồi kết thúc
S
S B3: Nếu i > N thì đưa ra gía trị
ai > Max ?
Max rồi kết thúc;
§
Max  ai B4 :
4.1: Nếu ai > Max thì Max = ai;
4.2: i = i + 1 rồi quay lại B3.
ii+1
GHI NHỚ

1. Khái niệm bài toán


2. Khái niệm thuật toán
3. Thuật toán tìm UCLN của 2 số nguyên dương
4. Thuật toán tìm số lớn nhất/nhỏ nhất
5. Thuật toán sắp xếp dãy tăng/giảm dần

You might also like