Trong các bước giải bài toán trên máy tính bước nào không dụng

SKKN: KINH NGHIỆM GIÚP HỌC SINH CÁC BƯỚC GIẢI BÀI TOÁN TRÊN MÁY TÍNH TRONG CHƯƠNG TRÌNH TIN HỌC 8

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 [172.92 KB, 15 trang ]

1. ĐẶT VẤN ĐỀ
1.1. Lý do, thực trạng vấn đề:
Là một giáo viên tin học, một trong các mục tiêu khi dạy môn tin học trong nhà
trường là nhằm giúp học sinh không chỉ biết soạn thảo mà còn phải có khả năng phân
tích, tổng hợp, trừu tượng hoá, khái quát hoá vấn đề và đặc biệt là phát triển tư duy,
sáng tạo. Vì thế mà trong bài viết này tôi sẽ hướng cho học sinh lớp 8 cách để trở
thành một nhà lập trình thì cần phải nắm các bước cơ bản nào?
Trong quá trình dạy tôi nhận thấy ở các em học sinh. Mới đầu các em cũng rất
sợ khi thấy giải một bài toán ở ngoài thì đơn giản và chỉ trong vòng vài giây có thể
nhẩm ra kết quả. Còn ở trong lập trình cũng bài toán đó mà phải làm đến hàng chục
phút mà lại có thể cho kết quả sai. Nhưng bằng những tâm huyết của mình và cũng
như sự yêu thích của học sinh. Nhất là những năm gần đây nghành giáo dục có phát
động phong trào giải toán trên mạng [Violympic] cũng như thành lập đội tuyển tham
dự các kì thi “Học sinh giỏi bộ môn Tin học” và “Tin học trẻ” được tổ chức quy mô
hàng năm. Điều đó đã thúc đẩy tôi rất nhiều trong việc dạy học là làm sao giúp cho
các em có sự đam mê học tập bộ môn tin học và phát triển tài năng của học sinh.
1.2. Mục đích nghiên cứu:
Đưa ra các bước giải bài toán trên máy vi tính trong chương trình môn Tin học
lớp 8 phù hợp nhất với học sinh.
Tạo cho học sinh rất hứng thú học môn Tin học nhất là tiết thực hành và rèn
luyện cho học sinh tính tư duy, tính sáng tạo trong quá trình lập trình.
1.3. Đối tượng, phạm vi nghiên cứu
Học sinh khối 8 trường THCS Thạnh Phú 1, Huyện Cờ Đỏ, TP Cần Thơ.
1.4. Kết quả cần đạt được
Phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh; tạo thói
quen làm việc độc lập; bồi dưỡng cho học sinh phương pháp tự học, khả năng hợp
tác; rèn luyện kĩ năng lập trình và kỹ năng vận dụng kiến thức vào việc giải quyết các
bài toán thường gặp trong thực tiễn; tác động đến tình cảm, đem lại niềm vui, hứng
thú và trách nhiệm học tập cho học sinh.

3




2. NỘI DUNG, BIỆN PHÁP THỰC HIỆN
2.1. Cơ sở lý luận và thực tiễn
- Qua các năm giảng dạy chương trình tin học lớp 8, tôi nhận thấy rằng kĩ năng
giải bài toán trên máy tính của các em còn yếu.
- Khi giải bài toán trên máy học sinh chỉ quan tâm đến công thức để tính toán
ra kết quả bài toán mà quên các bước xác định thông tin vào, thông tin ra và xây dựng
thuật toán. Khi chạy chương trình thì học sinh chưa nhận biết được kết quả chương
trình đúng hay sai.
- Trước khi thực hiện đề tài, tôi đã khảo sát học sinh khối 8 thông qua giờ dạy
lý thuyết, dạy thực hành, kiểm tra bài cũ. Tổng hợp kết quả thu được:
Tỷ lệ học
sinh giỏi
10.5%

Tỷ lệ học
sinh khá
20.5%

Tỷ lệ học sinh
trung bình
47.5%

Tỷ lệ học
sinh yếu
18.5%

Tỷ lệ học
sinh kém


3%

2.2. Các biện pháp tiến hành
- Qua dự giờ và trao đổi kinh nghiệm với đồng nghiệp.
- Qua các tiết thực hành, tiết lý thuyết
- Tham khảo tài liệu trên sách, báo, internet,…
2.3. Một số biện pháp thực hiện
2.3.1. Mục tiêu
Tìm ra những phương pháp, các bước giải bài toán trên máy vi tính trong
chương trình môn Tin học 8 phù hợp nhất với học sinh.
Trên cơ sở nghiên cứu tính tích cực của học sinh trong giờ học môn Tin học 8,
đề xuất một số ý kiến nhằm nâng cao chất lượng dạy và học.
2.3.2. Mô tả giải pháp
Phương pháp cơ bản giải các bài toán trong tin học không chỉ dùng để giải một
bài toán cụ thể mà còn giải 1 lớp các bài toán cụ thể thuộc cùng một loại. Bài toán
được cấu tạo từ hai yếu tố cơ bản: Thông tin vào [Input] và thông tin ra [Output].
Phương pháp tổng quát để giải một bài toán bằng máy vi tính dựa trên ngôn ngữ
pascal thì cần các bước:
1. Xác định bài toán.
2. Xây dựng thuật toán.
3. Viết chương trình.
4. Chạy thử, sửa đổi chương trình.
4


2.3.2.1. Xác định bài toán:
* Khái niệm bài toán
Trong quá trình học người học sinh hay bất kỳ một cá nhân nào luôn phải liên tục
giải quyết các bài toán. Trong cuộc sống là 1 chuỗi các bài toán mà ta phải đối đầu
giải quyết không một chút đơn giản mà nhiều lúc phải bực mình. Song đối với học


sinh lớp 8 do chương trình học toán của các em chỉ mới đến giải phương trình bậc
nhất là cao nhất. Nên việc đưa các lớp bài toán vào giải cho các em đang còn một
phần nào bị hạn chế. Nhưng bất kỳ một bài toán nào thì chúng ta cũng đọc đề rồi xác
định nó : A → B.
Trong đó: - A là giả thiết : điều kiện ban đầu hoặc cái đã cho khi bắt đầu giải bài
toán.
- B là kết luận: mục tiêu cần đạt được hay cái phải tìm khi kết thúc bài
toán .
→ Là suy luận: giải pháp cần xác định hay chuỗi các thao tác thực hiện từ A
đến B.
* Bài toán trên máy vi tính:
Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quát trên,
nhưng nó lại được diễn đạt theo một cách khác.
- A: là đưa thông tin vào [Input ]
- B: là đưa thông tin ra [Output]
- → : là chương trình tạo từ các lệnh cơ bản của máy tính cho
phép biến đổi từ A đến B.
* Một số ví dụ:
Ví dụ 1: Tính diện tích hình chữ nhật.
Ta cần xác định cho bài toán:
+ Thông tin vào: Chiều dài là cạnh a, chiều rộng là cạnh b
+ Thông tin ra: Kết quả diện tích khi đưa a,b vào
+ Các thông tin cần chế biến thông tin như:
- Lần lượt đưa a,b vào [ cho a=3,b=4]
- Áp dụng công thức tính diện tích hình chữ nhật: a*b
- Kết quả in ra là 12.
Ví dụ 2: Cho 2 số tự nhiên a, b .Tìm ước số chung lớn nhất của chúng.
Các bước các định bài toán:
+ Xác định thông tin vào: hai số tự nhiên a, b
+ Xác định thông tin ra: số tự nhiên d thoả mãn:


5


d là ước của a và d là ước của b
d là số lớn nhất trong tập các ước chung của a, b
+ Xác định các thao tác chế biến thông tin
Xây dựng hữu hạn các thao tác cho phép tính được d từ a và b.
Nhập a =16 b= 24 -> d =8
Ví dụ 3: Tìm tất cả các số nguyên tố trong các số nguyên N được nhập vào từ bàn
phím:
+ Xác định thông tin vào: Nhập số nguyên N
+ Xác định thông tin ra: Các số nguyên tố [chia hết cho nó và số 1]
2.3.2.2. Tìm thuật toán:
Thuật toán là một quá trình gồm một dãy hữu hạn các thao tác đơn giản được
sắp xếp theo một trình tự xác định sao cho theo đó từ Input của bài toán sẽ tìm ra
được Output bài toán .
Một bài toán ta có 4 cách thể hiện thuật toán: Các bước xác định bằng lời, lập
sơ đồ khối, ngôn ngữ phỏng trình, dùng một ngôn ngữ lập trình [Pascal].
Ví dụ: Tìm ước số chung lớn nhất của 2 số nguyên dương a,b . Ta có thể giải
bằng các cách trên.
Cách 1: Các bước xác định bài toán bằng lời:
- Bước 1: Nhập 2 số nguyên dương là a,b
- Bước 2: So sánh giá trị a và b . Nếu a bằng b thì sang bước 3, ngược lại a khác b thì
sang bước 4
- Bước 3: Tìm được ước số chung là a và kết thúc chương trình
- Bước 4: Nếu a lớn hơn b thì ước số chung lớn nhất là a:=a-b và quay trở lại
bước 2. Ngược lại ước số chung là b:=b-a và quay trở lại bước 2
Cách 2: Giải bài toán bằng sơ đồ
- Có hình thoi  thể hiện các thao tác so sánh
- Hình chữ nhật thể hiện các phép tính toán, các câu lệnh


- Hình ôvan thể hiện bắt đầu và kết thúc
- Các mũi tên quy định trình tự các thao tác

6


Begin
a, b

a=b

đúng

sai
đúng
a:= a - b

a>b

UCLN là a

END

sai
b:= b - a

Cách 3: Dùng ngôn ngữ phỏng trình
Bắt đầu
Nhập a, b
While a khác b


IF a>b then thay a :=a -b
Else thay b:=b-a;
Kết thúc in ra USCLN [a,b] .
Cách 4: Viết chương trình hoàn chỉnh [dùng ngôn ngữ pascal]
PROGRAM USCLN;
USES CRT;
VAR
a,b, :integer;
BEGIN
CLRSCR;
WRITE['nhap 2 gia tri a,b='];READLN[a,b];
WHILE ab DO
IF a>b THEN a:=a –b
else b:=b-a;
WRITELN['uoc so chung lon nhat cua 2 so’,a:5];
READLN
END.

7


2.3.2.3. Viết chương trình:
Lập trình là dùng ngôn ngữ máy vi tính cụ thể nào [ngôn ngữ Pascal] để diễn tả
thuật toán, cấu trúc dữ liệu thành câu lệnh để máy tính có thể thực hiện được và giải
quyết đúng bài toán mà người lập trình mong muốn.
* Kỹ năng lập trình
- Rèn luyện được cho học sinh 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.
- Đã gọi là kỹ năng thì 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 do sắp đặt vụng về, lộn xộn thì khi chạy


trên máy tính có thể cho kết qủa tồi tệ.
* Phát triển chương trình bằng cách tinh chế từng bước
Một bài toán ta có thể đưa ra nhiều cách giải khác nhau, song là một giáo viên
thì chúng ta cần giúp học sinh viết chương trình làm sao người xem nhìn vào có thể
dễ hiểu được bài toán đó là gì ? Do đó việc tinh chỉnh các bước cho bài toán trong
máy tính 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 và
cấu trúc dữ liệu từ đó thành một chương trình . Muốn lập trình giỏi không phải chỉ
cần nắm ngôn ngữ lập trình là đủ. Mà vấn đề cốt yếu là biết phương pháp phát triển
dần dần để chuyển các ý tưởng ra thành chương trình hoàn chỉnh.
* Phương pháp tinh chế từng bước
Một chương trình bắt đầu được viết bằng lời tự nhiên [tiếng Việt] thể hiện sự
phân tích tổng thể của người lập trình được thể hiện
Ở từng bước sau các câu lệnh được phân tích chi tiết hơn, bằng những lời khác
nhau tương ứng với sự phân tích công việc thành các việc nhỏ chi tiết hơn dễ hiểu và
chính xác hơn. Song ngôn ngữ lập trình pascal người lập trình có thể đưa ra phương
pháp tinh chỉnh từng bước là thể hiện tư duy giải quyết vấn đề bài toán từ trên xuống
trong đó các bước là hướng về ngôn ngữ lập trình làm sao cho bài toán đưa ra được
phương pháp lập trình tối ưu, sáng sủa.
* Ví dụ: Tìm tất cả các số nguyên tố trong các số nguyên N được nhập vào từ bàn
phím
a. Tinh chế lần 1
- Lấy 2 tập
NT= [ ] [để chứa các số nguyên tố tìm được]
S = [2,..N] [tập các số cần xét ]
- Tìm số đầu tiên trong S đưa vào NT
- Loại bỏ khỏi S các bội số của số nguyên tố vừa tìm được
- Số đầu tiên còn lại của S là số nguyên tố. Tiếp tục quá trình cho đến khi S=[]
8



- Xuất NT
b. Tinh chế lần 2
Bắt đầu
NT: = [ ]
S = [2,..N]
Repeat
Tìm số đầu tiên trong S
NT:= NT+ [S0]
Loại khỏi S các bội số của S0
Until S=[ ];
Xuất NT;
Kết thúc;
c. Tinh chế lấn 3 [ chương trình hoàn chỉnh]
Program nguyen_to;
Const
N=100;
Type
nguyen=1..N;
var NT, S:set of nguyen;
S0,I:integer;
begin
NT:=[]; S:=[2..N];S0:=2;
repeat
while not [S0 in S] do
S0:=S0+1;
NT:=NT+[S0];
I:=S0;
While I

Chủ Đề