PHÒNG GIÁO DỤC VÀ ĐÀO TẠO HUYỆN …………………..
TRƯỜNG THCS ……………
=====***=====
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
Tên sáng kiến:
Sử dụng hệ thống câu lệnh
lặp để giải một số bài tập
trong pascal hiệu quả
Tác giả sáng kiến: …………………
* Mã sáng kiến: 40
1
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
1. LỜI GIỚI THIỆU:
Ngày nay, sự bùng nổ CNTT đã tác động lớn đến công cuộc phát triển
kinh tế xã hội người. Đảng và Nhà nước đã xác định rõ ý nghĩa và tầm quan
trọng của tin học và CNTT, truyền thông cũng như những yêu cầu đẩy mạnh của
ứng dụng CNTT, đào tạo nguồn nhân lực đáp ứng yêu cầu CNH, HĐH, mở cửa
và hội nhập, hướng tới nền kinh tế tri thức của nước ta nói riêng - thế giới nói
chung.
Chính vì xác định được tầm quan trọng đó nên Nhà nước ta đã đưa môn
tin học vào trong nhà trường và ngay từ tiểu học học sinh được tiếp xúc với môn
tin học để làm quen dần với lĩnh vực CNTT, tạo nền móng cơ sở ban đầu để học
những phần nâng cao trong các cấp tiếp theo.
việc học thêm các ngôn ngữ này là dễ dàng theo kiểu “21 ngày lập trình
được…”.
Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán
mang tính lặp, trong nội dung của bài sáng kiến này tôi đưa ra những tóm lược
cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp để
giải quyết có hiệu quả.
2. TÊN SÁNG KIẾN:
“SỬ DỤNG HỆ THỐNG CÂU LỆNH LẶP ĐỂ GIẢI MỘT SỐ BÀI TẬP
TRONG PASCAL CÓ HIỆU QUẢ”.
3. TÁC GIẢ SÁNG KIẾN:
- Họ và tên:
- Địa chỉ tác giả sáng kiến:
- Số điện thoại:
4. CHỦ ĐẦU TƯ TẠO RA SÁNG KIẾN:
Chủ đầu tư tạo ra sáng kiến là cá nhân tác giả sáng kiến
5. LĨNH VỰC ÁP DỤNG SÁNG KIẾN:
Có thể áp dụng sáng kiến và vấn đề mà sáng kiến giải quyết đó là:
- Giáo dục.
- Lĩnh vực công nghệ thông tin và truyền thông.
6. NGÀY SÁNG KIẾN ĐƯỢC ÁP DỤNG LẦN ĐẦU HOẶC ÁP DỤNG
THỬ: 20/08/2014.
3
7. MÔ TẢ BẢN CHẤT CỦA SÁNG KIẾN:
7.1- VỀ NỘI DUNG CỦA SÁNG KIẾN:
7.1.1. CƠ SỞ LÝ LUẬN:
trong nhiều ngành then chốt, đặc biệt là ngành Giáo dục và Đào tạo. Chính nhờ
điều đó thầy cô giáo và các em học sinh có rất nhiều thuận lợi trong việc thu
thập tài liệu học tập và tham khảo nói chung, môn tin học nói riêng.
- Tin học là môn khoa học tự nhiên, nó là cơ sở, là nền tảng của nhiều
lĩnh vực khoa học. Nhu cầu học tập, nâng cao kiến thức và say mê khám phá
khoa học của học sinh ngày càng nâng cao. Vì vậy, môn tin học ngày càng được
nhiều em học sinh quan tâm, lựa chọn là môn học ưa thích và cần thiết cho
mình.
- Được sự quan tâm của các cấp lãnh đạo huyện, cũng như sự quan tâm
của từng địa phương nên đời sống của nhân dân trong huyện, thị trấn ngày càng
nâng cao. Đa số các gia đình đã có điều kiện để đầu tư cho con em mình học tập
tốt hơn.
-Lãnh đạo Phòng Giáo dục và Đào tạo, ban giám hiệu trường luôn quan
tâm đến chất lượng giáo dục và đặc biệt quan tâm, chú trọng đến môn tin học.
* Những việc đã làm được:
- Tôi đã áp dụng công nghệ thông tin để soạn giảng các bài lý thuyết và
thực hành nhằm hướng dẫn học sinh dễ hiểu bài và ghi nhớ kiến thức cơ bản ở
bộ môn Tin học 8, 9.
- Ở những giờ thực hành tôi đều tổ chức học tập theo nhóm và có sự
nhận xét đánh giá kết quả của từng nhóm.
-Tôi đã hình thành nề nếp cho học sinh ngay từ đầu năm học.
* Hạn chế:
- Đời sống của người dân trong nhiều thôn, buôn còn nhiều khó khăn, nên
việc đầu tư cho con em mình trong học tập còn hạn chế.
- Môn Tin học là môn học tự chọn nên vẫn còn có học sinh chưa thật sự
đam mê môn học, một số em còn thụ động trong quá trình tiếp thu kiến thức.
- Phương tiện dạy và học, đặc biệt là phòng máy ở trường còn thiếu, bị hư
hỏng nhiều.
- HS phải chuẩn bị những gì mà GV đã dặn ở tiết trước.
7.1.3.2. MỘT SỐ GIẢI PHÁP THỰC HIỆN:
* Rèn luyện tư duy thuật toán cho học sinh THCS khi viết chương trình
Pascal.
CHƯƠNG TRÌNH= THUẬT TOÁN +CẤU TRÚC DỮ LIỆU
Như vậy thuật toán là phần quan trong bậc nhất để tạo nên một chương
trình. Một học sinh muốn tiến sâu, tiến xa trong tương lai phải có tư duy thuật
toán tốt.
Làm quen và rèn luyện tư duy thuật toán cho học sinh mới bắt đầu học lập
trình là một yêu cầu thiết yếu. Không nên vội vàng cho học sinh làm việc trên
máy tính luôn khi mới bắt đầu học. Khi dạy tin học chú ý dành nhiều thời gian
dạy thuật toán.
6
* Xây dựng phong cách lập trình tốt cho HS
Thứ nhất phải tuân theo các quy chuẩn và các quy ước.
Cơ sở cho việc viết một chương trình hiệu quả là: Cách trình bày rõ ràng,
sáng sủa nổi bật được cấu trúc logic của chương trình.
Lợi ích của việc trình bày cẩn thận:
- Thể hiện tốt cấu trúc lôgic của mã lệnh
- Cải thiện khả năng đọc
- Bảo đảm sự chính xác trong các thay đổi
- Các lợi ích hệ quả của các lợi ích trên
+ Chương trình ít mắc lỗi và dễ sửa chữa khi mắc lỗi.
+ Tiết kiệm thời gian sửa lỗi.
+ Tăng khả năng làm việc theo nhóm.
* Phong cách viết chương trình.
+ Quy tắc trình bày tổng thể chương trình:
- Chương trình nên tách thành nhiều đơn thể (mô _ đun), mỗi đơn thể thực
- Nên viết biểu thức điều kiện mang tính tự nhiên: Biểu thức nên viết dưới
dạng khẳng định, việc viết dưới dạng phủ định sẽ làm khó hiểu.
+ Qui tắc khai báo tên tệp dữ liệu dùng trong chương trình.
Dùng tệp nên khai báo tên têp trước trong phần khai báo hằng:
Ví du:
Const fi=’BAI3.INP’;
Fo=’BAI3.OUT’ ;
* Tối ưu sự thực thi mã nguồn
Mục đích của việc tối ưu mã nguồn là nâng cao tốc độ xử lý và hạn chế
không gian bộ nhớ mà chương trình chiếm dụng. Thông thường có thể mâu
thuẫn giữa tốc độ và không gian lưu trữ, do đó tùy theo điều kiện cụ thể mà
người lập trình có sự lựa chọn thích hợp. Một số thủ thuật sau có thể giúp người
lập trình hình thành nên phong cách lập trình tốt.
- Lưu tạm giá trị thường sử dụng: Nếu một biểu thức tính toán được dùng
nhiều lần thì nên tính kết quả một lần rồi lưu vào một biến và dùng lại.
- Thay thế một biểu thức bằng một biểu thức tương đương nhưng lợi về thực
thi
- Dùng số nguyên thay cho số thực: Do việc xử lý số thực chậm hơn xử lý số
nguyên nên ta có thể dùng số nguyên thay cho số thực có phần lẻ nhỏ.
Vì dụ: Điểm trung bình của học sinh là số thực ta có thể thay bằng số nguyên:
DTB là 7.85 thì lưu số nguyên là 785, khi xuất ra thì chia cho 100.
- Thoát khỏi vòng lặp khi sớm nhất: Một số trường hợp không cần thiết phải
lặp hết toàn bộ mà đã đạt được mục đích thì có thể thoát khỏi vòng lặp.
- Hạn chế sử dụng câu lệnh rẽ nhánh: Lệnh rẽ nhánh làm chậm chương trình do
ngắt luồng thực thi.
- Tránh lãng phí bộ nhớ: Bằng cách sử dụng kiểu dữ liệu nhỏ nhất đủ để lưu
trữ. Việc sử dụng tài nguyên nhiều hơn mức đòi hỏi của chương trình là một thói
quen xấu mà người lập trình hay mắc phải. Hơn nữa tốc độ chương trình sẽ
nhanh hơn khi sử dụng kiểu dữ liệu nhỏ hơn.
8
For <biến đếm> := <giá trị cuối> Downto <giá trị đầu> do <Câu lệnh> ;
Trong đó:
+ for, to, do là các từ khóa.
+ Biến đếm có kiểu nguyên.
9
+ Giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và
giá trị cuối phải lớn hơn hoặc bằng giá trị đầu.
+ Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Nguyên lý hoạt động cấu trúc For dạng tiến:
1, Biến đếm nhận giá trị của giá trị đầu.
2, Máy kiểm tra xem giá trị của biến đếm còn nhỏ hơn giá trị của biểu thức giá
trị cuối hay không (biến đếm ≤ giá trị cuối).
3. Nếu việc kiểm tra:
- Cho giá trị sai câu lệnh sẽ bị bỏ qua.
- Cho giá trị đúng:
+Máy sẽ thực hiện câu lệnh sau từ khóa do.
+ Tăng giá trị của biến đếm lên giá trị đứng liền sau của nó (biến
đếm:=succ(b))
- Quay trở lại bước 2
- Ta có thể minh hoạ vòng lặp for bằng sơ đồ khối sau
Begin
Biến đếm := giá trị đầu
Biến đếm > giá trị cuối
Đúng
Biến đếm := giá trị đầu
Biến đếm < giá trị cuối
Đúng
Sai
Công Việc
End
Biến đếm := Pred(Biến đếm)
Trong cấu trúc For dạng lùi, câu lệnh được thực hiện lặp đi lặp lại cho đến
khi giá trị của biến đếm nhỏ hơn giá trị của giá trị đầu. Mỗi lần thực hiện xong
câu lệnh, giá trị của biến đếm được giảm đi đến giá trị liền trước của nó.
* GIẢI PHÁP VỚI CẤU TRÚC LẶP WHILE...DO:
11
• Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định
trước.
• Cú pháp: While <Biểu thức Boolean> do <câu lệnh>;
Câu lệnh là thân chu trình và có thể là câu lệnh đơn hoặc câu lệnh ghép.
Begin
Sai
Biểu thức
thức Boolean> có giá trị đúng (TRUE) thì mới thoát ra khỏi cấu trúc
REPEAT .. UNTIL.
- Nếu có nhiều câu lệnh thì mỗi lệnh ngăn cách nhau bằng dấu chấm phẩy (;)
Công việc của REPEAT và UNTIL không nhất thiết phải dùng lệnh ghép để
nhóm từ 2 lệnh đơn trở lên thành công việc.
- Vòng lặp Repeat … until… được biểu diễn bằng sơ đồ khối như sau:
Begin
Công việc
sai
Biểu thức
Boolean
đúng
End
7.2- VỀ KHẢ NĂNG ÁP DỤNG CỦA SÁNG KIẾN:
* Áp dụng 1: Áp dụng với vòng lặp For...to...do
13
Ví dụ 1: Tính tổng S = 1 + 1/2 + 1/3 + .... + 1/n
Nhận xét:
- Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo công thức
S(i) = 1/i (i=1,2,...,n)
- Trường hợp này có thể sử dụng được một trong hai dạng cấu trúc của FOR
Chương trình:
Phương án 1: Sử dụng cấu trúc For dạng tiến.
dưới gồm các chữ cái thường theo thứ tự ngược lại từ z đến a
Nhận xét:
Ta có thể giải quyết được bài toán bằng cách sử dụng cấu trúc FOR dạng tiến và
dạng lùi với biến điều khiển dạng ký tự nhận các giá trị trong khoảng từ A đến Z
Chương trình
Program in_dong;
Var
ch: char;
Begin
Writeln;
For ch := 'A' to 'Z' do Write(ch:2);
Writeln;
For ch := 'z' downto 'a' do Write(ch:2);
Writeln;
Readln;
End.
Kết quả của việc chạy chương trình là:
3. Ví dụ 3: Đọc vào n số thực, tìm Max của chúng
* Thuật toán tìm Max trong một dãy số:
- Cho Max là số thứ nhất
- Duyệt toàn bộ dãy số từ số thứ hai trở đi, nếu thấy số nào lớn hơn Max
thì lấy số đó làm Max. Sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất.
Nhận xét:
- Dãy số có một số lượng hữu hạn các số. Ta có thể biết được số lượng từ
khi bắt đầu thực hiện thuật toán.
- Thích hợp cho việc sử dụng cấu trúc FOR dạng tiến để thực hiện.
15
Nhận xét:
- Trong biểu thức trên, số hạng thứ i của tổng có thể tính được theo công
thức S(i) = i/ 1 + i2 (i=1,2,...,n).
- Điều kiện để dừng vòng lặp là tổng S phải nhỏ hơn 10.
"Trường hợp này sử dụng dạng cấu trúc While...do như sau:
Chương trình
Var i : Integer; S:Real;
Begin
S:=0; i:=0;
While S < 10 do
Begin
i := i + 1;
S := S + i / (1+SQR( i ) );
16
End;
Writeln( ' Tong S =', S : 6 : 2 );
Writeln( ‘So lan lap la:’, i );
Readln;
End.
- Kết quả cua việc chạy chương trình trên là:
Ví dụ 2: Tìm bội số chung nhỏ nhất của hai số nguyên dương
*Thuật toán:
Lấy một trong hai số lần lượt nhân với 1, 2, 3,... cho đến khi nào tích số chia hết
cho số thứ hai thì tích số chính là BSCNN
*Nhận xét:
- Thuật toán cho thấy là trong quá trình tính toán, không thể biết trước
Lặp lại thuật toán trên cho đến khi m = n. Lúc đó m = n là ƯSCLN
• Nhận xét:
Thuật toán cho thấy không thể xác đinh trước được phép trừ phải thực
hiện lặp lại bao nhiêu lần. Trường hợp này phải sử dụng cấu trúc lặp với số
lần lặp không xác định.
Điều kiện để dừng là hai số bằng nhau.
• Chương trình
Program USCLN;
Var x, y: Integer;
Begin
Write(‘x = ‘);Readln(x);
Write(y = ‘);Readln(y);
While x y do
If x>y then x := x – y
else y := y – x;
Writeln(‘USCLN la: ‘, x)
Readln;
End.
- Kết qua khi chay chương trình la:
18
* Áp dụng 3:
Ví dụ: Viết chương trình tìm ƯSCLN của N số được nhập từ bàn phím .
Program UCLN;
Uses crt ;
Var a : Array [1..100] Of Integer ;
n , i : Byte ;
d : integer ;
tài liệu.
+ Đối với phòng Giáo dục và Đào tạo Vĩnh Tường.
Nên thường xuyên tổ chức hội nghị, hội thảo, chuyên đề về công tác dạy và học
để giáo viên có thêm cơ hội học hỏi kinh nghiệm lẫn nhau.
+ Đối với nhà trường:
- Tạo điều kiện mua sắm trang thiết bị phục vụ bộ môn được tốt hơn: mua
thêm máy tính có cấu hình cao, máy chiếu, nối mạng tốc độ cao và mua bản
quyền phần mềm cho máy tính.
- Quán triệt hơn nữa tinh thần học tập của học sinh.
+ Đối phụ huynh học sinh: Gia đình phải chú trọng quan tâm đến việc học hành
của con cái nhiều hơn. Cần dành nhiều thời gian giám sát việc học ở nhà của
con em.
10. Đá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ả và theo ý kiến của tổ chức, cá nhân đã tham gia
áp dụng sáng kiến lần đầu, kể cả áp dụng thử (nếu có) theo các nội dung
sau:
20
10.1. Đá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ả:
* Kết quả đạt được:
Qua thực tế 2 học kì vừa qua (năm học 2015-2016), tôi vận dụng chuyên
đề trong giảng dạy. Đã thu thập được kết quả khả quan.
Từ những kết quả trên, tôi nhận thấy tỉ lệ học sinh yếu –kém của học sinh
mà tôi phụ trách giảng dạy, đã giảm dần. Đó là sự phấn khởi mà bản thân tôi khi
vận dụng sáng kiến trên.
* Bài học kinh nghiệm:
+ Ưu điểm:
toán điển hình cho từng dạng lặp cụ thể mà bản thân đã đúc kết được trong quá
trình giảng dạy môn tin học ở trường. Qua đó giúp học sinh và đồng nghiệp có
thể làm tài liệu tham khảo trong quá trình học tập và giảng dạy của mình có hiệu
quả.
Trong phạm vi là một sáng kiến kinh nghiệm có thể việc phân tích về nội
dung câu lệnh và ví dụ về các dạng lệnh có thể chưa thật chi tiết và phong phú
rất mong nhận được sự góp ý chân thành từ quý đồng nghiệp, học sinh để đề tài
được hoàn thiện hơn.
............., ngày
tháng
năm 2016
Thủ trưởng đơn vị/
Chính quyền địa phương
(Ký tên, đóng dấu)
Vĩnh Tường, ngày 02 tháng 10 năm
2016
Tác giả sáng kiến
(Ký, ghi rõ họ tên)
22
TÀI LIỆU THAM KHẢO
1. Sách giao khoa Tin học 8,9 (Quyển 3,4) – Nhà xuất bản Giáo dục.
2. Tham khảo các tài liệu Pascal trên mạng internet.