PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN VĨNH TƯỜNG
TRƯỜNG THCS YÊN BÌNH
BÁO CÁO KẾT QUẢ
SÁNG KIẾN KINH NGHIỆM
Tên sáng kiến kinh nghiệm: Phương pháp giải một
số bài toán sử dụng câu lệnh lặp với số
lần chưa biết trước While.. Do trong
Pascal
Môn: Tin học
Tổ : Khoa học tự nhiên
Người thực hiện: Nguyễn Văn Tuyến
Năm học: 2020 - 2021
MỤC LỤC
MỤC LỤC……………………………………………………………….1
I. Lí do chọn đề tài.....................................................................................................3
1. Lý luận................................................................................................................3
2. Thực tiễn............................................................................................................3
II. Mục đích chọn đề tài.............................................................................................3
III. Đối tượng nghiên cứu..........................................................................................3
IV. Phương pháp nghiên cứu......................................................................................4
1
V. Phạm vi nghiên cứu...............................................................................................4
VI. Kế hoạch nghiên cứu...........................................................................................4
I. Cơ sở lý luận...........................................................................................................5
II. Thực trạng vấn đề nghiên cứu...............................................................................7
III. Nội dung nghiên cứu............................................................................................7
IV. Kết quả thực hiện...............................................................................................12
I. Kết luận.................................................................................................................13
II. Kiến nghị.............................................................................................................13
2
PHẦN I: ĐẶT VẤN ĐỀ
I. Lí do chọn đề tài
1. Lý luận
Trong thời đại Công nghệ thông tin bùng nổ như ngày nay, việc lập
trình được các chương trình tự động cho máy tính là rất cần thiết. Để làm
được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập
trình lâu dài.
Xuất phát từ suy nghĩ trên, trong đề tài này tôi mạnh dạn đưa ra ý kiến
trao đổi về vấn đề “Phương pháp giải một số bài toán sử dụng câu lệnh
lặp While... Do trong Pascal”.
2. Thực tiễn
Một trong các cách để học tốt môn Tin học ở THCS đặc biệt là môn
Tin học quyển 3 dành cho học sinh lớp 8 là phải biết phương pháp giải
một bài toán trên máy tính nói chung, giải bài tập sử dụng câu lệnh lặp
nói riêng.
II. Mục đích chọn đề tài
- Nhằm nâng cao chất lượng dạy và học môn Tin học lớp 8 trong
mỗi tiết học về ngôn ngữ lập trình Pascal.
- Nêu ra phương pháp giải các bài toán trên máy tính nói chung,
phương pháp giải các bài toán sử dụng câu lệnh lặp nói riêng.
III. Đối tượng nghiên cứu
Học sinh lớp 8 được học Tin học quyển 3 với chương trình học là
Ngôn ngữ lập trình Pascal. Và các bài toán mà học sinh cần viết những
chương trình đầu tiên đó là các bài toán có sử dụng câu lệnh lặp
While..do
3
IV. Phương pháp nghiên cứu
Mới đầu chỉ áp dụng phương pháp ở một số bài học và với một số lớp.
Sau đó áp dụng cho tất cả các bài học có yêu cầu học sinh lập trình giải
các bài tập, ở tất cả các lớp của khối học.
V. Phạm vi nghiên cứu
Đề tài chỉ áp dụng nghiên cứu trong phạm vi các tiết dạy môn Tin
học ở trường THCS.
VI. Kế hoạch nghiên cứu
Từ tháng 9/2019 đến tháng 5/2020.
4
PHẦN II: NỘI DUNG
I. Cơ sở lý luận
Câu lệnh lặp
Các ngôn ngữ lập trình thường có nhiều dạng câu lệnh lặp với số lần chưa
biết trước. Câu lệnh lặp với số lần chưa biết trước thường gặp trong
Pascal có dạng:
* Cú pháp:
While <điều kiện> Do <câu lệnh>;
Trong đó:
+ While, Do là các từ khóa;
+ <điều kiện> là một phép so sánh.
+ Câu lệnh sẽ thực hiện <câu lệnh> một lần hoặc nhiều lần, mỗi lần là
một vòng lặp. Số vòng lặp là chưa biết trước và chỉ kết thúc khi <điều
kiện> là sai;
+ Cũng giống như <câu lệnh> thành phần trong câu lệnh điều kiện For..
To..do <câu lệnh> của câu lệnh lặp While... do có thể là một câu lệnh
đơn hoặc một câu lệnh ghép.
* Cách thức hoạt động của câu lệnh:
Bước 1 : Kiểm tra điều kiện.
Bước 2 : Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh
lặp kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
Ví dụ 1: Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), Cần cộng
bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn
1000?
Program tong;
var S,n: integer;
begin
S:=0; n:=1;
5
while S<=1000 do
begin n:=n+1; S:=S+n end;
writeln('So n nho nhat de tong > 1000 la ',n);
writeln('Tong dau tien > 1000 la ',S);
end.
Ví dụ 2:
1
2
1
3
Viết chương trình tính tổng T = 1 + + + ... +
1
100
Giải :
1 1
2 3
Để viết chương trình tính tổng T = 1 + + + ... +
1
ta có thể sử dụng lệnh
100
lặp với số lần lặp biết trước for…do:
T:=0;
for i:=1 to 100 do T:=T+1/i;
writeln(T);
Nếu sử dụng lệnh lặp while…do, đoạn chương trình dưới đây cũng cho
cùng một kết quả:
T:=0;
i:=1;
while i<=100 do begin T:=T+1/i; i:=i+1 end;
writeln(T);
* Nhận xét : Ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh
while…do thay cho câu lệnh for…do.
Ví dụ 3: Viết chương trình sử dụng lệnh lặp While…do để tính trung
bình n số thực x1, x2, x3,..., xn. Các số n và x1, x2, x3,..., xn được nhập vào từ
bàn phím.
Chương trình
Program Tinh_Trung_binh;
uses crt;
6
Var
n, dem: Integer;
x, TB: real;
begin
clrscr;
dem:=0 ; TB:=0 ;
write('Nhap so cac so can tinh n = '); readln(n);
while dem
begin
dem:=dem+1;
write('Nhap so thu ',dem,'= '); readln(x);
TB:=TB+x;
end;
TB:=TB/n;
writeln('Trung binh cua ',n,' so la = ',TB:10:3);
writeln('Nhan Enter de thoat ...');
readln
end.
II. Thực trạng vấn đề nghiên cứu
- Hiện môn Tin học 8 – Làm quen với Ngôn ngữ lập trình vẫn là môn
học rất mới mẻ với học sinh THCS;
- Việc thực hành lại các ví dụ, làm các bài tập trên máy tính chủ yếu ở
trường, trong các tiết thực hành. Lý do chủ yếu là do điều kiện kinh tế gia
đình các em còn khó khăn nên không có điều kiện mua máy tính để học
tập.
III. Nội dung nghiên cứu
Một số bài toán về câu lệnh lặp While.. Do
7
Bài 1: Viết chương trình nhận biết một số tự nhiên N được nhập vào từ
bàn phím có phải là số nguyên tố hay không.
Ý tưởng: Kiểm tra lần lượt N có chia hết cho các số tự nhiên 2 ≤ i ≤ N
hay không. Kiểm tra tính chia hết bằng phép chia lấy phần dư (mod).
Chương trình
Program songuyento ;
Uses Crt;
Var n,i:integer;
Begin
Clrscr;
write('Nhap vao mot so nguyen: ');readln(n);
If n<=1 then writeln('N khong la so nguyen to')
else
begin
i:=2;
while (n mod i<>0) do i:=i+1;
if i=n then writeln(n,' la so nguyen to!')
else writeln(n,' khong phai la so nguyen to!');
end;
readln
end.
Bài 2 Lập trình tính tổng :
A = 1 + 1/2 + 1/3 + … + 1/n
ở đây n là số tự nhiên được nhập vào từ bàn phím .
Chương trình
Program tinhtong;
Uses Crt ;
Var i , n : Integer ;
8
tong: Real ;
BEGIN
Clrscr ;
Write (' Cho so tu nhien n : ') ; Readln (n) ;
tong :=0 ;
i :=1 ;
While i <= n Do
Begin
tong := tong + 1/i ;
i := i + 1 ;
End ;
Writeln (' Tong can tim la : ', tong:12:6 ) ;
Readln ;
END .
Bài 3 :Tính hàm lũy thừa an , ở đây a thực và n tự nhiên được nhập vào từ
bàn phím
Uses Crt ;
Var i , n : Integer ;
a , giatri : Real ;
BEGIN
Clrscr ;
Write (' Cho so a : ') ; Readln(a) ;
Write (' Cho so mu n : ') ; Readln(n) ;
i := 1 ;
giatri := 1 ;
While i <= n Do
Begin
giatri := giatri * a ;
9
i:= i+1 ;
End ;
Writeln(' a mu n bang : ', giatri ) ;
Readln ;
END .
Bài 4 :Viết chương trình nhập một dãy số tối đa 100 số , sau đó in ra màn
hình các số khác nhau .
Chương trình
Program sokhacnhau;
Uses Crt;
Var A : Array [1..100] Of Integer;
i , j , n : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
For i:= 1 To N Do
Begin
Write ('A[', i , ']= ') ; Readln ( A[i] ) ;
End ;
Writeln (' Cac so khac nhau la : ') ; Writeln ( A[1] ) ;
i := 2 ;
While i <= N Do
Begin
j := 1 ;
While ( j < i ) and ( A[j] <> A[i] ) Do inc(j) ;
If j = i Then Writeln( A[i] ) ;
i :=i + 1 ;
End ;
10
Readln ;
END .
Bài 5 :Viết chương trình nhập một dãy số tối đa 100 số , sau đó sắp xếp
lại theo thứ tự tăng dần
Chương trình
Program sapxeptangdan;
Uses Crt;
Var A : Array [1..100] Of Integer ;
i , j , n , T : Integer ;
BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
Writeln (' Nhap day so : ') ;
For i := 1 To N Do
Begin
Write('A[', i ,'] = ') ; Readln ( A[i] ) ;
End ;
i := 1 ;
While (i <= n-1) Do
Begin
j := i+1;
While j<=n do
Begin
If A[j] < A[i] then
Begin
T := A[j];
A[j ] := A[i];
A[i] := T ;
11
End ;
j := j + 1;
End ;
i := i + 1;
End ;
Writeln(' Day sau khi sap xep : ') ;
For i := 1 To N Do Write(A[i] : 4) ;
Readln ;
END .
IV. Kết quả thực hiện
- Chất lượng đại trà đạt chỉ tiêu kế hoạch nhà trường đã đề ra.
* Bài học kinh nghiệm:
Trong quá trình giảng dạy ở trường, tôi đã vận dụng đề tài này và rút
ra một số kinh nghiệm thực hiện như sau:
- Giáo viên phải chuẩn bị thật kỹ nội dung cho mỗi bài học về các
câu lệnh trong Pascal.
- Xây dựng được nguyên tắc và phương pháp giải cho các bài toán
đó.
12
PHẦN III: KẾT LUẬN VÀ KIẾN NGHỊ
I. Kết luận
Giảng dạy “Phương pháp giải một số bài toán sử dụng câu lệnh
lặp với số lần chưa biết trước While.. Do trong Pascal” là một hoạt
động hội tụ được nhiều kỹ năng và tri thức trong đó hạt nhân là kiến thức
và kĩ năng xử lí những bài toán lặp với số lần chưa biết trước trong Pascal
cụ thể với một kĩ năng tổ chức dạy học - kĩ năng sư phạm trước một đối
tượng là học sinh THCS. Tuỳ theo từng bài tập mà người giáo viên tổ
chức cho học sinh nghiên cứu bài, chỉ ra phương pháp phát hiện, sưu tập,
lựa chọn, phân tích, sử dụng sáng tạo như tư liệu nguồn để có thể giải
quyết bài tập.
Trong khi viết đề tài này chắc chắn tôi chưa thấy hết được những
ưu điểm và tồn tại trong tiến trình áp dụng, tôi rất mong các đồng nghiệp
đóng góp ý kiến cùng hoàn thiện hơn trong công tác giảng dạy học sinh.
II. Kiến nghị
- Nhà trường đã rất tạo điều kiện sắm và sửa máy tính phục vụ cho dạy
và học môn Tin nhưng còn hạn chế về số lượng máy tính.
Tôi xin trân trọng cảm ơn!
………, ngày 20 tháng 10 năm 2020
Người viết sáng kiến kinh nghiệm
13
TÀI LIỆU THAM KHẢO
Tên sách
1. Bài tập Tin học quyển 3
3. Lý thuyết và bài tập ngôn ngữ
Tên tác giả và NXB
NXB: Giáo dục
Quách Tuấn Ngọc
lập trình Pascal
4. Kỹ năng cơ bản trong lập trình
NXB: ĐH quốc gia Hà Nội
NXB: Văn hóa thông tin
Pascal
5. Tin học đại cương
NXB: Khoa học kỹ thuật
Một số trang web:
1. />2. />3. />4. />5. />6. />
14