Giáo án Tin học 9

KIẾN THỨC YÊU CẦU:

 Biết các thao tác cài đặt trên Windows.

 Biết sử dụng chuột và các thao tác trên bàn phím.

KIẾN THỨC ĐẠT ĐƯỢC

 Biết các khái niệm cơ bản về ngôn ngữ Pascal.

 Biết cách cài đặt Pascal từ đĩa CD.

 Biết cách sử dụng Pascal.

 Biết các bước để tạo, lưu và thực hiện một chương trình.

 Biết biên dịch và thực thi chương trình.

 I/ Khái niệm

 

doc 69 trang Người đăng phuquy Lượt xem 1228Lượt tải 0 Download
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học 9", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
t;
 c. Soduong :- integer;
 d. Dungsai :: Boolean;
3. Thêm, bớt sửa lại chương trình sau cho đúng, kiểm tra lại bằng cách chạy thử chương trình:
 Program TiMCHOSAi; 
 Var
 m : integer; 
 n : Real;
 ch : String; 
 Begin
 Clrscr;
 m =: 19;
 n := 25.62;
 Ch := ‘Hoc di doi voi hanh’; 
 Writeln (‘So nguyen m =’, ‘m’);
 Writeln (‘So thuc n =’, n);
 Writeln ‘Hoi ban mot chut‘, ‘Ch’); 
 Readln;
 End.
4. Víết chương trình có khai báo 3 biến x, y và z có kiểu nguyên, thực hiện phép gán x bằng 2, y bằng 4 và z bằng tích của hai số x và y. Xuất kết quả ra màn hình câu:
 a. Tong hai so x va y la: (kết quả đúng).
 b. Tong hai so x va y la:
 (kết quả đúng)
 c. (Kết quả đúng) la ket qua cua tich hai so x va y.
5. Viết chương trình với khai báo 3 biến như trên, nhưng không dùng phép gán, mà nhập từ bàn phím hai biến x và y. sau đó báo ra kết quả giống như các trường hợp A, B và C ở trên.
6. Giải thích chương trình sau thực hiện điều gì.
 Program TinhToan;
 Uses Crt;
 Var
 Bien : real;
 Ketquamot, Ketquahai, ketquaba : Real;
 Begin
 Clrscr; 
 Writeln(‘Nhap vao mot bien :’);
 Readln(Bien);
 Ketquamot := Bien * Bien;
 Ketquahai := 4 * Bien;
 Ketquaba := Bien * SQRT(2);
 Writeln(‘Do ban day la gi? = ‘, Ketquamot : 10 : 1);
 Writeln(‘Ket qua nay la gi? = ‘, Ketquahai : 10 : 1);
 Writeln(‘Cung cau hoi nhu tren ‘, Ketquaba : 10 : 2);
 Readln;
 End. 
7. Viết chương trình tính diện tích hình tam giác theo công thức Hê Rông 
 S = căn bậc hai cùa p(p-a)(p-b)(p-c) với p =(a+b+c)/2.
8. Viết chương trình tính 4 phép toán cơ bản cộng, trừ, nhân, chia hai số, với hai số được nhập từ bàn phím.
9. Viết chương trình tính số dư của phép chia số nguyên thứ nhất cho số nguyên thứ hai, với hai số nguyên được nhập từ bàn phím. 
10. Viết chương trình nhập vào một số nguyên (là số giây). Đổi số giây vừa nhập thành dạng x giờ y phút z giây. 
Ví dụ: Giả sử nhập 8950 chương trình báo 2 giờ 29 phút 10 giây
5
	BÀI 
Câu lệnh lựa chọn
KIẾN THỨC YÊU CẦU:
r Biết xác định vấn đề nào có sử dụng đến câu lệnh chọn lựa, cách dùng câu lệnh chọn lựa nào cho phù hợp.
r Biết khi nào phải dùng câu lệnh ghép. 
KIẾN THỨC ĐẠT ĐƯỢC
r Biết và nắm vững các câu lệnh chọn lựa trong Pascal, cách dùng câu lệnh cho phù hợp, khi nào sẽ dùng câu lệnh If không có Else, khi nào có dùng Else, câu lệnh If lồng nhau, câu lệnh Case. 
r Biết thực hiện câu lệnh ghép chính xác. 
I/ Câu lệnh if  then  else  ;
 1. Câu lệnh if  then ;
 iF THEN
 Câu lệnh;
 Ý nghĩa: Sẽ xét điều kiện theo sau iF. Nếu đúng thì thực hiện các lệnh theo sau THEN, nếu sai thì coi như lệnh này đã thực hiện xong. Điều kiện đơn giản là biểu thị trong các quan hệ =, , >, =, <=. Điều kiện phức hợp có sử dụng các phép toán Logic như NOT, AND, OR trên những điều kiện đơn giản.
Ví dụ:
Program iF_THEN;
Var
x : integer;
y : integer;
Ketqua : Longint;
Begin
 Write(‘Ban nhap vao gia tri cua x = ‘);
 Readln(x);
 Write(‘Ban nhap vao gia tri cua y = ‘);
 Readln(y);
 Write(‘Ban doan x + y = ‘);
 Readln(Ketqua);
 if (Ketqua=x+y) Then
 Writeln(‘Hoan ho ban da doan dung’);
 if (Ketquax+y) Then
 Writeln(‘Rat tiec ban da doan sai’);
 Readln;
End.
 § Chương trình này sẽ cho người sử dụng nhập vào hai số x và y, sau đó sẽ nhập kết quả x+y. Nếu nhập đúng kết quả, chương trình sẽ báo ‘Hoan ho ban da lam dung’, nếu nhập kết quả sai, chương trình sẽ báo ‘Rat tiec ban da lam sai’.
 § Ở những chỗ mà Pascal chỉ cho phép viết một lệnh mà ta lại cần viết nhiều hơn một lệnh thành phần thì các thành phần đó phải để trong cặp từ khoá begin và end (đừng nhầm với Begin  End trong toàn bộ chương trình), và chúng ta được câu lệnh ghép:
 BEGiN
 .
 .
 END;
Ví dụ:
Program iF_THEN; {Co dùng lệnh ghép}
Var
x : integer;
y : integer;
Ketqua : Longint;
Begin
 Write(‘Ban nhap vao gia tri cua x = ‘);
 Readln(x);
 Write(‘Ban nhap vao gia tri cua y = ‘);
 Readln(y);
 Write(‘Ban doan x + y = ‘);
 Readln(Ketqua);
 if (Ketqua=x+y) Then
 Begin
 Writeln(‘Hoan ho ban da doan dung’);
 Writeln(‘Ban hoc toan rat tot’);
 End; 
 if (Ketquax+y) Then
 Begin
 Writeln(‘Rat tiec ban da doan sai’);
 Writeln(‘Ban can co gang hoc tot hon’);
 End;
 Readln;
End.
 2. Câu lệnh if  then  else ;
 iF THEN
 Câu lệnh mot
 ELSE 
 Câu lệnh hai;
Ghi chú: Câu lệnh trước ELSE sẽ không có dấu chấm phẩy ‘;’.
 Ý nghĩa: Xét điều kiện theo sau iF, nếu đúng sẽ thực hiện câu lệnh một, nếu sai sẽ thực hiện câu lệnh hai.
Ví dụ:
Program iF_THEN_ELSE;
Var
x : integer;
y : integer;
Ketqua : Longint;
Begin
 Write(‘Ban nhap vao gia tri cua x = ‘);
 Readln(x);
 Write(‘Ban nhap vao gia tri cua y = ‘);
 Readln(y);
 Write(‘Ban doan x + y = ‘);
 Readln(Ketqua);
 if (Ketqua=x+y) Then
 Writeln(‘Hoan ho ban da doan dung’)
 Else
 Writeln(‘Rat tiec ban da doan sai’);
 Readln;
End.
 3. Câu lệnh if  then  else ; (lồng nhau).
 Các bạn có thể xem phát biểu if  then  else lồng nhau như ở ví dụ sau:
Ví dụ:
Program iF_THEN_ELSE_Longnhau;
Var
Toan : integer;
Ly : integer;
Hoa : integer;
Ketqua : integer;
Begin
 Write(‘Ban nhap diem Toan (toi da la 10) : ‘);
 Readln(Toan);
 Write(‘Ban nhap diem Ly (toi da la 10) : ‘);
 Readln(Ly);
 Write(‘Ban nhap diem Hoa (toi da la 10) : ‘);
 Readln(Hoa);
 Ketqua := Toan + Ly + Hoa;
 if (Ketqua >= 25) Then
 Writeln(‘Dau vao dai hoc, khong can xet diem khong che’)
 Else
 Begin
 if ((ketqua>=21) And (Toan>=7) And (Ly>=7) And (Hoa>=7) Then
 Writeln(‘Hoc sinh nay dau, vi cac mon deu tu 7 tro len’)
 Else
 Writeln(‘Khong du tieu chuan vao dai hoc’);
 End;
 Readln;
End.
II/ Câu lệnh Case  of.
 1. Câu lệnh Case  of  end;
 CASE OF
 Chon 1 : Lệnh 1;
 Chon 2 : Lệnh 2;
 .
 Chon N : Lệnh n;
 END;
 § Đầu tiên biểu thức chọn được tính trị, nếu trị đó nằm trong chọn nào, thì câu lệnh sau chọn đó sẽ thực hiện, nó sẽ kiểm tra từ trên xuống, nếu không có chon nào thoả, kết thúc không làm gì cả.
Nhận xét: Phát biểu CASE là một dạng làm gọn của phát biểu iF. Bạn nên dùng CASE khi lựa chọn nhiều trường hợp.
Ví dụ:
Program CASE_KhongcoELSE;
Var
x : integer;
Begin
 Write(‘Ban nhap con so cua thang ‘);
 Readln(x);
 Case (x) of
 1: Writeln(‘Day la thang gieng’);
 2: Writeln(‘Day la thang Hai’);
 3: Writeln(‘Day la thang Ba’);
 4: Writeln(‘Day la thang Tu’);
 5: Writeln(‘Day la thang Nam’);
 6: Writeln(‘Day la thang Sau’);
 7: Writeln(‘Day la thang Bay’);
 8: Writeln(‘Day la thang Tam’);
 9: Writeln(‘Day la thang Chin’);
 10: Writeln(‘Day la thang Muoi’);
 11: Writeln(‘Day la thang Muoi mot’);
 12: Writeln(‘Day la thang Muoi hai’);
 End;
 Readln;
End.
 § Trong phát biểu Case này, nếu bạn nhập một số không phải từ 1 đến 12, chương trình sẽ không thông báo gì cả, phát biểu Case xem như chấm dứt.
 § Để khi nhập vào một số không thuộc từ 1 đến 12, chương trình phải báo ra một câu nào đó, chúng ta phải dùng lệnh Case  of  else  end như sau:
 2. Câu lệnh Case  of  else  end;
 CASE OF
 Chon 1 : Lệnh 1;
 Chon 2 : Lệnh 2;
 .
 Chon N : Lệnh n;
 Else Câu lệnh;
 END;
 § Đầu tiên biểu thức chọn được tính trị, nếu trị đó nằm trong chọn nào, thì câu lệnh sau chọn đó sẽ thực hiện, nó sẽ kiểm tra từ trên xuống, nếu không có chon nào thoả, thì thực hiện lệnh sau ELSE.
Nhận xét: Phát biểu CASE là một dạng làm gọn của phát biểu iF. Mọi phát biểu Case đều có thể viết lại với các phát biểu iF. Bạn nên dùng CASE khi lựa chọn nhiều trường hợp.
Ví dụ:
Program CASE_KhongcoELSE;
Var
x : integer;
Begin
 Write(‘Ban nhap con so cua thang ‘);
 Readln(x);
 Case (x) of
 1: Writeln(‘Day la thang gieng’);
 2: Writeln(‘Day la thang Hai’);
 3: Writeln(‘Day la thang Ba’);
 4: Writeln(‘Day la thang Tu’);
 5: Writeln(‘Day la thang Nam’);
 6: Writeln(‘Day la thang Sau’);
 7: Writeln(‘Day la thang Bay’);
 8: Writeln(‘Day la thang Tam’);
 9: Writeln(‘Day la thang Chin’);
 10: Writeln(‘Day la thang Muoi’);
 11: Writeln(‘Day la thang Muoi mot’);
 12: Writeln(‘Day la thang Muoi hai’);
 Else
 Begin
 Writeln(‘Khong co thang nay’);
 Writeln(‘Ban khong biet cac thang trong nam’);
 End; 
 End;
 Readln;
End.
 § Trong câu lệnh Case  of của Pascal, nếu có nhiều chọn có cùng một giá trị, chúng ta có thể gộp lại. Bạn xem ví dụ sau:
Program CASE_goplai;
Var
x : integer;
Begin
 Write(‘Ban nhap con so cua thang ‘);
 Readln(x);
 Case (x) of
 1,3,5,7,8,10,12: Writeln(‘Thang: ’,x, ‘ co 31 ngay’);
 4,6,9,11: Writeln(‘Thang: ‘,x, ‘ co 30 ngay’);
 2: Writeln(‘Thang: ‘, x, ‘ co 28 ngay’);
 Else
 Begin
 Writeln(‘Khong co thang nay’);
 Writeln(‘Ban khong biet cac thang trong nam’);
 End; 
 End;
 Readln;
End.
TÓM LƯỢC
q Khi xét điều kiện đúng thì thực hiện một điều gì đó, không thì thôi, chúng ta dùng câu lệnh if  then điều cần thực hiện.
q Khi điều kiện đúng sẽ thực hiện điều này, nếu không đúng thì thực hiện điều kia. Ta thực hiện câu lệnh if  then  else.
q Nếu có nhiều câu lệnh, chúng ta dùng phát biểu ghép Begin  end.
q Sử dụng phát biểu Case  of khi lựa chọn nhiều trường hợp. Lưu ý có thể gộp các lựa chọn có cùng giá trị.
q Khi không cần thể hiện điều gì nếu không có chọn nào thoả, chúng ta dùng câu lệnh Case ... of không có Else. Nếu cần thể hiện, ta dùng Case  of có Else.
PHẦN THỰC HÀNH:
1. Cho chương trình sau:
 Program Doan;
 Uses Crt;
 Var
 a, b, So : integer;
 Begin
 Clrscr;
 Write(‘Nhap vao 2 so a va b : ‘);
 Readln(a,b);
 So := a;
 if So < b then So := b;
 Writeln (x);
 Readln;
 End.
 a. Hãy giải thích từng lệnh và cho biết chương trình trên làm việc gì?
 b. Hãy bổ sung những thông báo cần thiết vào chương trình trên để làm dễ dàng cho người sử dụng. 
2. Viết chương trình nhập vào chiều dài và chiều rộng của hình chữ nhật. Nếu kết quả bằng chiều dài nhân với chiều rộng, thông báo đúng và cho kết quả, ngược lại báo sai cho người sử dụng biết.
3. Viết chương trình nhập 3 số a, b, c bất kỳ, Hãy kiểm tra xem ba số đó có thể là độ dài của các cạnh trong một tam giác hay không, thông báo thoả hay không thoả trong từng trường hợp tương ứng.
4. Có người viết chương trình tìm số lớn nhất trong 3 số như sau:
 Program Max_3so;
 Var 
 a, b, c : Real;
 Begin
 Write(‘Nhap vao 3 so ‘);
 Readln(a,b,c);
 if a < b then a:=b
 Else
 if a < c then a:=c;
 Write(‘So lon nhat la : ‘,a);
 Readln;
 End.
 Chương trình trên cho đáp số có lúc đúng, có lúc sai, tuỳ thuộc vào a, b, c. Bạn giải thích tại sao như vậy? Hãy sửa lại cho đúng. Bạn có thể viết như ở bài 1. 
5. Bạn nhìn chương trình sau:
 Program Tinhtoan;
 Var
 Toantu : Char;
 Ketqua : Real;
 x, y : integer;
 Lamduoc : Boolean;
 Begin
 Write(‘Nhap vao hai so x va y : ‘);
 Readln(x,y);
 Write(‘Nhap vao phep toan can thuc hien: ‘);
 Readln(Toantu);
 Lamduoc := true;
 Case Toantu of
 ‘+’ : Ketqua := x + y;
 ‘-‘ : Ketqua := x – y;
 ‘*’ : Ketqua := x * y;
 ‘/’ : if (y=0) then Lamduoc := False Else Ketqua := x/y;
 Else Lamduoc := False;
 End;
 if Lamduoc then Writeln(‘Ket qua se la : ‘, Ketqua)
 Else Writeln(‘Khong lam duoc’);
 End.
 Giải thích từng câu lệnh trong chương trình, cho biết chương trình trên thực hiện điều gì. Bạn thấy chương trình trên đúng hay sai, có hay không? 
6. Viết chương trình nhập vào một mùa Xuân, Hạ, Thu, Đông (mùa Xuân, nhập X, mùa Hạ, nhập H, mùa Thu nhập T và mùa Đông nhập D), dùng phát biểu Case  of có Else. 
 Nếu nhập X sẽ báo câu ‘Mua Xuan rat dep, toi rat thich’
 Nếu nhập H sẽ báo câu ‘Mua Ha rat nong va buon, vi xa Thay va ban be’
 Nếu nhập T sẽ báo câu ‘Mua Thu la vang rat dep, canh troi tho mong’
 Nếu nhập D sẽ báo câu ‘Mua dong lanh leo, nhung rat thich’
 Nếu khác 4 ký tự trên sẽ báo câu ‘Khong co mua nay, ban nhap lai’.
7. Viết chương trình nhập vào 3 số a, b, c. Máy sẽ hỏi để người sử dụng nhập vào kết quả: 
Đố bé a+b+c bằng bao nhiêu ? (nhập vào)
Đố bé a+b-c bằng bao nhiêu ? (nhập vào)
Đố bé a-b+c bằng bao nhiêu ? (nhập vào)
 Sau khi nhập xong 3 câu hỏi trên, nếu nhập kết quả đúng hoặc sai tuỳ từng trường hợp, chương trình sẽ báo ra như sau: Trường hợp a, nếu đúng sẽ báo câu “Hoan hô bé rất giỏi, vì a+b+c=”, ngược lại sẽ báo “Bé làm sai rồi”. Trường hợp b, nếu đúng sẽ báo câu “Hoan hô bé rất giỏi, vì a+b-c=”, ngược lại sẽ báo “Bé làm sai rồi”. Trường hợp c, nếu đúng sẽ báo câu “Hoan hô bé rất giỏi, vì a-b+c=”, ngược lại sẽ báo “Bé làm sai rồi” 
8. Viết chương trình nhập vào một số là năm, xác định có phải là năm nhuận không? Biết năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không phải là năm đầu của thế kỷ (không chia hết cho 100)
9. Viết chương trình nhập vào 1 năm, kiểm tra xem số của năm này có tổ chức Muldial hay không? Biết cúp bóng đá thế giới được tổ chức đầu tiên vào năm 1930, cứ 4 năm thì sẽ tổ chức một lần.
10. Viết chương trình nhập vào một số chỉ tháng (1 đến 12), sẽ báo ra tháng này có bao nhiêu ngày. Biết tháng 2 có 28 ngày, các tháng 4,6,9,11 có 30 ngày, các tháng còn lại có 31 ngày.
6
	BÀI 
CÂU LỆNH LẶP
KIẾN THỨC YÊU CẦU:
r Biết xác định vấn đề nào có sử dụng đến câu lệnh lặp, cách dùng câu lệnh lặp nào cho phù hợp.
r Biết cách thoát khỏi các vòng lặp khi cần, biết tránh làm vòng lặp vô tận. 
KIẾN THỨC ĐẠT ĐƯỢC
r Biết và nắm vững các câu lệnh lặp trong Pascal, cách dùng câu lệnh cho phù hợp, khi nào nên dùng câu lệnh FOR, WHILE và REPEAT. 
r Biết số lần lặp của từng câu lệnh.
r Biết tránh những trường hợp sẽ làm cho vòng lặp vô tận.
r Biết dùng các câu lệnh để thoát khỏi vòng lặp khi cần thiết.
I/ Câu lệnh FOR
 Ta dùng câu lệnh lặp For khi biết trước số lần lặp. Câu lệnh For có 2 dạng: 
 Dạng 1: For  to  do 
 Dạng 2: For  downto  do  
 1. Câu lệnh For  to  do 
 FOR i:= bieuthuc1 TO bieuthuc2 DO 
 Caulenh; 
 § i gọi là biến điều khiển, thuộc kiểu rời rạc.
 § Biểu thức 1 phải nhỏ hơn hoặc bằng biểu thức 2.
Ví dụ:
Program Vonglap_FOR1;
Var
x : integer;
Begin
 For x := 1 To 12 Do
 Writeln(‘Day la thang: ‘, x);
 Readln;
End.
Chạy thử chương trình, bạn sẽ có kết quả sau:
Đây là tháng: 1
Đây là tháng: 2
Đây là tháng: 3
Đây là tháng: 4
Đây là tháng: 5
Đây là tháng: 6
Đây là tháng: 7
Đây là tháng: 8
Đây là tháng: 9
Đây là tháng: 10
Đây là tháng: 11
Đây là tháng: 12
Ghi chú:
 Không nên thay đổi trị của biến điều khiển i bên trong phát biểu Caulenh.
Ví dụ:
Phát biểu sau sẽ chạy vô tận
For i:= 1 to 8 do
Begin
 Writeln(i);
 i := 12;
End;
 2. Câu lệnh For  Dowto  Do 
 FOR i:= Bieuthuc1 DOWNTO bieuthuc2 DO
 Caulenh; 
 § i gọi là biến điều khiển, thuộc kiểu rời rạc.
 § Biểu thức 1 phải lớn hơn hoặc bằng biểu thức 2.
Ví dụ:
Program Vonglap_FOR2;
Var
x : integer;
Begin
 For x := 12 Downto 1 Do
 Writeln(‘Day la thang: ‘, x);
 Readln;
End.
Chạy thử chương trình, bạn sẽ có kết quả sau:
Đây là tháng: 12
Đây là tháng: 11
Đây là tháng: 10
Đây là tháng: 9
Đây là tháng: 8
Đây là tháng: 7
Đây là tháng: 6
Đây là tháng: 5
Đây là tháng: 4
Đây là tháng: 3
Đây là tháng: 2
Đây là tháng: 1
II/ Câu lệnh WHILE
 1. Câu lệnh WHILE  DO ;
 Dùng để lặp đi lặp lại một công việc trong khi một điều kiện còn được thoả
Phát biểu While có dạng:
 WHILE Dieukien DO 
 Caulenh;
 § Dieukien: Biểu thức logic.
 § Trước hết điều kiện được xét, nếu giá trị là False, vòng lặp While sẽ kết thúc, nếu là True thì phát biểu caulenh được thực hiện, sau khi thực hiện xong, quay lại kiểm tra điều kiện, công việc cứ tiếp tục như lập luận ở trên cho đến khi điều kiện có giá trị là False.
Ví dụ:
Program Vonglap_While;
Var
x : integer;
Begin
 x := 1;
 While (x<=12) Do
 Begin
 Writeln(‘Day la thang: ‘,x);
 x := x +1;
 End;
 Readln;
End.
 Bạn thấy kết quả như ví dụ trong vòng lặp For  to  do ;
Ví dụ: Tính tổng các số nguyên nhập vào cho đến khi nhập vào số 0.
Program TinhTong;
Var
So : integer;
Tong : Longint;
Begin
 Tong := 0;
 Write(‘Ban nhap vao so nguyen bat ky, nhap 0 de ket thuc. ‘);
 Readln(So);
 While So 0 do
 Begin
 Tong := Tong + So;
 Readln(So);
 End;
 Writeln(‘Tong cac so vua nhap vao la: ‘, Tong);
 Readln;
End. 
 2. Lưu ý trong vòng lặp While
 § Khác với vòng lặp For, trong vòng lặp While, số lần lặp không xác định được, nó tuỳ thuộc vào người sử dụng, ví dụ như ở chương trình trên, số lần lặp thực hiện mãi khi bạn chưa nhập vào số 0.
 § Bạn cần chú ý khi dùng điều kiện trong vòng lặp While, nếu chọn điều kiện luôn luôn đúng thì vòng lặp sẽ thực hiện vô tận, không thoát ra được, trừ khi Caulenh có chứa một phát biểu Goto nhảy khỏi vòng lặp While.
Ví dụ : While True do Writeln(‘Se lap vo tan’); 
 § Bạn thử thêm vào đoạn chương trình trên một biến Dem có kiểu nguyên, gán cho biến này bằng 0, cứ mỗi lần điều kiện While đúng biến đếm sẽ tăng lên 1 (kiểm tra điều kiện trước, thực hiện biến dem nếu điều kiện thoả). Bạn sẽ thấy số lần vòng lặp While thực hiện sẽ bằng biến đếm. bạn xem ví dụ sau:
Program TinhTong;
Var So : integer;
Tong : Longint;
Dem : integer;
Begin
 Dem := 0;
 Tong := 0;
 Write(‘Ban nhap vao so nguyen bat ky, nhap 0 de ket thuc. ‘);
 Readln(So);
 While So 0 do
 Begin
 Dem := Dem + 1;
 Tong := Tong + So;
 Readln(So);
 End;
 Writeln(‘Tong cac so vua nhap vao la: ‘, Tong);
 Writeln(‘Bien dem luc nay bang: ‘,Dem);
 Readln;
End. 
Chạy thử chương trình, giả sử nhập vào các số như sau (sau mỗi lần nhập, gõ phím Enter):
2
2
3
4
1
0
 Bạn thấy kết quả sẽ là :
 § Tong cac so vua nhap vao la: 12
 § Bien dem luc nay bang: 5
III/ Câu lệnh Repeat  Until
 1. Câu lệnh Repeat  Until;
 Dùng để lặp đi lặp lại một công việc cho đến khi nào một điều kiện được thoả. 
 REPEAT
 Caulenh 1;
 Caulenh 2;
 ..
 ..
 Caulenh n;
 UNTIL Đieukien; 
 § Các phát biểu bên trong thân Repeat được thực hiện, sau đó sẽ kiểm tra biểu thức logic điều kiện, nếu trị là True thì phát biểu Repeat thực hiện xong, nếu trị là False thì quay lại thực hiện các phát biểu bên trong Repeat, quá trình tiếp tục cho đến khi điều kiện là True. 
V í dụ:
Program TinhTong;
Var
So : integer;
Tong : Longint;
Dem : integer;
Begin
 Dem := 0;
 Tong := 0;
 Write(‘Ban nhap vao so nguyen bat ky, nhap 0 de ket thuc. ‘);
 Readln(So);
 Repeat
 Begin
 Dem := Dem + 1;
 Tong := Tong + So;
 Readln(So);
 End;
 Until So = 0;
 Writeln(‘Tong cac so vua nhap vao la: ‘, Tong);
 Writeln(‘Bien dem luc nay bang: ‘,Dem);
 Readln;
End. 
Chạy thử chương trình, giả sử nhập vào các số như sau (sau mỗi lần nhập, gõ phím Enter):
2
2
3
4
1
0
 Bạn thấy kết quả sẽ là:
 § Tong cac so vua nhap vao la: 12
 § Bien dem luc nay bang: 5
 Kết quả này giống như ở vòng lặp While. 
Ví dụ:
Program Vonglap_Repeat;
Var
x : integer;
Begin
 x := 1;
 While (x<=12) Do
 Begin
 Writeln(‘Day la thang: ‘,x);
 x := x +1;
 End;
 Readln;
End.
Ví dụ:
Tính n giai thừa (n!). n! = 1*2*3*  *n.
Program Giaithua;
Var	Gt : Longint;
i : integer;
n : integer;
Begin
 i := 0;
 Gt := 1;
 Write(‘Ban nhap vao so n = ‘);
 Readln(n);
 Repeat
 i := i + 1;
 Gt := Gt * i;
 Until i = n;
 Writeln(n, ‘ giai thua = ‘, n);
 Readln;
End. 
 2. Lưu ý vòng lặp Repeat
 § Khác với vòng lặp For, trong vòng lặp Repeat, số lần lặp không xác định được, nó tuỳ thuộc vào người sử dụng, ví dụ như ở chương trình trên, số lần lặp thực hiện mãi khi i còn nhỏ hơn n.
 § Bạn cần chú ý khi dùng điều kiện trong vòng lặp Repeat, nếu chọn điều kiện luôn luôn sai thì vòng lặp sẽ thực hiện vô tận, không thoát ra được, trừ khi Caulenh có chứa một phát biểu Goto nhảy khỏi vòng lặp Repeat. 
 § Trong câu lệnh Repeat Until, hành động được thực hiện rồi mới xét điều kiện lặp.
IV/ So sánh đặc điểm của các vòng lặp For, While, Repeat
 1. Điều kiện lặp
 § Với vòng lặp FOR thì điều kiện lặp đã biết trước, còn vòng lặp While và Repeat thì chưa biết trước.
 § So sánh While với Repeat. Với vòng lặp While, điều kiện lặp được xét trước hành động. Với vòng lặp Repeat thì hành động được thực hiện rồi mới xét điều kiện lặp.
 ð FOR: Thực hiện cho đến điều kiện biết trước.
 ð WHiLE: Điều kiện lặp xét trước, đúng thì thực hiện.
 ð REPEAT: Điều kiện lặp xét sau, đúng thì dừng.
Chú ý: Khi viết vòng lặp, cần cân nhắc giữa While và repeat để chọn cho phù hợp. 
 2. Số lần lặp
 § Đối với vòng lặp FOR  TO  DO  số lần thực hiện sẽ bằng (bieuthuc2 – bieuthuc 1) + 1.
 § Đối với vòng lặp FOR  DOWNTO  DO  số lần thực hiện sẽ bằng (Bieuthuc1 – Bieuthuc2) +1.
Ví dụ:
For x:=1 to 5 do
 Writeln(x, ‘ ‘);
Chạy thử chương trình, bạn sẽ được 1 2 3 4 5. Sẽ thực hiện 5 lần (5 - 1) +1.
For x:=5 downto 1 do
 Writeln(x, ‘ ‘);
Chạy thử chương trình, bạn sẽ được 5 4 3 2 1. Sẽ thực hiện 5 lần (5 – 1)+1.
For x:=1 To 1 do
 Writeln(x, ‘ ‘);
Hoặc:
For x:=1 Downto 1 do
 Writeln(x, ‘ ‘);
 Chạy thử chương trình, bạn sẽ thấy kết quả là: 1. thực hiện 1 lần (1 – 1)+1.
 § Đối với vòng lặp WHiLE, bạn xem ví dụ sau:
Ví dụ:
Program Vonglap_While;
Var
x:integer;
Begin
 x:=1;
 While x6 do
 Begin
 Write(x, ‘ ‘);
 x:=x+1;
 End;
 Readln;
End.
 Chạy thử chương trình bạn thấy: 1 2 3 4 5. 
Ghi chú: Nếu bỏ câu lệnh x:= x+1; trong vòng lặp, chương trình sẽ bị lặp vô tận. Bạn thử suy nghĩ tại sao như vậy?
 § Đối với vòng lặp REPEAT, bạn xem ví dụ sau: 
Ví dụ:
Program Vonglap_Repeat;
Var
x:integer;
Begin
 x:=1;
 Repeat
 Begin
 Write(x, ‘ ‘);
 x:=x+1;
 End;
 Until x = 6;
 Readln;
End.
 Chạy thử chương trình bạn thấy: 1 2 3 4 5. Nếu bỏ câu lệnh x := x+1; chương trình cũng bị lặp vô tận.
 Bạn xem ví dụ sau để biết thêm về vòng lặp While và Repeat.
Program Vonglap_While;
Var
i : integer;
Begin
 i := 10;
 While i 10 do
 Writeln(i);
 Readln;
End.
 Chạy thử chương trình bạn sẽ không được gì hết, vì vòng lặp While không thực hiện. Cũng ví dụ trên, nhưng dùng vòng lặp Repeat.
Program Vonglap_Repeat;
Var	i : integer;
Begin
 i := 10;
 Repeat
 Writeln(i);
 Until i = 10;
 Readln;
End.
 Chạy thử chương trình bạn sẽ được 10. Thực hiện xong mới kiểm tra điều kiện, khác với vòng lặp While, kiểm tra điều kiện ngay từ đầu. 
 3. Điều kiện thoát
 § Đối với vòng lặp FOR: Khi giá trị của biến điều khiển bằng bieuthuc2, thực hiện xong rồi thoát.
 § Với vòng lặp WHILE: Khi điều kiện sai sẽ thoát khỏi vòng lặp.
 § Với vòng lặp REPEAT: Khi điều kiện đúng thì sẽ thoát khỏi vòng lặp.
TÓM LƯỢC
q Khi

Tài liệu đính kèm:

  • docTin hoc 9 ca nam.doc