I. Mục tiêu
1. Kiến thức
- 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 lệnh ghép trong Pascal.
2. Kỹ Năng
- Rèn luyện kỹ năng phân biệt các hoạt động phụ thuộc vào điều kiện trong cuộc sống.
3. Thái độ
- Tự giác, tích cực, chủ động trong tiết học.
II. Chuẩn bị
- GV: Soạn giáo án , SGK
- HS: Vở ghi, SGK, đọc trước nội dung bài học.
III. Phương pháp
- Vấn đáp, thuyết trình, trực quan.
- Đặt vấn đề, giải quyết vấn đề.
Tuần : 19 Tiết : 37+38 Ngày soạn: 06/01/2011 Ngày dạy : 07/01/2011 Bài 7: CÂU LỆNH LẶP Mục tiêu 1. Kiến thức 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 lệnh ghép trong Pascal. 2. Kỹ Năng - Rèn luyện kỹ năng phân biệt các hoạt động phụ thuộc vào điều kiện trong cuộc sống. 3. Thái độ - Tự giác, tích cực, chủ động trong tiết học. Chuẩn bị GV: Soạn giáo án , SGK HS: Vở ghi, SGK, đọc trước nội dung bài học. III. Phương pháp - Vấn đáp, thuyết trình, trực quan. - Đặt vấn đề, giải quyết vấn đề. IV. Hoạt động dạy và học Ổn định lớp tổ chức lớp kiểm tra sĩ số lớp. Ổn định trật tự. 2. Kiểm tra bài cũ - Em hãy mô tả thuật toán tím giá trị lớn nhất của hai số? Bước 1 : Max:= a (hoặc Max:=b); Bước 2 : Nếu a < b thì gán Max = b và viết giá trị lớn nhất của hai số là Max. 3. Bài mới - Trong các tiết học vừa qua em đã được làm quen với một số câu lệnh trong ngôn ngữ lập trình TuborPascal như lệnh điều kiện, bài học hôm nay giúp chúng ta tìm hiệu thêm câu lệnh mới HĐ CỦA GV HĐ CỦA HS NỘI DUNG HĐ1: Trong cuộc sống hằng ngày, nhiều hoạt động được thực hiện lặp đi lặp lại nhiều lần. ví dụ: Các ngày trong tuần các em đều lặp đi lặp lại hoạt động buổi sáng đến trường và buổi trưa trở về nhà HS cho thêm một ví dụ trong thực tế đời sống hằng ngày lặp đi lặp lại ? GV: Khi viết CT máy tính cũng vậy, trong nhiều trường hợp ta cũng phải viết lặp lại nhiều câu lệnh chỉ để thực hiện 1 phép tính nhất định. - HS: Lắng nghe, tự ghi bài. Ví dụ: Các em học bài thì phải đọc đi đọc lại nhiều lần cho đến khi thuộc bài. 1/ Các công việc phải thực hiện nhiều lần Nhiều hoạt động được thực hiện lặp lại nhiều lần. Có những hoạt đồng thường lặp đi lặp lại với số lần nhất định và biết trước. Chúng ta còn lặp lại những công việc với số lần không thể xác định trước. HĐ2: Câu lệnh lặp – một lệnh thay cho nhiều lệnh GV: Mời HS lên bảng vẽ một hình vuông cạnh 1 đơn vị độ dài (20cm) và yêu cầu cả lớp theo dõi bạn thực hiện các thao tác khi vẽ. Yêu cầu 1 HS mô tả các bước bạn vẽ trên bảng. Vậy khi bạn vẽ 1 hình vuông được thực hiện bao nhiêu thao tác? (HS trả lời 4 thao tác vẽ 4 đoạn thẳng) GV: Gợi ý thêm thao tác quay thước. Các thao tác đó như thế nào? GV: 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. GV: Mô tả thuật toán trên bảng. GV: Mô tả thuật toán tính tổng các số tự nhiên từ 1→ 100 Cấu trúc mô tả thuật toán như trên gọi là cấu trúc lặp. - HS: lên bảng vẽ, cả lớp theo dõi - 4 thao tác, Các thao tác giống nhau. 2/ Câu lệnh lặp – một lệnh thay cho nhiều lệnh VD1: Thuật toán mô tả các bước để vẽ hình vuông. Bước 1: k ← 0 (k là số đoạn thẳng đó vẽ được). Bước 2: k ← k+1. Vẽ đoạn thẳng 1 đơn vị độ dài và quay thước 900 sang phải. Bước 3: Nếu k<4 thì quay lại bước 2; ngược lại kết thc. k là biến đếm VD2: Thuật toán tính thổng S= 1+2+3+ + 100 Bước 1: S ← 0; i ← 0. Bước 2: i← i + 1 Bước 3: nếu i ≤ 100, thì S ← S + i v quay lại bước 2; ngược lại kết thúc. i là biến đếm Mô tả thuật toán trên gọi l cấu trúc lặp. Mọi NNLT đều có cách chỉ thị cho máy tính thực hiện cấu trúc lặp chỉ với 1 câu lệnh. Đó là câu lệnh lặp HĐ3: Ví dụ về câu lệnh lặp. GV: minh họa bẳng NN Pascal cú pháp câu lệnh Lưu ý cho hs: Biến đếm là biến đơn có kiểu nguyên. Giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và giá trị cuối phải lớn hơn giá trị đầu. - HS nhận xét và so sánh sự khác nhau ở câu lệnh lặp trong 2 ví dụ trên . GV: Giải thích cho HS tại sao vd2 trong câu lệnh lặp cú begin end ; - HS: chú ý lắng nghe bài. - HS trả lời - HS nhận xét 3/ Ví dụ về câu lệnh lặp Cú Pháp câu lệnh lặp với số lần biết trước trong Pascal. for:= to do trong đó: for, to, do là các từ khóa Vd 1: Chươngng trình in ra màn hình thứ tự lần lặp. var i:integer; begin for i:= 1 to 20 do writeln(‘Day la lan lap thu’,i); readln; end. Vd2: chương trình ghi nhận vị trí 10 chữ O rơi từ trên xuống. ues crt; var i:integer; begin clrscr; for i:= 1 to 20 do begin writeln(‘O’); delay(200); end; readln; end. *Lưu ý: Câu lệnh có sử dụng câu lệnh ghép thì phải đặt trong hai từ khóa begin end; HĐ4: Tính tổng & tích bằng câu lệnh lặp. GV: trình bày đoạn chương trình tính tổng N số tự nhiên, với N là số tự nhiên được nhập từ bàn phím. Theo CT tính tổng ta cần khai bao nhiêu biến? kiểu biến? Trong 2 biến thì biến nào có giá trị được nhập từ bàn phím? Trong trường hợp dữ liệu có kiểu nguyên rất lớn ta dùng longint - HS lắng nghe & trả lời - HS trả lời 2 biến - N được nhập từ bàn phím - HS trả lời 4/ Tính tổng & tích bằng câu lệnh lặp Vd 1: chương trình tính tổng N số tự nhiên đầu tiên, với N là số tự nhiên được nhập từ bàn phím. S = 1+2+3+ + N 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 tư nhien dau tien S = ‘, S); readln; end. *Kiểu longint có phạm vi từ -231 đến 231 – 1. Vd 2: chương trình tính tích N số tự nhin, với N l số tự nhin được nhập từ bàn phím. N! = 1.2.3.N program Tinh_Giai_Thua; var N,i:integer; P:longint; begin write(‘Nhap so N = ‘); readln(N); P:= 1; for i:= 1 to N do P:= P*i; writeln( N, ‘! = ‘, P); readln; end. HĐ5: Củng cố 1/ Cấu trúc lặp trong chương trình dng để làm gì? 2/ Trong NNLT Pascal cấu trc lặp với số lần lặp cho trước được thể hiện với câu lệnh nào? HS: Lấy ví dụ. HS: Lắng nghe 4. HƯỚNG DẪN VỀ NHÀ - Nêu ví dụ trong cuộc sống của em có liên quan đến điều kiện và em thực hiện điều kiện đó như thế nào? - Hướng dẫn về nhà. - Học bài xem lại các ví dụ, chuẩn bị thực hành 5. V. Rút kinh nghiệm - HS phải biệt phân tích một câu điều kiện trong thực tế. - Xác định được một câu điều kiện. - Chỉ ra được phần điều kiện, phần kết quả. Tuần : 20 Tiết : 39+40 Ngày soạn: 09/01/2011 Ngày dạy : 10/01/2011 Bài TH 5: SỬ DỤNG LỆNH LẶP FOR...DO Mục tiêu 1. Kiến thức Hiểu hoạt động của câu lệnh lặp với số lần biết trước fordo trong Pascal. Hiểu lệnh ghép trong Pascal. 2. Kỹ Năng - Viết được chương trình có sử dụng vòng lặp fordo. - Sử dụng được câu lệnh ghép. - Rèn luyện đọc hiểu chương trình có sử dụng vòng lặp fordo. 3. Thái độ - Có ý thức, kỹ luật, nghiêm túc, trình bày một vấn đề chặt chẽ, rõ ràng. Chuẩn bị GV: Soạn giáo án , SGK, máy chiếu, phòng máy HS: Vở ghi, SGK, đọc trước nội dung bài học, tìm hiểu một số bài toán và chỉ ra thuật toán.. III. Phương pháp - Vấn đáp, thuyết trình, trực quan. - Đặt vấn đề, giải quyết vấn đề. IV. Hoạt động dạy và học Ổn định lớp tổ chức lớp kiểm tra sĩ số lớp. Ổn định trật tự. 2. Kiểm tra bài cũ - Nêu cấu trúc câu lệnh lặp đơn, câu lệnh lặp ghép, có biết ý nghĩa của câu lệnh lặp. - Trả lời: 3. Bài mới - Trong bài học trước em đã được học về câu lệnh lặp, bài học hôm nay giúp chúng ta tìm hiệu thêm câu lệnh lặp sử dụng trong các chương trình như thế nào. Hoạt động của GV Hoạt động của HS Nội dung Bài 1 : Viết CT in ra màn hình bảng nhân của một số từ 1 tới 10, số được nhập từ bàn phím và dừng màn hình để có thể quan sát kết quả. ? Nêu cách giải? - Cần nhân 1 số với các số từ 1 đền 10. Gọi số đó là số N ta sẽ sử dụng vòng lặp xác định từ giá trị đầu đến giá trị cuối là bao nhiêu? ? yêu cầu mở rộng: in ra tất cả bảng cửu chương từ 1 đến 10? ? giá trị N lúc này có phải nhập nữa không? ?Giá trị N chạy từ bao nhiêu đến bao nhiêu? Vậy ta cần một vòng lặp N từ 1 đến 10 GV: yêu cầu HS làm thành hai bài khác nhau. ? quan sát kết quả nhận được? Kết quả có dễ dàng quan sát không? 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ó 2 nhược điểm sau đây : Các hàng kết 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 đề. Nên sửa CT bằng cách chèn thêm một hàng trống giữa các hàng kết quả và đẩy các hàng sang phải một khoảng cách nào đó. ? để kết quả trông dễ nhìn ta sử dụng Câu lệnh GotoXY(a, b) có tác dụng đưa con trỏ về cột a, hàng b. WhereX cho biết số thứ tự của cột và WhereY cho biết số thứ tự của hàng đang có con trỏ. Ví dụ GotoXY(5,WhereY) đưa con trỏ về vị trí cột 5 của hàng hiện tại. GV: Giúp HS sửa một số lỗi. Bài 3: Cũng như câu lệnh If, có thể dùng câu lệnh For lồng trong một câu lệnh For khác khi thực hiện lặp. Sử dụng các câu lệnh Fordo lồng nhau để in ra màn hình các số từ 0 đến 99 theo dạng bảng như hình (Hình 38/ 64/SGK). Bài 4: Tính tổng S= 1+1/2+1/3++1/n Với n nhập từ bàn phím. ? Bài này tương tự bài nào? ? Công thức tính tổng S được tính như thế nào? ? Ban đầu giá trị S gán bằng bao nhiêu? ? Ta dùng biến nào là biến đếm? Giá trị dầu, giá trị cuối bằng bao nhiêu? Bài 5: In ra màn hình các số có 4 chữ số mà tổng chữ số hành trăm và hàng nghìn bằng tổng các chữ số hàng chục và hàng đơn vị. ? Nêu phương án giải quyết ? ? Bài toán yêu cầu những gì ? ? Trước tiên cần phải tách các số, sau đó kiểm tra điều kiện tiếp theo ? nêu cách giải tách các số Bài 5: Giải bài toán cổ ‘ vừa gà vừa chó’ ? Tổng số gà và chó là bao nhiêu con? ? Tổng số chân là bao nhiêu? ? Số gà cvà số chó chỉ có thể trong khoảng từ bao nhiêu con đến bao nhiêu con? Ta sẽ cho số chó lần lượt chạy từ 1 đến 24 tương ứng với số chó là số gà = 36 – chó và kiểm rta điều kiện nếu gà *2 + chó*4 = 100 thì hiện kết quả tìm được. ?Hãy lập trình theo gợi ý ? GV : Tìm được kết quả bằng bao nhiêu ? Cũng Cố : GV : Gọi HS đọc phần tổng kết. GV : Yêu cầu HS đọc phần đọc thêm. ? Nêu cấu trúc câu lệnh lặp đơn, câu lệnh lặp ghép, cho biết ý nghĩa của câu lệnh lặp. ? Biến đếm phải có điều kiện gì khi khai báo biến ? Hướng đẫn về nhà : Tập lập trình một số BTVN của tiết trước, buổi sau sẽ chữa bài và chạy chương trình , lập trình bài đọc thêm để kiểm tra kết quả số Pi. Ôn tập kĩ vòng lặp xác định, chuẩn bị bài sau học vòng lặp không xác định. HS : đọc đề HS : nêu phương án HS : từ 1 đến 10 HS : nêu phương án HS : không HS : từ 1 đến 10 HS : lập trình và chạy chương trình HS : sửa theo hướng dẫn của SGK và GV HS : dịch và chạy chương trình HS : đọc đề HS : nêu phương án HS : Trật tự, tập trung quan sát GV hướng dẫn. HS : Trả lời HS : s:= s+1/(2*n+1) HS : 0 HS : n HS : Nêu cách giải HS : Trả lời HS : Nêu các bước tách số HS : gà + chó = 36 con HS : gà *2 + chó*4 = 100 HS : từ 1 đến 24 con vì chỉ có thể có ít hơn 100 : 4 = 25 con HS : lập trình, chạy chương trình HS : trả lời Bài 1( SGK/62) a/ Khởi động Turbo Pascal và gõ chương trình. Program bangcuuchuong; 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. - In toàn bộ bảng cửu chương: uses crt; var N,i:integer; begin clrscr; writeln('Bang nhan ',N); writeln; for N:=1 to 10 do for i:=1 to 10 do writeln(N,' x ',i:2,' = ',N*i:3); readln end. b/ Ý nghĩa của các câu lệnh trong chương trình: Sau khi khai báo cho thư viện. Các biến chương trình thực hiện lệnh xóa màn hình. Đến lệnh nhập N (1 → 9). Dùng lệnh Writeln; để cách 1 dòng. Lệnh in thông báo Bang nhan của số được nhập vào. Thực hiện lệnh lặp với điều kiện trước, biến I chạy từ 1→10. In kết quả bảng nhân ra. Kết thúc chương trình. C/ Chạy CT (Ctrl+F9) ta nhập lần lượt các giá trị bằng 1, 2,, 10. Bài 2: (SGK/63) a/ CT đã chỉnh sửa câu lệnh lặp: Uses crt; Var N, i:integer; Begin Clrscr; Write (‘Nhap so N=’); Readln (N); Writeln; Writeln (‘Bảng nhan ‘,N); Writeln; For i:=1 to 10 do Begin GotoXY (5,whereY); Writeln (N,’x’, i:2,’=’, N*i:3); Writeln End; Readln End. b/ Dịch và chạy CT với 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. Bài 3: (SGK/64) a/ Yêu cầu học sinh tự đọc chương trình, tìm hiểu ý nghĩa của các câu lệnh qua phần gợi ý trong cặp dấu ngoặc nhọn {}. b/ Chạy CT: Sử dụng thêm các câu lệnh GotoXY(a,b) để điều chỉnh bảng kết quả ra giữa màn hình. CT đã chỉnh sữa như sau: Program Tao_bang; Uses crt; Var i: byte; j, X, Y: byte; Begin Clrscr; X:=18; Y:=7; For i:= 0 to 9 do Begin GotoXY (X,Y); For j:= 0 to 9 do Write (10*i+j:4); Y:=Y+1; Writeln; End; Readln End. Bài 4: (BT làm thêm) Program Tinh_tong; Uses crt; Var i,n: integer; s: real; Begin Clrscr; Write(' nhap n='); Readln(n); s:=0; For i:= 1 to n do Begin s:= s+1/(2*n+1); End; Writeln(' tong la',s:3:2); Readln; End. Bài 5: (BT làm thêm) Program In_so_bon_CS; Uses Crt; Var a,b,c,d,i: Integer; Begin Clrscr; Write('cac so thoa man la = '); Writeln; For i:= 1000 to 9999 do Begin a:= i div 1000; b:= (i mod 1000) div 100; c:= (i mod 100) div 10; d:= i mod 10; If ((b + a) = (d+ c)) then Write( i,' ' ); End; Readln; End. Bài 5: (BT làm thêm) Program BT_Ga_Cho; Var ga, cho:byte; Begin For cho:= 1 to 24 do Begin ga:= 36 - cho; if( 2*ga + 4*cho = 100) then writeln('Ga: ', ga, ', Cho: ',cho); End; Readln; End.
Tài liệu đính kèm: