Tải bản đầy đủ (.docx) (10 trang)

De cuong on thi

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 (259.71 KB, 10 trang )

Người soạn: Nguyễn Thị Thảo
Bài 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
I.MỤC TIÊU:
1.Kỹ năng:
 Cho học sinh xác định được các hoạt động lặp với số lần chưa biết
trước trong cuộc sống, phân biệt được với các hoạt động lặp với số
lần biết trước.
 Biết nhu cầu cần có cấu trúc lặp với số lần chưa biết trước trong
ngôn ngữ lập trình
 Biết được cấu trúc và hoạt động của vòng lặp với số lần chưa biết
trước.
 Hiểu được các ví dụ sử dụng câu lệnh lặp với số lần chưa biết
trước.
 Học sinh biết lỗi lập trình càn tránh khi sử dụng câu lệnh while…
do: lặp vô hạn lần
2.Kỹ năng:
 Rèn luyện kĩ năng sử dụng các câu lệnh trong Pascal.
 Hs hiểu được hoạt động của câu lệnh while…do, sử dụng câu lệnh
while…do để giải một số bài toán đơn giản
 Biết chuyển từ thuật toán đến chương trình có sử dụng câu lệnh
while…do.
3.Thái độ:
 Nghiêm túc, ham học hỏi, chú ý nghe giảng.
 Rèn luyện tính kiên trì trong học
II. CHUẨN BỊ:
 Giáo viên: Sách giáo khoa, giáo án, máy chiếu, máy tính.
 Học sinh: Đọc tài liệu ở nhà trước khi đến lớp, sách, vở
III. PHƯƠNG PHÁP VÀ KỸ THUẬT DẠY HỌC:
1.Phương pháp:
 Đặt và giải quyết vấn đề
 Vấn đáp


2.Kỹ thuật dạy học:
 Động não
IV. TIẾN TRÌNH LÊN LỚP:
1.Kiểm tra bài củ:
 Câu hỏi:
a.Hãy nêu cú pháp của câu lệnh lặp for…do
b.Sử dụng vòng câu lệnh lặp for…to...do viết lại chương trình sau:
Program lap;
Var i: integer;
Begin
Writeln (‘ho va ten ban so 1 la: ’);
Writeln (‘ho va ten ban so 2 la: ’);


Writeln (‘ho va ten ban so 3 la: ’);
Writeln (‘ho va ten ban so 4 la: ’);
Readln;
end.
 Trả lời:
a.Cú pháp:
For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do
<câu lệnh>;
b.Chương trình viết lại có sử dụng câu lệnh lặp for…do:
Program lap;
Var i: integer;
Begin
For i := 1 to 4 do
write(‘ ho va ten ban so 1 la: ‘);
Readln;
End.

 Đặt vấn đề:
viết chương trình tính tổng các số
tự nhiên từ 1 đến 100
S = 1 + 2 + 3 + . . .+100
GV: Chúng ta sử dụng câu lệnh lặp
for…do đã học ở bài trước để thực
hiện bài toán trên là For i:=1 to 100
do s:=s+i; theo em khi sử dụng lệnh
lặp for…to…do để viết chương
trình trên thì phép cộng được lặp lại
mấy lần?
Hs: 100 lần
Gv: Như vậy đối với bài toán lặp
với số lần biết trước, ta sử sử dụng
câu lệnh lặp For…Do để viết
chương trình

GV: Bây giờ các em hãy theo dõi
u cầu sau:
Viết chương trình tính tổng n số tự
nhiên đầu tiên để ta nhận được tổng
Tn nhỏ nhất lớn hơn 1000? Theo
em phép cộng trên có biết trước số
lần lặp khơng? Có sử dụng lệnh lặp
for…to…do được khơng?
Hs: khơng biết trước số vịng lặp và
khơng thể sử dụng câu lệnh lặp
for…do
Gv: vậy đối với những bài toán lặp
với số lần chưa biết trước, sử dụng

câu lệnh gì để viết chương trình?
Chúng ta sẻ cùng nhau tìm hiểu
trong bài học hôm nay bài 8 lặp với
số lần chưa biết trước.

2. Bài mới:
Hoạt động 1: Các hoạt động lặp với số lần chưa biết trước
Hoạt động của gv và hs
Nội dung kiến thức
Gv: Các em hãy quan sát các hoạt
1.Các hoạt động lặp với số lần chưa biết
động sau và cho cô biết đâu là các
trước:
hoạt động lăp với số lần biết trước và a.
ví dụ 1 :
chưa biết trước:
•Long cứ sau 10 phút gọi cho Trang một
a) Mỗi ngày bạn A đánh răng
lần cho đến khi có người nhất máy


ngày 2 lần
b) Mỗi ngày đi tắm 1 lần.
c) Tính tổng 100 số tự nhiên đầu
tiên.
d) Vì gọi cho trang không được
nên Long quyết định cứ 10
phút gọi điện một lần cho
Trang cho đến khi nào có
người nhấc máy.

e) Nam làm bài tập cho đến khi
làm xong
Hs: các hoạt động lặp với số lần biết
trước là a, b, c
Các hoạt động lặp với số lần chưa
biết trước là d, e
Gv: nhận xét
Gv: một bạn cho cơ biết vì sao em
chọn các hoạt động d, e là hoạt động
chưa xác định được số vòng lặp và
điều kiện kết thúc vòng lặp của các
hoạt động này là gì.
Hs: ở câu d vì cứ sau 10 phút thì
Long lại gọi cho trang nên ta không
biết Long sẻ gọi bao nhiêu lần. điều
kiện kết thúc là có người bắt máy.
Hs 2: nhận xét
Gv: nhận xét
Hs: ở câu e ta không thể biết được
nam làm bài tập bao nhiêu lần vì chỉ
khi nào làm xong thì Nam mới dừng
lại
Hs2: nhận xét
Gv: nhận xét
Gv: như vật chúng ta thấy rằng trong
thực tế có rất nhiều hoạt động chúng
ta có thể biết được số lần làm nhưng
cũng có những hoạt động chúng ta
khơng thể biết được là nó sẻ diễn ra
bao nhiêu lần và hoạt động đó chỉ có

thể kết thúc dựa vào một điều kiện
xác định như ví dụ 1 câu b và d.
những hoạt động đó chính là hoạt
động lặp với số lần chưa biết trước.

ĐKKT: có người nhấc máy
• Nam làm bài tập cho đến khi làm xong
ĐKKT: làm xong bài tập
Các hoạt động lặp với số lần chưa biết
trước phụ thuộc vào một điều kiện cụ thể
và chỉ dừng lại khi điều kiện đó sai.


Một bạn có thể nêu cho cơ vài ví dụ
về hoạt động lặp với số lần chưa biết
trước mà em biết?
Hs 1: Một người phải nhập dữ liệu
vào máy tính cho tới khi nhập xong
Hs 2: Bạn A làm bài tập cho tới khi
giải được….
Gv: cho hs nhận xét
Gv: Các hoạt động lặp với số lần
chưa biết trước phụ thuộc vào cái gì
và chỉ dừng lại khi nào?
Hs: Việc lặp lại một nhóm hoạt động
với số lần chưa xác định trước phụ
thuộc vào một điều kiện cụ thể được
thỏa mãn và chỉ dừng lại khi điều
kiện không thỏa mãn
Hs 2: nhận xét

Gv: nhận xét.
Gv: gọi hs đọc vd2 trên máy
Nếu cộng lần lượt n số tự nhiên đầu
tiên (n=1,2,3,…). Ta sẽ được kết
quả:
T1 = 1
T2 = 1+2
T3 = 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?
Gv: các em hãy quan sát ví dụ sau và
cho cơ biết đây có phải là hoạt động
lặp với số lần chưa biết trước hay
khơng và điều kiện như thế nào thì
kết thúc vịng lặp?
Hs: hoạt động lặp với số lần chưa
biết trước. Điều kiện: Khi tổng Tn
nhỏ nhất lớn hơn 1000 thì kết thúc
hoạt động lặp.
Hs 2: nhận xét
Gv: nhận xét.
Gv: một bạn xác định cho cơ input và
output của bài tốn trên
Hs: Input: n số tự nhiên đầu tiên

b. ví dụ 2:
-Xác định bài toán:
Input: n số tự nhiên đầu tiên

Output: tổng Tn nhỏ nhất lớn hơn 1000
-Thuật toán:
S là tổng cần tìm
Bước 1. S  0, n  0.
Bước 2. Nếu S ≤ 1000, n  n + 1; ngược lại
chuyển tới bước 4.
Bước 3. S  S + n và quay lại bước 2.
Bước 4. In kết quả : S và n là số tự nhiên
nhỏ nhất sao cho S > 1000. Kết thúc thuật
toán.


Output: tổng Tn nhỏ nhất lớn hơn
1000
Gv: hướng dẫn hs phân tích bài tốn
để đưa ra thuật tốn
( gv phân tích: đầu tiên ta cho n= 0
và To= 0 rồi so sánh với điều kiện, ta
có 0 ≤ 1000 đúng nên tiếp tục tăng n
lên 1 đơn vị, tính tổng T1 = 0+1=
1( tức là T1 =T0 + n) so sánh với
điều kiện ta có T1 ≤ 1000 đúng nên
tiếp tục tăng n cứ như vậy cho đến
khi ta tăng đến giá trị n sao cho Tn
1+2+3+..+ n ≤ 1000 sai thì kết thúc
việt tính tổng)
Gv: kí hiệu S là tổng cần tìm gọi 1 hs
lên bảng trình bày thuật toán
Hs:
-Bước 1. S  0, n  0.

-Bước 2. Nếu S ≤ 1000, n  n + 1;
ngược lại chuyển tới bước 4.
-Bước 3. S  S + n và quay lại bước
2.
-Bước 4. In kết quả : S và n là số tự
nhiên nhỏ nhất sao cho S > 1000. Kết
thúc thuật toán.
Hs 2: nhận xét
Gv: nhận xét
Gv: hoạt động lặp được thể hiện ở
bước nào trong thuật toán trên?
Hs: bước 2 và bước 3
Gv: Để viết chương trình chỉ dẫn
máy tính thực hiện các hoạt động lặp
như trong các ví dụ trên, ta có thể sử
dụng câu lệnh có dạng lặp với số lần
chưa biết trước. để tìm hiểu về lệnh
này ta cùng nhau tìm hiểu sang phần
2 ví dụ về lệnh lặp chưa biết trước.
Hoạt động 2: ví dụ về lệnh lặp chưa biết trước
Hoạt động của gv và hs
Nội dung kiến thức
Gv giới thiệu cho học sinh về câu
2. Ví dụ về lệnh lặp với số lần chưa biết
lệnh lặp với số lần chưa biết trước:
trước:
Cú pháp:
a. Cú pháp:
while < điều kiện> do < câu lệnh>;
while < điều kiện> do < câu lệnh>;



Trong đó:
While, do: là các từ khóa.
Điều kiện: thường là một phép so
sánh
Câu lệnh: có thể là câu lệnh đơn
giản hay câu lệnh ghép.
Gv: chiếu câu hỏi lên máy:
Các câu lệnh sau có hợp lệ khơng?
Vì sao?
a) x:=10;
While x:= 10 do x= x+5;
b) x:= 5;
While x< 10 then x:= x+1;
c) s:= 0;
while s< 10 do s:= s+1;
d) s:= 0; n:= 0;
while s<= 10 do n:= n+1; s:= s+
n;
Gv gọi hs trả lời từng câu hỏi và chỉ
rõ lỗi sai:
a) sai. Điều kiện x:= 10 thừ dấu :
câu lệnh x = x+ 5 thiếu dấu :
b) sai. Từ khóa là while…do
khơng phải while…then
c) Đúng
d) Sai. Câu lệnh là câu lệnh ghép
nên phải nằm trong cặp
begin…end;

Gv: vẽ sơ đồ khối và trình bày hoạt
động của câu lệnh:

Gv: gv hướng dẫn hs chuyển từ
thuật tốn qua chương trình, chú ý

Trong đó:
While, do: là các từ khóa.
Điều kiện: thường là một phép so sánh
Câu lệnh: có thể là câu lệnh đơn giản hay
câu lệnh ghép.

b.Hoạt động:
-Sơ đồ khối:

-Hoạt động:
B1. Kiểm tra điều kiện.
B2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua
và việc thực hiện câu 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 B1
-Ví dụ 1: chương trình vd2:
Var s,n: integer;
Begin
S:= 0;
n:= 0;


chỉ rõ cách chuyển từ bước 2 và
bước 3 trên thuật toán thành câu

lệnh while…do ( xác định điều kiện,
câu lệnh)
Gv chạy chương trình passcal cho hs
theo dõi
Gv: hs đọc ví dụ 2
Gv: đây là bài tốn có hoạt động lặp
với số lần đã biết trước vậy chúng ta
xem thử với câu lệnh while…do thì
chúng ta có đưa ra được kết quả hay
không
Gv: đầu tiên cô mời một bạn cho
nêu cho cơ input và output của bài
tốn trên
Hs: input: 10 số tự nhiên đầu tiên
Output: tổng 10 số tự nhiên đầu
tiên
Hs2: nhận xét
Gv: nhận xét
Gv: bạn nào có thể nêu cho cơ ý
tưởng để giải bài tốn trên. Gv gọi
hs trả lời nếu hs chưa phát hiện thì
gv hướng dẫn để học sinh đưa ra
được ý tưởng và thuật toán
Gv: gọi hs lên bảng trình bày thuật
tốn
Hs:
Bước 1. S  0, i  0.
Bước 2. Nếu i ≤ 10, i i + 1; ngược
lại chuyển tới bước 4.
Bước 3. S  S + i và quay lại bước 2.

Bước 4. In kết quả S và kết thúc
thuật toán.
Hs: nhận xét
Gv: gọi hs lên viết đoạn chương
trình gv hướng dẫn cho hs và cả lớp
cùng biết
Hs:
S := 0;
i:= 0;
While i<=10 do
begin

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);
readln;
end.
-Ví dụ 2: viết đoạn chương trình tính tổng
10 số tự nhiên đầu tiên sử dụng lệnh lặp với
số lần chưa biết trước while…do
• Xác định bài tốn:
input: 10 số tự nhiên đầu tiên
Output: tổng 10 số tự nhiên đầu
• Thuật tốn:
Bước 1. S  0, i 0.

Bước 2. Nếu i ≤ 10, i  i + 1; ngược lại
chuyển tới bước 4.
Bước 3. S  S + i và quay lại bước 2.
Bước 4. In kết quả S và kết thúc thuật
tốn.
• Đoạn chương trình:
S := 0;
i:= 0;
While i<=10 do
begin
i:= i+ 1;
S:= s+ i;
End;


i:= i+ 1;
S:= s+ i;
End;
Hs 2: nhận xét
Gv: nhận xét, giải thích lại
Gv: ở ví dụ trên ta có thể sử dụng
câu lệnh lặp với số lần biết trước
for..to..do để giải và ta có đoạn
chương trình như sau: (gv chiếu
đoạn chương trình sử dụng câu lệnh
for…do)
S := 0;
i:= 0;
For i:=1 to 10 do
begin

i:= i+ 1;
S:= s+ i;
End;
Gv: gv chiếu 2 đoạn chương trình
lên máy, như vậy chúng ta có 2 đoạn
chương trình thể hiện bài tốn trên,
gv cùng học sinh chạy thử 2 chương
trình bằng tay rồi so sánh kết quả và
rút ra nhận xét
Hs: kết quả giống nhau
Gv: Có thể sử dụng câu lệnh
while…do thay cho câu lệnh for…
do trong một số trường hợp
Hoạt động 3: Lặp vô hạn lần- lỗi lập trình cần tránh
Hoạt động của gv và học sinh
Nội dung kiến thức
Gv: khi sử dụng câu lệnh lặp
3. Lặp vơ hạn lần lỗi lập trình cần tránh:
với số lần chưa biết chúng ta sẻ gặp
Ví dụ:
những trường hợp vịng lặp ln
Var a: integer;
được thực hiện và khơng thể dừng lại Begin
được, vậy vì sao lại có tình trạng đó
a:= 5;
và chúng ta cần làm gì để tránh. Cơ
cùng các em sẻ tìm hiểu sang phần 3.
while a< 6 do writeln(‘A’);
lặp vơ hạn lần- lỗi lập trình cần
end.

tránh.
Khi thực hiện vòng lặp, điều kiện trong câu
Gv: Đưa ra ví dụ trong Sgk
lệnh phải được thay đổi để sớm hay muộn
Var a: integer;
giá trị của điều kiện được chuyển từ đúng
Begin
sang sai. Chỉ như thế chương trình mới
a:= 5;
khơng "rơi" vào những "vịng lặp vơ tận".


while a< 6 do writeln(‘A’);
end.
Gv: các em hãy quan sát biến a được
sử dụng trong chương trình và cho cơ
biết a có thay đổi hay khơng?
Hs: khơng
Gv: vậy bạn nào có thể cho biết
chương trình này lặp bao nhiêu lần?
Vì sao?
Hs: chương trình thực hiện rất nhiều
lần vì a ln bằng 5 nên điều kện
ln đúng.
Gv: ở chương trình trên các em thấy
biến a luôn bằng 5 nên điều kiện a< 6
luôn đúng nên lệnh writeln(‘A’);
luôn được thực hiện. Do vậy khi thực
hiện vòng lặp điều kiện trong câu
lệnh phải được thay đổi để sớm hay

muộn giá trị của điều kiện được
chuyển từ đúng sang sai. Như vậy
mới tránh được tình trạng “vịng lặp
vơ tận”. Đây là một lưu ý mà các em
phải nhớ.
Hs: Chú ý nghe giảng và ghi chép
3.Củng cố:
Gv gọi học sinh phát biểu lại nội dung đã học được

Cú pháp while < điều kiện> do <câu lệnh>;

Hoạt động của câu lệnh lặp
B1. Kiểm tra điều kiện.
B2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện
câu
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 B1

Khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay
đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai.
Chỉ như thế chương trình mới khơng "rơi" vào những "vịng lặp vơ tận".
Cho hs trả lời câu hỏi trắc nghiệm:
Câu 1: Trong các hoạt động dưới đây hoạt động nào là hoạt động với số
lần chưa biết trước?
a. Tính tổng các số tự nhiên từ 1 đến 10
b. Nhập 20 số tự nhiên liên tiếp từ bàn phím
c. Mỗi ngày đánh răng 2 lần.


d. Nhập vào 1 số cho đến khi số nhập vào là số chẵn thì dừng.

Câu 2: Đoạn lệnh sau đây cho kết quả là gì?
s:= 1;
while s< 10 do
begin
writeln(s);
s:= s+ 1;
end;
a. In ra các số từ 1 đến 9
b. In ra các số từ 1 đến 10
c. In ra các số 1
d. Không phương án nào đúng
Câu 3:
Var a: integer;
Begin
i := 1; s:= 0;
while i < 6 do s:= s+ i;
end.
Chương trình trên lặp bao nhiêu lần? Vì sao?
a.vịng lặp vô tận
b.6 lần
c.1 lần
d.Không phương án nào đúng
Ghi nhớ: - Các hoạt động lặp với số lần chưa biết trước phụ thuộc vào
một điều kiện cụ thể và chỉ dừng lại khi điều kiện đó sai.
- Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:
While <câu lệnh> do <câu lệnh>;
4.Dặn dị:
• Về nhà học thuộc bài.
• Làm bài tập 1,2,3,4 sgk
• Tìm hiểu thêm một số ví dụ về lập trình với số lần chưa biết trước

• Xem trước bài thực hành.
V. RÚT KINH NGHIỆM:



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×