You are on page 1of 23

Kiểm tra bài cũ

Cho chương trình sau:


Var a,d : byte; Câu 1: Chương trình trên
Begin sử dụng câu lệnh rẽ nhánh
d:=0; dạng nào?
Câu 2: Sau khi chạy xong
a:=5;
chương trình kết quả của
If a mod 2 = 0 then d:=d+1;
d là bao nhiêu?
a:=6; A. 0 B. 1
If a mod 2 = 0 then d:=d+1; C. 2 D. 3
a:=24; Câu 3: Chương trình trên
If a mod 2 = 0 then d:=d+1; dùng để làm gì?
End.
Bµi 10
Bài 10: Cấu trúc lặp(tiết 1/3)
I. Tìm hiểu lặp
- Lặp là việc thực hiện đi thực hiện lại một hoặc một vài
công việc nào đó.
Vd: Múc nước đổ vào đầy thùng
- Cấu trúc lặp là dùng các thao tác
để thể hiện việc lặp đó trong thuật KT đầy
True

toán thùng?

False

Múc thêm 1 ca
đổ vào thùng
Bài 10: Cấu trúc lặp(tiết 1/3)
Bài 1: Có 1 thùng với Bài 2 : Có 1 thùng chưa biết
dung tích 100 lít, Hãy dung tích, Hãy múc nước đổ đầy
múc nước đổ đầy thùng thùng đó với dụng cụ chứa 1 lít.
đó với dụng cụ chứa 1 lít.

? lít

1 lít
Hãy cho biết quá trình đổ nước cho hai 1 lít
bài toán trên có điểm giống nhau và
khác nhau thế nào?
Bài 10: Cấu trúc lặp(tiết 1/3)
I. Tìm hiểu lặp
- Lặp là việc thực hiện đi thực hiện lại một hoặc một vài
công việc nào đó.
Vd: Múc nước đổ vào đầy thùng
True
KT đầy
- Cấu trúc lặp là dùng các thao tác thùng?

để thể hiện việc lặp đó trong thuật False


toán
Múc thêm 1 ca
đổ vào thùng

- Có hai dạng cấu trúc lặp: Lặp với số lần biết trước và
lặp với số lần chưa biết trước.
Gợi ý pp: Ta xem
II. Lặp với số lần biết trước như s là một cái
1. Bài toán: thùng, số hạng như
Với a là số nguyên dương.Tính tổng một cái ca có dung
1 1 1 tích nước khác nhau,
S   ... 
a 1 a  2 a  100 khi đó việc tính tổng
trên tương tự như
= + + …+ việc đổ nước vào
thùng s bằng cái ca
+ Có bao nhiêu lần đổ nước vào thùng? - Có 100 lần (n=100)
+ Mỗi lần đổ một lượng bao nhiêu?  - 1/(a+n)
Lần thứ n đổ bao nhiêu?  
+ Mỗi lần đổ 1 ca nước vào thì dung - s=s+1/(a+n)
lượng thùng bao nhiêu?  
+ Phải thực hiện bao nhiêu lần tính - 100 lần
tổng s?
II. Lặp với số lần biết trước
1. Bài toán:
Với a là số nguyên dương.Tính tổng
1 1 1
S   ... 
a 1 a  2 a  100
Input: sồ nguyên
Lần n=0 S=0 dương a
Output: Tổng s
Lần n=1 S = S + 1/(a+1)

Lần n=2 S = S + 1/(a+2)

…… .....

Lần n=100 S = S + 1/(a+100)


1. Bài toán:
Với a là số nguyên dương.Tính tổng
1 1 1
S   ... 
a 1 a  2 a  100
Thuật toán 1 Thuật toán 2
Bước 1.Nhập… S..; N…;
Bước 1.Nhập… S..; N…;
Bước 2. N……
Bước 2. N……
Bước 3. Điều kiện kết thúc
Bước 3. Điều kiện kết thúc
thì chuyển đến bước 5;
thì chuyển đến bước 5;
Bước 4. S………rồi
Bước 4. S………rồi
làm gì?
làm gì?
Bước 5. Đưa ra kết quả gì?
Bước 5. Đưa ra kết quả gì? rồi kết thúc.
rồi kết thúc.
1. Bài toán:
Với a là số nguyên dương.Tính tổng
1 1 1
S   ... 
a 1 a  2 a  100
Thuật toán 1 Thuật toán 2
Bước 1. Nhập a S0; N0; Bước 1. Nhập a;S0; N101;
Bước 2. NN+1; Bước 2. NN-1;
Bước 3. Nếu N>100 thì Bước 3. Nếu N<1 thì chuyển
chuyển đến bước 5; đến bước 5;
Bước 4. SS+1/(a+N) rồi Bước 4. SS+1/(a+N) rồi quay
lại bước 2;
quay lại bước 2;
Bước 5. Đưa ra kết quả S , Bước 5. Đưa ra kết quả S, rồi
kết thúc.
rồi kết thúc.
2. Câu lệnh for-do
a. Cú pháp:
+ Dạng lặp tiến:
FOR <…1..>:= <…2…> TO <…3...> DO <…4…..>;

+ Dạng lặp lùi:


FOR <…1….>:= <..3…> DOWNTO <...2…> DO <…4..>;

- Trong đó:
+ …1…là ……………………
+ ..2.., ..3…là ………………..
+ …2…phải nhỏ hơn hoặc bằng ..3…. Nếu ..2…lớn
hơn ..3..thì câu lệnh không được thực hiên
+ ..4…là ……………………..
2. Câu lệnh for-do
a. Cú pháp:
+ Dạng lặp tiến:
FOR <biến đếm>:= <giá trị đầu> TO <giá trị cuối> DO
<câu lệnh>;
+ Dạng lặp lùi:
FOR <biến đếm>:= <giá trị cuối> DOWNTO <giá trị đầu>
DO <câu lệnh>;
- Trong đó:
+ Biến đếm là biến đơn thường có kiểu nguyên;
+ Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến
đếm
+ Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối. Nếu giá trị
đầu lớn hơn giá trị cuối thì câu lệnh không được thực hiên
+ Câu lệnh là một lệnh của pascal
b. Hoạt động của lệnh FOR-DO
+ Dạng lặp tiến: câu lệnh viết sau từ khóa DO được thực
hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp
tăng từ giá trị đầu đến giá trị cuối.

+ Dạng lặp lùi: câu lệnh viết sau từ khóa DO được thực hiện
tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm
từ giá trị cuối đến giá trị đầu.

Ví dụ : Viết câu lệnh in ra màn hình 20 dòng chữ I


love pascal
Dạng lặp tiến: Dạng lặp lùi
For i :=1 to 20 do For i :=20 downto 1 do
Writeln(‘I love pascal‘); Writeln(‘i love pascal‘);
2. Câu lệnh for-do
a. Cú pháp:
b. Hoạt động của lệnh FOR-DO
* Chú ý:
- Giá trị của biến đếm được điều chỉnh tự
động, vì vậy câu lệnh sau do không được thay
đổi giá trị biến đếm
- số lần lặp = gt cuối –gt đầu +1
3. Ví dụ
Viết chương trình nhập số nguyên dương a từ bàn phím.
Yêu cầu: Tính tổng
1 1 1
S   ... 
a 1 a  2 a  100
và kết quả in ra tập tin KQ.OUT
CT hoàn chỉnh
Dạng lặp tiến Dạng lặp LÙI
Program tong1a; Program tong1b;
Var …………….. Var ……………..
Begin Begin
Write………….. Write…………..
readln……. readln…….
s………………. s……………….
for ……………………. for …………………….
s……………………… s………………………
Assign......... Assign.........
Rewrite....... Rewrite.......
write…….. write……..
close…….. close……..
End. End.
CT hoàn chỉnh
Dạng lặp tiến Dạng lặp lùi
Program tong1a; Program tong1b;
Var s: real; a, n: word;fo:text; Var s: real; a, n: word;fo:text;
Begin Begin
Write(‘nhap so nguyen a =’); Write(‘nhap so nguyen a =’);
readln(a); readln(a);
s:=0; s:=0;
for n:= 1 to 100 do for n:= 100 downto 1 do
s:= s+1/(a+n); s:= s+1/(a+n);
assign(fo,‘KQ.out‘); assign(fo,‘KQ.out‘);
rewrite(fo); rewrite(fo);
write(fo, s); write(fo, s);
close(fo); close(fo);
End. End.
Củng cố
Trắc nghiệm: Chọn đáp án đúng nhất cho các câu sau:
Câu1. Để in ra màn hình 5 dòng chữ ‘welcome to lop11’ ta
dùng lệnh nào sau đây?(giả sử biến i đã khai báo kiểu số
nguyên);

a. Sai For i := 5 to 1 do writeln(‘welcome to lop11’);


b. Sai For i := 1 downto 1 do writeln(‘welcome to lop11’);
c. For i := 2 to 6 do writeln(‘welcome to lop11’);
d. Sai For := 1 downto 5 do writeln(‘welcome to lop11’);
Củng cố

Câu 2. Trong câu lệnh for-do tổng quát

a. Biến đếm tự động tăng hoặc giảm một đơn vị


Sai b. Biến đếm có thể thuộc kiểu số thực

Saic. Giá trị đầu và giá trị cuối khác kiểu dữ liệu với biến đếm
d. Câu lệnh sau do có thể là nhiều câu lệnh của pascal
Sai
Củng cố

Câu 3. Câu lệnh dưới đây in ra màn hình kết quả gì? (Giả
sử a đã khai báo kiểu số nguyên)
For a := 2 to 2 do write(a);

a. 2
b. Sai 1
c. Sai 0
d. Sai Câu trả lời khác
Củng cố
Câu 4: Cho a,d là các biến nguyên. Khi thực hiện đoạn
chương trình sau đây:
D:=0;
For a := 4 to 6 do
If a mod 2 =0 then d:=d+1;
Kết quả d có trong phương án nào sau đây:

a. Sai 6
b. Sai 4
c. 2
d. Sai 0
Hướng dẫn về nhà

•Thực hành lại các bài tập trên máy.


•Xem phần còn lại của bài
•Làm bài tập về for

You might also like