Gv: Viết chương trỡnh bài 2 lờn bảng.
Hs: Ghi bài vào vở.
Gv: Cho Hs lần lượt tỡm hiểu ý nghĩa của từng cõu lệnh
-Tỏc dụng: While n mod i <> 0 do i:= i + 1;
Hs: Lần lượt trả lời.
Gv: Chương trỡnh trờn cú tỏc dụng gỡ?
Hs: Mục đích là nhận dạng một số có là số nguyờn tố hay khụng?Hs: S S + x;
Gv: làm sao để có S mới = S cũ + x.
Hs: S 0 (b1)
Gv: qluật S S + x; đến khi nào dừng?
Hs: Khi dem > n. phát hiện ra điều kiện lặp của While do
Gv: Dựa vào hệ thống câu hỏi. Lần lượt hình thành thuật toán.
Hs: Dựa vào thuật toán trình bày chương trình hoàn chỉnh.
Gv: Quan sát, chỉnh sửa từng câu lệnh Hs lên bảng trình bày.
Ngày soạn :8/3/2009 Ngày dạy : 8A : 8B : 8C : 8D : 8E : Tuần 26 Tiết 52: BàI thực hành 6: Sử dụng lệnh LẶP WHILE ... do A. Mục tiêu: Viết được chương trình Pascal có sử dụng vòng lặp While ... do Biết sử dụng câu lệnh ghép. Rèn kỹ năng đọc hiểu chương trình có sử dụng vòng lặp while ... do B. Phương pháp 1. Phương pháp: Thuyết trình, nêu vấn đề, vấn đáp 2. Phương tiện: Máy tính, . C. Chuẩn bị: 1. Giáo viên: Chuẩn bị một số thuật toán và chương trình . Chuẩn bị máy tính,. 2. Học sinh:- Thực hiện nhiệm vụ về nhà của tiết trước. D. Tiến trình bài dạy: ổn định lớp (1 phút) II.Kiểm tra bài cũ (không kiểm tra) Giảng bài mới: HĐ của GV và hs Nội dung Gv: Viết chương trỡnh bài 2 lờn bảng. Hs: Ghi bài vào vở. Gv: Cho Hs lần lượt tỡm hiểu ý nghĩa của từng cõu lệnh -Tỏc dụng: While n mod i 0 do i:= i + 1; Hs: Lần lượt trả lời. Gv: Chương trỡnh trờn cú tỏc dụng gỡ? Hs: Mục đớch là nhận dạng một số cú là số nguyờn tố hay khụng?Hs: S S + x; Gv: làm sao để có S mới = S cũ + x. Hs: S 0 (b1) Gv: qluật S S + x; đến khi nào dừng? Hs: Khi dem > n. à phát hiện ra điều kiện lặp của Whiledo Gv: Dựa vào hệ thống câu hỏi. Lần lượt hình thành thuật toán. Hs: Dựa vào thuật toán trình bày chương trình hoàn chỉnh. Gv: Quan sát, chỉnh sửa từng câu lệnh Hs lên bảng trình bày. Bài 2: Đọc và tìm hiểu ý nghĩa của từng câu lệnh sau đây. 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 i 0 do i:= i + 1; If i = n Then Writeln(n,’ la so nguyen to’) Else Writeln(n,’ khong la so nguyen to’); End; Readln END. SơS+x; demơdem +1; IV.Hướng dẫn về nhà (2 phút) Ghi nhớ cú pháp và ý nghĩa của câu lệnh lặp while ... do..., Đọc và tìm hiểu chương trình trong Đọc thêm 1 – Tính gần đúng số Pi. Ngày soạn :8/3/2009 Ngày dạy : 8A : 8B : 8C : 8D : 8E : Tuần 27 Tiết 53: BÀI TẬP A. Mục tiêu: Viết được chương trình Pascal có sử dụng vòng lặp While ... do Biết sử dụng câu lệnh ghép. Rèn kỹ năng đọc hiểu chương trình có sử dụng vòng lặp while ... do B. Phương pháp 1. Phương pháp: Thuyết trình, nêu vấn đề, vấn đáp 2. Phương tiện: Máy tính, . C. Chuẩn bị: 1. Giáo viên: Chuẩn bị một số thuật toán và chương trình . Chuẩn bị máy tính,. 2. Học sinh:- Thực hiện nhiệm vụ về nhà của tiết trước. D. Tiến trình bài dạy: Sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước là ở các điểm sau đây: Như tên gọi của nó, câu lệnh lặp với số lần lặp cho trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước, còn với câu lệnh lặp với số lần lặp chưa biết trước thì số lần lặp chưa được xác định trước. Trong câu lệnh lặp với số lần cho trước, điều kiện là giá trị của một biến đếm có giá trị nguyên đã đạt được giá trị lớn nhất hay chưa, còn trong câu lệnh lặp với số lần lặp chưa biết trước, điều kiện tổng quát hơn nhiều, có thể là kiểm tra một giá trị của một số thực, cũng có thể là một điều kiện tổng quát khác, ví dụ như một số có chia hết cho 3 hay không,... Trong câu lệnh lặp với số lần cho trước, câu lệnh được thực hiện ít nhất một lần, sau đó kiểm tra điều kiện. Trong câu lệnh lặp với số lần chưa xác định trước, trước hết điều kiện được kiểm tra. Nếu điều kiện được thoả mãn, câu lệnh mới được thực hiện. Do đó có thể có trường hợp câu lệnh hoàn toàn không được thực hiện. Mô tả thuật toán: Bước 1. Đặt i = R (i là bán kính đường tròn sẽ vẽ). Bước 2. Nếu i > 1.5, vẽ đường tròn bán kính i; ngược lại, chuyển đến bước 4. Bước 3. i ơ i - 1/2 và quay lại bước 2. Bước 4. Kết thúc thuật toán. a) Thuật toán 1: 10 vòng lặp được thực hiện. Khi kết thúc thuật toán S = 5.0. Đoạn chương trình Pascal tương ứng: S:=10; x:=0.5; while S>5.2 do S:=S-x; writeln(S); b) Thuật toán 2: Không vòng lặp nào được thực hiện vì ngay từ đầu điều kiện đã không được thỏa mãn nên các bước 2 và 3 bị bỏ qua. S = 10 khi kết thúc thuật toán. Đoạn chương trình Pascal tương ứng: S:=10; n:=0; while S<10 do begin n:=n+3; S:=S-n end; writeln(S); Nhận xét: Trong các thuật toán và chương trình trên, điều kiện được kiểm tra trước khi các bước lặp được thực hiện. Do đó nếu điều kiện không được thỏa mãn ngay từ đầu, các bước lặp sẽ bị bỏ qua. Điều này đặc biệt đúng đối với câu lệnh lặp while..do. a) Chương trình thực hiện 5 vòng lặp. b) Vòng lặp trong chương trình được thực hiện 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 luôn được thỏa mãn. Nhận xét: Trong câu lệnh thực hiện, điều kiện cần phải được thay đổi để sớm hay muộn chuyển sang trạng thái không thỏa mãn. Khi đó vòng lặp mới được kết thúc sau hữu hạn bước. Để làm được điều này, câu lệnh trong câu lệnh lặp while..do thường là câu lệnh ghép. a) Thừa dấu hai chấm trong điều kiện; b) Thiếu dấu hai chấm trong câu lệnh gán; c) Thiếu các từ khóa begin và end trước và sau các lệnh n:=n+1; S:=S+n, do đó vòng lặp trở thành vô tận. Viết thuật toán và chương trình Pascal có câu lệnh lặp với số lần không xác định để tính luỹ thừa bậc n của x (tức xn), với n là số tự nhiên và x là số thực được nhập vào từ bàn phím. Hãy so sánh với thuật toán trong bài tập 8, bài 7. Thuật toán: Bước 1. Đọc các giá trị x và n. Bước 2. A ơ 1, k ơ 1. Bước 3. Nếu k > n, chuyển xuống bước 5. Bước 4. A = A.x, k ơ k + 1 và quay lại bước 3. Bước 5. Thông báo kết quả là A và kết thúc thuật toán. Chương trình Pascal: var n,k: integer; A, LT: real; begin write(‘Nhap so A= ‘); readln(A); write(‘Nhap so n= ‘); readln(n); LT:=1; k:=1; while k<=n do begin LT:=LT*A, k:=k+1 end end. Tính tích của N số tự nhiên đầu tiên với số lần lặp không xác định (với N là số tự nhiên được nhập vào từ bàn phím). Bước 1. Đọc giá trị N. Bước 2. T ơ 1, k ơ 1. Bước 3. Nếu k Ê N, T = T.k; ngược lại, chuyển xuống bước 5. Bước 4. k ơ k + 1 và quay lại bước 3. Bước 5. Kết thúc thuật toán. Thuật toán: Bước 1. Đọc giá trị n. Bước 2. S ơ 0, i ơ 2. Bước 3. Nếu i > n - 1, chuyển xuống bước 5. Bước 4. Nếu n chia hết cho i, S ơ S + i, i ơ i + 1 và quay lại bước 3. Bước 5. Ghi giá trị S và kết thúc thuật toán. Chương trình có thể như sau: var n,i,S: integer; begin write('Cho so tu nhien n= '); readln(n); i:=2; S:=0; while i<=n-1 do begin if (n mod i)=0 then S:=S+i; i:=i+1; end; write('Tong cac uoc so thuc su cua ',n,' la: ',S); readln; end. Chương trình có thể như sau: Uses CRT; Var A, sum: real; i: integer; Begin Write('cho so A: '); readln(A); i:=1; sum:= 0; While (sum<=A) do Begin sum:= sum+1/i; i:= i+1; end; Write('Gia tri N bang ', i:6); Readln; End. Ngày soạn :8/3/2009 Ngày dạy : 8A : 8B : 8C : 8D : 8E : Tuần 27 Tiết 54: BÀI TẬP A. Mục tiêu: Viết được chương trình Pascal có sử dụng vòng lặp While ... do Biết sử dụng câu lệnh ghép. Rèn kỹ năng đọc hiểu chương trình có sử dụng vòng lặp while ... do B. Phương pháp 1. Phương pháp: Thuyết trình, nêu vấn đề, vấn đáp 2. Phương tiện: Máy tính, . C. Chuẩn bị: 1. Giáo viên: Chuẩn bị một số thuật toán và chương trình . Chuẩn bị máy tính,. 2. Học sinh:- Thực hiện nhiệm vụ về nhà của tiết trước. D. Tiến trình bài dạy: Bài 1: Lập trình tính tổng dùng lệnh lặp While ...do. Trong đú n là số tự nhiên được nhập từ bàn phím. GIẢI Program tinhA; Uses CRT; Var i, n: integer; tong: real; BEGIN Clrscr; write('cho so tu nhien n: '); Readln(n); tong:=0; i:=1; while i<= n do Begin tong:= tong+ 1/i; i: = i+1; End; writeln(' Tong can tim la: ', tong:12:6); Readln; END. Bài 2: Viết chương trỡnh tỡm ƯCLN(a,b). Biết a, b được nhập từ bàn phớm. a,b Giải Program timUCLN; Uses Crt; Var a,b,r,a1,b1: integer; BEGIN ClrScr; Write(‘Nhap so thu nhat, a= ‘); Readln(a); a1:= a; Write(‘Nhap so thu hai, = ‘); Readln(b); b1:= b; While a mod b 0 do Begin r:= a mod b; a: = b; b: = r; End; Write (‘ Vay UCLN(‘, a1, ‘;’,b1,’)=’,b:2); Readln END. Bài 3: Viết chương trỡnh tỡm BCNN(a,b). Biết a, b được nhập từ bàn phớm. a,b Giải Program timBCNN; Uses Crt; Var a,b,n,min,max,max1: integer; BEGIN ClrScr; Write(‘Nhap so thu nhat, a= ‘); Readln(a); a1:= a; Write(‘Nhap so thu hai, = ‘); Readln(b); b1:= b; If a>b then Begin max: = a; min:=b; End Else Begin max:=b; min:= a; End; n:= 2; max1:=max; While max mod min 0 Do Begin max:= max1*n; inc(n); {n:=n+1} End; Write (‘ Vay BCNN(‘, a, ‘;’,b,’)=’,max:2); Readln END.
Tài liệu đính kèm: