Phần II: Phần tự luận.đề 1
Bài 8: Bài 8: LÊNH LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
C. Tiến trình tiết dạy
II. Kiểm tra bài cũ
HS 1 :Nêu cấu chúc câu lệnh lặp trong pascal III. Dạy bài mới :
Bài tập:
1. Cho một vài ví dụ về hoạt động đợc thực hiện lặp lại trong cuộc sống hàng ngày!
2. Hãy mô tả các bớc của thuật toán để vẽ hình ... a) và ... b) sau đây:
H×nh ...a) H×nh ... b)
Thao tác lặp cần thực hiện để có các hình trên và điều kiện để kết thúc thao tác
đó là gì
3. Hãy cho biết tác dụng của câu lệnh lặp!
4. Chúng ta nói rằng khi thực hiện các hoạt động lặp, chơng trình kiểm tra một
điều kiện. Với lệnh lặp
for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
của Pascal, điều kiện cần phải kiểm tra là gì?
Giải:
1. Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Dới đây là một số ví dụ:
a) Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục.
b) Hàng ngày (hoặc hàng tuần) bác lái xe khách lái xe để chuyên chở hành khách xuất phát từ một thời gian và địa điểm nhất định và đi theo một tuyến đờng đã đợc xác định trớc.
c) Mỗi lần đợc khởi động, máy tính của em sẽ thực hiện cùng các hoạt động tự kiểm tra các thành phần máy tính, sau đó khởi động hệ điều hành theo một trình tự đã đợc quy định trớc.
2. a) Có thể thấy, để vẽ đợc hình ...a), thao tác chính cần thực hiện là vẽ nửa đờng tròn theo hớng nhất định. Ta gọi thao tác vẽ nửa đờng tròn theo hớng A là vẽ nửa
đờng tròn có bán kính 1 đơn vị bắt đầu từ một điểm xác định, đờng kính nối
điểm đầu và điểm cuối của nửa đờng tròn vuông góc với hớng A và nửa đờng tròn “cong về hớng A” (hình...). Ta chỉ xét A là các hớng lên trên, xuống dới, sang trái, sang phải.
Với các hớng, ta định nghĩa phép toán sau: lên trên + 1 = sang trái, sang trái +1
= xuống dới, xuống dới +1 = sang phải, sang phải +1 = lên trên. Khi đó có thể mô tả các bớc của thuật toán để vẽ hình ... a) nh sau:
H×nh ... H×nh ...
Có thể mô tả các bớc của thuật toán để vẽ hình ... a) nh sau:
Bớc 1. Xác định điểm bắt đầu vẽ là X.
Bớc 2. Đặt i = 0 và đặt hớng = lên trên.
Bớc 3. Vẽ nửa đờng tròn theo hớng đã đặt.
Bíc 4. i = i + 1.
Bớc 5. Nếu i > 4, chuyển bớc 6; ngợc lại, đặt hớng = hớng + 1 và quay lại bớc 3.
Bớc 6. Kết thúc thuật toán.
Lu ý. Khi trình bày thuật toán lần đầu tiên cho học sinh không nên định nghĩa các phép toán với các hớng mà chỉ nên liệt kê đủ bốn hớng trong thuật toán.
b) Thuật toán tơng tự nh trên. Thao tác chính cần lặp lại là vẽ hình vuông. Tại mỗi bớc, giữ nguyên tâm hình vuông và thay đổi hớng vẽ một góc 30o.
3. Câu lệnh lặp có tác dụng làm đơn giản và giảm nhẹ công sức của ngời viết ch-
ơng trình!
4. Chúng ta nói rằng khi thực hiện các hoạt động lặp, chơng trình kiểm tra một
điều kiện. Với lệnh lặp
for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
của Pascal, điều kiện cần phải kiểm tra chính là giá trị của biến đếm lớn hơn giá
trị cuối. Nếu điều kiện không đợc thỏa mãn, câu lệnh đợc tiếp tục thực hiện;
ngợc lại, chuyển sang câu lệnh tiếp theo trong chơng trình.
---
Ngày soạn : Ngày dạy :
TuÇn 20: TiÕt39
Bài tập
A. Mục tiêu :
•Biết nhu cầu cần có cấu trúc lặp trong ngôn ngữ lập trình.
•Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần.
•Hiểu hoạt động của câu lệnh với số lần biết trước for...do trong Pascal.
•Viết đúng được lệnh for...do trong một số tình huống đơn giản.
•Hiểu lệnh ghép trong Pascal
•Thái độ nghiêm túc cẩn thận.
B. Chuẩn bị :
1. Giáo viên : - SGK, SGV, tài liệu, Giáo án - Đồ dùng dạy học...
2. Học sinh : - Đọc trớc bài
- SGK, Đồ dùng học tập...
C. Tiến trình tiết dạy : I. ổn định tổ chức lớp :
- Kiển tra sĩ số :
8A : ……. 8B :……. 8C :…….. 9A : ……. 9B :……. 9C :……..
- ổn định trật tự : II. Kiểm tra bài cũ :
HS 1 :Nêu cấu chúc câu lệnh lặp trong pascal III. Dạy bài mới :
Bài tập:
5. Chơng trình Pascal sau đây thực hiện hoạt động nào?
var i: integer;
begin
for i:=1 to 1000 do;
6.end.Hãy mô tả thuật toán để tính tổng sau đây (n là số tự nhiên đợc nhập vào từ bàn phÝm):
A = 11.3+21.4 +31.5+... ( 1+1) n
7. Các câu lệnh Pascal có hợp lệ không, vì sao?n
a) for i:=100 to 1 do writeln(’A’);
b) for i:=1.5 to 10.5 do writeln(’A’);
c)
d) for i:=1 to 10 do; writeln(’A’);
e) var x: real; for x:=1 to 10 do writeln(’A’);
8. Một số ngôn ngữ lập trình, ví dụ Pascal, không có sẵn hàm tính lũy thừa. Hãy mô tả thuật toán và sử dụng câu lệnh lặp với số lần xác định trớc để viết chơng trình Pascal tính lũy thừa bậc n của số nguyên X.
9. Viết chơng trình Pascal nhập n số nguyên từ bàn phím và ghi ra màn hình số lớn nhất trong các số đó. Số n cũng đợc nhập vào từ bàn phím. (Xem mô tả
thuật toán trong Ví dụ 6, Bài 5.)
10.Viết chơng trình Pascal nhập n số nguyên từ bàn phím và ghi ra màn hình số các số dơng trong các số đó. Số n cũng đợc nhập vào từ bàn phím. (Xem Bài tập 5a, Bài 5.)
Giải:
5. Tuy có vòng lặp 1000 lần, nhng chơng trình Pascal nói trên không thực hiện bất kì một hoạt động nào. Tuy nhiên đây vẫn là câu lệnh hợp lệ.
6. Thuật toán tính tổng
A = 11.3+21.4+31.5+... ( 1+1) n n
Bớc 1. Gán A ← 0, i ← 1.
Bíc 2. A ← i i( 1+2) . Bíc 3. i ← i + 1.
Bớc 4. Nếu i ≤ n, quay lại bớc 2.
Bớc 5. Ghi kết quả A và kết thúc thuật toán.
7. Trừ d), tất cả các câu lệnh đều không hợp lệ: a) Giá trị đầu phải nhỏ hơn giá trị cuối; b) Các giá trị đầu và giá trị cuối phải là số nguyên; c) Thiếu dấu hai chấm khi gán giá trị đầu; d) Thừa dấu chấm phảy thứ nhất, nếu nh ta muốn lặp lại câu lệnh writeln(’A’)mời lần, ngợc lại câu lệnh là hợp lệ; e) Biến x đã đợc khai báo nh là biến có dữ liệu kiểu số thực và vì thế không thể dùng để xác định giá trị
đầu và giá trị cuối trong câu lệnh lặp.
8. Thuật toán:
Bớc 1. Nhập các số n và x.
Bớc 2. A ← 1, i ← 0 (A là biến lu lũy thừa bậc n của x).
Bíc 3. i←i + 1, A ← A.x.
Bớc 4. Nếu i < n, quay lại bớc 3.
Bớc 5. Thông báo kết quả A là lũy thừa bậc n của x và kết thúc thuật toán.
Chơng trình Pascal có thể nh sau:
var n,i,x: integer; a: longint;
begin
write('Nhap x='); readln(x);
write('Nhap n='); readln(n);
A:=1;
for i:=1 to n do A:=A*X;
writeln(x,' mu ',n,' bang ',A);
9.end.Thuật toán:
Bíc 1. NhËp sè n.
---
Bớc 2. A← −32768 (gán số nhỏ nhất có thể trong các số kiểu nguyên cho A), i←1.
Bớc 3. Nhập số thứ i và gán giá trị đó vào biến A.
Bíc 4. NÕu Max < A, Max ← A.
Bíc 5. i←i + 1.
Bớc 6. Nếu i ≤ n, quay lại bớc 3.
Bớc 7. Thông báo kết quả Max là số lớn nhất và kết thúc thuật toán.
Chơng trình Pascal có thể nh sau:
uses crt;
var n,i,Max,A: integer;
begin clrscr;
write('Nhap N='); readln(n);
Max:=-32768;
for i:=1 to n do
begin write('Nhap so thu ',i,':'); readln(A);
if Max<A then Max:=A end;
writeln('So lon nhat: ',Max);
end.Lu ý. Trong chơng trình trên chúng ta chỉ sử dụng hai biến A và Max để giải bài toán. Một cách tự nhiên, để nhập n số chúng ta cần tới n biến. Tuy nhiên, ở đây việc xử lí các giá trị trong dãy số có thể thực hiện bằng cách chỉ cần so sánh các giá trị đã đợc nhập vào, do đó chúng ta chỉ cần một biến để lu lần lợt các giá trị nhập vào là đủ. Một cách giải quyết khác là sử dụng biến mảng (xem Bài tập 6, Bài 9).
10.Lời giải bài này tơng tự nh lời giải của Bài 9 ở trên. Xem thuật toán trong lời giải Bài tập 5a, Bài 5. Chơng trình Pascal có thể nh sau:
uses crt;
var n,i,SoDuong,A: integer;
begin clrscr;
write('Nhap N='); readln(n);
if n>0 then begin
SoDuong:=0;
for i:=1 to n do
begin write('Nhap so thu ',i,':'); readln(A);
if A>0 then SoDuong:=SoDuong+1 end;
writeln('So cac so duong = ',SoDuong) end
else writeln('n phai > 0!');
end.
Ngày soạn : Ngày dạy :
TuÇn 20: TiÕt40
Bài tập
A. Mục tiêu :
•Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần.
•Hiểu hoạt động của câu lệnh với số lần biết trước for...do trong Pascal.
•Viết đúng được lệnh for...do trong một số tình huống đơn giản.
•Hiểu lệnh ghép trong Pascal B. Chuẩn bị :
1. Giáo viên : - SGK, SGV, tài liệu, Giáo án - Đồ dùng dạy học...
2. Học sinh : - Đọc trớc bài
- SGK, Đồ dùng học tập...
C. Tiến trình tiết dạy : I. ổn định tổ chức lớp :
- Kiển tra sĩ số :
8A : ……. 8B :……. 8C :…….. 9A : ……. 9B :……. 9C :……..
- ổn định trật tự : II. Kiểm tra bài cũ :
HS 1 :Nêu cấu chúc câu lệnh lặp trong pascal III. Dạy bài mới :
Bài tập:
Bài 2: SGK (T60)
- Câu lệnh lặp có tác dụng chỉ dẫn cho máy tính thực hiện lặp lại một câu lệnh hay một nhóm câu lệnh với một số lần nhất định.
- Câu lệnh lặp làm giảm nhẹ công sức của ngời viết chơng trình.