GV nhấn mạnh toàn bộ GV tổ chức cho HS hoạt động theo nhóm làm BT 5 SGK – 61 GV chốt lại đáp án: 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[r]
Trang 1Tuần 22
Ngày soạn: /02/09
Ngày dạy:
Tiết 43: Câu lệnh lặp
A Mục tiêu:
- Biết được cấu trúc lặp được sử dụng để hướng dẫn cho máy tính thực hiện lặp lại một công việc nào đó một số lần
- Biết nhu cầu cần có cấu trúc lặp trong NNLT
- Có kĩ năng đọc và tìm hiểu chương trình trong các ví dụ
B Chuẩn bị:
- Thầy: Hình ảnh
- HS: Thực hiện theo HD ở tiết 42
C Tiến trình:
1 ổn định: KTSS, tư cách HS
2 Kiểm tra bài cũ:
HS1: Viết câu lệnh theo yêu cầu: Nhập điểm kiểm tra, nếu điểm nhỏ hơn 5 thì hiển thị dòng chữ: “Ban can co gang”
HS2: Cho biết kết quả việc thực hiện chương tình sau:
Uses crt;
Begin
Clrscr;
Writeln(‘O”); delay(300);
Writeln(‘O”); delay(300);
Writeln(‘O”); delay(300); 20 lần
Writeln(‘O”); delay(300);
End.
HS khác NX, GV NX chung và cho điểm
GV đặt vấn đề: Với chương trình trên, nếu viết đi viết lại 20 lần lệnh Writeln(‘O”); delay(300);
thì rất phức tạp và mất thời gian Vậy có cách nào khác ngắn hơn, đơn giản hơn, khoa học hơn để viết chương trình trên được không?
3 Bài mới:
GV: Đưa ra các ví dụ về công việc phải
thực hiện lặp lại hàng ngày như SGK
? Trong các ví dụ trên, công việc nào được
lặp lại với số lần biết trước, công việc nào
được lặp lại với số lần không xác định?
1 Các công việc phải thực hiện nhiều lần:
VD:
- Đánh răng mỗi ngày hai lần
- Mùa hè, mỗi ngày tắm một lần
Trang 2HS: + Đánh răng mỗi ngày hai lần; Mùa
hè, mỗi ngày tắm một lần là các công việc
được lặp lại với số lần biết trước
+ Học cho đến khi thuộc bài; Nhặt từng
cọng rau cho đến khi xong.là công việc
được lặp lại với số lần không xác định
GV chốt lại
GV: Trong khi viết chương trình, để chỉ
dẫn cho MT thực hiện đúng công việc phải
lặp lại nhiều lần, người lập trình phải làm
gì để giảm nhẹ công việc viết chương
trình?
GV giới thiệu câu lệnh lặp
? Đọc ví dụ 1 (SGK – 56)
GV đưa ra hình vẽ 3 hình vuông
HS quan sát và nhận xét về 3 hình vuông
trên
HS: 3 hình vuông bằng nhau và mối hình
là ảnh dịch chuyển sang trái 2 đơn vị của
hình kia
? Thao tác gì được lặp lại trong ví dụ 1?
HS: Thao tác vẽ hình vuông lặp lại 3 lần
HS đọc và tham khảo thuật toán của phép
vẽ 3 hình vuông trên và phân tích thuật
toán
? Nêu cách vẽ một hình vuông?
HS: bốn lần thao tác vẽ một đoạn thẳng
bằng nhau
HS hoạt động theo nhóm thảo luận để nêu
thuật toán mô tả các bước vẽ hình vuông
Đại diện nhóm trả lời
GV lưu ý: Biến k được sử dụng như biến
đếm để ghi lại số cạnh đã vẽ được.
GV đưa ra tiếp VD 2 (SGK – 57)
? Làm thế nào để tính được S?
HS: có thể có nhiều cách
GV nêu thuật toán tính tổng của một trăm
số tự nhiên đầu tiên
? Các hoạt động của việc tính tổng này cso
gì đặc biệt?
HS: Các hoạt động này giống nhau là cùng
thực hiện phép cộng: kết quả cảu hoạt
động trước là dữ liệu vào của hoạt động
- Học cho đến khi thuộc bài
- Nhặt từng cọng rau cho đến khi xong
2 Câu lệnh lặp – một lệnh thay cho nhiều lệnh:
Ví dụ 1 (SGK – 56)
- Thuật toán vẽ 3 hình vuông bằng nhau SGK – 56
- Thuật toán mô tả các bước để vẽ hình vuông:
B1: k ← 0 (k là số đoạn thẳng đã vẽ được) B2: k ← k +1 Vẽ đoạn thẳng 1 đơn vị độ dài và quay thước 900 sang phải
B3: Nếu k < 4 thì trở lại B2 Ngược lại, kết thúc thuật toán
Ví dụ 2 : SGK – 57
* Mọi NNLT đều có cách để chỉ thị cho
MT thực hiện cấu trúc lặp với một câu
Trang 3tiếp theo.
GV NX và Nhấn mạnh: Cách mô tả các
hoạt động lặp trong thuật toán nhơ trong 2
VD trên được gọi là cấu trúc lặp
lệnh Đó là câu lệnh lặp.
4 Củng cố:
GV nhấn mạnh các nội dung cơ bản đã truyền đạt trong tiết học
HS trả lời câu hỏi 1 (SGK – 60)
? Cấu trúc lặp được sử dụng để làm gì?
HS khác NX và bổ sung, GV chốt lại
5 Hướng dẫn về nhà:
- Xem lại bài, hoàn thiện câu 1 (SGK – 60)
- Nghiên cứu trước phần 3, 4 cảu bài; giờ sau học tiếp
Tuần 22
Ngày soạn: /02/09
Ngày dạy:
Tiết 44: Câu lệnh lặp (tiếp)
A Mục tiêu:
- Hiểu hoạt động của câu lệnh với số lần biết trước for – do trong NN Pascal
- Hiểu được lệnh ghép trong Pascal
- Có kĩ năng đọc và tìm hiểu chương trình trong các ví dụ
- Viết được câu lệnh lặp for – do đơn giản.
B Chuẩn bị:
- Thầy: Bảng phụ
- HS: Thực hiện theo HD ở tiết 43
C Tiến trình:
1 ổn định: KTSS, tư cách HS
2 Kiểm tra bài cũ:
HS1: Trả lời câu hỏi 1 (SGK – 60) Cấu trúc lặp được dùng để làm gì?
HS2: Viết lại cú pháp của câu lệnh dạng thiếu và dạng đầy đủ?
HS khác NX, GVNX chung và cho điểm
3 Bài mới:
GV nhấn mạnh vai trò của việc sử dụng câu
trúc lặp trong quá trình lập trình
GV giới thiệu câu lệnh lặp trong Pascal
GV giả thích ý nghĩa của các thành phần
1
2
3 Ví dụ về câu lệnh lặp:
Câu lệnh lặp đơn giản nhất trong Pascal có dạng:
For <biến đếm>:= < giá trị đầu> to <giá tị
Trang 4trong câu lệnh
- for, to, do: là các từ khóa
- biến đếm: là biến đơn có kiểu
nguyên
- Giá trị đầu và giá trị cuối: là các
giá trị nguyên Và giá trị cuối phải
lớn hơn giá trị đầu
GV: Khi gặp câu lệnh lặp trên, câu lệnh
được thực hiện bắt đầu với giá trị biến đếm
bằng giá trị đầu Sau đó giá trị biến đếm
tăng dần một đơn vị từ giá trị đầu đến giá
trị cuối và câu lệnh được thực hiện mỗi lần
tăng biến đếm cho đến khi biến đếm vượt
quá giá trị cuối thì kết thúc
GV đưa ra ví dụ 3 (SGK – 58)
? Giải thích ý nghĩa các câu lệnh trong CT?
HS trả lời, GV nhấn mạnh
GV tiếp tục đưa ra CT mô phỏng quả trứng
rơi
Uses crt;
Begin
Clrscr;
Writeln(‘O”); delay(100);
Writeln(‘O”); delay(100);
Writeln(‘O”); delay(100); 20
lần
Writeln(‘O”); delay(100);
End.
HS quan sát
? Trong chương trình trên, câu lệnh
writeln('O'); delay(100) được viết lặp lại bao
nhiêu lần?
HS: 20 lần
? Em thấy thế nào nếu cần viết lặp lại lệnh
đó tới vài trăm lần hoặc vài nghìn lần?
HS: quá vất vả, có thể không thực hiện
được
GV đưa ra VD 4 – SGk – 58
HS quan sát và so sánh 2 CT
? Nêu ý nghĩa của câu lệnh trong CT ở VD
4?
GV giới thiệu câu lệnh
cuối> do <câu lệnh>;
Trong đó:
- for, to, do: là các từ khóa
- biến đếm: là biến đơn có kiểu
nguyên
- Giá trị đầu và giá trị cuối: là các
giá trị nguyên Và giá trị cuối
phải lớn hơn giá trị đầu.
Ví dụ 3: SGK – 58
Chương trình sau sẽ in ra màn hình thứ tự lần lặp:
program Lap;
var i: Integer;
begin for i := 1 to 10 do
writeln('Day la lan lap thu ',i);
Readln
end
Ví dụ 4: SGK – 58
Uses crt;
Var i: integer;
begin
Clrscr;
for i:=1 to 20 do begin writeln('O'); delay(100) end; Readln
end.
Lưu ý : Trong ví dụ 4, các câu lệnh đơn
giản writeln('O') và delay(100) được đặt trong hai từ khoá begin và end để tạo thành một câu lệnh ghép trong Pascal Từ đây về
Trang 5begin writeln('O'); delay(100) end;
Các câu lệnh đơn giản được nằm trong hai
từ khóa Begin và end được gọi là câu lệnh
ghép trong Pascal Vậy câu lệnh có thể có
mấy loại?
HS: 2 loại (câu lệnh đơn và câu lệnh ghép)
? Qua VD3 và $ em thấy câu lệnh lặp có
tác dụng gì?
HS: làm giảm nhẹ công sức viết CT
GV đưa ra VD5
HS quan sát và NX về cách khai báo biến
HS: có thêm biến mới longint
GV: longint cũng là kiểu số nguyên nhưng
có thể lưu các số nguyên trong phạm vi từ
-2 31 đến 2 31 – 1 Thường sử dụng biến này
trong TH số có gí trị lớn.
? Hãy nêu ý nghĩa câu lênh lặp trong CT?
HS thực hiện
GV: Giải thích lệnh gán giá trị 0 cho S để
đảm bảo tính chính xác của kết quả, đề
phòng trong các CT dài, rất có thể trước đó
nó đã được gán một giá trị nào đó khác 0.
GV giới thiệu công thức tính N!
N! = 1.2.3 N
? Tính 5!; 6!?
Hai HS tính
GV: Việc tính N! với N từ 10 trở lên không
đơn giản, tuy nhiên MT có thể làm được
việc này không khó khăn
HS thỏa luận nhóm nghiên cứu tìm hiểu CT
trong VD 6 _ SGK – 59 theo yêu cầu:
? Nhận xét khai báo biến
? ý nghĩa câu lệnh
Đại diện các nhóm trả lời
GV lưu ý việc gán giá trị cho p và tác dụng
của câu lệnh lặp
sau, khi nói câu lệnh, ta có thể hiểu đó là
câu lệnh đơn hoặc câu lệnh ghép
4 Tính tổng và tích bằng câu lệnh lặp:
Ví dụ 5: SGK – 59
Chương trình sau đây sẽ tính tổng của N số
tự nhiên đầu tiên, với N là số tự nhiên
được nhập vào từ bàn phím (xem ví dụ 2)
program Tinh_tong;
var N,i: Integer;
S: longint;
begin
write('Nhap so N = '); readln(N);
S:=0;
for i := 1 to N do S:=S+i;
writeln('Tong cua ',N,' so tu nhien dau tien S = ',S);
end
* Lưu ý: SGK - 59
Ví dụ 6: SGK – 59
Ta kí hiệu N! là tích N số tự nhiên đầu
tiên
N! = 1.2.3 N
Dưới đây là chương trình tính N! với N là
số tự nhiên được nhập vào từ bàn phím Chương trình sử dụng một câu lệnh lặp
for…do:
program Tinh_Giai_thua;
var N,i: Integer;
P: longint;
begin
write('N = '); readln(N);
P:=1;
for i:=1 to N do P:=P*i;
writeln(N,'! = ',P);
end
* Lưu ý: SGK – 60
* Ghi nhớ: SGK – 60
4 Củng cố:
? Nêu các kiến thức cơ bản đã nắm được trong tiết học?
Trang 6HS lần lượt trả lời GV nhấn mạnh toàn bộ
GV tổ chức cho HS hoạt động theo nhóm làm BT 5 (SGK – 61)
GV chốt lại đáp án: 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
5 Hướng dẫn về nhà:
- Xem lại toàn bộ bài, làm tất cả các BT cuối bài trong SGK – 60, 61
- Ghi nhớ câu lệnh lặp, Nghiên cứu trước bài TH 5, giờ sau lên phòng máy TH
Tuần 23
Ngày soạn: 10/02/09
Ngày dạy:
Tiết 45: Bài thực hành 5
Sử dụng lệnh lặp for do
A Mục tiêu:
- Viết chương trình Pascal có câu lệnh lặp for do
- Tiếp tục nâng cao kĩ năng đọc hiểu chương trình
Trang 7- Rèn ý thức làm việc theo nhóm nghiêm túc, hiệu quả.
B Chuẩn bị:
- Thầy: Phòng máy + nội dung TH
- HS: Thực hiện theo HD ở tiết 44
C Tiến trình:
1 ổn định: KTSS, tư cách HS
2 KIểm tra bài cũ:
Kết hợp với thời gian TH
3 Bài mới:
GV tổ chức cho HS thưc hành theo nhóm với nội dung sau
Nội dung thực hành:
Bài 1: Viết chương trình in ra màn hình bảng nhân của một số từ 1 đến 9, số được nhập
từ bàn phím và dừng màn hình để có thể quan sát kết quả.
a, Gõ chương trình sau:
Uses crt;
Var N, i: integer;
Begin
Clrscr;
Write(‘Nhap so N = ‘); readln(N);
Writeln;
Writeln(‘Bang nhan ‘, N);
Writeln;
For i:= 1 to 10 do Writeln(N, ‘ x ‘, i:2, ‘ = ‘, N*i:3);
Readln
End.
b, Tìm hiểu ý nghĩa của các câu lệnh trong chươgn trình, dịch chương trình và sửa lỗi, nếu có
c, Chạy chương trình với các giá trị nhập vào lần lượt bằng 1 2, , 10 Quan sát kết quả nhận được trên màn hình
Bài 2: Chỉnh sửa chương trình để làm đẹp kết quả trên màn hình
? Kết quả của CT nhận được trong bài 1 có nhược điểm gì?
HS quan sát và trả lời
GV chốt lại 2 nhược điểm sau:
- Các hàng kết quả quá sát nhau nên khó đọc
- Các hàng kết quả không được cân đối với hàng tiêu đề
GV đưa ra cách sửa, HS thực hiện
a, Chỉnh sửa câu lệnh lặp của CT như sau:
for i:= 1 to 10 do
Begin
GotoXY(5, WhereY); writeln(N, ‘ x ‘, i:2, ‘ = ‘, N*i:3);
Writeln
End;
* Lưu ý: SGK - 63
Trang 8b, Dịch và chạy chương trình với các giá trị gõ vào từ bàn phím Quan sát kết quả nhận được trên màn hình
GV đi kiểm tra các nhóm TH và căn cứ kết quả TH của các nhóm GV lấy điểm 15’
4 Củng cố:
GV NX ý thức TH của các nhóm, rút kinh nghiệm cho các nhóm làm việc chưa hiệu quả, chưa tự giác
5 Hướng dẫn về nhà:
- Xem lại nội dung các phần đã thực hành
- Nghiên cứu trước các phần còn lại trong SGK – 63, 64; giờ sau lên phòng máy TH tiếp
***************************************
Tuần 23
Ngày soạn: 12/02/09
Ngày dạy:
Tiết 46: Bài thực hành 5
Sử dụng lệnh lặp for do (tiếp)
A Mục tiêu:
HS tiếp tục được củng cố:
- Viết chương trình Pascal có câu lệnh lặp for do
- Tiếp tục nâng cao kĩ năng đọc hiểu chương trình
- Rèn ý thức làm việc theo nhóm nghiêm túc, hiệu quả
B Chuẩn bị:
- Thầy: Phòng máy + nội dung TH
- HS: Thực hiện theo HD ở tiết 45
C Tiến trình:
1 ổn định: KTSS, tư cách HS
2 KIểm tra bài cũ:
Kết hợp với thời gian TH
3 Bài mới:
GV tổ chức cho HS thưc hành theo nhóm với nội dung sau
Nội dung thực hành:
Bài 3: SGK – 64
a, Tìm hiểu chương trình sau
Program Tao_bang;
Uses crt;
Var
i: byte; { chi so cua hang}
Trang 9j: byte; { chi so cua cot}
Begin
Clrscr; { Xoa man hinh}
For i:= 0 to 9 do { Viet theo tung hang}
Begin For j:=0 to 9 do { viet theo tung cot tren moi hang}
Write(10*i+j :4); {viet cac so ij ra man hinh}
Writeln; { xuong hang moi}
End; {xong hang thu i}
Readln {dung chuong trinh de xem ket qua}
End.
b, Gõ và chạy chương trình, quan sát kết quả trên màn hình Sử dụng thêm các câu lệnh GotoXY(a, b) để điều chỉnh (một cách tương đối) bảng kết quả ra giữa màn hình
GV đi kiểm tra các nhóm thực hành, uốn nắn và hướng dẫn
GV cho HS tham khảo bài đọc thêm 1: Tính gần đúng số Pi (SGK – 65)
4 Củng cố:
? Qua 2 tiết thực hành bài thực hành 5, em nắm thêm được những kiến thức gì?
HS trả lời, GV chốt lại theo phần Tổng kết cuối bài thực hành (SGK – 65)
Một số HS đọc lại phần Tổng kết
5 Hướng dẫn về nhà:
- Xem lại các nội dung đã được TH trong 2 tiết 45 và 46
- Ghi nhớ phần Tổng kết (SGK – 65)
- Ôn tập lại bài “ Câu lệnh lặp”, một số Bài tập trong SGK về câu lệnh lặp
Trang 10Tuần 24
Ngày soạn: 18/02/09
Ngày dạy:
Tiết 47: Bài tập
A Mục tiêu:
- HS được củng cố việc sử dụng câu lệnh lặp For do để viết chương trình Pascal
- Rèn kĩ năng viết chương trình
- Rèn ý thức hoạt động cá nhân và tập thể khoa học và sáng tạo, hiệu quả
B Chuẩn bị:
- Thầy: Bảng phụ và một số bài tập cơ bản
- HS: Thực hiện theo HD ở tiết 46, SGK đầy đủ
C Tiến trình:
1 ổn định: KTSS, tư cách HS
2 Kiểm tra bài cũ:
HS: Viết cú pháp câu lệnh lặp For do Giải thích ý nghĩa thực hiện câu lệnh lặp
For do
HS khác NX, GV NX chung và cho điểm
3 Bài mới:
GV tổ chức cho HS chữa một số bài tập
trong SGK về câu lệnh lặp
trước hết GV yêu cầu HS nhắc lại ý nghĩa
thực hiện câu lệnh lặp
HS đọc to đề BT3 (SGK – 60)
HS hoạt động theo nhóm trả lời câu 3 (SGK
– 60)
Đại diện các nhóm trả lời
GV chốt lại
* Câu lệnh lặp For do:
For <biến đếm>:= < giá trị đầu> to <giá tị
cuối> do <câu lệnh>;
Trong đó:
- for, to, do: là các từ khóa
- biến đếm: là biến đơn có kiểu
nguyên
- Giá trị đầu và giá trị cuối: là các
giá trị nguyên Và giá trị cuối
phải lớn hơn giá trị đầu.
Bài tập 3 (SGK – 60)
Chúng ta nói rằng khi thực hiện các
Trang 11? Bài 5 (SGK – 61) yêu cầu gì?
HS đọc to đề và trả lời
GV treo bảng phụ BT 5
HS quan sát và hoạt động theo nhóm
Đại diện một nhóm lên trình bày câu trả
lời, có giải thích
HS khác NX, GV nhận xét chung và nhấn
mạnh
GV yêu cầu HS đọc to đề BT 6 (61)
? Bài 6 yêu cầu gì?
HS: Mô tả thuật toán để tính tổng:
A =
) 1 (
1
5 3
1 4
2
1
3
.
1
1
n n
? Nêu hướng làm?
HS suy nghĩ và đưa ra phương án làm
? Tổng A sẽ được tính tổng theo công thức
nào?
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
Bài tập 5 (SGK – 61)
Các câu lệnh Pascal sau có hợp lệ không, vì sao?
a) for i:=100 to 1 do writeln('A');
b) for i:=1.5 to 10.5 do writeln('A');
c) for i=1 to 10 do writeln('A');
d) for i:=1 to 10 do; writeln('A');
e) var x: real; begin for x:=1 to 10 do
writeln('A'); end.
Trả lời:
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
Bài tập 6 (SGK – 61)
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 =
) 1 (
1
5 3
1 4 2
1 3 1
1
n n
LG: