1. Trang chủ
  2. » Thể loại khác

sáng kiến kinh nghiệm tin học 10

17 247 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 120 KB
File đính kèm sang kien kinh nghiem tin hoc 10.rar (24 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đối với giáo viên bộ môn Tin học, khi nhận dạy lớp 10, sẽ cảm thấy rất nhiều băn khoăn vì đối với việc giảng dạy bài 4: “ Bài toán và Thuật toán” sẽ rất khó hiểu đối với học sinh. Vì với học kỳ II chủ yếu các em làm quen với Tin học ứng dụng, còn ở bài này thì học sinh lại làm quen với việc viết thuật toán để giải bài toán trên máy tính. Nên đòi hỏi các em phải có kiến thức về Toán học và kiến thức về Tin học. Do đó khi nhận dạy lớp 10, giáo viên phải tìm hiểu nhiều phương pháp dạy làm sao cho học sinh có thể hiểu được một vấn đề mới mà mình đưa ra. Khi dạy chương này hầu như giáo viên nào cũng cảm thấy rất khó khăn làm sao cho các em hiểu được bài toán. Qua nhiều năm dạy Tin học ở lớp 10, tôi rút ra một vài kinh nghiệm nhỏ trong khi dạy bài 4 – chương I : “ Bài toán và thuật toán”. Đó là sử dụng một số ví dụ cụ thể giúp cho học sinh hiểu rõ hơn về các khái niệm.

Trang 1

A ĐẶT VẤN ĐỀ

1 Lý do chọn đề tài:

Đối với giáo viên bộ môn Tin học, khi nhận dạy lớp 10, sẽ cảm thấy rất nhiều băn khoăn vì đối với việc giảng dạy bài 4: “ Bài toán và Thuật toán” sẽ rất khó hiểu đối với học sinh Vì với học kỳ II chủ yếu các em làm quen với Tin học ứng dụng, còn ở bài này thì học sinh lại làm quen với việc viết thuật toán để giải bài toán trên máy tính Nên đòi hỏi các em phải có kiến thức về Toán học và kiến thức về Tin học

Do đó khi nhận dạy lớp 10, giáo viên phải tìm hiểu nhiều phương pháp dạy làm sao cho học sinh có thể hiểu được một vấn đề mới mà mình đưa ra Khi dạy chương này hầu như giáo viên nào cũng cảm thấy rất khó khăn làm sao cho các em hiểu được bài toán Qua nhiều năm dạy Tin học ở lớp 10, tôi rút ra một vài kinh nghiệm nhỏ trong khi dạy bài 4 – chương I : “ Bài toán và thuật toán” Đó là sử dụng một số ví dụ cụ thể giúp cho học sinh hiểu rõ hơn

về các khái niệm

2 Mục đích yêu cầu:

* Hiểu đúng khái niệm bài toán trong tin học Hiểu rõ khái niệm thuật toán là cách giải bài toán mà về nguyên tắc có thể giao cho máy tính thực hiện Hiểu và thực hiện được một số thuật toán đơn giản trong sách giáo khoa như tìm giá trị lớn nhất của một dãy số,

* Về kỹ năng: Hình thành một số kỹ năng chuẩn bị tiếp thu việc học ngôn ngữ lập trình: cách dùng biến, khởi tạo giá trị biến Các kiến thức trên góp phần phát triển khả năng tư duy khi giải quyết các vấn đề trong khoa học cũng như trong cuộc sống

3 Phạm vi nghiên cứu, phương pháp nghiên cứu:

- Phạm vi nghiên cứu của đề tài này, chỉ đề cập đến một phần nhỏ đó là:

Sử dụng các ví dụ cụ thể để học sinh biết cách viết một thuật toán của một bài toán đơn giản

Trang 2

Để thực hiện được mục tiêu trên học sinh cần nắm vững các kiến thức sau:

Về kiến thức: Cần biết cách xác định một bài toán Biết một trong hai

cách trình bày thuật toán

- Về kỹ năng: Hình thành một số kỹ năng chuẩn bị tiếp thu việc học

ngôn ngữ lập trình: cách dùng biến, khởi tạo giá trị biến

4 Đối tượng, phạm vi và kế hoạch nghiên cứu:

Đối tượng là học sinh khối 10 trường THPT Hoàng Hoa Thám, thực

hiện kế hoạch nghiên cứu trong phạm vi bài 4, chương I : - Bài toán và thuật toán.

Trang 3

B NỘI DUNG BÀI 4: BÀI TOÁN VÀ THUẬT TOÁN

Ở các lớp dưới, thông qua môn Toán học các em cũng đã biết sơ qua về khái niệm bài toán

Nên trước hết tôi chia lớp ra thành 8 nhóm nhỏ, mỗi nhóm “ Hãy ra một bài toán nào đó?”

Qua những bài toán mà các em ra , từ đó giáo viên đưa đến kết luận: Trong phạm vi Tin học, ta có thể quan niệm bài toán là một việc gì đó

mà ta muốn máy tính thực hiện Nhưng khi nói đến khái niệm bài toán trong tin học, ta cần quan tâm đến hai yếu tố: đưa vào máy thông tin gì (Input) và cần lấy ra thông tin gì ( Output) Do đó để phát biểu một bài toán, ta cần phải trình bày rõ Input và Output của bài toán đó và mối quan hệ giữa Input và Output

Nên khi cho ví dụ về một bài toán nào đó, giáo viên cần gọi học sinh xác định rõ được Input và Output của bài toán đó Vậy Input, Output là gì? Ta có thể hiểu nôm na giống như trong Toán học là Input là giả thiết của bài toán và Output là kết luận của bài toán, chính là điều mà ta cần tìm ra từ những giả thiết của bài toán đã cho

Chẳng hạn với bài toán:

VD1: Tìm ước chung lớn nhất của hai số nguyên dương

Input : hai số nguyên dương M, và N

Output : UCLN của M,N

VD2: Tìm nghiệm của phương trình bậc 2 : ax2+bx+c=0 ( a#0)

Chắc chắn học sinh sẽ xác định được ngay

Input : Các số thực a,b,c ( a#0)

Output : Tất cả các số thực x thoả mãn ax2+bx+c =0 nghĩa là nghiệm của phương trình bậc 2

Trang 4

Qua một vài ví dụ khác nữa từ đó giáo viên có thể đưa ra kết luận: Bài toán được cấu tạo bởi hai thành phần cơ bản Input ( các thông tin đã có) và Output ( Các thông tin cần tìm từ Input)

Từ khái niệm bài toán như trên, ta chuyển sang khái niệm về thuật toán Vậy thuật toán là gì? Việc chỉ ra tường minh một cách tìm ra Output của bài toán được gọi là một Thuật toán( Algorithm) giải bài toán đó Có thể định nghĩa thuật toán như sau:

Thuật toán để 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 ấy,

từ Input của bài toán, ta nhận được Output cần tìm.

Để làm rõ hơn về khái niệm thuật toán , và giúp học sinh biết thiết kế một thuật toán đơn giản Ta đi vào xét một số ví dụ sau:

Ví dụ 1: Tìm giá trị lớn nhất của một dãy số nguyên :

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

Input: Số nguyên dương N và dãy số nguyên a1 an

Output: Giá trị lớn nhất Max của dãy số

Sau khi xác định bài toán xong nếu ta đi ngay vào ý tưởng của thuật toán này chắc là học sinh sẽ bỡ ngỡ và không hiểu Nhưng nếu giáo viên đặt ra một bài toán thực tế như sau, chắc là học sinh sẽ làm được ngay

Trên bàn giáo viên có một cái hộp kín không thể thấy bên trong có chứa

n quả táo to nhỏ khác nhau Giáo viên gọi 1 học sinh lên yêu cầu tìm quả lớn nhất Biết rằng trong mỗi quả táo đều ghi khối lượng của nó và mỗi lần chỉ có thể lấy được một quả ra để so sánh

Tôi phân lớp ra làm 8 nhóm , yêu cầu các em suy nghĩ cách nào để tìm được quả táo lớn nhất Viết câu trả lời vào giấy

Sau đó yêu cầu một nhóm lên trình bày cách làm của mình

Sau đó giáo viên nêu ra cách của mình là học sinh sẽ lần lượt lấy từng quả ra để so sánh Lấy quả thứ nhất ra, sau đó lấy tiếp quả thứ 2, So sánh nếu quả nào lớn hơn thì giữ quả ấy lại, còn quả nhỏ hơn để sang một bên Cứ tiếp

Trang 5

tục như vậy cho đến khi không còn quả nào trong hộp thì ta kết luận quả đang cầm trên tay là lớn nhất Từ đó ta đi đến ý tưởng của bài toán tìm giá trị lớn nhất như sau:

Ý tưởng : - Khởi tạo giá trị Max=a1

- Lần lượt với I từ 2 đến n, so sánh giá trị số hạng a1 với giá trị Max, nếu

ai >Max thì Max nhận giá trị mới là ai

Từ ý tưởng đó ta đi đến Thuật toán để giải bài toán này như sau:

* Thuật toán:

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

B2: Max  a1 ; i2

B3: Nếu I > N thì đưa ra giá trị Max rồi kết thúc

B4:

B4.1: Nếu ai > Max thì Max  ai

B4.2: i i+1 rồi quay lại B3

Trên đây là cách trình bày thuật toán bằng cách liệt kê từng bước Ngoài cách trên người ta còn có thể diễn tả thuật toán bằng sơ đồ khối như sau: Trong sơ đồ khối người ta dùng một số khối, đường có mũi tên giúp cho việc trình bày thuật toán trực quan hơn

* Hình thoi D thể hiện thao tác so sánh

* Hình chữ nhật thể hiện các phép tính toán

* Hình ôvan thể hiện thao tác nhập xuất dữ liệu

* Các mũi tên  quy định trình tự thực hiện các thao tác

Như vậy thuật toán trên có thể trình bày như sau:

Trang 6

Sau đó giáo viên mô phỏng việc thực hiện thuật toán với N =11 và dãy

số : 5,1,4, 7,6,3,15,8,4,9,12

Dãy số 5 1 4 7 6 3 15 8 4 9 12

i 2 3 4 5 6 7 8 9 10 11 12 Max 5 5 5 7 7 7 15 15 15 15 15

* Sau đó giáo viên cho tiếp một ví dụ khác để học sinh có thể viết được thuật toán đơn giản

Vd 2 : Viết thuật toán tìm nghiệm của phương trình bậc 2 ax 2 + bx + c =

0 (a#0)

- GV gọi 1 học sinh lên trình bày các bước để giải phương trình bậc 2 B1: Tính = b2 – 4ac

B2: Nếu >0 thì phương trình có 2 nghiệm phân biệt

X1 = (-b+)/2a

X2 = (-b-)/2a ; Chuyển sang B5

B3: Nếu =0 thì phương trình có nghiệm kép: X1 = -b/2a chuyển sang B5

Nhập N và dãy

a 1 a N

Maxa 1 , i2

i > N?

a i >

Max?

Maxa i

ii+1

Đưa ra Max rồi kết thúc

Đ S

Đ S

Trang 7

B4: Nếu <0 thì phương trình vô nghiệm Chuyển sang B5

B5: Dừng

Qua định nghĩa, ta thấy thuật toán có các tính chất sau:

* 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 số thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng một thao tác xác định để thực hiện bước 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.

Sau đó giáo viên làm rõ hơn các tính chất của thuật toán thông qua thuật toán tìm Max đã xét:

- Tính dừng : Vì giá trị của I mỗi lần tăng lên 1 nên sau N lần thì I > N, khi đó kết quả phép so sánh ở bước 3 xác định việc đưa ra giá trị Max rồi kết thúc

- Tính xác định : Thứ tự thực hiện các bước của thuật toán được mặc định là tuần tự nên sau bước 1 là bước 2 , sau bước 2 là bước 3 Kết quả các phép so sánh trong bước 3 và bước 4 đều xác định duy nhất bước tiếp theo cần thực hiện

- Tính đúng đắn: vì thuật toán so sánh Max với từng số hạng của dãy số

và thực hiện Max <- ai nếu ai > Max nên sau khi so sánh hết N số hạng của dãy thì Max là giá trị lớn nhất

Tiếp theo tôi phân lớp thành 8 nhóm Hội ý và trả lời cho tôi câu hỏi sau bằng cách viết ra giấy trong 3 phút

Bài toán : Cho dãy thao tác sau :

B1 : Xoá bảng

B2: Vẽ hình tròn

B3: Quay lại B1

Có phải là thuật toán không? Tại sao?

Trang 8

Sau khi Học sinh viết câu trả lời xong , tôi đưa ra giải thích rằng dãy thao tác đó không phải là thuật toán Vì tuy là một dãy hữu hạn bước nhưng dãy thao tác đó không có tính dừng

Để giúp học sinh có thể hiểu rõ và nắm vững hơn về thuật toán, và giúp học sinh có thể tự mình viết được một thuật toán đơn giản ta đi vào tìm hiểu một số ví dụ về thuật toán ở phần sau

MỘT SỐ VÍ DỤ VỀ THUẬT TOÁN

Ví dụ 1: Nhập vào hai số nguyên a,b Sau đó viết thuật toán hoán vị 2 giá trị ấy, sử dụng biến trung gian c.

Trước hết giáo viên đưa ra một bài toán nhỏ như sau: Có ba ly nước, một ly A đựng nước cam và một ly B đựng nước cam, một ly để không Làm sao để ly A đựng nước chanh, và ly B đựng nước cam.

Sau khi học sinh trả lời xong câu hỏi đó Giáo viên yêu cầu học sinh xác định bài toán

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

- Input : Cho A,B

- Output: Hoán vị 2 giá trị A,B

* Ý tưởng:

- Gán giá trị của A cho C

- Gán giá trị của B cho A

- Gán giá trị của C cho B

* Thuật toán:

Qua ý tưởng của thuật toán Giáo viên có thể yêu cầu một học sinh lên trình bày giải thuật Cụ thể

* Cách liệt kê từng bước:

B1: Nhập A,B

B2: C  A

Trang 9

B3: A  B

B4: B C

B5: Thông báo giá trị mới của A và B

* Sau đó Giáo viên gọi 1 học sinh lên trình bày lại giải thuật bằng sơ đồ khối:

Sau đó giáo viên cho ví dụ để mô phỏng về việc thực hiện thuật toán trên

để học sinh có thể hiểu cụ thể hơn về cách thức thực hiện thuật toán ấy

Ví dụ 2: Bài toán sắp xếp:

Trong cuộc sống, ta thường gặp những việc liên quan đến sắp xếp như sắp xếp phòng thi cho học sinh theo thứ tự A-Z hoặc học sinh xếp hàng vào lớp theo thứ tự từ thấp đến cao Tổng quát hơn nghĩa là cho một dãy đối

Nhập A,B

C A

A  B

Đưa ra giá trị mới của A, B

rồi kết thúc

B  C

A=25

C=25

B=10

Kết quả

Trang 10

tượng cần sắp xếp lại vị trí các đối tượng theo một tiêu chí nào đó Cụ thể hơn

ta đi vào bài toán sau:

Cho dãy A gồm N số nguyên a1,a2,… an Cần sắp xếp các số hạng để dãy A trở thành dãy không giảm( tức là số hạng trước không lớn hơn số hạng sau)

Có rất nhiều thuật toán sắp xếp, nhưng để đơn giản ta xét thuật toán sắp xếp bằng tráo đổi ( Exchange Sort)

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

- Input: Dãy A gồm N số nguyên a1, a2, …an

- Output: Dãy A được sắp lại thành dãy không giảm

* Ý 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 chỗ chúng cho nhau Việc đó được lặp đi lặp lại cho đến khi không có sự đổi chỗ nào xảy ra nữa

* Thuật toán :

a Cách liệt kê:

B1: Nhập N, các số hạng a1,a2 , a3… , an

B2: M  N;

B3: Nếu M<2 thì đưa ra dãy A đã được sắp xếp rồi kết thúc

B4: Gán M = M-1; I = 0

B5: Tăng I lên 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

B8: Quay lại B5

Tôi giảng cho Học sinh hiểu rằng, sau mỗi lần đổi chỗ, giá trị lớn nhất của dãy A được chuyển dần về cuối dãy và sau lượt thứ nhất thì giá trị lớn nhất xếp đúng vị trí là cuối dãy Tương tự sau lượt thứ hai, giá trị lớn thứ 2 được xếp đúng ở vị trí sát cuối Có thể hình dung, sau mỗi lượt có ít nhất một số hạng đã xếp đúng vị trí và không còn tham gia vào quá trình đổi chỗ nữa, giống như các bọt nước từ đáy hồ ( đầu dãy ) nổi dần và khi đã lên mặt

Trang 11

nước ( cuối dãy) rồi thì tan biến Cho nên thuật toán này còn có tên là thuật toán nổi bọt ( Bubble Sort)

Sau đó tôi gọi 1 học sinh lên trình bày lại thuật toán bằng sơ đồ khối

Sau đó tôi dùng các ví dụ để mô phỏng việc thực hiện thuật toán cho Học sinh xem và gọi học sinh lên làm

Với dãy A = { 6 1 5 3 7 8 10 7 12 4 }

Nhập N và a 1 ,

a 2 , a n

M  N

M<2?

M  M -1 ; i0

i  I +1

i>M?

a i >a i+1 ? Tráo đổi a i và

a i+1

Đưa ra A rồi kết thúc

Đúng Đúng

Đúng

Sai

Sai

Trang 12

Tương tự như vậy sang lần duyệt thứ 2 ta sẽ được dãy:

Cứ tiếp tục như vậy cho đến lần duyệt thứ 10 ta sẽ được dãy đã sắp xếp

Sau đó tôi cho tiếp 1 ví dụ khác yêu cầu học sinh thực hiện để được 1 dãy đã sắp xếp

* Ví dụ 3 : Bài toán Tìm kiếm:

Trong thực tế gặp rất nhiều trường hợp tìm kiếm , chẳng hạn tìm một học sinh nào đó trong lớp , hoặc tìm số báo danh của mình trong 1 phòng thi Bài toán đặt ra là làm thế nào để tìm kiếm một đối tượng nào đó là nhanh nhất Trong Tin học người ta cũng đặt ra một bài toán như vậy:

Cho dãy A gồm N số nguyên khác nhau : a1, a2, an và 1 số nguyên k Cần biết có hay không chỉ số I (1 < I < n)mà ai = k Nếu có hãy cho biết chỉ

số đó Số nguyên k được gọi là khoá tìm kiếm

Nói chung có rất nhiều cách tìm kiếm khác nhau nhưng ở đây tôi xin giới thiệu hai thuật toán mà chúng ta hay dùng

* Thuật toán tìm kiếm tuần tự: (Senquential Search )

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

Input: Dãy A gồm N số nguyên khác nhau a1 , a2 , … an

Output: Chỉ số I mà ai = k hoặc thông báo không có số nguyên nào của dãy A có giá trị bằng k

Trước hết Giáo viên đặt ra câu hỏi tình huống: “Muốn tìm tên một học sinh chẳng hạn Nguyễn Bình Nguyên có trong danh sách lớp 10A1 không? Nếu có đứng ở vị trí nào trong danh sách?”

Lúc đó học sinh sẽ trả lời câu hỏi Sau đó Giáo viên đưa ra ý tưởng giải thuật:

- Ý tưởng : Tìm kiếm tuần tự được thực hiện một cách tự nhiên Lần lượt

từ số hạng thứ nhất , ta so sánh giá trị số hạng đang xét với khoá cho đến khi

Trang 13

hoặc gặp một số hạng bằng khoá hoặc dãy đã được xét hết và không còn số

nào bằng khoá

* THUẬT TOÁN

a) Liệt kê từng bước:

B1: Nhập N và dãy các số hạng a1, a2, … an và khóa k

B2: i <- 1

B3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc

B4: i <- i+1;

B5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng

k, rồi kết thúc

B6: Quay lại B3

Sau đó giáo viên gọi học sinh lên trình bày lại giải thuật bằng sơ đồ khối

Giáo viên mô phỏng lại việc thực hiện thuật toán với dãy sau :

A= { 5 7 1 4 2 9 8 11 25 51} và

Với I = 5 thì a5 = 2 Với mọi I từ 1 đến 10 không có

Sau đó tôi chốt lại rằng muốn tìm được thuật toán của một bài toán nào

đó trước hết các em phải xác định được xem bài toán cho ta biết đại lượng nào và cần đi tìm đại lượng nào Một bài toán có thể có nhiều cách giải khác nhau nên các em có thể đưa ra nhiều thuật toán cho một bài toán Và chúng ta

có thể sử dụng một trong hai cách Sơ đồ khối hoặc Liệt kê từng bước để trình bày thuật toán

Nói chung sau khi đưa ra các ví dụ để học sinh làm việc với thuật toán từ đơn giản đến khó , tôi thấy học sinh đã nắm vững được khái niệm thuật toán

là gì , tạo tiền đề để các em học tiếp ở bài sau là Các bước giải bài toán trên

Trang 14

máy tính Đồng thời để các em tiếp cận dần với cách viết một thuật toán để

lên lớp 11 các em có thể tự mình viết được một chương trình hoàn chỉnh bằng ngôn ngữ lập trình Pascal

Ngày đăng: 14/08/2018, 21:32

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w