Thuật toán (giải thuật) để giải một bài 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 đó, từ Input của bài toán này,[r]
(1)Lý thuyết Tin học 10 4: Bài toán thuật toán
A Lý thuyết Tin học 10 4
1/ Khái niệm toán
- Bài tốn việc ta muốn máy tính thực Ví dụ: Giải phương trình bậc 2, quản lý nhân viên…
- Các toán cấu tạo thành phần bản:
+ Input: thơng tin có
+ Output: Các thơng tin cần tìm từ Output
2/ Khái niệm thuật toán
- Thuật toán để giải toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác ấy, từ Input toán, ta nhận Output cần tìm
- Ví dụ: Tìm giá trị lớn dãy số nguyên
=> Ta có bước thực sau:
* Xác định BT
- Input: Số nguyên dương N dãy N số nguyên a1, a2, …, aN
- Output: Giá trị lớn Max dãy số
* Ý tưởng
- Khởi tạo giá trị Max = a1
- Lần lượt với i từ đến N so sánh với Max, ai>Max Max=
* Thuật toán:
Cách liệt kê:
+ B1: Nhập N dãy a1, ,aN;
(2)+ B3: i>N đưa giá trị Max kết thúc;
+ B4: Nếu ai>Max Max ← ai;
+ B5: i ← i+1 quay lại bước 3;
Cách lập sơ đồ khối:
- Thuật tốn cịn diễn tả sơ đồ khối
- Quy định:
+ Hình van: thao tác nhập, xuất liệu
+ Hình thoi: Thao tác so sánh
+ Hình chữ nhật: Các phép tốn
(3)Ví dụ: Mơ việc thực thuật toán với N=8 dãy số: 5, 1, 4, 7, 6, 3, 15, 11
Ds 5 1 4 7 6 3 15 11
i
Max 5 5 5 7 7 7 15 15
=> Các tính chất thuật tốn:
(4)+ Tính xác định: Sau số lần thực thao tác, kết thúc xác định để thực bước
+ Tính đắn: Sau thuật toán kết thúc, ta phải nhận Output cần tìm
3/ Một số ví dụ thuật tốn
Ví dụ 1: Kiểm tra tính nguyên tố số nguyên dương.
- Xác định toán:
+ Input: Số nguyên dương N
+ Output: “N số nguyên tố” “N không số nguyên tố”
- Ý tưởng: Ta nhớ lại định nghĩa: Một số nguyên dương N số nguyên tố có ước số khác Do ta có:
+ Nếu N = N khơng nguyên tố
+Nếu < N < N số nguyên tố
+ Nếu N ≥ khơng có ước số phạm vi từ đến phần nguyên bậc N N số ngun tố
- Thuật tốn:
+ B1: Nhập số nguyên dương N
+ B2: Nếu N = thơng báo N khơng số nguyên tố kết thúc
+ B3: Nếu N < thơng báo N số nguyên tố kết thúc
+ B4: i ←
+ B5: Nếu N>[√N](*) thơng báo N số nguyên tố kết thúc
+ B6: Nếu N chia hết cho i thơng báo N số không nguyên tố kết thúc
+ B7: i ← i + quay lại bước
(5)Cho dãy A gồm N số nguyên a1, a2, a3, …,aN Cần xếp số hạng để dãy A trở thành dãy không giảm (tức số hạng trước không lớn số hạng sau)
- Xác định toán:
+ Input: Dãy A gồm N số nguyên
+ Output: Dãy A xếp thành dãy không giảm
Thuật toán xếp tráo đổi (Exchange Sort)
- Ý tưởng: Với số liền kề, số trước lớn số sau ta đổi chỗ cho Việc lặp lại, khơng cịn đổi chỗ
- Thuật toán
Cách liệt kê:
+ B1: Nhập vào n dãy số nguyên a1, ,aN;
+ B2: M← N;
+ B3: Nếu M<2 in dãy xếp kết thúc;
+ B4 M ← M – 1; i ← 0;
+ B5: i ← i + 1;
+ B6: Nếu i > M quay lại bước 3;
+ B7 Nếu > ai+1 tráo đổi cho nhau;
(6)Ví dụ 3: Bài tốn tìm kiếm
Cho dãy A gồm N số nguyên khác nhau: a1…aN số ngun k Cần biết có hay khơng số i mà ai=k Nếu có cho biết số
(7)- Xác định tốn
+ Input: dãy A gồm N số nguyên khác nhau: a1… aN số nguyên k
+ Output: số i mà ai=k thơng báo khơng có số hạng dãy A có giá trị k
- Ý tưởng: từ số hạng thứ nhất, ta so sánh giá trị số hạng xét với khóa gặp số hạng khóa dãy xét hết khơng có giá trị khóa Trong trường hợp thứ dãy A khơng có số hạng khóa
- Thuật tốn
Liệt kê:
+ B1: Nhập vào N, số hạng a1, , aN khóa k;
+ B2: i←1;
+ B3: Nếu ai=k thơng báo số i kết thúc;
+ B4 i ←i+1;
+ B5: Nếu i>N thơng báo dãy A khơng có số hạng có giá trị k kết thúc;
(8)Dãy A có N = khóa k = 10
Tìm số i để = k
i 1 2 3 4 5 6 7
ai 7 12 4 6 11 10 8
Ghi chú: k = 10 → i =
Trong thuật toán trên, i biến số nhận giá trị nguyên từ đến N +
B Trắc nghiệm Tin học 10 4 Câu Thế thuật toán?
(9)B Thể thao tác so sánh
C Quy định trình tự thực thao tác D Thể thao tác nhập, xuất liệu
Câu Thuật toán có tính
A Tính xác định, tính liên kết, tính đắn B Tính dừng, tính liên kết, tính xác định C Tính dừng, tính xác định, tính đắn D Tính tuần tự: Từ input cho output
Câu Trong tin học sơ đồ khối là
A Ngơn ngữ lập trình bậc cao B Sơ đồ mơ tả thuật tốn C Sơ đồ cấu trúc máy tính
D Sơ đồ thiết kế vi điện tử
Câu Chọn phát biểu nói Bài tốn thuật tốn?
A Trong phạm vi Tin học, ta quan niệm tốn việc mà ta muốn máy tính thực
B Thuật toán (giải thuật) để giải toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác đó, từ Input toán này, ta nhận Output cần tìm
C Sơ đồ khối sơ đồ mơ tả thuật tốn D Cả ba câu
Câu Thuật toán xếp đổi chỗ cho dãy số A theo trật tự tăng dần dừng lại khi
nào?
A Khi M =1 khơng cịn đổi chỗ B Khi số lớn trôi cuối dãy C Khi > +
D Tất phương án
Câu Cho thuật tốn tìm giá trị nhỏ dãy số nguyên sử dụng phương pháp
(10)Bước 1: Nhập N, số hạng a1, a2,…., aN; Bước 2: Min ← ai, i ← 2;
Bước 3: Nếu i < N đưa đưa giá trị Min kết thúc; Bước 4: Bước 4.1: Nếu > Min Min ← ai;
Bước 4.2: i ← i+1, quay lại bước
Hãy chọn bước sai thuật toán trên: A Bước
B Bước C Bước 4.1 D Bước 4.2
Câu Thuật toán tốt thuật toán
A Thời gian chạy nhanh B Tốn nhớ
C Cả ý
D Tất phương án sai
Câu Input toán: "Hoán đổi giá trị hai biến số thực A C dùng biến trung
gian B" là:
A Hai số thực A, C B Hai số thực A, B C Hai số thực B, C D Ba số thực A, B, C
Câu Cho toán kiểm tra tính nguyên tố số nguyên dương N Hãy xác định
Output toán này? A N số nguyên tố
B N không số nguyên tố C
(11)Câu 10 "…(1) dãy hữu hạn …(2) xếp theo trình tự xác định sao
cho thực dãy thao tác ấy, từ …(3) tốn, ta nhận …(4) cần tìm" Các cụm từ thiếu là?
A Input – Output - thuật toán – thao tác B Thuật toán – thao tác – Input – Output C Thuật toán – thao tác – Output – Input D Thao tác - Thuật toán– Input – Output
Đáp án
Câu 10
Đáp án A C B D A C C A C C