<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
TRẦN HỮU TRANG
TRƯỜNG TRUNG HỌC PHỔ THÔNG
TIN HỌC 11
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
BÀI 10
CẤU TRÚC LẶP
CẤU TRÚC LẶP
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
CÁC BÀI TOÁN ĐẶT VẤN ĐỀ
CÁC BÀI TOÁN ĐẶT VẤN ĐỀ
<i>Tính tổng S với a là số nguyên và a>2</i>
Bài toán 2:
100
1
...
2
1
1
1
1
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
cho đến khi
<b> </b>
1
<sub>0</sub>
<sub>.</sub>
<sub>0001</sub>
<i>N</i>
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
CÙNG TÌM THUẬT TỐN
CÙNG TÌM THUẬT TỐN
<i>Xuất phát</i>
<i><b>a</b></i>
<i><b>S</b></i>
1
1
1
<i>a</i>
<i>Lần 1</i>
2
1
<i>a</i>
<i>Lần 2</i>
<b>+…</b>
<i>Lần N</i>
<i>N</i>
<i>a</i>
1
<i>Mỗi lần thực hiện, giá trị tổng </i>
<i>tăng bao nhiêu?</i>
i
a
1
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
TÌM SỰ KHÁC BIỆT
TÌM SỰ KHÁC BIỆT
<i>Bài tốn 1:</i>
<i>Bài tốn 2:</i>
100
1
...
2
1
1
1
1
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
Cho đến khi
<b>1</b>
<b>0</b>
.
<b>0001</b>
<i>N</i>
<i>a</i>
<b> Số lần lặp biết trước</b>
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại
100
100
lần.
lần.
<b> Chưa lần lặp chưa biết trước.</b>
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
1. LẶP VỚI SỐ LẦN BIẾT TRƯỚC
1. LẶP VỚI SỐ LẦN BIẾT TRƯỚC
a. Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng
<b>S</b>
<i>Lặp chương trình tính tổng sau:</i>
N
1
...
4
1
3
1
2
1
1
S
<i>Hãy xác định INPUT và OUTPUT của bài </i>
<i>toán trên?</i>
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
PHÂN TÍCH BÀI TỐN VỚI N=100
PHÂN TÍCH BÀI TOÁN VỚI N=100
Nhận xét
<b>S1 = 1</b>
<b>S2 = S1 + 1/2</b>
<b>S3 = S2 + 1/3</b>
<b>S4 = S3 + 1/4</b>
<b>...</b>
<b>S100 = S99 + 1/100</b>
1
<b>S</b>
<i>Bắt đầu từ S</i>
<i>2</i>
<i> việc tính S</i>
<i>1</i>
<i>được lặp đi lặp lại 99 lần </i>
<i>theo quy luật</i>
<i><b>S</b></i>
<i><b>sau</b></i>
<i><b> = S</b></i>
<i><b>trước</b></i>
<i><b>+ 1/i,</b></i>
<i>Với I chạy từ 2 </i>
<i> 100</i>
2
1
3
1
4
1
<sub></sub>
<b> . . .</b>
<sub></sub>
1
100
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
<i>So sánh hai thuật toán sau</i>
SƠ ĐỒ THUẬT TỐN
SƠ ĐỒ THUẬT TỐN
Thuật tốn Tong_1A
Thuật tốn Tong_1b
*
<i>Bước 1</i>
: S ← 1/a; N ← 0;
*
<i>Bước 2: </i>
N ← N + 1;
*
<i> Bước 3: </i>
Nếu N > 100 thì chuyển
đến bước 5;
*
<i>Bước 4: </i>
S ← S + 1/(a + N) rồi quay
lại bước 2;
*
<i>Bước 5: </i>
Đưa S ra màn hình, rồi kết
thúc.
*
<i>Bước 1</i>
: S ← 1/a; N ← 101;
*
<i>Bước 2: </i>
N ← N - 1;
*
<i> Bước 3: </i>
Nếu N < 1 thì chuyển đến
bước 5;
*
<i>Bước 4: </i>
S ← S + 1/(a + N) rồi quay
lại bước 2;
*
<i>Bước 5: </i>
Đưa S ra màn hình, rồi kết
thúc.
•Thuật tốn dạng lặp tiến.
• Dạng lặp tiến: Biến đếm tự động
tăng dần từ giá trị đầu đến giá trị
cuối.
•Thuật tốn dạng lặp lùi.
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
CẤU TRÚC DẠNG LẶP TIẾN
CẤU TRÚC DẠNG LẶP TIẾN
<i>Hãy nêu cấu trúc dạng lặp tiến?</i>
<i>Biến đếm: biến kiểu nguyên, kí tự hoặc miền con</i>
<i>Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm.</i>
<i>Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.</i>
For <
<i>biến đếm</i>
>
<b>:= </b>
<
<i>giá trị đầu</i>
> to <
<i>giá trị cuối</i>
> do <
<i>câu lệnh</i>
>;
For <
<i>biến đếm</i>
>
<b>:= </b>
<
<i>giá trị đầu</i>
> to <
<i>giá trị cuối</i>
> do <
<i>câu lệnh</i>
>;
<i>Ví dụ</i> S:=1;
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm<=giá trị cuối
Lệnh cần lặp biến đếm tăng 1
Đúng
Sai
<i>Quan sát sơ </i>
<i>đồ khối, hãy </i>
<i>cho biết sự </i>
<i>thực hiện của </i>
<i>máy?</i>
• Bước 1: tính giá trị đầu, gán cho biến đếm.
• Bước 2: Nếu biến đếm <= giá trị cuối thì:
• thực hiện lệnh cần lặp.
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
CẤU TRÚC DẠNG LẶP LÙI
CẤU TRÚC DẠNG LẶP LÙI
<i>Hãy nêu cấu trúc dạng lặp lùi?</i>
<i>Biến đếm: biến kiểu nguyên, kí tự hoặc miền con</i>
<i>Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm.</i>
<i>Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.</i>
for <
<i>biến đếm</i>
>
<b>:= </b>
<
<i>giá trị cuối</i>
> downto <
<i>giá trị đầu</i>
> do <
<i>câu lệnh</i>
>;
for <
<i>biến đếm</i>
>
<b>:= </b>
<
<i>giá trị cuối</i>
> downto <
<i>giá trị đầu</i>
> do <
<i>câu lệnh</i>
>;
<i>Ví dụ</i> S:=1;
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm>=giá trị cuối
Lệnh cần lặp biến đếm giảm 1
Đúng
Sai
<i>Quan sát sơ đồ </i>
<i>khối, hãy cho </i>
<i>biết sự thực hiện </i>
<i>của máy?</i>
• Bước 1: tính giá trị đầu, gán cho biến đếm.
• Bước 2: Nếu biến đếm >= giá trị cuối thì:
• thực hiện lệnh cần lặp.
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
Lưu ý:
+ Biến đếm là biến đơn, có kiểu nguyên hoặc kí tự.
+ Giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với
biến đếm. Giá trị đầu phải nhỏ hơn giá trị cuối.
+ Giá trị của biến đếm được điều chỉnh tự động, vì vậy câu
lệnh viết sau DO không được thay đổi giá trị biến đếm
For i:=1 to 10 do write(i);
For i:=‘a’ to ‘z’ do write(i);
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
<i>Quan sát sách giáo khoa trang </i>
<i>44, chương trình cài đặt các </i>
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
* <i>Bước 1</i>: S ← 1/a; N ← 0;
* <i>Bước 2: </i>N ← N + 1;
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
<i>Quan sát sách giáo khoa trang </i>
<i>44, chương trình cài đặt các </i>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
* <i>Bước 1</i>: S ← 1/a; N ← 101;
* <i>Bước 2: </i>N ← N - 1;
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
<i>Quan sát sách giáo khoa trang </i>
<i>45, chương trình thực hiện việc </i>
<i>nhập từ bàn phím hai số </i>
<i>nguyên dương M và N (M<N). </i>
<i>Tính và đưa ra màn hình tổng </i>
<i>các số chia hết cho 3 hoặc 5 </i>
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19></div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
<i>Hãy lập trình tính:</i>
50
1
n
n
1
</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21></div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
TÌM SỰ KHÁC BIỆT
TÌM SỰ KHÁC BIỆT
<i>Bài tốn 1:</i>
<i>Bài tốn 2:</i>
100
1
...
2
1
1
1
1
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
Cho đến khi
<b>1</b>
<b>0</b>
.
<b>0001</b>
<i>N</i>
<i>a</i>
<b> Số lần lặp biết trước</b>
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại
100
100
lần.
lần.
<b> Chưa lần lặp chưa biết trước.</b>
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>
3. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
a. Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng
<b>S</b>
<i>Lặp chương trình tính tổng sau:</i>
<i>Hãy xác định INPUT và OUTPUT của bài </i>
<i>toán trên?</i>
Dữ liệu vào (Input) : Nhập
<b>N</b>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
cho đến khi
<b> </b>
</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>
THUẬT TỐN
THUẬT TỐN
<i>Nhận xét thuật tốn.</i>
*
<i>Bước 5: </i>
Đưa S ra màn hình, rồi kết thúc.
*
<i>Bước 1</i>
: S ← 1/a; N ← 0; {Khởi tạo S và N}
*
<i>Bước 3: </i>
N ← N + 1;
*
<i> Bước 2: </i>
Nếu 1/(a + N) < 0,0001 thì chuyển đến bước 5;
*
<i>Bước 4: </i>
S ← S + 1/(a + N) rồi quay lại bước 2;
</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>
CÂU LỆNH WHILE - DO
CÂU LỆNH WHILE - DO
<i>Hãy nêu cấu trúc lặp với câu lệnh while - do?</i>
<i>Điều kiện: biểu thức quan hệ hoặc biểu thức logic</i>
<i>Câu lệnh: là môt câu lệnh trong Pascal</i>
While <
<i>điều kiện</i>
> do <
<i>câu lệnh </i>
>;
</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>
<i>Quan sát sơ </i>
<i>đồ khối, hãy </i>
<i>cho biết sự </i>
<i>thực hiện của </i>
<i>máy?</i>
• Bước 1: tính giá trị của <điều kiện>.
• Bước 2: Nếu <điều kiện> có giá trị đúng thì:
• thực hiện lệnh cần lặp.
• quay lại bước 1.
SƠ ĐỒ KHỐI
Điều kiện
Lệnh cần lặp
Đúng
Sai
</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>
BÀI TỐN ĐẶT VẤN ĐỀ
BÀI TỐN ĐẶT VẤN ĐỀ
<i>Tính tổng S với a là số nguyên và a>2</i>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
Cho đến khi
<b>1</b>
<b>0</b>
.
<b>0001</b>
<i>N</i>
<i>a</i>
<i>Nhận xét</i>
<b>While</b>
1/(a + N) >= 0.0001
<b>do</b>
Begin
S:=S+1/(a+N);
N:=N+1;
End;
Chừng nào 1/(a + N) >= 0.0001 thì
thực hiện:
+ Tăng giá trị của tổng S thêm
1/(a + N).
</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>
<i>Quan sát sách giáo khoa trang </i>
<i>47, chương trình cài đặt thuật </i>
</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>
• Tính giá trị của <điều kiện>.
•Nếu <điều kiện> có giá trị đúng thì:
• thực hiện lệnh cần lặp.
</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>
<b>...</b>
<i>Quan sát sách giáo khoa trang </i>
<i>47, chương trình cài đặt thuật </i>
<i>tốn “ Tìm ước số chung lớn </i>
<i>nhất của hai số nguyên dương </i>
</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>
THUẬT TOÁN
THUẬT TOÁN
*
<i>Bước 5: </i>
Đưa ra kết quả ƯCLN rồi kết thúc.
<i>* Bước 1: Nhập M, N;</i>
<i>* Bước 3: Nếu M > N thì M ← M + N ngược lại N ← N - M</i>
<i>;</i>
<i>* Bước 2: Nếu M = N thì lấy giá trị chung này làm ƯCLN rồi </i>
<i>chuyển đến bước 5;</i>
</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32></div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>
Chừng nào
M≠N
thì
nếu
M> N
thì
M:= M-N
ngược lại
N:= N-M
Đến khi
M=N
thì
đưa ra ƯCLN(M,N)=
M
</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>
CÂU LỆNH REPEAT - UNTIL
CÂU LỆNH REPEAT - UNTIL
<i>Hãy nêu cấu trúc lặp với câu lệnh </i>
<i>repeat - until?</i>
Repeat <
<i>câu lệnh</i>
> until <
<i>điều kiện </i>
>;
</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35></div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>
Thực hiện tháng 8 năm 2007
</div>
<!--links-->