Tải bản đầy đủ (.pdf) (29 trang)

SKKN dạy bài toán và thuật toán cho học sinh lớp 10

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 (739.96 KB, 29 trang )

SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10

MỤC LỤC
CÁC KÝ HIỆU VIẾT TẮT TRONG SÁNG KIẾN KINH NGHIỆM ................. 2
I. Lời giới thiệu...................................................................................................... 3
II. Tên sáng kiến: ................................................................................................... 4
III. Tác giả sáng kiến: ............................................................................................ 4
IV. Chủ đầu tư tạo ra sáng kiến:............................................................................ 4
V. Lĩnh vực áp dụng sáng kiến: ............................................................................ 4
VI. Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử: .............................. 4
VII. Mô tả bản chất của sáng kiến: ....................................................................... 5
1. Bài toán ......................................................................................................... 5
1.1. Khái niệm ............................................................................................... 5
1.2. Ví dụ xác định INPUT và OUTPUT của các bài toán sau..................... 5
2. Thuật toán ...................................................................................................... 6
2.1. Khái niệm ............................................................................................... 6
2.2. Phương pháp........................................................................................... 6
2.3. Tính chất ................................................................................................. 6
2.4. Ví dụ ....................................................................................................... 6
2.5. Bài tập vận dụng................................................................................... 26
VIII. Những thông tin cần bảo mật: Không ........................................................ 26
IX. Các điều kiện cần thiết để áp dụng sáng kiến: Học sinh lớp 10 hoặc học sinh
mới làm quen với lập trình. ................................................................................. 26
X. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến
theo ý kiến của tác giả: ........................................................................................ 26
XI. Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử hoặc áp dụng
sáng kiến lần đầu: ................................................................................................ 28
TÀI LIỆU THAM KHẢO ................................................................................... 29

1



SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
CÁC KÝ HIỆU VIẾT TẮT TRONG SÁNG KIẾN KINH NGHIỆM

Ý nghĩa

Ký hiệu
THPT

Trung học phổ thông

PT

Phương trình

VN

Vô nghiệm

VSN

Vô số nghiệm

GTLN

Giá trị lớn nhất

SNT

Số nguyên tố


SX

Sắp xếp

UCLN

Ước chung lớn nhất

Đ

Đúng

S

Sai

B

Bước

NXB

Nhà xuất bản

Div

Phép chia lấy phần nguyên

Mod


Phép chia lấy phần dư

[…]

Làm tròn giá trị số trong dấu ngoặc

2


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
I. Lời giới thiệu
Trong kỷ nguyên công nghệ bùng nổ, không có gì bất ngờ khi công nghệ
thông tin luôn giữ vững vị thế là một trong những ngành hàng đầu về nhu cầu
nhân lực và tiềm năng phát triển. Vị thế này càng được củng cố trong bối cảnh thế
giới và đất nước bước vào thời đại Cách mạng công nghiệp 4.0. Vì thế đòi hỏi
mỗi chúng ta dù là học sinh hay giáo viên đều phải tích cực học tập, nghiên cứu
để có thể hội nhập được với thời đại.
Môn Tin học là môn học giúp các em dễ dàng tiếp cận được với công nghệ,
với thế giới. Tuy nhiên nó khá mới mẻ với học sinh THPT đặc biệt là học sinh
trường THPT Nguyễn Viết Xuân với phần đông học sinh thuộc khu vực nông
thôn. Học sinh mới chỉ được làm quen với máy tính chứ chưa thực sự có khái
niệm về công nghệ thông tin, khái niệm về bài toán và thuật toán trong Tin học.
Trong khi đó phần bài toán và thuật toán được học ở lớp 10 là phần kiến thức
quan trọng nhất. Là nền tảng cho kiến thức tin học lớp 11. Là cốt lõi cho các em
muốn theo học lập trình. Nên rất cần những phương pháp, cách tiếp cận bài toán
và thuật toán sao cho học sinh không cảm thấy sợ dẫn đến mất gốc.
BÀI TOÁN


INPUT

Muốn máy tính đưa ra

OUTPUT

Output từ Input
CHƯƠNG TRÌNH

Muốn viết chương trình
CẦN

THUẬT TOÁN

Bài toán và thuật toán trong Tin học khá là quen thuộc với giáo viên. Và
sự thật tôi cũng đã làm một sáng kiến kinh nghiệm về phần này cách đây ba năm.
Nhưng khi đó tôi thường tập trung vào những thuật toán khó phức tạp mà quên đi
3


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
việc xây dựng cái nền móng cho học sinh. Từ thực tế giảng dạy nhiều năm tôi
nhận thấy học sinh của tôi có biết cách giải bài toán nhưng gặp khó khăn trong
việc trình bày bài toán đó bằng phương pháp liệt kê hoặc phương pháp sơ đồ khối.
Từ đó, tôi đúc rút được là khi dạy nên để học sinh tiếp cận với những thuật toán
dễ từ đó phát triển lên những thuật toán khó thì học sinh dễ tiếp cận hơn và nên
có mô phỏng thuật toán bằng các bộ test trong những trường hợp đặc biệt để học
sinh hiểu rõ hơn. Không cần quá nặng nề việc phải bám sát trình tự các ví dụ trong
sách giáo khoa. Mục đích sáng kiến kinh nghiệm này của tôi là muốn học sinh

làm quen dần với các thuật toán từ đơn giản rồi nâng cao dần để học sinh hình
thành kỹ năng viết thuật toán thành thạo.
Do thời gian và khả năng có hạn nên sáng kiến kinh nghiệm tôi viết vẫn
còn nhiều tồn tại. Kính mong đồng nghiệp và học sinh góp ý để sáng kiến kinh
nghiệm của tôi được hoàn thiện hơn. Để một phần nào đó giúp ích cho giáo viên
và học sinh trong quá trình giảng dạy và học tập.
II. Tên sáng kiến:
Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
III. Tác giả sáng kiến:
- Họ và tên: Nguyễn Thị Hà
- Địa chỉ tác giả sáng kiến: Hội Hợp – Vĩnh Yên – Vĩnh Phúc
- Số điện thoại: 0977 212 636
- E_mail:
IV. Chủ đầu tư tạo ra sáng kiến: Nguyễn Thị Hà
V. Lĩnh vực áp dụng sáng kiến: Giảng dạy cho học sinh lớp 10 và học sinh
mới học lập trình.
VI. Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử: Năm 2017 2018

4


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
VII. Mô tả bản chất của sáng kiến:

1. Bài toán
1.1. Khái niệm
Là việc nào đó mà ta muốn máy tính thực hiện để từ thông tin đưa vào
(Input) tìm được thông tin ra (Output).
Vậy bài toán trong tin học gồm:
Thông tin, dữ liệu vào: Input

Thông tin ra, kết quả: Output
1.2. Ví dụ xác định INPUT và OUTPUT của các bài toán sau
Ví dụ 1: Cho hai số a, b. Tính tổng hai số.
Input: a, b
Output: Tổng hai số
Ví dụ 2: Cho hai số a, b, c. Tìm max của ba số.
Input: a, b, c
Output: Max (a,b,c)
Ví dụ 3: Giải phương trình: ax + b = 0.
Input: Hai số nguyên a và b.
Output: Kết luận nghiệm của PT.
Ví dụ 4: Giải phương trình: ax2 + bx + c = 0
5

(a  0)


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Input: Số nguyên a, b, c với a  0.
Output: Kết luận nghiệm của phương trình.
2. Thuật toán
2.1. Khái niệm
Thuật toán để giải một bài toán là 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.
2.2. Phương pháp
Có hai phương pháp trình bày thuật toán:
* Phương pháp liệt kê: Là nêu trình tự thực hiện các bước giải một bài toán bằng
máy tính.
* Phương pháp sơ đồ khối: Là sử dụng các hình khối để thể hiện thuật toán với:

:Thể hiện nhập hoặc xuất dữ liệu
: Phép gán, tính toán
: Phép so sánh, kiểm tra
: Quy trình thực hiện các thao tác
2.3. Tính chất
- Tính dừng: Thuật toán phải kết thúc sau một số hữu hạn lần thực hiện các
thao tác.
- Tính xác định: Sau khi thực hiện một thao tác thì hoặc thuật toán kết thúc
hoặc có đúng một thao tác được thực hiện tiếp theo.
- Tính đúng đắn: Sau khi thuật toán kết thúc ta phải nhận được Output cần
tìm.
2.4. Ví dụ
Ví dụ 1: Cho hai số a, b. Trình bày thuật toán tính tổng hai số
Lời giải
* Cách xác định bài toán
- Input: a, b
- Output: Tổng hai số
6


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Thuật toán
- Phương pháp liệt kê
B1: Nhập a, b
B2: S := a + b
B3: Tổng là S
- Phương pháp sơ đồ khối

* Mô phỏng thuật toán
- Với a = 2, b = 3 thì tổng S là 5

- Với a = 10, b = 6 thì tổng S là 16
Ví dụ 2: Cho số nguyên N. Trình bày thuật toán kiểm tra tính chẵn lẻ của N.
Lời giải
* Cách xác định bài toán
- Input: N
- Output: N là số chẵn hoặc N là số lẻ
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N
B2: Nếu N chia hết cho 2 thì N là số chẵn
B3: Ngược lại N là số lẻ

Nhập N

- Phương pháp sơ đồ khối
N 2

7

Đ

N là số chẵn

S
N là số lẻ


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng thuật toán
- Với N = 4 thì N là số chẵn

- Với N = 7 thì N là số lẻ
Ví dụ 3: Trình bày thuật toán giải phương trình: ax + b = 0
Lời giải
* Cách xác định bài toán
- Input: a, b
- Output: Kết luận nghiệm của PT
* Thuật toán
- Phương pháp liệt kê
B1: Nhập a, b
B2: Nếu a = 0
B21: b = 0 kết luận PT VSN
B22: Ngược lại kết luận PT VN
B3: Ngược lại phương trình có 1 nghiệm x := -b/a
- Phương pháp sơ đồ khối

* Mô phỏng thuật toán
- Với a = 0, b = 0 thì phương trình vô số nghiệm
- Với a = 0, b = 1 thì phương trình vô nghiệm
8


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
- Với a = 1, b = 1 thì phương trình có nghiệm x := -1
Ví dụ 4: Trình bày thuật toán giải phương trình: ax2 + bx + c = 0 (a#0)
Lời giải
* Cách xác định bài toán
- Input: a, b, c
- Output: Kết luận nghiệm của PT
* Thuật toán
- Phương pháp liệt kê

B1: Nhập a, b, c
B2: D:= b*b - 4*a*c
B3: Nếu D < 0 thì phương trình vô nghiệm
B4: Nếu D = 0 thì phương trình có nghiệm kép x :=
B5: Ngược lại phương trình có hai nghiệm phân biệt
x1 :=

b D
b D
, x2 :=
2*a
2*a

- Phương pháp sơ đồ khối

Đ

* Mô phỏng thuật toán
- Với a = 1, b = 2, c = 4
9

b
2*a


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B1: Nhập 1, 2, 4
B2: D := 2*2 – 4*1*4 = -12.
B3: D < 0 (đúng) Vậy PT vô nghiệm
- Với a = 1, b = 2, c = 1

B1: Nhập 1, 2, 1
B2: D := 2*2 – 4*1*1 = 0
B3: D = 0 (đúng)  Vậy PT có 1 nghiệm
- Với a =1, b = 3, c = 2
B1: Nhập 1, 3, 2
B2: D := 3*3 – 4*1*2 = 1.
B3: D = 0 (sai)  Vậy PT có hai nghiệm phân biệt
x1 :=

3 1
3 1
= -2, x2 :=
= -1
2 *1
2 *1

Ví dụ 5: Cho dãy có N phần tử a1, a2, … an. Trình bày thuật toán tính tổng các
phần tử của dãy.
Lời giải
* Cách xác định bài toán
Input: N; a1, a2, … an
Output: Tổng các phần tử của dãy
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N; a1, a2, … an
B2: S := 0; i := 1
B3: Nếu i > N thì dãy có tổng là S
B5: S := S + ai
B6: i := i + 1
B7: Quay về B3

- Phương pháp sơ đồ khối

10


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10

Nhập N; a1, a2, … an

S := 0; i := 1

i>N

Đ

Tổng dãy là S

S
S := S + ai

i := i + 1

* Mô phỏng thuật toán
- Với N = 0 thì tổng của dãy là 0
- Với N = 3 và dãy số 4, 7, 2
+ B1: Nhập 3; 4, 7, 2
+ B2: S := 0; i := 1
+ B3: 1 > 3 (sai)
+ B4: S := 0 + 4
+ B5: i := 2, quay lại B3

....
 Vậy Tổng dãy là 13
Ví dụ 6: Cho dãy có N phần tử a1, a2, … an. Trình bày thuật toán tính tổng các
phần tử chẵn của dãy.
Lời giải
* Cách xác định bài toán
Input: N; a1, a2, … an
Output: Tổng các phần tử chẵn của dãy
* Thuật toán
- Phương pháp liệt kê
11


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B1: Nhập N; a1, a2, … an
B2: S := 0; i := 1
B3: Nếu i > N thì dãy có tổng là S
B4: Nếu ai  2 thì S := S + ai
B5: i := i + 1
B6: Quay về B3
- Phương pháp sơ đồ khối
Nhập N; a1, a2, … an

S := 0; i := 1

Đ

i>N

Tổng dãy là S


S
Đ

ai 2

S := S + i

S
i := i + 1

* Mô phỏng thuật toán
- Với N = 0 thì tổng của dãy là 0
- Với N = 5 và dãy số 6, 5, 7, 8, 9
+ B1: Nhập 5; 6, 5, 7, 8, 9
+ B2: S := 0; i := 1
+ B3: 1 > 5 (sai)
+ B4: 6  2 nên S := S + 6
+ B5: i := 2, quay lại B3
....
Vậy Tổng dãy là 14
Ví dụ 7: Cho ba số a, b, c. Trình bày thuật toán tìm Max (a, b, c).
12


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Lời giải
* Cách xác định bài toán
- Input: a, b, c
- Output: Max (a, b, c)

* Thuật toán
- Phương pháp liệt kê
B1: Nhập a, b, c
B2: Gán Max := a
B3: Nếu Max < b thì Max := b
B4: Nếu Max < c thì Max := c
B5. Đưa ra GTLN là Max
- Phương pháp sơ đồ khối

* Mô phỏng
- Với a = 7, b = 1, c = 5
B1 : Nhập 7, 1, 5
B2 : Gán Max := 7
B3: Max < 1 (sai)
13


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B4: Max < 5 (sai)
B5: Vậy GTLN là 7
- Với a = 2, b = 8, c = 1
B1 : Nhập 2, 8, 1
B2 : Gán Max := 2
B3: Max < 8 (đúng) nên Max := 8
B4: Max < 1 (sai)
B5: Vậy GTLN là 8
Ví dụ 8: Cho N và dãy các số nguyên a1, a2, … an. Trình bày thuật toán tìm
Max của dãy.
Lời giải
* Cách xác định bài toán

- Input: N; a1, a2, … an
- Output: Max(a1, a2, … an)
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N và các số nguyên a1, a2, ..., aN
B2: Max := a1; i := 2;
B3: Nếu i > N thông báo giá trị Max rồi kết thúc.
B4: Nếu ai > Max thì Max = ai
B5: i := i + 1 rồi quay lại B3.
- Phương pháp sơ đồ khối

14


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Nhập N; a1, a2, ..., aN

Max := a1; i := 2

Đ

i>N

GTLN là Max

S
Đ

ai > Max


Max := ai

S
i := i + 1

* Mô phỏng
- Với N = 1; dãy có 1 phần tử 5
B1: Nhập 1; 5
B2: Max := 5 ; i :=2
B3: 2 > 1 (đúng)  Vậy GTLN là 5
- Với N = 6 và dãy số 5, 1, 4, 7, 8, 2
Dãy số

5

i
Max

5

1

4

7

8

2


2

3

4

5

6

5

5

7

8

8

B1: Nhập 6 ; 5, 1, 4, 7, 8, 2
B2: Max := 5 ; i := 2
B3: 2 > 6 (sai)
B4: 1 > 5 (sai)
B5: i := 3, quay về B3
……
 Vậy GTLN là 8
15

7



SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Ví dụ 9: Cho số N nguyên dương. Trình bày thuật toán kiểm tra tính nguyên
tố của N.
Lời giải
* Cách xác định bài toán
- Input: N là 1 số nguyên dương
- Output: N là số nguyên tố hay không
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N.
B2: Nếu N = 1 thì thông báo N không là số nguyên tố.
B3: Nếu N < 4 thì thông báo N là số nguyên tố
B4: Gán i := 2; d := [ N ] (i = 2 d)
B5: Nếu i >= d thì thông báo N là số nguyên tố
B6: Nếu N chia hết cho i thì N không là số nguyên tố
B7: i := i + 1  quay trở lại B5
- Phương pháp sơ đồ khối

* Mô phỏng
16


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
- Với N = 1 thì 1 không là số nguyên tố
- Với N = 2 thì 2 là số nguyên tố
- Với N = 3 thì 3 là số nguyên tố
- Với N = 17
B1: Nhập 17

B2: 17 = 1 (sai)
B3: 17 < 4 (sai)
B4: i := 2; d := [ 17 ] = 4
i

2

3

4

N/i

17/2

17/3

17/4

không

không

không

Chia hết
không?

5


 17 là số nguyên tố
Ví dụ 10: Cho số nguyên dương N. Trình bày thuật toán tính tổng các chữ số
của N.
Lời giải
* Cách xác định bài toán
- Input: N
- Output: Tổng các chữ số
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N
B2: S := 0
B3: Nếu N = 0 thì đưa ra tổng S
B4: S := S + N mod 10
B5: N := N div 10
B5: Quay về B3
- Phương pháp sơ đồ khối
17


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Nhập N

S := 0

N=0

Đ

Đưa ra tổng các chữ số là S


S
S := S + N mod 10

N := N div 10

* Mô phỏng
- Với N = 0  Đưa ra tổng S = 0
- Với N = 3265
B1: Nhập 3265
B2: S := 0
B3: 3265 = 0 (Sai)
B4: S := 0 + 3265 mod 10 = 0 + 5
B5: N := N div 10 = 326
.....
 Đưa ra tổng chữ số là 16
Ví dụ 11: Cho hai số nguyên M và N. Trình bày thuật toán tìm ước chung
lớn nhất của hai số.
Lời giải
* Cách xác định bài toán
- Input: M, N
- Output: UCLN (M,N)
* Thuật toán
- Phương pháp liệt kê
B1: Nhập M, N
18


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B2: Nếu N = M thì UCLN là M
B3: Nếu M > N thì M := M – N rồi quay lại B2

B4: N := N – M rồi quay lại B2
- Phương pháp sơ đồ khối
Nhập N, M
Đ
M=N

S

Đ
M := M -N

UCLN là M

M>N
S
N := N - M

* Mô phỏng thuật toán
- Với N = 8; M =8
B1: Nhập 8, 8
B2: 8=8 (đúng)  UCLN là 8
- Với N = 6, M = 9
B1: Nhập 6, 9
B2: 6 = 9 (sai)
B3: 6 > 9 (sai)
B4: N := 9 – 6 = 3, quay về B2
……….
 UCLN là 3
Ví dụ 12: Cho số nguyên N. Trình bày thuật toán tính tổng các ước của N.
Lời giải

* Cách xác định bài toán
19


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
- Input: N
- Output: Tổng các ước của N
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N
B2: S := 0; i := 1; d := [N : 2]
B3: Nếu i > d thì đưa ra tổng S
B4: Nếu N  i = 0 thì S := S + i
B5: i := i + 1, quay về B3
- Phương pháp sơ đồ khối
Nhập N

S := 0; i := 1; d := [N : 2]

Đ

i>d

Đưa ra tổng S

S
Đ

N i
S

i := i + 1

* Mô phỏng
- Với N = 1
B1: Nhập 1
B2: S := 0; i := 1; d := [1 : 2] = 1
B3: 1 > 1 (sai)
B4: 1  1 (đúng) nên S := 0 + 1
20

S := S + i


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
 Vậy tổng là 1
- Với N = 20
B1: Nhập 20
B2: S := 0; i := 1; d := [20 : 2] = 10
B3: 10 > 1 (sai)
B4: 10  1 (đúng) nên S := 0 + 1
……
 Vậy tổng là 22
Ví dụ 13: Cho N nguyên. Trình bày thuật toán tính giai thừa của N
Lời giải
* Cách xác định bài toán
- Input: N
- Output: N!
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N

B2: S := 1; i := 2
B3: Nếu i > N thì đưa ra giai thừa của N là S
B4: S := S * i
B5: i := i + 1, quay về B3
- Phương pháp liệt kê

Nhập N

S := 1; i := 2

i>N

Đ

Giai thừa của N là S

S
S := S * i

21

i := i + 1


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng
- Với N = 1
B1: Nhập 1
B2: S := 1; i := 2
B3: 2 > 1 (đúng)  Giai thừa của 1 là 1

- Với N = 5
B1: Nhập 5
B2: S := 1; i := 2
B3: 2 > 5 (sai)
B4 : S := 1 * 2
B5: i := 2+1
….
 Giai thừa của 5 là 120
Ví dụ 14: Cho N và dãy các số nguyên a1, a2, … an. Trình bày thuật toán tìm
sắp xếp các phần tử của dãy theo thứ tự tăng dần.
* Cách xác định bài toán
- Input: Dãy số nguyên a1, a2, ..., aN
- Output: Dãy số đã được sắp xếp.
* Thuật toán
- Phương pháp sơ liệt kê
B1: Nhập N và dãy a1, a2, ..., aN
B2: Gán giá trị M := N
B3: Nếu M <2 thông báo dãy đã được sắp xếp và kết thúc.
B4: Gán M := M - 1; i := 0;
B5: Gán i := i + 1
B6: Nếu i > M quay lại B3
B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau
B8: quay lại bước 5.
- Phương pháp sơ đồ khối
22


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Nhập N; a1, a2, ..., aN


M := N

M<2

Đ

Dãy đã SX

S
M := M - 1; i := 0
i := i + 1
Đ

i>M
S
ai > ai+1

Đ

Tráo đổi ai với ai+1

S

* Mô phỏng thuật toán
- Với N = 1; dãy có 1 phần tử 6
B1: Nhập 1; 6
B2: M := 1
B3: 1 < 2 (đúng)  Dãy đã sắp xếp
- Với N = 10; dãy có các phần tử 6, 2, 5, 3, 7, 8, 10, 7, 12, 4
B1: Nhập 10; 6, 2, 5, 3, 7, 8, 10, 7, 12, 4

B2: M := 10
B3: 10 < 2 (sai)
B4: M := 10 – 1; i := 0
B5: i := 1
B6: 1 > 9 (sai). Ta thực hiện so sánh các số với nhau và thực hiện đổi chỗ
23


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10

Thực hiện tương tự cho các lần duyệt tiếp theo cho đến khi không còn sự
đổi chỗ nào nữa.

Ví dụ 15: Cho N và dãy các số nguyên a1, a2, …, an và số nguyên K. Trình bày
thuật toán cho biết vị trí xuất hiện của K trong dãy.
* Cách xác định bài toán
- Input: N; Dãy số nguyên a1, a2, ..., aN; K
- Output: Vị trí xuất hiện của K hoặc K không có trong dãy
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N và dãy a1, a2, ..., aN; K
B2: Gán i := 1
24


SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B3: Nếu ai = K thì thông báo vị trí xuất hiện K là i
B4: i := i + 1
B5: Nếu i > N thì thông báo trong dãy không có K
B6: Quay về B3

- Phương pháp sơ đồ khối
Nhập N; a1, a2, .. an; K

i := 1
Đ
ai = k

K xuất hiện
tại i

S
i := i+1
S

Đ
i>N

* Mô phỏng thuật toán
- Với N = 5; dãy các phần tử là 6, 7, 2, 5, 8; K =5
B1: Nhập 5; 6, 7, 2, 5, 8; 5
B2: i := 1
B3: 6 = 5 (sai)
B4: i := 2
B5: 2 > 5 (sai)
B6: Quay về B3
…………
 Vị trí xuất hiện của K là 4

25


Không có K
trong dãy


×