Tuần 20
Tiết 39 Bài thực hành 5
SỬ DỤNG LỆNH LẶP FOR . DO
I. Mục tiêu
1. Kiến thức
• Viết chương trình Pascal có sử dụng câu lệnh lặp for.do
• Viết đúng được lệnh for.do
2. Kĩ năng
• Rèn luyện kỹ năng ban đầu về viết các chương trình đơn giản có sử dụng câu lệnh lặp for do
• Có kỹ năng trình đọc hiểu chương trình.
3. Thái độ
• Có thái độ nghiêm túc trong học tập.
• Giáo dục kỹ năng, tư duy của học sinh.
II. Chuẩn bị
1. Giáo viên:
• Giáo án, SGK.
• Máy tính, máy chiếu, phần mềm máy tím kiếm.
2. Học sinh
• Học bài cũ, xem các thuật toán đã học.
_bang; Uses Crt; Var i: byte; {chi so cua hang} j: byte; {chi so cua cot} Begin Clrscr; For i:=0 to 9 do begin For j:=0 to 9 do write(10*i+j:4); writeln; {xuong hang moi} end; readln end. HS: Cho chạy chương trình và quan sát kết quả: GV: Chạy chương trình bằng tay lên bảng cho học sinh nắm rõ câu lệnh lồng nhau. HS: Quan sát theo dõi. GV: Cho học sinh thực hành trên máy 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. HS: Thực hành trên máy dưới sự giám sát hỗ trợ của giáo viên. Gv: nhận xét chung Bài 3: 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. (sgk/64) a/ Tìm hiểu chương trình b/ Gõ và chạy chương trình, quan sát kết quả trên màn hình. Sử dụng 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. Program Tao_bang; Uses Crt; Var I, j: byte; Begin Clrscr; For i:=0 to 9 do begin For j:=0 to 9 do write(10*i+j:4); writeln; end; readln end. Củng cố kiến thức. (2’) Hãy viết lại cú pháp câu lệnh lặp trong Pascal? Hướng dẫn về nhà. (2’) Về nhà xem lại các phần lý thuyết về câu lệnh lặp và các bài vừa thực hành. Làm lại các bài tập trong bài 7 sgk/61 xem trước bài 8: Lặp với số lần chưa biết trước Rút kinh nghiệm: Tuần 21 Tiết 42 Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC I. Mục tiêu Kiến thức Biết được nhu cầu 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ực hiệ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. Hiểu được 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 ngôn ngữ Pascal. Kỹ năng: Rèn khả năng đọc chương trình, phân tích tác dụng các câu lệnh. Viết được câu lệnh lặp ở những bài toán đơn giản. Thái độ Có thái độ nghiêm túc trong học tập. Giáo dục kỹ năng, tư duy của học sinh. II. Chuẩn bị Giáo viên: Giáo án, SGK. Máy tính, máy chiếu, phần mềm máy tím kiếm. Học sinh Học bài cũ, xem các thuật toán dã học. III. Phương pháp: Trực quan, thử, luyện tập, nhóm. IV.Tiến trình dạy học: Ổn định lớp: Kiểm tra sĩ số. (1’) Kiểm tra bài cũ: (5’) Hãy viết cú pháp của câu lệnh lặp với số lần biết trước trong Pascal và giải thích các thành phần trong câu lệnh? Bài mới: Ở bài trước các em đã được học về câu lệnh lặp với số lần lặp đã biết trước. Nhưng cũng có những hoạt động lặp mà số lần lặp chưa biết trước. Em hãy cho 1 ví dụ về hoạt động lặp với số lần chưa biết trước đó. Vậy thế nào là lặp với số lần chưa biết trước và trong Pascal sử dụng câu lệnh nào để giải quyết bài tóan về số lần lặp chưa biết trước. Hoạt động của Giáo viên & Học sinh Nội dung Hoạt động 1: Các hoạt động lặp lại với số lần chưa biết trước (10’) GV: Các em mở SGK trang 67 và đọc cho cô ví dụ 1. GV: Yêu cầu Hs đọc ví dụ 1. HS: Đọc bài. GV: Yêu cầu Hs đọc ví dụ 2 HS: Đọc bài. GV: Đề bài yêu cầu ta làm gì? HS: Tính tổng Tn của n số tự nhiên đầu tiên sao cho tổng Tn nhỏ nhất > 1000 GV: Ta cần cộng bao nhiêu số tự nhiên đầu tiên để có tổng Tn nhỏ nhất lớn hơn 1000? HS: Không biết. 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, trong từng bước ta cần kiểm tra điều gì? HS: Tổng đã lớn hơn 1000 hay chưa. GV: Qua ví dụ 2 này ta không biết cần cộng thêm bao nhiêu số tự nhiên vào để tổng Tn nhỏ nhất lớn hơn 1000, đây là 1 hoạt động lặp với số lần chưa biết trước. GV: Chúng ta hãy cùng tìm hiểu các bước của thuật toán trong ví dụ này một cách cụ thể hơn. GV: Tương tự như bài tóan tính tổng S=1+2+3+...+n thì B1 ta phải làm gì? HS: Ta gán S ¬ 0 và n ¬ 0 GV: Để quyết định việc cộng thêm hay dừng thì ta phải kiểm tra điều kiện gì? HS: S <= 1000 GV: Sau khi đã kiểm tra điều kiện và tăng biến n lên thì S ¬ S + n và quay lại B2 GV: Khi đã tìm ra tổng S > 1000 và n là số nhỏ nhất ta in kết quả ra màn hình và kết thúc thuật toán. GV: Cho Hs ghi thuật toán vào vở. HS: Ghi bài. GV: Các em quan sát trên bảng, bây giờ cô sẽ chạy tay thử chương trình với điều kiện là S <= 10. Trước khi kiểm tra điều kiện: n = 0, S = 0 Khi bắt đầu kiểm tra điều kiện Bước 1 2 3 4 5 6 S<=10 Đ Đ Đ Đ Đ S n 1 2 3 4 5 6 S 1 3 6 10 15 3. Kết thúc: n = 6, S = 15 GV: Các em vừa tìm hiểu về việc thực hiện phép cộng được lặp lại với số lần chưa biết trước, hoạt động đó phụ thuộc vào điều kiện gì, phép cộng dừng khi nào? HS: Điều kiện S 10). 1. Các hoạt động lặp lại với số lần chưa biết trước: a. Ví dụ 1: SGK b. Ví dụ 2: SGK * Thuật toán: - B1: S ¬ 0, n ¬ 0 - B2: Nếu S <= 1000, n ¬ n + 1; Ngược lại, chuyển tới B4 - B3: S ¬ S + n và quay lại B2. - B4: 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. Ta có sơ đồ hoạt động sau: Điều kiện ? Câu lệnh Sai Đúng Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước. (25’) GV: Yêu cầu Hs đọc ví dụ 1 HS: Đọc bài. GV: Đề bài yêu cầu ta làm gì? HS: Tính tổng Tn của n số tự nhiên đầu tiên sao cho tổng Tn nhỏ nhất > 1000 GV: Ta cần cộng bao nhiêu số tự nhiên đầu tiên để có tổng Tn nhỏ nhất lớn hơn 1000? HS: Không biết. 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, trong từng bước ta cần kiểm tra điều gì? HS: Tổng đã lớn hơn 1000 hay chưa. GV: Qua ví dụ này ta không biết cần cộng thêm bao nhiêu số tự nhiên vào để tổng Tn nhỏ nhất lớn hơn 1000, đây là 1 hoạt động lặp với số lần chưa biết trước. GV: Chúng ta hãy cùng tìm hiểu các bước của thuật toán trong ví dụ này một cách cụ thể hơn. GV: Tương tự như bài tóan tính tổng S=1+2+3+...+n thì B1 ta phải làm gì? HS: Ta gán S ¬ 0 và n ¬ 0 GV: Để quyết định việc cộng thêm hay dừng thì ta phải kiểm tra điều kiện gì? HS: S <= 1000 GV: Sau khi đã kiểm tra điều kiện và tăng biến n lên thì S ¬ S + n và quay lại B2 GV: Khi đã tìm ra tổng S > 1000 và n là số nhỏ nhất ta in kết quả ra màn hình và kết thúc thuật toán. GV: Giới thiệu câu lệnh While do. Hướng dẫn Hs viết câu lệnh và giải thích ý nghĩa các thành phần. GV: Để hiểu rõ việc thực hiện của câu lệnh While... do.... như thế nào, một em hãy đọc đề ví dụ 2. GV: Hãy nhìn vào chương trình trong SGK. Các em hãy thảo luận nhóm để phân tích ý nghĩa câu lệnh trong chương trình. HS: Thảo luận và phân tích. GV: Điều kiện là: x >= sai_so Câu lệnh là: n:=n+1; x:=1/n; GV: Câu lệnh ở đây là câu lệnh ghép nên nó được đặt trong cặp Begin...end GV: Bây giờ cô và các em hãy chạy thử chương trình để hiểu rõ hơn về câu lệnh while... do....với điều kiện sai_so = 0.3 1. Trước khi bắt đầu vòng lặp while...do... n = 1, x = 1 2. Khi bắt đầu vòng lặp while...do... Bước 1 2 3 4 x>=sai_so Đúng Đúng Đúng Sai n 2 3 4 x 1/2 1/3 1/4 3. Kết thúc: n = 4, x= 1/4 GV: Cho Hs ghi chương trình vào vở. HS: Ghi bài. GV: Yêu cầu Hs viết chương trình và chạy thử. Sau đó sửa giá trị sai_so = 0.3, 0.002, 0.001. HS: Thực hành. GV: Ta đã tìm hiểu thuật toán tính tổng n số trong ví dụ 1, thuật toán đó được thể hiện bằng ngôn ngữ Pascal như thế nào các em qua ví dụ 3. GV: Tính S=1+2+ >1000 Sß0 Sß S+1 Sß S+2 Sß S+3 GV: Cần cộng bao nhiêu số tự nhiên để tổng nhỏ nhất >1000? HS: Không biết. GV: Các em quan sát thấy các câu lệnh giống nhau. Nếu cô thay i=1,2, thì tổng S thay bằng lệnh Sß S+? HS: Sß S+i. GV: Lệnh Sß S+i lặp lại bao nhiêu lần? HS: Không biết. GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán? HS: Lệnh lặp whiledo GV: Điều kiện của câu lệnh lặp và câu lệnh? HS: Trả lời HS: Thực hành. GV: Yêu cầu HS đọc đề bài. HS: Đọc bài. GV: Đề bài yêu cầu chúng ta làm gì? HS: Viết chương trình tính tổng T= 1+1/2+1/3+ +1/100 Tß0 Tß T+1/1 Tß T+1/2 Tß T+1/3 Tß T+1/100 GV: Các em quan sát thấy các câu lệnh giống nhau. Nếu cô thay i=1,2, thì tổng S thay bằng lệnh Tß T+? HS: Tß T+1/i. GV: Lệnh Tß T+1/i lặp lại bao nhiêu lần? HS: 100 lần GV: Ta sử dụng câu lệnh lặp nào để giải quyết bài toán? HS: Lệnh lặp fordo GV: Em hãy cho cô biết cú pháp của câu lệnh For...do... GV: Em hãy cho cô biết giá trị đầu, giá trị cuối và câu lệnh là gì? HS: Trả lời GV: Cho HS chép chương trình vào vở. HS: Chép bài vào vở. GV: Yêu cầu HS gõ chương trình vào máy và chạy thử. HS: Thực hành. GV: Nếu sử dụng câu lệnh while do thì điều kiện của chương trình là gì? HS: i<=100 GV: Vòng lặp sẽ dừng lại khi nào? HS: Dừng lại khi i>100. 2. Ví dụ về lệnh lặp với số lần chưa biết trước: * Cú pháp: While do ; Trong đó: - while, do là các từ khóa - Điều kiện thường là 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. Thực hiệnlệnh: 1. Kiểm tra điều kiện. 2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp sẽ 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: SGK Program vd2; Var x: real; n: integer; Const sai_so = 0.003; Begin x:=1; n:=1; while x >= sai_so do begin n:=n+1; x:=1/n end; writeln('so n nho nhat de 1/n <', sai_so:6:4,' la ',n); readln; End. Ví dụ 3: Tính S=1+2+3+... sao cho tổng nhỏ nhất lớn hơn 1000. Var S,n: integer; Begin S:=0; n:=0; While S<=1000 do Begin S:= S+n; n:= n+1; end; Writeln ( ‘so ‘,n,’ nho nhat de tong >1000 la’,n); Writeln (‘Tong dau tien >1000 la’,S); Readln End. Ví dụ 4: SGK. Program vidu4_1; Var i: integer; T: real; Begin T:=0; For i:=1 to 100 do T:=T+1/i; Writeln (T); End. Program vidu4_2; Var i: integer; T: real; Begin T:=0; i:=1; while i<=100 do begin T:=T+1/i; i:=i+1; end; end. Củng cố kiến thức. (2’) Nêu những dạng câu lệnh lặp mà em đã được học? a) Lặp với số lần biết trước: For := to do ; Hoặc For := to do Begin ; ; . . . End; b) Lặp với số lần biết chưa trước: While do ; Hoặc While do Begin ; ; . . . End; Trả lời câu hỏi 1, 2 trang 71 SGK. Hướng dẫn về nhà. (2’) Về nhà học bài, trả lời câu hỏi sách giáo khoa. Xem trước phần còn lại của bài Rút kinh nghiệm: Tuần 22 Tiết 43 Bài 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC I. Mục tiêu Kiến thức Biết được nhu cầu 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ực hiệ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. Hiểu được 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 ngôn ngữ Pascal. Kỹ năng: Rèn khả năng đọc chương trình, phân tích tác dụng các câu lệnh. Viết được câu lệnh lặp ở những bài toán đơn giản. Thái độ Có thái độ nghiêm túc trong học tập. Giáo dục kỹ năng, tư duy của học sinh. II. Chuẩn bị Giáo viên: Giáo án, SGK. Máy tính, máy chiếu, phần mềm máy tím kiếm. Học sinh Học bài cũ, xem các thuật toán dã học. III. Phương pháp: Trực quan, thử, luyện tập, nhóm. IV.Tiến trình dạy học: Ổn định lớp: Kiểm tra sĩ số. (2’) Kiểm tra bài cũ Bài mới: 2’ Ở tiết trước, chúng ta đã được tìm hiểu cú pháp của câu lệnh lặp với số lần chưa biết trước. Chúng ta tiếp tục tìm hiểu một số ví dụ vận dụng câu lệnh lặp với số lần chưa biết trước vào giải bài toán. Hoạt động của Giáo viên & Học sinh Nội dung Hoạt động 1: Lặp vô hạn lần – lỗi lập trình cần tránh. (30’) GV: Hãy cho biết cú pháp câu lệnh lặp với số lần chưa biết trước và giải thích ý nghĩa? HS: * Cú pháp: While do ; Trong đó: - while, do là các từ khóa - Điều kiện thường là 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. Thực hiệnlệnh: 1. Kiểm tra điều kiện. 2. Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp sẽ 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. GV: Khi chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc. Đó được gọi là lặp vô hạn lần. Vậy thế nào là lặp vô hạn lần chúng ta qua phần 3. GV: Các em quan sát ví dụ trong SGK. Var a: integer; Begin a:=5; while a<6 do writeln (‘A’); end. HS: Quan Sát. GV: Em hãy cho biết điều kiện của bài toán là gì? HS: điều kiện dừng là a<6. GV: Trong chương trình trên, giá trị của biến a luôn luôn bằng 5, điều kiện a<6 luôn luôn đúng nên lệnh writeln (‘A’) luôn được thực hiện. GV: 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. Chỉ như thế chương trình mới không rơi vào những vòng lặp vô tận. Lưu ý: Khi thực hiện vòng lặp, While .do cần xác định được điều kiện trong câu lệnh sau một số lần sẽ chuyển từ đúng sang sai để thoát khỏi vòng lặp. Không rơi vào những “Vòng lặp vô tận” - Trong vòng lặp While...do điều kiện được kiểm tra trước khi thực hiện cậu lệnh, do đó có thể có trường hợp câu lệnh không được thực hiện một lần nào. GV: Cho HS ghi bài. HS: Ghi bài. GV: Cho H làm một vài ví dụ VD1: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? S:=0; n:=0; While s<=10 do n:=n+1; S:=s+n; GV: Gọi H lên bảng làm GV: Gọi H khác nhận xét GV: Chốt lại Vòng lặp trong chương trình trên là vô tận vì sau câu lệnh n:= n+1 câu lệnh lặp kết thúc nên điều kiện s=0 luôn được thỏa mãn VD 2: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? Khi kết thúc s sẽ bằng bao nhiêu? S:=10; n:=0; While s>=10 do n:=n+3;s:=s-n; end; Write(s); GV: Gọi H lên bảng làm GV: Gọi H khác nhận xét GV: Chốt lại Không vòng lặp nào được thực hiện, khi kết thúc s=10 3. Lặp vô hạn lần – lỗi lập trình cần tránh. - 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” Ví dụ: Var a: integer; Begin a:=5; while a<6 do writeln (‘A’); end. VD1: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? S:=0; n:=0; While s<=10 do n:=n+1; S:=s+n; VD 2: Sau khi thực hiện đoạn lệnh sau chương trình sẽ lặp bao nhiêu vòng? Khi kết thúc s sẽ bằng bao nhiêu? S:=10; n:=0; While s>=10 do n:=n+3;s:=s-n; end; Write(s); Củng cố kiến thức. (4’) Nêu những dạng câu lệnh lặp mà em đã được học? Trả lời câu hỏi 4, 5 trang 71 SGK. Hướng dẫn về nhà. (2’) Về nhà học bài. Coi trước bài thực hành 6 “Sử dụng lệnh lặp While...do...” Rút kinh nghiệm: Tuần 22 Tiết 44 Bài thực hành 5 SỬ DỤNG LỆNH LẶP WHILE ... DO I. Mục tiêu Kiến thức 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ực hiện lặp đi lặp lại công việc nào đó cho đến khi một điều kiện nào đó được thỏa mãn. Kĩ năng Có kỹ năng đọc hiểu chương trình, tìm hiểu tác dụng của các câu lệnh. Thái độ Có thái độ nghiêm túc trong học tập. Giáo dục kỹ năng, tư duy của học sinh. II. Chuẩn bị Giáo viên: Giáo án, SGK. Máy tính, máy chiếu, phần mềm máy tím kiếm. Học sinh Học bài cũ, xem các thuật toán dã học. III. Phương pháp: Trực quan, thử, luyện tập, nhóm. IV.Tiến trình dạy học: Ổn định lớp: Kiểm tra sĩ số. (2’) Kiểm tra bài cũ:(5’) Câu hỏi: Hãy viết câu lệnh lặp với số lần chưa biết trước trong ngôn ngữ lập trình Pascal? Giải thích câu lệnh? Trả lời: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: while do ; 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 hay câu lệnh ghép. Câu lệnh lặp này được thực hiện như sau: Kiểm tra điều kiện. Nếu điều kiện SAI, câu lệnh sẽ 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. Bài mới: Để hiểu rõ hơn về câu lệnh lặp với số lần chưa biết trước thì tiết học hôm nay chúng ta sẽ nghiên cứu bài thực hành 6. “SỬ DỤNG LỆNH LẶP WHILE...DO”. Hoạt động của Giáo viên & Học sinh Nội dung Hoạt động 1: Bài 1 (35’) GV: Cho học sinh đọc đề bài tập 1 sgk/72. HS: Đọc bài. GV: Ý tưởng để làm bài tập này là gì? HS: Sử dụng một biến đếm và lệnh lặp Whiledo để nhập và cộng dần các số vào một biến kiểu số thực cho đến khi nhập đủ n số. GV: Cho chạy chương trình. HS: Quan sát kết quả. GV: Mô tả thuật toán của chương trình, các biến dự định sẽ sử dụng và kiểu của chúng. HS: Input: Dãy số thực x1, x2...xn Output: Giá trị trung bình (x1 + x2 + ... +xn)/n Thuật toán Bước 1. - Nhập N là số lượng số thực sẽ được nhập từ bàn phím: - Gán biến đếm bằng 0 i¬ 0; - Gán tổng Sum ¬ 0. Bước 2. Trong khi i < N thì - Nhập giá trị số thực x từ bàn phím; - Cộng thêm x vào tổng Sum: Sum ¬ Sum + x; - Tăng biến dem thêm 1 đơn vị: i ¬ i+ 1; Bước 3. Tính trung bình dãy số vừa nhập TB ¬ Sum/N. Bước 4. Đưa TB ra màn hình, rồi kết thúc. GV: Đưa ra chương trình được viết sẵn cho học sinh so sánh sự tương xứng: Program Tinh_Trung_binh; uses crt; Var n, i: Integer; x, TB: real; begin clrscr; i:=0 ; TB:=0 ; write('Nhap so cac so can tinh n = '); readln(n); while i<n do begin i:=i+1; write('Nhap so thu ',i,'= '); readln(x); TB:=TB+x; end; TB:=TB/n; writeln('Trung binh cua ',n,' so la = ',TB:10:3); readln end. HS: Quan sát và so sánh. GV: Yêu cầu học sinh gõ chương trình trên máy, dịch chạy chương trình tìm hiểu từng câu lệnh. HS: Thực hành dưới sự quan sát hỗ trợ của giáo viên. GV: Viết lại chương trình bằng cách sử dụng câu lệnh For...do thay cho câu lệnh While ... do ta viết như thế nào? HS: Program Tinh_Trung_binh; uses crt; Var n, i: Integer; x, tong, TB: real; begin clrscr; TB:=0 ; write('Nhap so cac so can tinh n = '); readln(n); For i:=1 to n do begin write('Nhap so thu ',i,'= '); readln(x); Tong:=Tong+x; end; TB:=Tong/n; writeln('Trung binh cua ',n,' so la = ',TB:10:3); writeln('Nhan Enter de thoat ...'); readln end. GV: Yêu cầu học sinh sửa lại câu lệnh bằng cách sử dụng lệnh lắp For ... do HS: Thực hành trên máy. Bài 1. Viết chương trình sử dụng lệnh lặp Whiledo để tính trung bình n số thực x1, x2, x3,..., xn. Các số n và x1, x2, x3,..., xn được nhập vào từ bàn phím. * Xác định bài toán Input: Dãy số thực x1, x2...xn Output: Giá trị trung bình (x1 + x2 + ... +xn)/n * Thuật toán Bước 1. - Nhập N là số lượng số thực sẽ được nhập từ bàn phím: i¬ 0; Sum ¬ 0. Bước 2. Trong khi i < N thì - Nhập giá trị số thực x từ bàn phím; Sum ¬ Sum + x; i ¬ i + 1; Bước 3. TB ¬ Sum/N. Bước 4. Đưa TB ra màn hình, rồi kết thúc. Program Tinh_Trung_binh; uses crt; Var n, i: Integer; x, TB: real; begin clrscr; i:=0 ; TB:=0 ; write('Nhap so cac so can tinh n = '); readln(n); while i<n do begin i:=i+1; write('Nhap so thu ',i,'= '); readln(x); Tong:=Tong+x; end; TB:=Tong/n; writeln('Trung binh cua ',n,' so la = ',TB:10:3); readln end. Củng cố kiến thức. (2’) GV: Trong ngôn ngữ lập trình Pascal, cấu trúc lặp với số lần chưa biết trước được thể hiện bằng câu lệnh gì? HS: while do ; GV: khi viết chương trình dùng cấu trúc lặp thì cần tránh lỗi gì? HS: cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc. Hướng dẫn về nhà. (1’) Về nhà học bài và tìm hiểu lại chương trình bài 1 sgk/72. Nghiên cứu trước bài 2 sgk/73. Rút kinh nghiệm: Tuần 23 Tiết 45 Bài thực hành 6 SỬ DỤNG LỆNH LẶP WHILE ... DO I. Mục tiêu Kiến thức 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ực hiện lặp đi lặp lại công việc nào đó cho đến khi một điều kiện nào đó được thỏa mãn. Kĩ năng Có kỹ năng đọc hiểu chương trình, tìm hiểu tác dụng của các câu lệnh. Thái độ Có thái độ nghiêm túc trong học tập. Giáo dục kỹ năng, tư duy của học sinh. II. Chuẩn bị Giáo viên: -Giáo án, SGK. -Máy tính, máy chiếu, phần mềm máy tím kiếm. Học sinh -Học bài cũ, xem các thuật toán dã học. III. Phương pháp: Trực quan, thử, luyện tập, nhóm. IV.Tiến trình dạy học: Ổn định lớp: Kiểm tra sĩ số. (1’) Kiểm tra bài cũ:(5’) Câu hỏi: Hãy viết câu lệnh lặp với số lần chưa biết trước trong ngôn ngữ lập trình Pascal? Giải thích câu lệnh? Trả lời: Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng: while do ; 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 hay câu lệnh ghép. Câu lệnh lặp này được thực hiện như sau: Kiểm tra điều kiện. Nếu điều kiện SAI, câu lệnh sẽ 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. Bài mới: Để hiểu rõ hơn và biết vận dụng câu lệnh lặp với số lần chưa biết trước thì tiết học hôm nay chúng ta sẽ tiếp tục nghiên cứu bài thực hành 6. “SỬ DỤNG LỆNH LẶP WHILE...DO”. Hoạt động của Giáo viên & Học sinh Nội dung Hoạt động 1: Bài 2 (20’) G: Cho học sinh đọc đề bài tập 2 sgk/73. H: Đọc bài. G: Thế nào là số nguyên tố? H: Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có hai ước là 1 và chính nó. G: Hãy xác định bài toán? H: Input: Số tự nhiên N Output: Trả lời N là số nguyên tố hoặc N không là số nguyên tố G: Ý tưởng của bài toán này là gì? H: Để kiểm tra N có phải số nguyên tố hay không ta sẽ đi kiểm tra xem N có chia hết các số từ 2 đến N - 1 hay không. Nếu N không chia hết cho số nào trong khoảng từ 2 đến N - 1 thì N là số nguyên tố, ngược lại N chia hết cho bất kì một số nào trong khoảng từ 2 đến N - 1 thì N không phải là số nguyên tố. Sử dụng phép chia lấy phần dư mod để kiểm tra tính chia hết. G: Cho học sinh đọc và tìm hiểu chương trình. Uses Crt; Var n,i:integer; Begin Clrscr; write('Nhap vao mot so nguyen: '); readln(n); If n<=1 then writeln('N khong la so nguyen to') else begin i:=2; while (n mod i0) do i:=i+1; if i=n then writeln(n,' la so nguyen to!') else writeln(n,' khong phai la so nguyen to!'); end; readln end. H: Đọc và tìm hiểu từng câu lệnh để hiểu chương trình. G: Cho học sinh thảo luận nhóm khoảng 3 phút để mô tả thuật toán. H: Thảo luận. H: Đưa ra thuật toán: Bước 1: Nhập số tự nhiên N từ bàn phím. Bước 2: Nếu N£ 1 thông báo N không phải là số nguyên tố, rồi chuyển đến bước 4. Bước 3: Nếu N > 1: 3.1. i¬2; 3.2. Trong khi N mod i 0, i¬i+1; 3.3. Nếu i = N thì t
Tài liệu đính kèm: