Vấn đề- bài toán
2. Thuật toán - thuật giải
3. Các phương pháp biểu diễn thuật toán
4. Các bước đểgiải một bài toán trên máy tính
5. Tổng quan vềngôn ngữlập trình
6. Thểhiện thuật toán bằng ngôn ngữlập trình
47 trang |
Chia sẻ: Mr Hưng | Lượt xem: 973 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kỹ thuật lập trình - Chương 1: Giải quyết vấn đề, bài toán bằng máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 01: GIẢI QUYẾT VẤN ĐỀ,
BÀI TOÁN BẰNG MÁY TÍNH
GV: Trần Phước Tuấn
EMAIL: tranphuoctuan.khoatoan.dhsp@gmail.com
9/16/2008T.P.Tuấn-Lập Trình CPage 2
Nội dung bài học
1. Vấn đề - bài toán
2. Thuật toán - thuật giải
3. Các phương pháp biểu diễn thuật toán
4. Các bước để giải một bài toán trên máy tính
5. Tổng quan về ngôn ngữ lập trình
6. Thể hiện thuật toán bằng ngôn ngữ lập trình
9/16/2008T.P.Tuấn-Lập Trình CPage 3
1. Vấn đề - bài toán
• Vấn đề thường được dùng với nghĩa rộng hơn
bài toán, bài toán là vấn đề mà để giải quyết nó
phải liên quan ít nhiều đến tính toán
• Pitago chia mọi vấn đề mà con người cần giải
quyết thành hai loại:
– Theorema: vấn đề cần khẳng định tính đúng – sai
– Problema: vấn đề cần tìm giải pháp để để đạt
được mục tiêu từ những điều kiện ban đầu nào đó
Khái niệm
9/16/2008T.P.Tuấn-Lập Trình CPage 4
1. Vấn đề - bài toán
• Theo nhiều kết quả nghiên cứu: việc giải quyết
vấn đề - bài toán mà Pitago nêu ra đều có thể
diễn ra theo một sơ đồ chung:
A B
• Ở đây:
– A có thể là giả thiết, điều kiện ban đầu
– B có thể là kết luận, mục tiêu cần đạt
– là suy luận, giải pháp cần xác định
Khái niệm
9/16/2008T.P.Tuấn-Lập Trình CPage 5
1. Vấn đề - bài toán
• Ví dụ 1: Bài toán kiểm tra tính nguyên tố
– Cho: Số nguyên dương N
– Cần biết: N có là số nguyên tố hay không?
• Ví dụ 2: Bài toán quản lý hồ sơ sinh viên
– Cho: Hồ sơ gốc của các sinh viên trong trường
– Cần biết: Bảng thống kê, phân loại sinh viên
theo kết quả học tập
Khái niệm
9/16/2008T.P.Tuấn-Lập Trình CPage 6
• Cấu trúc một bài toán:
– Thông tin đầu vào (input): cái cho trước
– Thông tin đầu ra (output): cái cần tìm
• Giải bài toán: là việc xác định tường minh
output theo input bằng một quá trình có thể
thực hiện một cách hiệu quả
1. Vấn đề - bài toán
Khái niệm
9/16/2008T.P.Tuấn-Lập Trình CPage 7
1. KĨ THUẬT CHIA ÐỂ TRỊ
2. KĨ THUẬT “THAM LAM”
3. QUY HOẠCH ÐỘNG
4. KĨ THUẬT QUAY LUI
5. KĨ THUẬT TÌM KIẾM ÐỊA PHƯƠNG
1. Vấn đề - bài toán
Một số phương pháp giải quyết vấn đề - bài toán bằng máy tính
9/16/2008T.P.Tuấn-Lập Trình CPage 8
• Chia bài toán lớn thành những bài toán con (cơ
bản)
• Giải quyết các bài toán con (cơ bản) thu kết
quả dễ dàng
• Tổng hợp các kết quả này lại
1. Vấn đề - bài toán
Chia để trị
9/16/2008T.P.Tuấn-Lập Trình CPage 9
• Ý tưởng: Trong bàn ăn có nhiều món ăn, ta sẽ
chọn món ngon nhất để ăn và ăn cho đến khi
nào hết thì chuyển sang món thứ hai và ăn hết
món thứ hai, và cứ thế cho đến hết.
• Ví dụ: Bài toán rút tiền ATM
• Có 3 mệnh giá: 100.000đ,50.000đ, 10.000đ
• Số tiền=100.000đ*X1 + 50.000đ*X2+10.000đ*X3
• Hãy chọn X1, X2, X3 tốt
• Giải quyết
• X1 lớn nhất sao cho X1*100.000đ<=Số tiền
•
1. Vấn đề - bài toán
Tham lam (heuristic)
9/16/2008T.P.Tuấn-Lập Trình CPage 10
• Trong kỹ thuật chia để trị, ta chia bài toán lớn
thành những bài toán con. Việc giải quyết các
bài toán con có thể trùng nhau các bài toán
con giải rồi phải giải lại
• Kỹ thuật quy hoạch động đưa ra nhằm khắc
phục tình trạng này bằng cách lưu lại các kết
quả đã giải quyết và sau đó sử dụng lại khi cần
mà không cần phải giải lại
1. Vấn đề - bài toán
Quy hoạch động
9/16/2008T.P.Tuấn-Lập Trình CPage 11
• Là quá trình phân tích đi xuống và quay
lui trở lại theo con đường đã đi qua
• Ví dụ: Tính n! =n*(n-1)! =
1. Vấn đề - bài toán
Kỹ thuật quay lui
9/16/2008T.P.Tuấn-Lập Trình CPage 12
• Xuất phát từ một phương án nào đó
• Áp dụng phép biến đổi trên phương án này để
cho một phương án tốt hơn phương án ban
đầu
• Lặp lại việc biến đổi trên cho đến khi không còn
có thể cải thiện được nữa thì dừng lại
1. Vấn đề - bài toán
Tìm kiếm địa phương
9/16/2008T.P.Tuấn-Lập Trình CPage 13
2. Thuật toán – thuật giải
• Thuật toán là khái niệm cơ sở của toán học
và tin học
• Thuật toán là một dãy các chỉ thị rõ ràng
và có thể thi hành được để hướng dẫn
thực hiện hành động nhằm đạt được mục
tiêu đặt ra
• Thuật toán là sự thể hiện của một phương
pháp để giải quyết vấn đề
Thuật toán – khái niệm
9/16/2008T.P.Tuấn-Lập Trình CPage 14
• Nhập (input). Các thuật toán thường có giá trị đầu vào
• Xuất (output). Từ giá trị vào thuật toán cho ra kết quả.
• Tính xác định (definiteness). Các bước trong thuật toán phải chính
xác rõ ràng.
• Tính hữu hạn (finiteness). Thuật toán phải cho ra lời giải (hay kết
quả) sau một số bước hữu hạn.
• Tính hiệu quả. Tính hiệu quả được đánh giá dựa trên một số tiêu
chuẩn như khối lượng tính toán, không gian và thời gian sử dụng
(khi thực hiện thuật toán trên máy tính).
• Tính tổng quát. Thuật toán phải áp dụng được cho tất cả các bài
toán cùng dạng, chứ không chỉ áp dụng được cho một số trường
hợp riêng lẻ nào đó.
2. Thuật toán – thuật giải
Thuật toán – đặc trưng
9/16/2008T.P.Tuấn-Lập Trình CPage 15
• Cùng một bài toán có thể có nhiều thuật
toán khác nhau để giải
• Thuật toán đơn giản, dễ hiểu, có độ chính
xác cao, được bảo đảm về mặt toán học, dễ
triển khai trên máy, thời gian thao tác ngắn,
được gọi là thuật toán tối ưu
2. Thuật toán – thuật giải
Thuật toán
9/16/2008T.P.Tuấn-Lập Trình CPage 16
• Nghiên cứu thuật toán là một trong những
vấn đề quan trọng của tin học
• Lý thuyết về thuật toán giải quyết một số
vấn đề sau:
– Những bài toán nào giải được bằng thuật toán,
những bài toán nào không giải được bằng
thuật toán
– Tìm thuật toán tốt nhất, tối ưu
– Triển khai thuật toán trên máy tính
2. Thuật toán – thuật giải
Thuật toán
9/16/2008T.P.Tuấn-Lập Trình CPage 17
Thuật toán giải phương trình bậc hai:
AX2 + BX + C = 0 (A 0)
-Bước 1 : Tính DELTA = B*B-4*A*C
-Bước 2 : So sánh DELTA với số 0
-Bước 3 : Rẽ làm 3 trường hợp :
-Trường hợp DELTA < 0 :
vô nghiệm;
-Trường hợp DELTA = 0 :
-Trường hợp DELTA > 0 :
.
2. Thuật toán – thuật giải
Thuật toán – ví dụ
1 2 2*
B
X X
A
2
1,2
4
2
b b ac
X
a
9/16/2008T.P.Tuấn-Lập Trình CPage 18
2. Thuật toán – thuật giải
Thuật toán – các cấu trúc cơ bản
1. Tuần tự: thực hiện hết lệnh này đến
lệnh khác
2. Rẽ nhánh: tùy theo dữ liệu đầu vào mà
ta quyết định thực hiện câu lệnh gì tiếp
theo
3. Lặp: thực hiện lại nhiều lần một số câu
lệnh nào đó cho đến khi điều kiện không
còn thỏa mãn nữa
9/16/2008T.P.Tuấn-Lập Trình CPage 19
• Khái niệm thuật toán đã trình bày chính là cánh
cửa khép kín cho việc giải các bài toán vì:
– Nhiều bài toán không thỏa các đặc trưng cơ bản
của thuật toán.
– Có nhiều bài toán chưa tìm ra thuật toán hoặc
chưa chứng minh được là có thuật toán hay
không.
– Có những bài toán có thuật toán nhưng khó thực
hiện hoặc không thực hiện được
2. Thuật toán – thuật giải
Thuật giải
9/16/2008T.P.Tuấn-Lập Trình CPage 20
• Từ những nhận định trên người ta thấy rằng:
cần phải có những đổi mới cho khái niệm thuật
toán “Thuật giải”
– Tính xác định
– Tính đúng đắn
2. Thuật toán – thuật giải
Thuật giải
THUẬT GIẢI CŨNG LÀ THUẬT TOÁN
NHƯNG MỞ RỘNG CHO CÁC ĐIỀU KIỆN
9/16/2008T.P.Tuấn-Lập Trình CPage 21
• Tính xác định thực chất là tính đơn trị của cách giải
của một thuật toán và sự rõ ràng tối đa.
• Trong thực tế có nhiều bài toán vi phạm tính xác
định mà vẫn cho kết qủa. Như vậy thay cho việc xây
dựng toàn bộ quá trình giải chỉ cần chỉ ra cách
chuyển từ bước i sang bước i+1.
• Cách gỉai ngẫu nhiên, đệ quy là mở rộng tính xác
định
2. Thuật toán – thuật giải
Thuật giải – mở rộng tính xác định
9/16/2008T.P.Tuấn-Lập Trình CPage 22
• Tính đúng đắn được hiểu là cho kết quả
đúng.
• Trong thực tế thì số gần đúng là có thể chấp
nhận được
• Ngoài ra dùng cách giải heuristic đơn giản,
độc đáo vẫn có thể cho kết qủa một cách
sáng tạo
2. Thuật toán – thuật giải
Thuật giải – mở rộng tính đúng đắn
9/16/2008T.P.Tuấn-Lập Trình CPage 23
• Ngôn ngữ tự nhiên
• Lưu đồ - sơ đồ khối
• Mã giả
3. Các phương pháp biểu diễn thuật toán
9/16/2008T.P.Tuấn-Lập Trình CPage 24
• Liệt kê các thao tác, các chỉ thị bằng ngôn
ngữ tự nhiên
• Ví dụ: Có 43 que diêm. Hai người chơi luân
phiên bốc diêm. Mỗi lượt, mỗi người bốc từ
1 đến 3 que diêm. Người nào bốc cuối cùng
sẽ thắng cuộc
3. Các phương pháp biểu diễn thuật toán
Ngôn ngữ tự nhiên
9/16/2008T.P.Tuấn-Lập Trình CPage 25
• Giải thuật để người đi trước luôn thắng cuộc
được diễn tả bằng cách liệt kê từng bước như
sau:
– Bước 1: Bốc 3 que rồi đợi đối phương đi
– Bước 2: Đối phương bốc (giả sử x que, 0<x<4)
– Bước 3: Đến lượt người đi trước bốc a = (4-x)
que. Nếu còn diêm thì quay lại Bước 2
– Tuyên bố thắng cuộc. Kết thúc
3. Các phương pháp biểu diễn thuật toán
Ngôn ngữ tự nhiên
9/16/2008T.P.Tuấn-Lập Trình CPage 26
1. Tính điểm trung bình của học sinh gồm các
môn Toán, Lý, Hóa.
2. Kiểm tra 2 số a, b giống nhau hay khác
nhau.
3. Kiểm tra 1 số a chẵn hay lẻ
4. Giải pt: ax+b=0
5. Giải phương trình bậc 2: ax2 + bx + c = 0
3. Các phương pháp biểu diễn thuật toán
Ngôn ngữ tự nhiên – Bài tập
9/16/2008T.P.Tuấn-Lập Trình CPage 27
• Là một phương tiện hình học giúp ta diễn tả
giải thuật một cách trực quan
• Được tạo bởi các kiểu khối cơ bản, nối với
nhau bằng các đường có hướng
• Thuật ngữ tiếng Anh là Flow Chart
3. Các phương pháp biểu diễn thuật toán
Sơ đồ khối
9/16/2008T.P.Tuấn-Lập Trình CPage 28
3. Các phương pháp biểu diễn thuật toán
Sơ đồ khối
bắt đầu
kết thúc
Chương
trình con
Hướng xử lý
điều kiện
input
output
thao tác
9/16/2008T.P.Tuấn-Lập Trình CPage 29
3. Các phương pháp biểu diễn thuật toán
Sơ đồ khối – ví dụ
Bắt đầu
Kết thúc
a, b
c = a + b
c
Bắt đầu
Kết thúc
Số a, Số b
Số a bằng Số b
Số a có bằng
Số b không?
Số a không bằng Số b
Có
Không
Bắt đầu
Kết thúc
Thùng = 24 Lon?Chưa
Thùng = 0 Lon
1 Lon
Thêm 1 Lon vào thùng
Bằng
9/16/2008T.P.Tuấn-Lập Trình CPage 30
1. Tính điểm trung bình của học sinh gồm các
môn Toán, Lý, Hóa.
2. Kiểm tra 2 số a, b giống nhau hay khác
nhau.
3. Kiểm tra 1 số a chẵn hay lẻ
4. Giải pt: ax+b=0
5. Giải phương trình bậc 2: ax2 + bx + c = 0
3. Các phương pháp biểu diễn thuật toán
Sơ đồ khối – Bài tập
9/16/2008T.P.Tuấn-Lập Trình CPage 31
3. Các phương pháp biểu diễn thuật toán
Mã giả
• Ngoài việc sử dụng ngôn ngữ tự nhiên và
lưu đồ để biểu diễn thuật toán, người ta còn
sử dụng ngôn ngữ tựa pascal, c, được gọi
là mã giả
• Trong mã giả ta sử dụng cả cấu trúc của
ngôn ngữ lập trình và ngôn ngữ tự nhiên
9/16/2008T.P.Tuấn-Lập Trình CPage 32
3. Các phương pháp biểu diễn thuật toán
Mã giả - ví dụ
Biến
A,B,C,DELTA,X1,X2 : SốThực ;
BắtĐầu
Nhập A,B,C;
DELTA:=B*B-4*A*C;
Nếu DELTA <0 Thi
Xuất 'Phương trinh vô nghiệm ';
Dừng;
Nếu DELTA =0 Thi
X1:=(-B/2/A);
X2:=X1;
Xuất 'Nghiệm kép X1,X2 ';
Dừng;
Nếu DELTA =0 Thi
X1:=(-B-CanBậcHai(DELTA))/2/A;
X2:=(-B+CanBậchH(DELTA))/2/A;
Xuất 'Nghiệm phân biệt X1,X2 ';
Dừng;
KếtThúc.
9/16/2008T.P.Tuấn-Lập Trình CPage 33
1. Tính điểm trung bình của học sinh gồm các
môn Toán, Lý, Hóa.
2. Kiểm tra 2 số a, b giống nhau hay khác
nhau.
3. Kiểm tra 1 số a chẵn hay lẻ
4. Giải pt: ax+b=0
5. Giải phương trình bậc 2: ax2 + bx + c = 0
3. Các phương pháp biểu diễn thuật toán
Mã giả – Bài tập
Sử dụng ngôn ngữ tựa pascal
9/16/2008T.P.Tuấn-Lập Trình CPage 34
4. Các bước để giải một bài toán trên máy tính
• Bước 1: Xác định vấn đề - bài toán
• Bước 2: Lựa chọn phương pháp giải
• Bước 3: Xây dựng thuật toán hoặc thuật giải
• Bước 4: Cài đặt chương trình
• Bước 5: Hiệu chỉnh chương trình
• Bước 6: Thực hiện chương trình
9/16/2008T.P.Tuấn-Lập Trình CPage 35
4. Các bước để giải một bài toán trên máy tính
• Phân tích hệ thống nhằm phát biểu chính
xác vấn đề, làm rõ yêu cầu của người sử
dụng
• Đánh giá, nhận định tính khả thi của vấn đề
Bước 1: Xác định vấn đề - bài toán
9/16/2008T.P.Tuấn-Lập Trình CPage 36
4. Các bước để giải một bài toán trên máy tính
• Có nhiều cách khác nhau để giải quyết vấn
đề, tùy theo nhu cầu cụ thể mà ta lựa chọn
phương pháp thích hợp
• Việc lựa chọn phương pháp cũng cần căn cứ
vào khả năng xử lý tự động mà ta cần sử
dụng
Bước 2: Lựa chọn phương pháp giải
9/16/2008T.P.Tuấn-Lập Trình CPage 37
4. Các bước để giải một bài toán trên máy tính
• Xác định input, output
• Xác định các bước thực hiện cơ bản cho dữ
liệu đầu vào và đầu ra
• Nên áp dụng phương pháp thiết kế có cấu
trúc, từ thiết kế tổng thể tiến hành làm mịn
dần các bước
Bước 3: Xây dựng thuật toán hoặc thuật giải
9/16/2008T.P.Tuấn-Lập Trình CPage 38
4. Các bước để giải một bài toán trên máy tính
• Mô tả thuật giải thành chương trình
• Cần nắm vững ngôn ngữ lập trình và thể
hiện một cách chính xác thuật toán đã được
đưa ra.
Bước 4: Cài đặt chương trình
9/16/2008T.P.Tuấn-Lập Trình CPage 39
4. Các bước để giải một bài toán trên máy tính
• Cho chương trình chạy thử và hiệu chỉnh
những sai sót
• Trong bước này ta cần khắc phục hai loại lỗi:
– Lỗi cú pháp (có sự hỗ trợ của IDE)
– Lỗi ngữ nghĩa (thường khó phát hiện hơn lỗi cú
pháp)
Bước 5: Hiệu chỉnh chương trình
9/16/2008T.P.Tuấn-Lập Trình CPage 40
4. Các bước để giải một bài toán trên máy tính
• Cho chương trình chạy với những bộ dữ liệu
khác nhau để kiểm tra
• Lưu ý các trường hợp đặc biệt
• Lưu ý các trường hợp người dùng nhập dữ
liệu có kiểu không phù hợp với kiểu dữ liệu
sử dụng trong chương trình
Bước 6: Thực hiện chương trình
9/16/2008T.P.Tuấn-Lập Trình CPage 41
5. Tổng quan về ngôn ngữ lập trình
VẤN ĐỀ
NAN GIẢI
PP giải
(giải thuật)
VẤN ĐỀ
TƯƠNG TỰ KẾT QUẢ
Ôi nhiều
việc quá
Con người làm việc
9/16/2008T.P.Tuấn-Lập Trình CPage 42
VẤN ĐỀ
NAN GIẢI
PP giải
(giải thuật)
VẤN ĐỀ
TƯƠNG TỰ
KẾT QUẢ
Có máy tính Sướng
thật, đi làm việc
khác thôi!
5. Tổng quan về ngôn ngữ lập trình
Sự hỗ trợ của máy tính
9/16/2008T.P.Tuấn-Lập Trình CPage 43
Giải bài toán này
thế nào đây?
Cách giải được
diễn đạt bằng
ngôn ngữ tự nhiên
Source code
Kiến thức
về NNLT
Kiến thức
Chuyên môn
Chương trình
biên dịch
(Bộ máy của NNLT)
File Ngôn
ngữ máy
(exe, dll, com, ...)
5. Tổng quan về ngôn ngữ lập trình
Sự hỗ trợ của máy tính
9/16/2008T.P.Tuấn-Lập Trình CPage 44
6. Thể hiện thuật toán bằng ngôn ngữ lập trình
1. Tuần tự
2. Rẽ nhánh
3. Lặp
1. Dấu ;
2. If,
switch case
3. While,
do while,
for(,,)
Các cấu trúc của thuật toán Các cấu trúc của ngôn ngữ C
9/16/2008T.P.Tuấn-Lập Trình CPage 45
Thành phần
tương ứng
(nhập xuất)
-Màn hình
-Máy in
-File (tập tin)
-Cơ sở dữ liệu
-Loa
-
-Bàn phím:dữ liệu vào thông
qua
-Màn hình Console
-Windows (các điều khiển: nút
lệnh, textbox,)
-Chuột: các điều khiển
-File (tập tin)
-Cơ sở dữ liệu
-Micro
-Máy scan
-Máy nhận dạng mã vạch
-
Thông tin đầu ra
(output)
Thông tin đầu vào
(input)
7. Mối liên hệ giữa các thành phần trong cấu trúc của bài
toán và các thành phần nhập xuất trong máy tính
9/16/2008T.P.Tuấn-Lập Trình CPage 46
8. Hãy tìm thuật toán?
1. Cho a,b,c tìm max, min (phát
triển cho 4 số, 5 số, )
2. ax+b=0;
3. ax2+bx+c=0;
4. Tháng Quý.
5. Tiền điện.
6. Dạng tam giác(nhập a,b,c):
Cân, Vuông, Đều, Vuông cân.
7. S=1+2++n
8. Số hạng thứ n của dãy fibonaci
9. UCLN, BCNN của 2 số.
10. Rút gọn phân số (nhập tử số,
mẫu số).
11. Cơ số 10 2. (10 k)
12. Cơ số 2 10. (k 10)
13. Nhập giờ, phút, giây, nhập số
giây thêm, xuất ra giờ, phút
giây.
14. Số nguyên tố
15. Số chính phương
16. Phân tích Thừa số nguyên tố.
17. Tổng các ước số của 1 số.
18. Tổng các số nguyên tố < n
19. Tổng các số chính phương < n
9/16/2008T.P.Tuấn-Lập Trình CPage 47
Các file đính kèm theo tài liệu này:
- c_ch_01_gqbtbmt_0753.pdf