Tải bản đầy đủ (.ppt) (20 trang)

Tiết 20 Bài 6_Giải bài toán trên máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (310.29 KB, 20 trang )

Bài toán
Tìm ước số chung lớn nhất (ƯCLN) của hai số
nguyên dương M và N.
Với các giá trị:

M = 5;

N = 5.

UCLN(M,N) = 5

M = 8;

N = 6.

UCLN(M,N) = 2

M = 13;

N = 17.

UCLN(M,N) = 1
UCLN(M,N) = 2

M = 2006; N = 2018.


1. Hãy chỉ ra những ưu điểm của việc giải bài
toán bằng máy tính so với cách giải toán thông
thường?
2. Giải bài toán trên máy tính có những bước nào ?




Các bước thực hiện
Bước 1: Xác định bài toán;

Bước 2: Lựa chọn hoặc thiết kế
thuật toán;
Bước 3: Viết chương trình;
Bước 4: Hiệu chỉnh
Bước 5: Viết tài liệu


Ví dụ: Xét bài toán
Tìm ước chung lớn nhất (ƯCLN) của hai số nguyên
dương M và N
Hãy xác định Input và Output của bài toán trên?


Ví dụ 2:
Cho dãy số A: 2
Tìm số k = 6.

3

6

9

30


100

1. Đây là dạng bài toán nào? Có
những thuật toán nào để giải? Em
chọn thuật toán nào? Vì sao?
2. Khi lựa chọn hoặc thiết kế thuật
toán cần đảm bảo các tiêu chuẩn
nào?


BÀI TOÁN

Cóthể
có nhiều
cách giải
(thuật toán)

Cách 1
Cách 2
Cách 3
...

KẾT QUẢ


2/ Lựa chọn hoặc thiết kế thuật toán
a/ Lựa chọn thuật toán :
- Một thuật toán chỉ giải được một bài toán, nhưng một bài toán có thể có nhiều
thuật toán để giải. Vì vậy ta phải chọn thuật toán tối ưu trong các thuật toán đã
có.

- Một thuật toán tối ưu phải có các tiêu chuẩn sau :
Thời gian thực hiện nhanh.
Ít tốn dung lượng bộ nhớ.
Ít phức tạp (trình bày dễ hiểu, dễ nhìn).


Ví dụ 1:Tìm ước chung lớn nhất của hai số nguyên dương
M, N.

Ý tưởng: ta có 2 ý tưởng sau
• Nếu M=N thì giá trị chung là
UCLN

• Chia M cho N lấy dư là
R

• Nếu M>N thì
UCLN(M,N)=UCLN(M-N,N)

• Nếu R=0 thì
UCLN(M,N)=N

• Nếu MUCLN(M,N)=UCLN(M,N-M)

• Nếu R khác 0 thì gán N
cho M, gán R cho N
• Tiếp tục chia M cho N.





Thuật toán :
* Diễn tả thuật toán bằng cách liệt kê :

B1:Nhập M,N

B1: Nhập M, N

B2: Nếu M=N thì giá trị
chung là UCLN rồi kết thúc

B2: Chia M cho N lấy
dư là R

B3:Nếu M>N thì

B3: Nếu R=0 thì
UCLN(M,N)=N rồi kết
thúc

M M-N, chuyển sang B2
B4: N
B2

N-M, chuyển sang

B4: M N , N
chuyển sang B2


R,


* Diễn tả thuật toán bằng sơ đồ khối:
Nhập M,N
Nhập M,N
Đ
M=N
S
Đ

M>N
S
N

Đưa ra M và
KT

Chia M cho N
lấy dư R
Đ
R=0

M

M-N

S
M
N


N-M
1

Đưa ra N và
KT

N
R
2

Nên lựa chọn cách giải (thuật toán) nào để viết chương
trình?


Với M=3, N=100

Nhập M,N
Đ
M=N
S
M>N
S
N

N-M

Đ

Đưa ra M và

KT
M

M-N

Lần

M

N

1

3

100

2

3

97

3

3






94


34

3

1

35

2

1

36

1

1

KQ

UCLN(3,100)=1


Với M=3, N=100
Nhập M,N


Chia M cho N
lấy dư R
Đ
R=0
S
M
N

N
R

Đưa ra N và
KT

Lần

M

N

R

1

3

100

3


2

100

3

1

3

3

1

0

KQ

UCLN(3,100)=1


Số
lần
thực
hiện

Thuật toán 1 và
giá trị tương
ứng của (M,N)


Thuật toán 2 và
giá trị tương ứng
của (M,N)

1
2
3
4

3,100
3,97
3,94
3,91

3,100
100,3
3,1
Kết luận: ƯCLN =
1


34
35
36


3,1
2,1
1,1



3/ Viết chương trình
Là lựa chọn cách tổ chức dữ liệu và lựa
chọn ngôn ngữ lập trình (NNLT) phù hợp
với thuật toán.
Có nhiều loại NNLT, vì vậy khi viết
chương trình trong ngôn ngữ nào thì phải
tuân theo những quy định đó.


Program TimUCLN;
Var M, N, R:integer;
Begin
Write(‘Nhap vao M,N’);
Read(M,N);

Program TimUCLN;
Var M, N, R:integer;
Begin
Write(‘Nhap vao M,N’);
Read(M,N);
While N<> 0 do

While M<>N do

Begin

IF M>N THEN

R:=M mod N;


M:=M-N

M:=N; N:=R;

ELSE
N:=N-M;
Write(‘ uoc chung lon nhat
la:’, M);
End.

end;
Write(‘ uoc chung lon nhat la:’, M);
End.


4/ Hiệu chỉnh
?Khi ta giải một bài toán có phải lúc nào kết quả cũng
đúng
không?
Tại sao
cầnđược
phải có
bước
chỉnh?
Khái
niệm:
Chương
trình
kiểm

trahiệu
bằng
cáchThế
cho
nàothử
là hiệu
chạy
trên chỉnh?
những bộ Input mà người ta đã biết trước

Output. Các bộ Input-Output này gọi là các Test. Nếu
có sai sót người lập trình sửa chương trình rồi thử lại.
Quá trình này được gọi là hiệu chỉnh.


Ghép nối mỗi mục ở cột bên trái với mục ở cột bên phải
để thể hiện nội dung tương ứng của từng bước giải bài
toán trên máy tính.
1. Xác định bài
toán

a) Lựa chọn cách tổ chức dữ liệu và ngôn
ngữ lập trình để diễn đạt thuật toán.

2. Lựa chọn hoặc b) Thực hiện chương trình với 1 số bộ
thiết kế thuật toán Input để kiểm tra kết quả.
3. Viết chương
trình

c) Xác định Input và Output.


4. Hiệu chỉnh

d) Mô tả bài toán, thuật toán, thiết kế
chương trình, kết quả thử nghiệm và
hướng dẫn sử dụng.

5. Viết tài liệu

e) Lựa chọn thuật toán có thời gian thực
hiện nhanh nhất, tốn ít dung lượng bộ nhớ
và ít phức tạp nhất.


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

a) Lựa chọn cách tổ chức dữ liệu và ngôn
ngữ lập trình để diễn đạt thuật toán.

2. Lựa chọn hoặc b) Thực hiện chương trình với 1 số bộ
thiết kế thuật toán Input để kiểm tra kết quả.
3. Viết chương
trình

c) Xác định Input và Output.

4. Hiệu chỉnh

d) Mô tả bài toán, thuật toán, thiết kế

chương trình, kết quả thử nghiệm và
hướng dẫn sử dụng.

5. Viết tài liệu

e) Lựa chọn thuật toán có thời gian thực
hiện nhanh nhất, tốn ít dung lượng bộ nhớ
và ít phức tạp nhất.


Bài tập 3:
Bài toán: viết thuật toán giải pt bậc nhất ax+b=0 và sử dụng vài bộ
Input để kiểm chứng tính đúng đắn của chương trình.
Xác định bài toán :
- Input : các hệ số a,b
- Output : các kết luận về nghiệm của pt.
Ý tưởng : nghiệm của bài toán phụ thuộc vào các số a và b như
sau:
-Nếu a=0 :
+Nếu b=0 :kết luận pt có vô số nghiệm;
+Nếu b≠ 0 : kết luận pt vô nghiệm;
-Nếu a ≠ 0 : kết luận pt có một nghiệm x = -b/a.


•Thuật toán :
- Sơ đồ khối

Nhập a và b

a=0?

Đ
b=0?
Đ
Pt vsn rồi
kết thúc

S
S

nghiệm x=-b/a
rồi kết thúc
Pt vn rồi
kết thúc
Giải pt: 8x+96=0
Pt có nghiệm :x=-12



×