GV:
Kiểm tra bài cũ
Em hãy nêu cú pháp của câu lệnh rẽ nhánh If-then dạng
thiếu và dạng đủ? Cho ví dụ minh họa?
Trả lời:
•Rẽ nhánh dạng thiếu:
If <điều kiện> then <câu lệnh>;
Ví dụ: If ▲ <0 then write(‘Phuong trinh vo nghiem’);
•Rẽ nhánh dạng đủ:
If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
Ví dụ: If ▲<0 then write(‘Phuong trinh vo nghiem’)
else write(‘Phuong trinh co nghiem’);
Tiết 13 - Bài 10 - Chủ đề:
I. Tìm hiểu Lặp
Ví dụ 1 : Viết chương trình in ra màn hình 1
dịng chữ ‘Hello Class 11G’.
Edit by Van Tuyen, 2010
I. Tìm hiểu Lặp
Ví dụ 2 : Viết chương trình in ra màn hình 10
dịng chữ ‘Hello Class 11G’
Edit by Van Tuyen, 2010
Chương trình
1. Lặp:
I. Tìm hiểu Lặp
Edit by Van Tuyen, 2010
Lặp: một cơng việc, một thao tác, một
lặp…là được
gì ? thực
phép toán, một câuVậy
lệnh
hiện lặp đi, lặp lại một số lần.
1. Lặp:
Các bài tốn đặt vấn đề: Tính tổng S, với a là số nguyên và a>2.
Bài toán 1:
1
1
1
1
S
...
a a 1 a 2
a 100
Bài toán 2:
1
1
1
1
S
...
...
a a 1 a 2
aN
1
0.0001
cho đến khi
aN
ĐIỂM GIỐNG NHAU CỦA 2 BÀI TỐN
* Bài tốn 1:
S
* Bài toán 2:
1
1
1
1
...
a a 1 a 2
a 100
Xuất phát
Lần 1
1
1
1
1
...
...
a a 1 a 2
aN
1
Cho đến khi
0.0001
aN
S
Lần 2
Lần N
1
1
1
1
S
...
aN
a a 1 a 2
Sau mỗi lần thực hiện giá trị tổng S tăng thêm:
S=1/(a+i) (với i =1, 2, 3 , ...,N)
TÌM SỰ KHÁC NHAU ?
* Bài tốn 1:
* Bài tốn 2:
1
1
1
1
S
...
a a 1 a 2
a 100
1
1
1
1
S
...
...
a a 1 a 2
aN
1
Cho đến khi
0.0001
aN
Việc tăng giá trị cho tổng
S được lặp đi lặp lại 100
lần.
Việc tăng giá trị cho tổng S
được lặp đi lặp lại cho đến khi:
Số lần lặp là biết trước.
Số lần lặp là chưa biết trước.
1
0.0001
aN
CẤU TRÚC LẶP
2. Lặp với số lần biết trước và câu lệnh for – do :
Ví dụ: Tính tổng S với a là số nguyên và a>2
1
1
1
1
S
...
a a 1 a 2
a 100
- Dữ
Hãy xác định
INPUT và
của bài
liệuOUTPUT
vào(Input)
toán trên?
: Nhập a;
- Dữ liệu ra(output) : Tổng S;
PHÂN TÍCH BÀI TỐN VỚI N = 100
1
1
1
1
S
a a 1 a 2 a 3
....................
S0 = 1/a
S1 = S0 + 1/(a+1)
S2 = S1 + 1/(a+2)
S3 = S2 + 1/(a+3)
.....
S100 = S99 + 1/(a+100)
NHẬN XÉT:
Bắt đầu từ S11 việc tính S được
lặp đi lặp lại 100 lần theo quy
luật:
Sii = Si-1
+ 1/(a+i);
i-1
víi i ch¹y tõ 1 100
XÂY DỰNG THUẬT TOÁN (Dạng lặp tiến)
B1: Nhập a;
Nhập a
B2: S 1/a; i 1;
S 1/a ; i 1
B3: Nếu i > 100 thì đưa ra giá trị
S rồi Kết thúc;
§
i > 100 ?
Đưa ra S rồi kết thúc!
S
S S + 1/(a+i)
i i+1
B4 : S S + 1/(a+i);
B5: i i +1 quay lại B3.
2. Lặp với số lần biết trước và câu lệnh for – do :
a. Dạng lặp tiến
For <biến đếm> := <giá trị đầu> to <giá trị cuối> do < câu lệnh>;
Ví dụ : S:=1/a;
For i:=1 to 100 do S:=S+1/(a+i);
Ví dụ :
For i:=1 to 150 do
begin
write(‘Phần tử thứ : ’, i:6:2);
readln(A[i]);
end;
- 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.
XÂY DỰNG THUẬT TOÁN (Dạng lặp lùi)
B1: Nhập a;
Nhập a
B2: S 1/a; i 100;
S 1/a ; i 100
B3: Nếu i < 1 thì đưa ra giá trị S
rồi Kết thúc;
§
i<1?
Đưa ra S rồi kết thúc!
S
S S + 1/(a+i)
i i -1
B4 : S S + 1/(a+i);
B5: i i - 1 quay lại B3.
2. Lặp với số lần biết trước và câu lệnh for – do :
b. Dạng lặp lùi
For <biến đếm> := <giá trị cuối> downto <giá trị đầu> do < câu lệnh>;
Ví dụ: S:=1/a;
For i:=100 downto 1 do S:=S+1/(a+i);
Ví dụ :
For j:= 150 downto 2 do
if A[j]> 0 then write(‘Phần tử thứ j:’);
- Hoạt động của lệnh for – do (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.
2. Lặp với số lần biết trước và câu lệnh for – do :
Trong đó:
Biến đếm là biến thường có kiểu ngun hoặc kí tự.
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.
Lưu ý:
- Giá trị 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.
2. Lặp với số lần biết trước và câu lệnh for – do :
c. Ví dụ : Lập chương trình tính tổng S với a là số nguyên và a>2
S
1
1
1
1
...
a a 1 a 2
a 100
HOẠT ĐỘNG
NHÓM
NHÓM 1
NHÓM 2
NHÓM 3
NHÓM 4
Ví dụ 1 : Bài tốn Tong_1a
Ví dụ 1 : Bài tốn Tong_1b
Củng cố bài học:
1. Lặp
2. Lặp với số lần biết trước và câu lệnh for – do:
a. Dạng lặp tiến:
For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
b. Dạng lặp lùi:
For <biến đếm>:=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>;
Hãy đánh dấu vào ô
đúng hoặc sai
Đúng
Sai những câu dưới đây?
Câu 1: Cấu trúc lặp có hai loại lặp:
Lặp với số lần biết trước và lặp
với số lần không biết trước.
Câu 2: Cấu trúc lặp dạng tiến: For
<biến đếm>:= <giá trị cuối> to
trị đầu> do <câu lệnh>;
Câu 3:Cấu trúc lặp dạng lùi: For
<biến đếm>:=
<giá trị đầu> downto <giá trị cuối>
do <câu lệnh>;
Hãy đánh dấu vào ô
đúng hoặc sai
Đúng
Sai
5: X là
biến dưới
kiểu thực;
Ta có
những
câu
đây?
Câu
câu lệnh lặp
For X:=1 to 100 do
Câu 6: S, i là kiểu nguyên; Câu
lệnh
For i:=1 to 1 do S:=S+1; Sẽ lặp 2
lần
Câu 7: Sau DO muốn thực hiện
nhiều lệnh phải sử dụng câu lệnh
ghép.
Hướng dẫn về nhà
Học và làm bài tập sách bài tập từ bài
323 – 335(SBT 22 – 24).
Xem trước phần lặp với số lần chưa biết
trước và câu lệnh while – do :