Sử dụng ví dụ thực tế, hệ thống câu hỏi và bài tập khi dạy bài cấu trúc lặp tạo hứng thú học lập trình cho học sinh trường THPT DTNT Ngọc Lặc 1 SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH[.]
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT DTNT NGỌC LẶC
SÁNG KIẾN KINH NGHIỆM
SỬ DỤNG VÍ DỤ THỰC TẾ, HỆ THỐNG CÂU HỎI VÀ BÀI TẬP KHI DẠY BÀI CẤU TRÚC LẶP TẠO HỨNG THÚ HỌC LẬP TRÌNH CHO HỌC SINH TRƯỜNG THPT DTNT NGỌC LẶC
Người thực hiện: Dương Thị Lan Chức vụ: Giáo viên
SKKN thuộc lĩnh vực (môn): Tin học
THANH HOÁ, NĂM 2019
Trang 2MỤC LỤC
1 Mở đầu 2
1.1 Lý do chọn đề tài : 2
1.2 Mục đích nghiên cứu: 2
1.3 Đối tượng nghiên cứu: 3
1.4 Phương pháp nghiên cứu: 3
2 Nội dung 3
2.1 Cơ sở lí luận: 3
2.2 Thực trạng vấn đề:……… … 4
2.3 Sử dụng ví dụ thực tế, hệ thống câu hỏi và bài tập khi dạy bài Cấu trúc lặp – Tin học lớp 11 5
2.3.1 Đối với việc dạy học sinh khái niệm: Lặp là gì? : 5
2.3.2 Lệnh for do để mô tả lặp biết trước số lần 13
2.3.3 Lặp với số lần chưa biết trước và câu lệnh While –Do:…………10
2.3.4 Cách chuyển đổi qua lại giữa các câu lệnh lặp while và for:… 12
2.4 Hiệu quả của sáng kiến kinh nghiệm: 16
3 Kết luận 16
Trang 31 Mở đầu
1.1 Lý do chọn đề tài
Chúng ta đang sống ở thế kỉ XXI là thế kỉ của Công nghệ thông tin
và truyền thông Sự phát triển mạnh mẽ như vũ bão của tin học đã làm cho
xã hội có nhiều nhận thức mới về cách tổ chức các hoạt động, trong đó Tin học
góp phần vào sự chuyển biến mạnh mẽ đối với cuộc cách mạng công nghiệp 4.0
Vì vậy việc trang bị những kiến thức Tin học là một vấn đề có ý nghĩa và tầm
quan trọng rất lớn đối với quá trình đào tạo nhân lực, bồi dưỡng nhân tài cho đất
nước
Xác định được tầm quan trọng đó nên từ năm 2006 môn Tin học đã được
bộ Giáo dục-Đào tạo đưa vào giảng dạy ở các cấp học, nhằm trang bị cho học
sinh những kiến thức cơ bản, phổ thông về ngành khoa học Tin học Đặc biệt là
trong chương trình sách giáo khoa (SGK)Tin học lớp11 bậc trung học phổ thông (THPT), các nhà biên soạn sách đã đưa vào các chương bài giúp học
sinh tiếp cận được với ngôn ngữ lập trình bậc cao Qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt động cũng như ích lợi của các chương trình hoạt động trong máy tính Từ đó khơi gợi ở các em niềm đam mê
đối với bộ môn Tin học, tạo niềm tin để các em có thể dễ dàng tự định hướng,
lựa chọn nghề nghiệp sau này
Trong thời đại thông tin bùng nổ như ngày nay, việc lập được các chương
trình tự hoạt động cho máy tính, máy gia dụng 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, qua
đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp Tuy nhiên mọi
thứ đều có điểm khởi đầu của nó, với học sinh việc học Pascal là khởi đầu cho
việc tiếp cận ngôn ngữ lập trình bậc cao là ngôn ngữ nền tảng cho việc học các
ngôn ngữ bậc cao khác Vậy làm sao để các em viết tốt được các chương trình
trong pascal? Một trong những yếu tố quan trọng là các em phải nắm vững cấu
trúc các câu lệnh và biết vận dụng chúng vào bài toán cụ thể, đặc biệt là hai cấu
trúc của câu lệnh lặp Nó Xuyên suốt trong cả chương trình Tin học 11 khi hai
cấu trúc này áp dụng vào hầu hết các bài tập ở các chương còn lại
Là một giáo viên Tin học được phân công về dạy trong ngôi trường THPT
Dân tộc nội trú (DTNT) Ngọc Lặc tôi luôn trăn trở làm thế nào giúp những học
sinh – là con em của đồng bào dân tộc thiểu số có trình độ nhất định về tin học
và sự đam mê Tin học cũng như biết lập trình, ươm mầm cho các em sau này có
thể trở thành các nhà lập trình viên chuyên nghiệp, vậy để làm được điều đó tôi
luôn phải đổi mới phương pháp giảng dạy cho phù hợp với từng bài học, tiết
học, từng đối tượng học sinh Xuất phát từ thực tiễn dạy học tại trường THPT
DTNT Ngọc Lặc, khi học Tin học 11 các em mới biết thể hiện thuật toán thành
chương trình, biết máy tính thực hiện chương trình như thế nào nên các em rất
hứng thú và muốn khám phá Nhưng khi tôi dạy đến Bài10 : “Cấu trúc lặp”, học
sinh vẫn thấy nội dung kiến thức mới, rộng, trừu tượng và khó hiểu hơn nhiều so
với các bài học trước Nên tôi đã sử dụng các ví dụ thực tế, hệ thống câu hỏi và
bài tập phù hợp để giảng dạy bài 10 – cấu trúc lặp (Sách giáo khoa Tin học 11)
Trang 4vào giảng dạy thì thấy kết quả tốt hơn hẳn, vận dụng tốt cấu trúc lặp vào để giải
các bài toán Thái độ học tập của học sinh hăng hái, tích cực, chủ động sáng
tạo Vì các lí do trên tôi mạnh dạn đưa ra sáng kiến kinh nghiệm “ Sử dụng ví
dụ thực tế, hệ thống câu hỏi và bài tập khi dạy bài Cấu trúc lặp tạo hứng thú
học lập trình cho học sinh trường THPT DTNT Ngọc Lặc”
1.2 Mục đích nghiên cứu
Giúp học sinh (đặc biệt là học sinh trường THPT DTNT Ngọc Lặc) hiểu
rõ về câu lệnh lặp: lặp với số lần biết trước, chưa biết trước tự tin làm bài tập có
niềm đam mê hứng thú khi học lập trình Pascal – Tin học 11; từ chỗ các em còn
mơ hồ về khái niệm lặp là gì? không biết khi nào sử dụng lệnh lặp For, while,
nguyên tắc hoạt động của từng loại vv Giờ đây (sau khi áp dụng SKKN) các
em đã hiểu được lặp là gì, dùng nó khi nào và làm được nhiều bài tập có liên
quan tới cấu trúc lặp đặc biệt hơn nữa là các em đã có niềm tin và yêu thích học
lập trình Pascal nói riêng và bộ môn Tin học 11 nói chung
1.3 Đối tượng nghiên cứu
Học sinh các lớp 11A1, 11A2 trường THPT DTNT Ngọc Lặc năm học
2018- 2019 khi học bài 10 - Cấu trúc lặp – Sách giáo khoa Tin học 11
1.4 Phương pháp nghiên cứu
Trong đề tài này tôi sử dụng một số phương pháp nghiên cứu chính:
+ Phương pháp nghiên cứu tài liệu
+ Phương pháp quan sát
+ Phương pháp phỏng vấn
+ Phương pháp so sánh
2 Nội dung
2.1 Cơ sở lí luận
Pascal là ngôn ngữ lập trình bậc cao do giáo sư Niklaus Wirth
(trường đại học kỹ thuật , Zurich, Thụy sĩ) sáng tác và công bố vào đầu những
năm 1970, với tên Pascal để kỷ niệm nhà toán học người Pháp Blaise Pascal thế kỷ 17 Lúc đầu, ngôn ngữ lập trình này được sáng tác ra nhằm giúp cho
những người mới học lập trình có được thói quen viết một chương trình có cấu
trúc sáng sủa, rõ ràng, dễ hiểu và dễ đọc cho mọi người Giáo sư Wirth thấy rằng
có thể tránh được rất nhiều lỗi khi lập trình với một ngôn ngữ có cấu trúc khối
và có sự kiểm tra kỹ lưỡng sự tương thích giữa các kiểu dữ liệu Mà Pascal là
một ngôn ngữ như thế: mọi biến và hằng của một kiểu dữ liệu không thể tự do
đem trộn lẫn với các biến và hằng của một kiểu dữ liệu khác Ngôn ngữ Pascal
có thể tách các thông tin dữ liệu (biến, hằng,…) và các lệnh cần dùng cho một
nhiệm vụ xác định thành những khối riêng, tách ra khỏi phần còn lại của
chương trình để người lập trình có thể giải quyết dần từng phần một, từng khối một và thậm chí có thể cho nhiều người tham gia lập trình, mỗi người
phụ trách một vài khối
Từ tính ưu việt đó của ngôn ngữ lập trình Pascal mà ngôn ngữ này đã
được sử dụng rộng dãi Pascal rất thích hợp dùng để giảng dạy trong các nhà
trường và cho những người mới bắt đầu học lập trình Do đó trường THPT
Trang 5DTNT Ngọc Lặc đã chọn ngôn ngữ lập trình này để dạy học sinh giải bài toán trên máy tính Mặc dù mục tiêu của chương trình giáo dục Tin học của Bộ GD &
ĐT không quy định phải dạy học sinh trên một ngôn ngữ lập trình cụ thể nào
Pascal là ngôn ngữ khởi đầu, là hành trang cho các em tiếp cận các ngôn ngữ bậc cao khác dễ dàng hơn Nhưng để làm được như vậy các em phải hiểu và vận dụng viết được các chương trình trong pascal một cách linh hoạt Muốn vậy các em phải nắm vững được cú pháp, ngữ nghĩa của pascal, sử dụng thành thạo các câu lệnh của ngôn ngữ trong đó có các câu lệnh lặp Nhưng thực tế học sinh gặp rất nhiều khó khăn, nhầm lẫn trong việc xác định vòng lặp và xác định điều kiện dừng của vòng lặp, câu lệnh nào nằm trong vòng lặp Từ đó nảy sinh cho giáo viên và học sinh nhu cầu giải quyết vấn đề đó
2.2 Thực trạng vấn đề:
Qua thực tế giảng dạy các lớp mà tôi được phân công chuyên môn
ở trường THPT DTNT Ngọc Lặc, tôi nhận thấy khi học đến chương III bài cấu trúc lặp - Tin học lớp 11 đa số học sinh đều nhận xét bài học này khó và không hứng thú đó là:
- Bởi khi học các bài đầu của sách giáo khoa các em thấy kiến thức nhẹ nhành, học đến đâu là có thể làm tốt các bài tập ngay, nhưng với bài này hầu hết các em thấy kiến thức nhiều hơn nhiều, trừu tượng hơn
- Bài học không có ví dụ liên quan đến thực tiễn đời sống nên khó hiểu;
- Khi đưa ra ví dụ áp cho các câu lệnh For…Do, While…Do tương ứng với các ví dụ trong sách giáo khoa như Tong-1a, Tong -1b đã giới thiệu học sinh không hình dung được hoạt động của các câu lệnh đa phần các em có học lực trung bình là thấy khó (như khi nào sử dụng for do, khi nào dùng While Do; lúng túng khi sử dụng : câu lệnh for –do còn sử dụng câu lệnh tác động lên biến điều khiển; khó khăn xác định biểu thức điều kiện trog câu lệnh while –do; không sử dụng (begin end;) khi có câu lệnh ghép sau Do
- Nguyên tắc hoạt động của câu lệnh lặp chỉ giới thiệu vài dòng không giúp học sinh hiểu rõ được cơ chế hoạt động của for…do là gì? và while do là gì?
2.3 Sử dụng ví dụ thực tế, hệ thống câu hỏi và bài tập khi dạy bài Cấu trúc lặp – Tin học lớp 11:
2.3.1 Đối với việc dạy học sinh khái niệm: Lặp là gì?
*Giáo viên đưa ra các ví dụ và các câu hỏi :
Ví dụ 1: Thầy giáo dạy thể dục yêu cầu bạn Giàng A Dế chạy
quanh sân trường như sau:
Trường hợp 1: bạn Dế chạy 10 vòng quanh sân trường
Trường hợp 2: bạn Dế chạy quanh sân trường đến khi mệt (việc mệt được hiểu là thoog qua hỏi bạn đã mệt hay chưa? )
Câu hỏi 1: - Việc chạy của bạn Dế có lặp ko? Khi này học sinh sẽ trả lời
được là: việc chạy quanh sân trường của bạn là lặp
- và lặp bao nhiêu lần? Học sinh sẽ trả lời được: ở trường hợp
1 Bạn chạy quanh sân trường 10 vòng nên lặp 10 lần; còn ở trường hợp 2 có khi
Trang 6bạn chạy 3 vòng đã mệt hoặc 5 vòng đã mệt nên số vòng chạy của bạn không biết và dẫn đến không biết trước được lặp bao nhiêu lần
=> từ đây giáo viên nhấn mạnh: việc chạy quanh sân trường của bạn Giàng A
Dế trong trường hợp 1 đã biết trước số vòng chạy hay lặp đã biết trước số lần còn ở trường hợp 2 là không biết trước số vòng chạy hay lặp không biết trước số lần
Ví dụ 2: Công việc hàng ngày mỗi sáng của các em là múc nước
giếng đổ vào bể Cô quản lí kí túc xá yêu cầu bạn Thao Đắc Di dùng xô (mỗi xô chứa được 10 lít) múc đổ đầy bình trong 2 trường hợp sau:
a Đổ nước vào Bể chứa được 100 lít nước
b không biết bình chứa được bao nhiêu lít nước mà yêu cầu bạn Di múc nước đổ vào bể cho đến khi đầy
Câu hỏi 2: - Việc dùng xô múc nước đổ vào bể của bạn Thao Đắc Di có lặp
không các em?
Khi này học sinh sẽ dễ dàng trả lời được là: Việc dùng xô 10 lit múc nước đổ vào bể của bạn Di là lặp
- Các em có biết bạn phải xách bao nhiêu xô nước không (tức là lặp bao nhiêu lần) ?
Khi này học sinh sẽ suy nghĩ và trả lời được là: ở trường hợp a bạn sẽ phải xách
10 xô tức 10 lần vì bể 100 lit =10x10 lít; ở trường hợp b thì không biết trước bạn
Di sẽ phải xách bao nhiêu xô nước (bao nhiêu lần) vì bình chưa biết chứa được thể tích bao nhiêu lít chỉ biết là bạn sẽ dừng xách nước khi đổ đầy bể
=> Từ đây qua 2 ví dụ trên giáo viên khẳng định : việc thực hiện lại một hoặc nhiều lần 1 công việc nào đó gọi là lặp
GV hỏi lại : Vậy lặp là gì ?
Học sinh dễ dàng trả lời được : Lặp là việc thực hiện lại một hoặc nhiều lần 1
công việc nào đó
Giáo viên đưa ra khái nệm : Lặp là 1 công việc, 1 thao tác, 1 phép toán, 1 câu
lệnh….nào đó được thực hiện lại một hoặc nhiều lần
Nếu biết trước số lần lặp gọi là lặp với số lần biết trước ngược lại gọi là lặp với số lần chưa biết trước.
Câu hỏi 3 : em hãy kể tên các hiện tượng được gọi là lặp trong thực tế cuộc
sống mà em biết ?
Sau khi đã hiểu về lặp qua 2 ví dụ, học sinh sẽ dễ dàng lấy được ví dụ liên quan tới chính công việc, hoạt động hàng ngày của các em như :
- Lặp với số lần nhất định và biết trước : Đánh răng mỗi ngày hai lần ; ăn cơm mỗi ngày 2 lần tại nhà ăn…
- Lặp với số lần không xác định trước : Học cho đến khi thuộc bài, nhặt từng cọng rau cho đến khi nào xong…
2.3.2 Lệnh for do để mô tả lặp biết trước số lần:
Câu hỏi 4: Viết chương trình đưa ra màn hình các số nguyên dương từ 1 đến10
Các số được viết trên một dòng, mỗi số cách nhau 1 dấu cách
- Học sinh dễ dàng viết được như sau:
Trang 7Write (1,’ ‘);Write (2,’ ‘);Write (3,’ ‘);Write (4,’ ‘);Write (5,’ ‘);
Write (6,’ ‘);Write (7,’ ‘);Write (8,’ ‘);Write (9,’ ‘);Write (10,’ ‘);
Readln
End;
Câu hỏi 5: Từ chương trình ở câu hỏi 4 các em hãy sửa lại chương trình để thực
hiện đưa ra màn hình các số nguyên từ 1 đến 100
Lúc này giáo viên quan sát gương mặt của các học sinh trong lớp đã thấy
sự băn khoăn của nhiều em vì lí do viết nhiều tới 100 câu lệnh write, 1 số ít khác lại hăng say viết vì nghĩ rằng nhiều câu lệnh thế thì phải làm ngay cho nhanh xong
? Em nào cho biết ý tưởng để viết chương trình câu hỏi 5 Đúng như dự đoán
các em đều trả lời được rằng phải viết 100 câu lệnh write và thấy dài dòng, nhàm chán
GV: (dẫn dắt) để khắc phục sự dài dòng nhàm chán khi phải viết các câu lệnh
chương trình Ngôn ngữ lập trình Pascal cung cấp cho ta câu lệnh lặp với số lần biết trước For Do, sau đó chiếu lên màn hình đoạn câu lệnh
For i:=1 to 100 do write(i, ‘ ‘);
Khi này quan sát trên gương mặt của các em học sinh là sự nhẹ nhõm hứng khởi để được học câu lệnh mới for do
2.3.2.1 Câu lệnh for do dạng tiến:
*) Cú pháp:
For <biến đếm>:= <giá trị đầu> To <giá trị cuối> Do <câu lệnh>;
Trong đó: <biến đếm> là biến đơn, thường là nguyên
<Giá trị đầu>, <giá trị cuối> là các biểu thức cùng kiểu với biến đếm, giá trị đầu nhỏ hơn hoặc bằng giá trị cuối (nếu giá trị đầu lớn hơn giá trị cuối thì vòng lặp không thực hiện)
Ví dụ: Ta quay lại ví dụ 1 Thầy giáo dạy thể dục yêu cầu bạn Giàng A Dế chạy
10 vòng quanh sân trường
Các em coi việc thầy giáo đứng đếm (tiến) 1: bạn Dế chạy vòng thứ 1;
2: bạn Dế chạy vòng thứ 2;
………
10: bạn Dế chạy vòng thứ 10, rồi kết
thúc giống như <biến đếm> còn giá trị 1 là <giá trị đầu>, 10 là <giá trị cuối>, chạy là <câu lệnh> Việc nhắc lại lần nữa ví dụ 1 đã giúp học sinh hiểu rõ hơn
về các thành phần trong câu lệnh for…to…do từ đó học sinh cũng hình dung được phần nào về nguyên tắc hoạt động của câu lệnh
*) Nguyên tắc hoạt động:
<câu lệnh> viết sau từ khóa Do được thực hiện tuần tự, với biến đếm lần
lượt nhận các giá trị liên tiếp tăng từ <giá trị đầu> đến <giá trị cuối> ;
Lưu ý: - <biến đếm> sẽ tự động tăng giá trị nên sau từ khóa Do không được có
câu lệnh nào làm thay đổi giá trị của <biến đếm>
Trang 8- <Câu lệnh > có thể là câu lệnh đơn hoặc là câu lệnh ghép (đặt trong cặp begin…end;)
Câu hỏi 6: Cho biết giá trị của biến s bằng bao nhiêu? sau khi thực hiện đoạn
câu lệnh sau :
S:=0;
For i:=1 to 5 Do s:= s + 1 ;
a s=1 b s=2 c s =0 d s=5
Với câu hỏi 6, giáo viên trực tiếp hướng dẫn theo nguyên tắc hoạt động của câu lệnh for do dạng tiến cụ thể như sau:
Với i:=1, câu lệnh sau Do thực hiện s= s+1=0+1=1
Với i:=2, câu lệnh sau Do thực hiện s=s+1=1+1=2
Với i:=3, câu lệnh sau Do thực hiện s=s+1= 2+1=3
Với i:=4, câu lệnh sau Do thực hiện s=s+1=3+1=4
Với i:=5, câu lệnh sau Do thực hiện s=s+1 = 4+1= 5
=> Sau khi thực hiện đoạn chương trình trên s=5 (đáp án d)
Câu hỏi 7: Cho đoạn chương sau :
T:=1;
For i:=1 to 5 Do
T:=T*i;
Hãy cho biết giá trị của biến T bằng bao nhiêu sau khi thực hiện các câu lệnh trên?
a T=1 b T=120 c.T=20 d T=100
Gv gợi ý nhắc lại các em vận dụng nguyên tắc hoạt động của câu lệnh và
“chạy bộ” ứng với mỗi giá trị của i thì câu lệnh sau từ khóa Do thực hiện sẽ có một giá trị của T Đúng như dự đoán các em đã nhanh chóng tìm được giá trị của T= 120 (=1* 1* 2 * 3 * 4 * 5)
Câu hỏi 8: hãy cho biết đoạn chương trình ở câu hỏi 7 thực hiện công việc gì? Với câu hỏi này các em nhìn lại phần giấy nháp của mình ở câu hỏi 7 thì các
em hoàn toàn trả lời được là : đoạn chương trình trên thực hiện việc tính tích các
số tự nhiên từ 1 đến 5, T= 120 (=1* 1* 2 * 3 * 4 * 5)
? thao tác lặp trong câu hỏi 7 là thao tác nào và lặp bao nhiêu lần => các em
sẽ nhìn vào biểu thức và nhận ra được thao tác lặp là phép nhân (*) và lặp 5 lần
Từ câu hỏi 8, GV nhấn mạnh để mô tả thao tác đó mà được lặp đi lặp lại với số lần biết trước thì ta sử dụng câu lệnh lặp For do dạng tiến
Bài toán 1: Tính tổng S với a là số nguyên và a >2
100
1
2
1 1
1
1
a a
a a
S
- Gv đưa ra 1 vài câu hỏi nhỏ để học sinh tiếp cận gần hơn với bài toán :
(Gv liên hệ thực tế: ta coi S gống như cái thùng chứa nước, ban đầu đựng giá trị
là 1/a, mỗi số hạng 1/(a+i) cộng vào S thì giống như lượng nước trong xô đổ vào thùng)
Trang 9? chỉ ra thao tác lặp trong bài toán trên => thao tác lặp là phép +
? Sau mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu=> tăng thêm 1/(a+i) với i = 1,2, 100
? Việc tăng giá trị cho tổng S được lặp đi lặp lại bao nhiêu lần=> 100 lần
Với trả lời được 3câu hỏi trên thì các em học sinh hoàn toàn xác định được <giá trị đầu>, <giá trị cuối> và <câu lệnh> cần thực hiện trong câu lệnh for …do
- Giáo viên yêu cầu các em xem thuật toán (SGK –Tr43 ) viết hoàn chỉnh đoạn câu lệnh lặp ra giấy nháp và được kết quả như mong đợi:
s:=1/a;
for i:=1 to 100 do s = s + 1/(a+i);
- Giáo viên chiếu chương trình hoàn chỉnh và chạy chương trình cho học sinh quan sát
Program tong_1a;
Var i: byte;
S : real;
Begin
Writeln(‘Nhap so a: ’);
Readln(a);
S:=1/a;
For i:= 1 to 100 do S:= S+1/(a+i);
Writeln(‘Tong S la : ‘,S:8:3);
Readln End.
Câu hỏi 9: Ta quay trở lại ví dụ 1 ban đầu, thầy giáo yêu cầu bạn Dế chạy 10
vòng quanh sân trường Thầy không đứng đếm số vòng chạy của bạn từ 1-.10
mà thầy lại đếm số vòng chạy của bạn từ 10 về 1 có được không các em?
=> học sinh nhất trí hoàn toàn là được vì số vòng chạy lặp không đổi vẫn là 10
Giáo viên gợi mở để dạy câu lệnh lặp dạng lùi
2.3.2.2 Lệnh lặp for do dạng lùi:
*) Cú pháp:
For <biến đếm>:=<giá trị cuối> Downto <giá trị đầu> Do < câu lệnh>;
Trong đó: <biến đếm> là biến đơn, thường là nguyên
<Giá trị đầu>, <giá trị cuối> là các biểu thức cùng kiểu với biến đếm,
<giá trị cuối> lớn hơn hoặc bằng <giá trị đầu> (nếu giá trị cuối nhỏ hơn giá trị đầu thì vòng lặp không thực hiện)
Câu hỏi 10: Các em có nhận xét gì về cú pháp của câu lệnh For do dạng tiến
và dạng lùi?
Khi này học sinh sẽ dễ dàng trả lời được: đều mô tả việc lặp là <câu lệnh> sau từ
khóa Do; với số lần lặp bằng : <giá trị cuối> - <giá trị đầu>; chỉ khác biến đếm
nhận các giá trị giảm từ <giá trị cuối> về <giá trị đầu>
Trang 10GV: sau khi học sinh đã trả lời được câu hỏi 10 thì đến việc nắm nguyên tắc
hoạt động của câu lệnh for dạng lùi sẽ dễ hiểu hơn đó là: <Câu lệnh> sau từ khóa Do sẽ được thực hiện tuần tự với <biến đếm> nhận các giá trị liên tiếp giảm từ <giá trị cuối> đến <giá trị đầu>
Câu hỏi 11: Cho biết giá trị của biến s bằng bao nhiêu? sau khi thực hiện đoạn
câu lệnh sau :
S:=0;
For i:=5 downto 1 Do s:= s + 1;
a s=1 b s=2 c s =0 d s=5
Với câu hỏi 11, giáo viên trực tiếp hướng dẫn “ chạy bộ” các câu lệnh theo
nguyên tắc hoạt động của câu lệnh for do dạng lùi cụ thể như sau:
Với i:=5, câu lệnh sau Do thực hiện s= s+1=0+1=1
Với i:=4, câu lệnh sau Do thực hiện s=s+1=1+1=2
Với i:=3, câu lệnh sau Do thực hiện s=s+1= 2+1=3
Với i:=2, câu lệnh sau Do thực hiện s=s+1=3+1=4
Với i:=1, câu lệnh sau Do thực hiện s=s+1 = 4+1= 5
=> Sau khi thực hiện đoạn chương trình trên s=5 (đáp án d)
Câu hỏi 12: Cho đoạn chương trình sau :
T:=1;
For i:=5 downto 1 Do
T:=T*i;
Hãy cho biết giá trị của biến T bằng bao nhiêu sau khi thực hiện các câu lệnh trên?
a T=1 b T=120 c.T=20 d T=100
Gv gợi ý nhắc lại các em vận dụng nguyên tắc hoạt động của câu lệnh for do dạng lùi và “chạy bộ” ứng với mỗi giá trị của i thì câu lệnh sau từ khóa Do thực hiện sẽ có một giá trị của T Đúng như dự đoán các em đã nhanh chóng tìm được giá trị của T= 120 (=1* 5* 4 * 3 * 2 * 1)
Câu hỏi 13: Khi nào các em sử dụng câu lệnh lặp for do dạng lùi?
Học sinh suy nghĩ trả lời và giáo viên khẳng định lại: dùng nó khi cần mô tả một thao tác nào đó được lặp đi lặp lại với số lần biết trước chỉ khác for do dạng tiến là biến đếm nhận các giá trị liên tiếp giảm từ <giá trị cuối> đến <giá trị đầu>
- Gv yêu cầu xem thuật toán Tong_1b trong Sgk – Tr43, học sinh cũng hình dung được thuật toán và sử dụng câu lệnh for do dạng lùi để viết chương trình
giải Bài toán 1 và được chương trình mong đợi
Program tong_1b;
Var i : byte;
S : real;
Begin
Writeln(‘Nhap so a: ’);
Readln(a);