MỤC TIÊU BÀI HỌC: * Kiến thứ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 ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết tr[r]
Trang 1CH Đ Ủ Ề: CÂU L NH L P Ệ Ặ
(S ti t: ố ế 12)
I YÊU C U KI N TH C, KĨ NĂNG, THÁI Đ : Ầ Ế Ứ Ộ
1 Ki n th c ế ứ :
- Bi t nhu c u c n có c u trúc l p trong bi u di n thu t thu t toán.ế ầ ầ ấ ặ ể ễ ậ ậ
- Hi u để ượ ấc c u trúc l p v i s l n bi t trặ ớ ố ầ ế ước, c u trúc l p ki m tra đi u ki n trấ ặ ể ề ệ ước
- Hi u ho t đ ng c a câu l nh l p v i s l n bi t trể ạ ộ ủ ệ ặ ớ ố ầ ế ước For do trong Pascal
- Hi u 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ú pháp và ho t đ ng c a câu l nh l p v i s l n không bi t trạ ộ ủ ệ ặ ớ ố ầ ế ước
- Hi u ho t đ ng c a câu l nh l p v i s l n ch a bi t trể ạ ộ ủ ệ ặ ớ ố ầ ư ế ước While…do trong Pascal
- Rèn luy n kĩ năng s d ng các câu l nh l p không xác đ nh trong Pascalệ ử ụ ệ ặ ị
3 Thái độ:
- T o h ng thú cho các em say mê môn h c.ạ ứ ọ
II BẢNG MÔ TẢ YÊU CẦU CẦN ĐẠT:
N i dung ộ Nh n bi t ậ ế Thông hi u ể V n d ng c p đ ậ ụ th p ấ ấ ộ V n d ng c p đ ậ ụ cao ấ ộ
Câu l nh ệ
l pặ
Ghi đượ ấc c u trúc câu l nh ệ
đ n v sau m i vòng ơ ị ỗ
l p.ặ
- Rút được kinh nghi m khi th c ệ ựhành s d ng câu ử ụ
l nh l p For … to … ệ ặdo
- Rút được kinh nghi m khi th c ệ ự
Trang 2S d ng câu l nh l p ử ụ ệ ặFor…do đ thay th ể ếcho câu l nh l p ệ ặWhile…do
1 Vòng l p ặ
For … do
Nh n bi t cú ậ ếpháp c a vòngủ
- Bi t nhu c u c n có c u trúc l p trong bi u di n thu t thu t toán.ế ầ ầ ấ ặ ể ễ ậ ậ
- Hi u để ượ ấc c u trúc l p v i s l n bi t trặ ớ ố ầ ế ước, c u trúc l p ki m tra đi u ki n trấ ặ ể ề ệ ước
Trang 32 Ki m tra bài cũ: ể Em hãy vi t chế ương trình tính t ng các s 1, 2, 3, 4, 5ổ ố
ĐVĐ: Đ máy tính th c hi n tính t ng c a 100 s t nhiên đ u tiên thì chúng ta ph i raể ự ệ ổ ủ ố ự ầ ả
l nh cho máy b ng l nh nào? Đ tr l i cho câu h i trên chúng ta đi vào nghiên c u bài h cệ ằ ệ ể ả ờ ỏ ứ ọngày hôm nay Giáo viên ghi đ u bài lên b ng.ầ ả
GV: G i ý thêm thao tác quay thợ ước
- B sung trình bày các bổ ước làm
- Nh v y khi vẽ hình vuông có nh ngư ậ ữ
thao tác l p đi l p l i Thu t toán sau sẽặ ặ ạ ậ
mô t các bả ước đ vẽ hình vuông.ể
HS: Cùng th o lu n, đ a ra ý tả ậ ư ưởng
GV: Mô t thu t toán trên b ngả ậ ả
HS: Chú ý quan sát các bước mô tả
2 Câu l nh l p - m t l nh thay nhi u ệ ặ ộ ệ ề
Riêng v i 1 bài toán vẽ hình vuông thìớthao tác chính là vẽ b n c nh b ng nhau,ố ạ ằhay l p l i 4 l n thao tác vẽ đo n th ngặ ạ ầ ạ ẳ
Trang 4đ dài và quay thộ ước 900 sang ph i.ả
Bước 3: N u k<4 thì quay l i bế ạ ước 2;
- Học bài theo sách giáo khoa và vở ghi Ôn lại các kiến thức chính đã học.
- Đọc tiếp phần còn lại của bài để giờ sau tiếp tục học.
Trang 5TU N Ầ 2 0 - TI T Ế 40 :
BÀI 7: CÂU L NH L P (tt) Ệ Ặ
I M C TIÊU BÀI H C: Ụ Ọ
* Ki n th c: ế ứ
- Biết nhu cầu cần có câu lệnh 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ôngviệc nào đó một số lần
* Kĩ năng:
- Hiểu hoạt động của câu lệnh lặp 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
- Biết lệnh ghép trong Pascal
Trong đó: for, to, do là t khoá, bi n đ mừ ế ế
là bi n ki u nguyên, giá tr đ u và giá trế ể ị ầ ị
cu i là các giá tr nguyên.ố ị
Trang 6- Đây là câu l nh for d ng ti nệ ạ ế
- Câu l nh l p sẽ th c hi n câu l nh nhi uệ ặ ự ệ ệ ề
bi n đ m đế ế ượ ự ộc t đ ng tăng thêm 1 đ nơ
v cho đ n khi b ng giá tr cu i thì k tị ế ằ ị ố ếthúc
Ví d v câu l nh l p ụ ề ệ ặ
- Ví d 3 ụ : Chương trình đ a 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);
readlnend
Ví d 4 ụ : Đ in 1 ch "O" ra màn hình ta sể ữ ử
d ng l nh Writeln('O');ụ ệ
- Ví d cho l p 20 l n.ụ ặ ầProgram Trung_roi;
uses crt;
var i: Integer;
begin clrscr;
for i:= 1 to 20 do begin
writeln('O'); delay(100)
Trang 7HS: Là hàm khai báo th i gian r i nhanhờ ơ
- delay(x): D ng chừ ương trình trong
x miligiây trước khi ch y ti p.ạ ế
- Biết nhu cầu cần có câu lệnh 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ôngviệc nào đó một số lần
* Kĩ năng:
- Hiểu hoạt động của câu lệnh lặp 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
- Biết lệnh ghép trong Pascal
Trang 8đó hãy áp d ng câu l nh for do đ gi iụ ệ ể ả
quy t bài nàyế
GV: ý tưởng c a bài này là tính tích N s tủ ố ự
nhiên đ u tiên V y ý tầ ậ ưởng bài này gi ngố
- Ki u ể longint có ph m vi t -2ạ ừ 31 đ n 2ế 31 - 1
Write('Nhap so N='); Readln(N);
P := 1;
for i:= 1 to N do P:= P*i;
writeln('Tich cua N so tu nhien la:',P);
readlnend
Write('Nhap so N='); Readln(N);
P := 1;
Trang 9cách làm trên?ở
HS: K t qu gi ng nhauế ả ố
GV: ? V y chậ ương trình này có khác v iớ
chương trình trên không và khác đâu?ở
GV đ a ra c u trúc câu l nh for d ng lùiư ấ ệ ạ
For <bi n đ m> := <giá tr cu i> ế ế ị ố downto
<giá tr đ u> ị ầ do <câu l nh>;ệ
for i:= N downto 1 do P:= P*i;
writeln('Tich cua N so tu nhien la:',P);
readlnend
* Câu l nh for d ng lùi ệ ạ
For <bi n đ m> := <giá tr cu i> ế ế ị ố downto
<giá tr đ u> ị ầ do <câu l nh>;ệ
- Giáo d c HS yêu thích môn h c.ụ ọ
- Tích c c tham gia xây d ng bài.ự ự
- Rèn luy n tinh th n t giác và ý th c h c t p t t.ệ ầ ự ứ ọ ậ ố
Trang 10- GV g i ý cho HS khai báo 1 bi n đ đ aợ ế ể ư
vào làm bi n đ m cho vòng l p For và đế ế ặ ể
For i:= 1 to 100 do Write (i:4);
Chương trình:
Trang 11- GV nh n xét và đ a ra đáp án đúng.ậ ư
- GV g i ý cho HS khai báo bi n đ đ aợ ế ể ư
vào làm bi n đ m cho vòng l p For và đế ế ặ ể
For i:= 1 to 100 do
If i mod 6 = 0 Then Write (i:4);
- GV g i ý cho HS khai báo bi n đ đ aợ ế ể ư
vào làm bi n đ m cho vòng l p For và đế ế ặ ể
For i:= 1 to 100 do Write (i*2-1:4);
Readln;
End
4 C NG C Ủ Ố
Trang 12? Yêu c u HS nh c l i cú pháp và ho t đ ng c a câu l nh l p đã đầ ắ ạ ạ ộ ủ ệ ặ ược h c ti t trọ ở ế ước
- Giáo d c HS yêu thích môn h c.ụ ọ
- Tích c c tham gia xây d ng bài.ự ự
- Rèn luy n tinh th n t giác và ý th c h c t p t t.ệ ầ ự ứ ọ ậ ố
Hoạt động 1: Viết chương trình cho các bài tập đã cho về nhà.
- GV: yêu cầu mỗi dãy gõ một bài vào máy
- HS: gõ chương trình, chạy thử chương
trình, và báo cáo kết quả
- GV: hỗ trợ học sinh trong quá trình thực
Tong:=0;
Writeln(‘Nhap vao so n’); readln(n);
Trang 13- Sau khi kết quả chạy chương trình đã đúng,
gv yêu cầu học sinh chữa bài của mình đã
làm ở nhà cho đúng theo chương trình đã
chạy
- GV: yêu cầu các nhóm viết chương trình
vào máy
- HS: gõ chương trình, chạy thử chương
trình, và báo cáo kết quả
- GV: Hướng dẫn uấn nắn
- Sau khi kết quả chạy chương trình đã đúng,
gv yêu cầu học sinh chữa bài của mình đã
làm ở nhà cho đúng theo chương trình đã
chạy
- GV: Nhận xét bài làm
For i:=1 to n doTong: = Tong+i;
Writeln(‘Tong của’, n,’so tu nhien dautienla’,tong);
Readln;
End
2 Viết chương trình tìm xem có bao nhiêu sốdương trong n số nhập vào từ bàn phímProgram tinh_so_cac_so_duong;
Uses crt;
Var i,A, dem, n: integer;
BeginClrscr;
Dem:=0;
Writeln(‘Nhap vao so n’); readln(n);
For i:=1 to n do begin
writeln(‘nhap vao so thu’,i); readln(A);
if A>0 then dem:=dem+1;
end;
Writeln(‘So cac so duong la’,dem);
Readln;
End
Hoạt động 2: Bảng cửu chương
- GV: Đưa ra nội dung của bài toán
- HS: Nghiên cứu bài toán, tìm input và
output
- GV: Đưa nội dung chương trình lên màn
hình, yêu cầu học sinh đọc hiểu chương
trình
- HS: đọc, phân tích câu lệnh tìm hiểu hoạt
động của chương trình
- GV: yêu cầu một học sinh đứng tại vị trí
trình bày hoạt động của chương trình, các
Bài 2: 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, và dừng mànhình để có thể quan sát kết quả
Program Bang_cuu_chuong;
Uses crt;
Var i, n: integer;
BeginClrscr;
Trang 14nhóm khác cùng tham gia phân tích.
- HS: tham gia hoạt động của giáo viên
- GV: yêu cầu học sinh lập bảng hoạt động
của chương trình theo mẫu:
- GV: cho chương trình chạy trên máy, yêu
cầu học sinh quan sát kết quả
Writeln(‘Nhap vao so n’); readln(n);
Writeln(‘Bang nha’,n);
Writeln;
For i:=1 to 10 doWriteln(n,’x’,i:2,’=’,n*i:3);
- Giáo d c HS yêu thích môn h c.ụ ọ
- Tích c c tham gia xây d ng bài.ự ự
- Rèn luy n tinh th n t giác và ý th c h c t p t t.ệ ầ ự ứ ọ ậ ố
Trang 15Ki m tra bài t p đã cho v nhà.ể ậ ề
3 Bài m i: ớ
HO T Đ NG C A GV VÀ HS Ạ Ộ Ủ N I DUNG Ộ
Hoạt động 1: Làm đẹp màn hình kết quả bằng lệnh gotoxy, where
- Giáo viên cho chạy kết quả của bài thực
hành Bang_cuu_chuong Yêu cầu học sinh
quan sát kết quả và nhận xét khoảng cách
giữa các hàng, cột
- HS: quan sát và đưa ra nhận xét
- ? Có cách nào để khoảng cách giữa các
hàng và các cột tăng lên?
- GV: Giới thiệu câu lệnh gotoxy và where
- GV: yêu cầu học sinh mở chương trình
Bang_cuu_chương và sửa lại chương trình
theo bài trên màn hình của giáo viên
- HS: gõ chương trình vào máy, sửa lỗi chính
tả, chạy chương trình, quan sát kết quả
- GV: yêu cầu học sinh quan sát kết quả và
so sánh với kết quả của chương trinh khi
chưa dùng lệnh gotoxy(5, wherey)
- HS: quan sát và nhận xét
a) Giới thiệu lệnh gotoxy(), wherex
- Gotoxy(a,b)Trong đó: a là chỉ số cột, b là chỉ số hàng
- ý nghĩa của câu lệnh là đưa con trỏ về cột ahàng b
- Wherex: cho biết số thứ tự của cột, whereycho biết số thứ tự của hàng
* Lưu ý: Phải khai báo thư viện crt trước khi
sử dụng hai lệnh trêna) Chỉnh sửa chương trình như sau:
Program Bang_cuu_chuong;
Uses crt;
Var i, n: integer;
BeginClrscr;
Writeln(‘Nhap vao so n’); readln(n);
Writeln(‘Bang nha’,n);
Writeln;
For i:=1 to 10 dobegin
gotoxy(5, wherey);
Writeln(n,’x’,i:2,’=’,n*i:3);
Readln;
End
Hoạt động 2: Sử dụng lệnh For lồng trong for
- GV: giới thiệu cấu trúc lệnh for lồng,
hướng dẫn học sinh cách sử dụng lệnh
- HS: ghi chép cấu trúc và lĩnh hội
- GV: đưa nội dung chương trình bài thực
hành 3 lên màn hình, yêu cầu học sinh đọc
a) Câu lệnh for lồng trong for
- For <biến đếm1:= giá trị đầu> to <giá trị cuối> do
For <biến đếm 2:=giá trị đầu> to
<giá trị cuố> do
< câu lệnh>;
Program Tao_bang;
Trang 16chương trình, tìm hiểu hoạt động của chương
trình
- HS: hoạt động theo nhóm, tìm hiểu hoạt
động của chương trinh, đại diện của nhóm
báo cáo kết quả thảo luận
- GV: cho chạy chương trình
- HS : quan sát kết quả trên màn hình
Uses crt;
Var i,j: byte;
BeginClrscr;
For i:=1 to 9 doBegin
For j:=0 to 9 do Writeln(10*i+j:4);
- 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 ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thựchiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thoả mãn
* Kĩ năng:
- Nhận biết được đâu là hoạt động lặp với số lần chưa biêt trước.
* Thái đ : ộ
- Giáo d c HS yêu thích môn h c.ụ ọ
- Tích c c tham gia xây d ng bài.ự ự
- Rèn luy n tinh th n t giác và ý th c h c t p t t.ệ ầ ự ứ ọ ậ ố
Trang 17Viết thuật toán tính tổng 100 số tự nhiên đầu tiên 1,2,3,…,99,100
Bước 1 SUM 0; i 0.
Bước 2 i i + 1.
Bước 3 Nếu i ≤ 100, thì SUM SUM + i và quay lại bước 2.
Bước 4 Thông báo kết quả và kết thúc thuật toán.
3 Bài m i: ớ
HO T Đ NG C A GV VÀ HS Ạ Ộ Ủ N I DUNG Ộ
Hoạt động 1: Các hoạt động lặp với số lần chưa biết trước
GV: Hãy lấy ví dụ về bài toán có sử dụng
câu lệnh lặp với số lần biết trước?
HS: Suy nghĩ, thảo luận -> trả lời:
GV: Trình bày cho hs biết trong thực tế có
nhiều hoạt động lặp đi lặp lại với số lần chưa
biết trước
? Hãy lấy ví dụ về hoạt động lặp đi lặp lại
nhiều lần với số lần chưa biết trước?
GV: Trong trường hợp này điều kiện để kết
thúc hoạt động là gì?
HS: Suy nghĩ, thảo luận -> trả lời:
GV: Trình bày ví dụ 2 để hs hiểu
GV: Trong trường hợp này để quyết định
thực hiện phép cộng với số tiếp theo hay
dừng ta cần làm gì?
HS: Suy nghĩ, thảo luận -> trả lời:
Hãy mô tả thuật toán của bài toán trên?
HS: Suy nghĩ, thảo luận -> trả lời:
1 Các hoạt động lặp với số lần chưa biết trước
Trong trường hợp này để quyết định thựchiện phép cộng với số tiếp theo hay dừng tacần phải kiểm tra tổng đã lớn hơn 1000 haychưa
Bước 1: S <- 0, n <- 0Bước 2: Nếu S ¿ 1000, n <- n +1 ngược lạichuyển tới bước 4
Bước 3: S <- S + n và quay lại bước 2Bước 4: In kết quả: S và n là số tự nhiên nhỏnhất sao cho S > 1000 và kết thúc thuật toán.Việc thực hiện phép cộng ở thuật toán trên
Trang 18? Việc thực hiện phép cộng ở thuật toán trên
được lặp lại với số lần là bao nhiêu? và điều
kiện để kết thúc là gì?
GV: Trình bày cho hs biết cấu trúc của câu
lệnh lặp với số lần chưa biết trước
HS: Chú ý lắng nghe, ghi nhận
GV: Trình bày cho hs biết mọi ngôn ngữ lập
trình đều có câu lệnh để thể hiện cấu trúc lặp
với số lần chưa biết trước
được lặp lại với số lần là chưa xác định trước
và điều kiện để kết thúc S ¿ 1000
Cấu trúc lặp với số lần chưa biết trước
Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước
GV: Trình bày cho hs bi t cú pháp c a câuế ủ
ch a bi t trư ế ước trong ngôn ng Pascal:ữ
While <đi u ki n> ề ệ do <câu l nh>;ệTrong đó:
+ <đ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.ệ
- Ho t đ ng: ạ ộB1: Ki m tra đi u ki n ể ề ệB2: N u đi u ki n sai, câu l nh b b quaế ề ệ ệ ị ỏ
và vi c th c hi n 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 bạ ước 1
Ví d 3:ụ
Vi t chế ương trình tính s n nh nh t đố ỏ ấ ể1
n nh h n m t sai s cho tr c.ỏ ơ ộ ố ướUses crt;
Var x: real;
n: integer;
Const sai_so = 0.003;
Begin
Trang 19GV: -Trình bày cho hs bi t n u ch yế ế ạ
chương trình này thì k t qu n = 334, ế ả
- Yêu c u hs d a vào thu t toán vi tầ ự ậ ế
chương trình -> lên b ng trình bày.ả
- Trình bày cho hs bi t n u ch y chế ế ạ ương
chương trình
Var s, n: integer;
Begin S:=0; n:=1;
While s<=1000 do Begin s := s + n; n:= n +1 end;
Writeln(‘So n be nhat de tong > 1000la:’,n);
Writeln(‘Tong dau tien > 1000 la:’,s); Readln;
* Kĩ năng:
Vận dụng sự hiểu biết đó vào viết các chương trình máy tính có sử dụng lệnh lặp với số lần chưa biết trước
Trang 20* Thái đ : ộ
- Giáo d c HS yêu thích môn h c.ụ ọ
- Tích c c tham gia xây d ng bài.ự ự
- Rèn luy n tinh th n t giác và ý th c h c t p t t.ệ ầ ự ứ ọ ậ ố
Hãy vi t chế ương trình tính t ng trên v iổ ớ
câu l nh for do.ệ
Suy nghĩ, th o lu n, vi t chả ậ ế ương trình
Hãy vi t chế ương trình tính t ng trên v iổ ớ
câu l nh while do.ệ
Suy nghĩ, th o lu n, vi t chả ậ ế ương trình
2 Ví d v l nh l p v i s l n ch a ụ ề ệ ặ ớ ố ầ ư
bi t tr ế ướ (Ti p) c ế
Ví d 5: S d ng ngôn ng l p trìnhụ ử ụ ữ ậPascal vi t chế ương trình tính t ng:ổ
Uses crt;
Var T: real; i: byte;
Begin T:= 0 For i:=1 to 100 do T := T + 1/i;
While i<= 100 do Begin