Một số kinh nghiệm về phương pháp giải các bài toán trong tin học ở phổ thông - Pdf 27

PHẦN I: MỞ ĐẦU
1. Bối cảnh của đề tài :
Tin học là một môn khoa học mới, muốn học giỏi tin học đòi hỏi phải học
giỏi các bộ môn khoa học khác như: toán, lý, hoá, anh văn Tin học sử dụng kiến
thức của các bộ môn khoa học đó làm công cụ để nghiên cứu. Muốn giải quyết
được các bài tập tin học không chỉ có những kiến thức đó mà còn phải có kiến thức
về tin học. Đặc biệt đối với các bài tập khó cần phải có một phương pháp tổng quát
để giải.
Phương pháp tổng quát để giải bài toán tin học là một hệ thống các bước có
tính ổn định nhằm giúp người học có thể tìm ra thuật giải, biễu diễn được dữ liệu
và từ đó viết được chương trình.
2. Lý do chọn đề tài :
Qua thực tế công việc giảng dạy tin học ở trường THPT Lý Thường Kiệt, tôi
thấy học sinh học tin học còn yếu, chưa biết cách học viết chương trình, thậm chí
có em còn tìm cách học thuộc lòng các chương trình mẫu của giáo viên. Nguyên
nhân chính dẫn đến điều đó là do các em đều chưa ý thức được thứ tự các bước để
hình thành nên chương trình.
1 | P a g e
Từ những thực tế trên, kết hợp với quá trình giảng dạy và nghiên cứu một
số sách tham khảo, bản thân tôi xin trình bày một số kinh nghiệm về phương pháp
giải các bài toán trong tin học ở phổ thông.
3. Phạm vi và đối tượng nghiên cứu :
Học sinh lớp 10 bắt đầu làm quen với giải thuật, thuật toán, và học cách tìm
ra phương pháp giải bài toán trên máy tính.
4. Mục đích nghiên cứu :
Giúp cho học sinh hiểu và xác định được thứ tự để giải bài toán trên máy
tính và thực hiện qua những bước sau :
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 CT

A: gọi là INPUT (thông tin vào)
B: gọi là OUTPUT (thông tin ra)
: gọi là chương trình được tạo từ các câu lệnh cơ bản của máy cho
phép biến A thành B.
4/Các khó khăn thường gặp
Để xác định một bài toán trên máy tính ta thường gặp hai khó khăn:
+Thông tin về A, B không đầy đủ rõ ràng.
+Thông báo về các điều kiện đặt ra cho cách giải thường không được nêu ra một
cách minh bạch.
5/Ví dụ minh hoạ
a/Bài toán 1: tám quân hậu
Hãy tìm cách đặt 8 quân hậu trên một bàn cờ vua sao cho không có quân hậu
nào có thể ăn quân hậu khác.
Xác định thông tin vào:
4 | P a g e
-Bàn cờ vua là bảng hình vuông gồm 8 hàng 8 cột
-Quân hậu có thể ăn được bất kỳ quân nào nằm trên cùng một hàng, cùng một cột,
hay cùng một đường chéo.
-Có tất cả 8 quân hậu
Xác định thông tin ra:
-Các bảng hình vuông trên đó có đánh dấu vị trí của 8 quân hậu sao cho không có
quân hậu nào có thể ăn quân hậu khác. Nghĩa là trên mỗi hàng, mỗi cột, mỗi đường
chéo chỉ có thể có một quân hậu.
-Chỉ ra tất cả các bảng vuông khác nhau thoả mãn điều kiện của bài ra.
Xác định các thao tác
-Lần lượt xác định vị trí của một trong 8 quân hậu trên bàn cờ.
-Đặt đủ 8 quân.
-Tất cả các quân hậu đều phải thoả mãn đIũu kiện đã nêu
b/Bài toán 2: (Mã đi tuần)
Cho một bàn cờ kích thước n*n (n>3). Một quân mã di chuyển theo luật cờ

Xác định thông tin ra
Số tự nhiên d thoả mãn d là ước của a và d là ước của b và d là lớn nhất trong tập
ước chung đó.
Xác định các thao tác chế biến thông tin
-Xây dựng một tập hữu hạn các phép tính cho phép tính được d từ a và b
6/Một số nhận xét quan trọng
-Việc xác định bài toán rất quan trọng, ảnh hưởng đến cách thức và chất lượng của
việc giải quyết bài toán.
-Một bài toán cho dù được diễn đạt bằng thông báo chính xác đến đâu đi chăng
nữa cũng phải giả định là phần lớn thông tin về A, B đều tiềm ẩn trong đầu người
giải. Thông báo về A hoặc B chỉ là biểu tượng gợi nhớ đến các thông tin tiềm ẩn
đó.
-Bước đầu tiên để xác định một bài toán là phải phát biểu lại bài toán một cách
chính xác theo ngôn ngữ riêng mình vì đó là cách ta tiếp cận bài toán, hiểu bài
toán.
-Bước kế tiếp là tìm hiểu các thông tin input và output và mối liên hệ giữa chúng.
7 | P a g e
-Nên xét một vài trường hợp cụ thể, từ đó hiểu được bài toán. Qua đó thấy rõ được
các thao tác cần phải tiến hành.
II/TÌM CẤU TRÚC DỮ LIỆU BIỄU DIỄN BÀI TOÁN
1/Khái niệm ban đầu
Máy tính điện tử được phát minh như một thiết bị nhằm làm dễ dàng và
tiến hành nhanh các tính toán phức tạp và lớn. Trong nhiều ứng dụng, khả năng
lưu trữ và truy cập lượng thông tin lớn giữ vai trò quan trọng và được xem như là
đặc trưng chính của nó, và khả năng tính toán trở thành ít quan trọng trong nhiều
trường hợp. Trong thực tế, thông tin cần xữ lý là trừu tượng. Thông tin cung cấp
cho máy gồm một tập hợp dữ liệu về bối cảnh thực đã được mã hoá. Nói rõ hơn tập
hợp này được xem như thích đáng cho vấn đề định sẵn. Từ đó có thể đưa và máy
tính và tính ra kết quả cần tìm.
-Khi giải một bài toán ta cần phải định nghĩa tập hợp dữ liệu biểu diễn tình trạng

+ARRAY
+SET
+RECORD
+STRING
+FILE
Trong đó:
-BOOLEAN: Là kiểu logic, là tập hợp có hai giá trị là TRUE hoặc FALSE
-INTEGER: Kiểu số nguyên, là tập hpựo các giá rị nguyên từ -32768 đến 32767
-REAL: Kiểu số thực, là tập hợp các giá trị từ –2.9*10(39) đến 1.7*10(38)
-CHAR: Kiểu ký tự, là tập hợp các ký tự ‘a’-‘z’,’0’-‘9’ và các ký tự đặc biệt khác
-SUB RANGE: Kiểu miền con của một kiểu sơ cấp.
Ví dụ: TYPE Tuoi=0 120
-ENUMERATED: Kiểu liệt kê được định nghiã bằng cách liệt kê tất cả các phần tử
có thể có
Ví dụ: TYPE thu=(Chủ nhật, hai, ba, tư, năm, sáu, bảy)
10 | P a g e
-ARRAY: Kiểu mảng gồm một tập hợp các phần tử cùng thuộc một kiểu dữ liệu cơ
sở được xác định bởi chỉ số
Ví dụ: TYPE MMC=array[1 100] of integer;
-RECORD: Kiểu bản ghi, gồm một tập hợp các phần tử thuộc các kiểu dữ liệu
khác nhau.
Vídụ: TYPE Hocsinh=record
Hoten:string;
Lop:1 12;
Truong: string;
DTB: real;
END;
-SET: Kiểu tập hợp gồm một số các đối tượng có cùng kiểu cơ sở.
Ví dụ:
TYPE

tới thao tác cồng kềnh trong việc thử quyền sử dụng các quân hậu ở các vị trí. Điều
đó hết sức không hay vì thao tác trên lại phải thực hiện nhiều lần.
Do đó ta sẽ chọn cách biểu diễn sao cho thao tác trên dễ bao nhiêu hay bấy
nhiêu. Cách tốt nhất là biểu diễn các thông tin thực sự nổi bật và được sử dụng một
cách càng trực tiếp càng tốt. Trong trường hợp cả bài toán này thì đó không phải là
vị trí các quân hậu mà là phải chăng đã có một quân hậu trên mỗi hàng và các
đường chéo (Ta đã biết rằng đúng một quân hậu đã được đặt trên mỗi cột k với
1<=k<=I). Điều đó dẫn tới cách chọn các biến như sau:
Var
X:array[1 8] of integer;
A: array[1 8] of boolean;
B: array[b1 b2] of boolean;
C: array[c1 c2] of boolean;
Trong đó:
X[I] biểu diễn vị trí quân hậu trong cột thứ i.
a[j]=true có nghĩa là không có quân hậu nào nằm trên hàng j.
b[k]=true có nghĩa là không có quân hậu nào nằm trên đường chéo
c[k]=true có nghĩa là không có quân hậu nào nằm trên đường chéo
13 | P a g e
Các chỉ số của b và c đều tính được, do đó việc chọn các giới hạn chỉ số b1,
b2, c1, c2 cũng được quyết định theo. Ta lưu ý rằng trên một đường chéo thì
mọi ô đều có cùng tổng số các toạ độ i+j và trên một đường chéo thì hiệu số toạ độ
i-j là không đổi.
Với cách chọn cấu trúc dữ liệu biểu diễn bài toán như trên thì:
Câu lệnh đặt quân hậu sẽ như sau:
X[i]:=j;
A[j]:=false;
B[i+j]:=false;
C[i-j]:=false;
Câu lệnh cất quan hậu sẽ là

quyết đúng bài toán mà người lập trình mong muốn.
2/Kỷ năng lập trình: Là kỷ năng cài đặt thành công các thuật toán bằng một
ngôn ngữ lập trình. Kỷ năng này chỉ có thể có được thông qua rèn luyện tích cực.
Kinh nghiệm cho thấy, một thuật toán hay nhưng cài đặt vụng về khi chạy máy có
thể cho kết quả rất tồi tệ.
3/Phát triển chương trình bằng cách tinh chế từng bước: Tinh chế từng
bước là phương pháp khoa học có hệ thống giúp ta phân tích các thuật toán, cấu
trúc dữ liệu từ đó viết thành chương trình.
-Bước 1: Chương trình được viết bằng lời tự nhiên.
-ở các bước sau: Mỗi câu được phân tích chi tiết hơn.
-Ta nói ở mỗi bước ta đã tinh chế những ý đó. Sự tinh chế luôn hướng về ngôn ngữ
lập trình.
-Mỗi câu lời tự nhiên nếu đơn giản thì thay bằng một vài câu lệnh, nếu phức tạp thì
coi là một chương trình con.
-Trong quá trình tinh chế, ta phải đưa ra biễu diễn dữ liệu. Như vậy cùng với tinh
chế cộng việc, dữ liệu cũng được tinh chế
16 | P a g e
-Hiểu được tinh chế từng bước sẽ giúp người lập trình có được định hướng, tránh
được sự mò mẫm.
V/CHẠY THỬ, THAY ĐỔI KIỂM TRA CHƯƠNG TRÌNH .
1/Chạy thử: Một chương trình đã viết chưa chắc đã chạy được trên máy để
cho kết quả mong muốn vì vậy đòi hỏi phải chạy thử chương trình. Kỷ năng tìm
lỗi, sửa lỗi, điều chỉnh cũng là một kỷ năng của người lập trình.
2/Phân loại lỗi và cách sửa chữa: Có ba loại lỗi
-Lỗi về thuật toán
-Lỗi về trình tự
-Lỗi về cú pháp.
3/Xây dựng các bộ test
Hầu hết các chương trình rất khó kiểm tra tính đúng đắn. Để khắc phục ta
nên xây dựng nhiều bộ test để thử. Khi xây dựng bộ test cần lưu ý:

• Cả năm : còn 5 hs có điểm bình quân dưới 6
* Lớp 10C4 :
• Học kỳ I : có 16 hs có điểm bình quân dưới 7
• Học kỳ II : chỉ còn 5 hs có điểm bình quân dưới 7
• Cả năm : còn 2 hs có điểm bình quân dưới 5
Ngày Tháng Năm

Họ tên và chữ ký
19 | P a g e
Đào Minh Đạt
20 | P a g e


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status