- 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ế[r]
Trang 1UBND QUẬN SƠN TRÀ
Họ và tên HS: Lớp 8/
TUẦN 21:
I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học)
1/ Câu lệnh lặp - một lệnh thay cho nhiều lệnh
Ví dụ 1: Vẽ 3 hình vuông có cạnh 1 đơn vị(Sgk Trang 55)
Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên.
=> Mọi ngôn ngữ lập trình đều có “cách” để chỉ thị cho máy tính thực hiện cấu trúc lặp
với một câu lệnh Đó là câu lệnh lặp.
2/ Câu lệnh lặp for do
- Cú pháp:
for <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
Trong đó:
+ for, to, do là các từ khoá.
+ biến đếm là biến kiểu nguyên
+ giá trị đầu, giá trị cuối là các giá trị nguyên
- Hoạt động của câu lệnh: Câu lệnh lặp sẽ thực hiện câu lệnh nhiều lần, mỗi lần thực hiện
câu lệnh là một lần lặp Số lần lặp = giá trị cuối – giá trị đầu + 1 Khi thực hiện, ban đầu
biến đếm sẽ nhận giá trị là giá trị đầu, sau mỗi vòng lặp biến đếm sẽ tự động tăng lên 1 đơn vị cho đến khi bằng giá trị cuối.
- Ví dụ 3: Chương trình sau sẽ in ra màn hình thứ tự lặp:
Var i: integer;
Begin
For i: = 1 to 10 do Write(‘Day la lan lap thu ’,i);
Readln;
End
- Ví dụ 4: Chương trình sau in chữ “O” ra màn hình:
Var i: integer;
Begin
For i: = 1 to 20 do Begin Write(‘O ’); Delay(100) end;
Readln End
- Lưu ý: Các câu lệnh đơn giản Write(‘O ’) và Delay(100) được đặt trong cặp từ khóa begin và end; được gọi là câu lệnh ghép
3/ Tính tổng và tích bằng câu lệnh lặp
Ví dụ 5: Chương trình 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
Var N, i: integer;
S: longint;
Begin
Write(‘Nhap so N=’); readln(N);
S:=0;
For i:=1 to N do S:=S+i;
Write(‘Tong cua’,N, ‘so tu nhien dau tien S=’, S);
Readln
End
Trang 2Ví dụ 6: 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.
Var N, i: integer;
P: longint;
Begin
Write(‘Nhap so N=’); readln(N);
P:=1;
For i:=1 to N do P:=P*i;
Write(N, ‘!=’, P);
Readln
End
II/ BÀI TẬP
Làm các bài tập 1,2 sgk
Hướng dẫn học ở nhà:
- Học bài theo sách giáo khoa và vở ghi, Ôn lại các kiến thức chính của bài học học
và luyện viết, làm đi làm lại nhiều lần
- Học kĩ lí thuyết, viết chương trình tính tổng 100 số tự nhiên, N số tự nhiên đầu tiên
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 22: Tiết 41+42: BÀI TẬP HS ghi bài vào vở học: Bài 2: SGK (Tr 60) - Câu lệnh lặp có tác dụng chỉ dẫn cho máy tính thực hiện lặp lại một câu lệnh hay một nhóm câu lệnh với một số lần nhất định - Câu lệnh lặp làm giảm nhẹ công sức của người viết chương trình Bài 3 SGK (Tr 60) - Điều kiện cần kiểm tra trong câu lệnh lặp for … do là giá trị của biến đếm phải nằm trong đoạn [giá trị đầu, giá trị cuối], nếu thoả mãn điều kiện đó thì câu lệnh sẽ được thực hiện, nếu không thoả mãn câu lệnh sẽ bị bỏ qua Bài 3 Sgk (Tr 59) - Mô tả thuật toán để tính tổng: A= 1 1 3+ 1 2.4+ 1 3 5+ +
1 n(n+2) Bước 1: Nhập n, A0, i1 Bước 2: A ← A+ 1 i(i+2 ) . Bước 3: ii+1 Bước 4: nếu i<=n quay lại bước 2 Bước 5: In kết quả A ra màn hình và kết thúc thuật toán Bài tập 4: Viết chương trình tính tổng: A= 1 1 3+ 1 2.4+ 1 3 5+ +
1
n(n+2)
Với n là số nguyên nhập vào từ bàn phím
Var i, n: integer;
Trang 3A: real;
Begin
Writeln(‘Nhap vao n=’); readln(n);
A:=0;
For i:= 1 to n do A:=A+1/i*(i+2)
Writeln(‘Tong la:’,A:3:1);
readln
End
Bài tập 5: Viết chương trình tính tổng của n số tự nhiên lẻ đầu tiên.
Var i, n : integer;
T: longint;
Begin
Writeln(‘Nhap vao n=’);
readln(n);
T:=0;
For i:= 1 to n do T:=T+(2*i-1);
Writeln(‘Tong la: ’,T);
readln
End
Hướng dẫn học ở nhà:
Ôn lại các kiến thức chính của bài học học và luyện viết, làm đi làm lại nhiều lần
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 23:
Tiết 43: Bài thực hành 5:
SỬ DỤNG LỆNH LẶP FOR DO I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học)
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, và dừng màn
hình để có thể quan sát kết quả
a) Hướng dẫn hs khởi động Turbo Pascal và gõ chương trình:
Uses crt;
Var i, n: integer;
Begin
Clrscr;
Writeln(‘Nhap vao so n’); readln(n);
Writeln(‘Bang nhan ’,n);
Writeln;
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:
- Khai báo thư viện, các biến trong chương trình
- Bắt đầu chương trình:
Trang 4+ Thực hiện lệnh xóa màn hình.
+ Thông báo và nhập giá trị cho số n
+ In ra một dòng trống bằng lệnh Writeln;
+ In thông báo bảng nhân của số n
+ Thực hiện lệnh lặp: biến i chạy từ 1 đến 10 và in kết quả bảng nhân
- Kết thúc chương trình
- Dịch chương trình: ấn Alt+F9, nếu có lỗi ta chỉnh sửa rồi dịch lại cho đến khi không còn lỗi
c) Chạy chương trình: ấn Ctrl+F9, sau đó nhập vào các giá trị cho n=1,2, , 10 và xem kết quả
Bài 2 sgk /Tr61:
Giới thiệu lệnh: GotoXY(), WhereX, WhereY
- Lệnh GotoXY(a,b): Đưa con trỏ về cột a hàng b.
- Lệnh WhereX: cho biết số thứ tự của cột đang có con trỏ.
- Lệnh WhereY: cho biết số thứ tự của hàng đang có con trỏ.
VD: GotoXY(5,WhereY) Đưa con trỏ về vị trí cột 5 của hàng hiện tại.
Lưu ý : Phải khai báo thư viện crt trước khi sử dụng các lệnh trên.
a) Chỉnh sửa chương trình ở bài tập 1 như sau:
Uses crt;
Var i, n: integer;
Begin
Clrscr;
Writeln(‘Nhap vao so n’); readln(n);
Writeln(‘Bang nha’,n); Writeln;
For i:=1 to 10 do
Begin GotoXY(5, WhereY);
Writeln(n,’x’,i:2,’=’,n*i:3); Readln;
End
b) Dịch và chạy chương trình: ấn Alt+F9, Ctrl+F9
Hướng dẫn học ở nhà:
- Ôn lại các kiến thức chính đã học và luyện viết, làm đi làm lại nhiều lần
- Học sinh về nhà sử dụng lệnh GotoXY để chỉnh sửa lại bài thực hành số 3 cho kết quả in ra màn hình đẹp
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 23:
TIẾT 44 : Bài 8: L p v i s l n ch a bi t tr ặ ớ ố ầ ư ế ướ c
I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học)
1/ Lệnh lặp với số lần chưa biết trước.
Ví dụ 1: Sgk/tr63
Thuật toán:
Bước 1: S0, n0.
Bước 2: Nếu S ≤ 1000, nn + 1; ngược lại chuyển tới bước 4
Bước 3: S S + n và quay lại bước 2.
Trang 5Bước 4: 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.
a) Cú pháp:
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.
b) Hoạt động của câu lệnh lặp với số lần chưa biết trước.
- B1: Kiểm tra điều kiện.
- B2: 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
Hướng dẫn học ở nhà:
- Học bài theo sách giáo khoa và vở ghi, Ôn lại các kiến thức chính đã
- Làm các bài tập 1 – 3 Sgk
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 24: TIẾT 45: Bài 8: L p v i s l n ch a bi t tr ặ ớ ố ầ ư ế ướ c(tt)
I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học)
1 Lệnh lặp với số lần chưa biết trước( tt)
c) Một số ví dụ:
Ví dụ 2:
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:5:4, 'la ',n);
readln
end.
Ví dụ 3:
var S,n: integer;
begin
Trang 6S:=0; n:=1;
while S<=1000 do
begin n:=n+1; S:=S+n end;
writeln('So n nho nhat de tong > 1000 la ',n);
writeln('Tong dau tien > 1000 la ',S);
end.
Ví dụ 4:
var T,i: integer;
begin
T:=0; i:=1;
while i<=100 do
begin T:=T+1/i;
i:=i+1;
end;
writeln(T);
end.
Hướng dẫn học ở nhà:
- Ôn lại các kiến thức chính đã học và luyện viết, làm đi làm lại nhiều lần.
- Làm các bài tập còn lại.
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 24:
NỘI DUNG THỰC HÀNH:
Bài 2: sgk/tr69
a) Tìm hiểu ý nghĩa của các câu lệnh trong 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 i<>0) 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.
b) Gõ, dịch và chạy thử chương trình với một vài độ chính xác khác nhau:
- Dịch chương trình: Ấn Alt + F9
- Chạy chương trình: Ấn Ctrl + F9
Trang 7 Hướng dẫn học ở nhà:
- Ôn lại kiến thức đã học
- Thực hành các bài tập
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 25: Ti t 47+48:ế ÔN TẬP I/ PHẦN LÝ THUYẾT 1/ Xem lại cạc khai báo biến 2/ Xem lại các bước xác định bài toán và viết thuật toán 3/ Ôn lại cấu trúc và cách hoạt động của câu lệnh lặp 4/ Ôn lại cấu trúc và cách hoạt động của câu lệnh lặp với số lần chưa biết trước II/ PHẦN BÀI TẬP Bài 2: Sgk/tr71 - 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.
Bài 3: sgk/tr71
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);
Bài 4: sgk/tr71
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
Trang 8bướ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.
Bài 5: sgk/tr71
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
Bài 6: 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 x n ), với n là số tự nhiên và x là số thực được nhập vào từ bàn
phím:
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.
Bài 7: 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
1 1 1 1 ( )
2 3 A n Z n Program tinhA; Var i, n: integer; tong: real; BEGIN 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 Hướng dẫn học ở nhà: - Làm lại các bài tập sgk - Ôn tập lý thuyết và các dạng bài tập để giờ sau kiểm tra 1 tiết III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 26:
TUẦN 26:
I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học)
Trang 91/ Dãy số và biến mảng
- Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu, gọi là kiểu của phần tử Việc sắp thứ tự được thực hiện bằng cách
gán cho mỗi phần tử một chỉ số:
- Khi khai báo một biến có kiểu dữ liệu là kiểu mảng, biến đó được gọi là biến mảng
- Giá trị của biến mảng là một mảng, tức một dãy số (số nguyên, hoặc số thực) có thứ tự,
mỗi số là giá trị của biến thành phần tương ứng
2 Ví dụ về biến mảng
- Cách khai báo đơn giản một biến mảng trong ngôn ngữ Pascal như sau:
- Cách khai báo mảng trong Pascal như sau:
Var Tênmảng : array[<chỉ số đầu> <chỉ số cuối>] of <kiểu dữ liệu>;
Trong đó:
+ chỉ số đầu và chỉ số cuối là hai số nguyên hoặc biểu thức nguyên thoả mãn chỉ số đầu ≤ chỉ số cuối
+ kiểu dữ liệu có thể là integer hoặc real.
- Ví dụ:
Var A: Array[1 50] Of Integer;
B: Array[1 20] Of Real;
Hướng dẫn học ở nhà:
- 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 và làm bài 3,4 sgk/tr76
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 27: Tiết 51: Bài 9: Làm vi c v i dãy s (tt) ệ ớ ố I/ NỘI DUNG KIẾN THỨC BÀI HỌC (HS ghi bài vào vở học) 3/ Tìm giá trị lớn nhất và nhỏ nhất của dãy số Ví dụ 3: SGK/Tr 75 Program MaxMin; Uses crt; Var i, n, Max, Min : integer; A : array [1 100] of integer; Begin Clrscr; Write ( ‘Hay nhap do dai cua day so, n =’);
Readln (n);
Writeln ( Nhap cac phan tu cua day so:’);
For i:= 1 to n do
Trang 10Begin
Write (‘A[’ , i , ‘] =’); Readln (A[i]);
End;
Max:= A[1]; Min:= A[1];
For i:= 2 to n do
Begin
if Max < A[i] then Max:= A[i];
if Min > A[i] then Min:= A[i];
End;
Write (‘So lon nhat la Max =’, Max);
Write ( ‘So nho nhat la Min =’, Min);
Readln
End
Lưu ý: Số tối đa các phần tử của mảng( kích thước của mảng) phải được khai báo bằng 1
số cụ thể( ở ví dụ trên là 100)
II/ BÀI TẬP SGK
1/ Đúng
2/ Lợi ích chính của việc sử dụng biến mảng là rút gọn việc viết chương trình, có thể sử dụng câu lệnh lặp để thay nhiều câu lệnh Ngoài ra chúng ta còn có thể lưu trữ và xử lí nhiều dữ liệu có nội dung liên quan đến nhau một cách hiệu quả
3/ Đáp án
a) Sai Phải thay dấu phảy bằng hai dấu chấm;
b) và c) Sai, vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên;
d) Sai, vì giá trị đâu của chỉ số mảng phải nhỏ hơn hoặc bằng chỉ số cuối;
e) Đúng.
4/ Không Giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải được xác định trong phần khai báo chương trình
Hướng dẫn học ở nhà:
- Ôn lại kiến thức của bài
- Làm BT5sgk/ Tr 76;
III/ TRAO ĐỔI, PHẢN HỒI VỀ KIẾN THỨC BÀI HỌC CỦA HỌC SINH
TUẦN 27: Tiết 52: Bài t p ậ Bài 3: Sgk/tr76 a Sai, thay dấu, thành dấu
b Sai, vì chỉ số cuối là số thực
c Sai, vì chỉ số đầu, chỉ số cuối là số thực
d Đúng
Bài 4: Sgk/tr76
Không, vì N chưa có giá trị xác định
Bài 5: sgk/tr76
Var A: Array[1 100] of Integer;
n,i:integer;