Câu lệnh sau 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... Lặp với số lần biết trước và câu lệnh For-do.[r]
Trang 1Bài 10
Cấu trúc lặp
(tiết 1)
SỞ GD – ĐT THÁI NGUYÊN
TRƯỜNG THPT LƯƠNG PHÚ
TRƯỜNG THPT
LƯƠNG PHÚ
Giáo viên: PHAN HOÀNG THẢO
Trang 2Edit by Phan Hoàng Thảo, 2013
Nội dung
Tìm hiểu Lặp
Lặp với số lần biết trước: For - do
Bài tập ví dụ và luyện tập
Trang 3Bài toán 1:
Bài toán 2:
100
1
2
1 1
1
1
a a
a a
S
1
2
1 1
1
1
N a
a a
a S
Các bài toán đặt vấn đề : Tính tổng S, với a là số nguyên và a>2
cho đến khi 1 0 0001
N a
1 Lặp
Trang 4XuÊt ph¸t
a
1
1
a
LÇn 1
2
1
a
LÇn 2
+…
LÇn N
N
a
Mçi lÇn thùc hiÖn gi¸ trÞ tæng S t¨ng thªm bao nhiªu? 1
Sau mçi lÇn thùc hiÖn gi¸ trÞ tæng S t¨ng thªm ( víi N=1; 2; 3 ; )
a + N
TÌM HIỂU BÀI TOÁN
Trang 5Bài toán 1: Bài toán 2:
100
1
2
1 1
1
1
a a
a a
2
1 1
1
1
N a
a a
a S
Cho đến khi a 1 N 0 . 0001
Số lần lặp biết tr ớc.
• Việc tăng giá trị cho tổng
S đ ợc lặp đi lặp lại cho
đến khi
0.0001 N
a
1
• Việc tăng giá trị cho
tổng S đ ợc lặp đi lặp
lại 100 lần
Số lần lặp ch a biết tr ớc.
Em hóy xỏc định việc tăng giỏ trị cho tổng S được lặp lại bao nhiờu
lần?
Trang 6THPT Nguyễn Văn Trỗi
Lặp là các công việc (thao tác) giống nhau được thực hiện nhiều lần trong chương trình.
Từ các ví dụ, em hãy cho
biết khái niệm Lặp?
Trang 7Thuật toán Tong_1a Bước 1 S1/a; N 0;
Bước 2 N N+1;
Bước 3 Nếu N > 100 thì chuyển đến bước 5; Bước 4 S S+1/(a+N) rồi quay lại bước 2; Bước 5 Đưa S ra màn hình, rồi kết thúc.
Thuật toán Tong_1b Bước 1 S1/a; N 101;
Bước 2 N N-1;
Bước 3 Nếu N < 1 thì chuyển đến bước 5; Bước 4 S S+1/(a+N) rồi quay lại bước 2; Bước 5 Đưa S ra màn hình, rồi kết thúc.
Có 2 thuật toán Tong_1a và Tong_1b để giải bài toán 1 như sau:
Thuật toán
2 Lặp với số lần biết trước và câu lệnh For-do
Trang 8Dạng lặp tiến:
For <biến đếm>:=<giá trị đầu> to <giá trị cuối>
do <câu lệnh lặp>;
Lặp số lần
biết trước
Dạng lặp lùi:
For <biến đếm>:=< giá trị cuối> downto < giá trị đầu>
do <câu lệnh lặp>;
a) CÊu tróc c©u lÖnh For do –
Trang 9 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.
For i:= 100 to 200 do write(i);
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.
Biến đếm là biến kiểu số nguyên hoặc kí tự.
For i:=1 to 10 do write(i);
For i:= z downto a do write(i); ’ ’ ’ ’
2 Lặp với số lần biết trước và cõu lệnh For-do
Trong đó
For , to , downto , do là các từ khóa
Trang 10Biến đếm
Cõu lệnh sau Do
Thực hiện
Gt đầu Gt đầu + 1 Gt đầu + 2 … Gt cuối
Thực hiện
lần 1
Thực hiện
lần 1
Thực hiện
lần 2
Thực hiện
lần 2
Thực hiện
lần 3
Thực hiện
lần 3
Thực hiện lần cuối
Thực hiện lần cuối
Dạng lặp Tiến: for to do
2 Lặp với số lần biết trước và cõu lệnh For-do
b) Hoạt động của For do –
Trang 11Dạng lặp tiến: for to do
Cõu lệnh sau 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
b) Hoạt động của For do –
2 Lặp với số lần biết trước và cõu lệnh For-do
Trang 12Dạng lặp lựi: for downto do
Cõu lệnh sau 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
b) Hoạt động của For do –
2 Lặp với số lần biết trước và cõu lệnh For-do
Trang 13c) Ví dụ áp dụng
Ví dụ 1: Hãy áp dụng câu lệnh lặp dạng tiến để viết ch
ơng trình giải bài
toán 1.
2 Lặp với số lần biết trước và cõu lệnh For-do
Viết chương trỡnh cho thuật toỏn Tổng_1a(Lặp tiến)
Begin
Program Tong_1a ;
Uses crt ;
Var a, N : Integer ; S : real ;
Begin
Write(’Hay nhap vao gia tri a: ’) ; Readln(a) ;
S := 1/a ;
Write(’Tong S la : ’, S : 8 : 3) ; Readln
End.
For N := 1 to 100 do
S := S + 1/(a + N) ;
{ Bước 1 } { Bước 2 và Bước 3 } { Bước 4 }
{ Bước 5 } { Phần khai bỏo }
Trang 14Vớ dụ 2:
Viết chương trỡnh nhập vào từ bàn phớm 2 số nguyờn dương M và N (M<N), tớnh và đưa ra màn hỡnh tổng cỏc số chia hết cho 3 hoặc cho 5 trong phạm vi từ M đến N
? Hãy xác định giá trị khởi đầu của Tổng (T), quy luật thay
đổi giá trị của Tổng (T) và số lần lặp
? Viết ch ơng trình để giải bài toán trên.
- T:= 0;
- T:= T + i;
- i chạy từ M đến N => Số lần lặp là N M +1 lần –
c) Ví dụ áp dụng
2 Lặp với số lần biết trước và cõu lệnh For-do
Trang 15Program Vi_du_2 ;
Var M, N, i : Integer ; T : longint ;
Begin
Write(’Hay nhap vao gia tri M nho hơn N ’) ; Write(’Nhap M = ’); Readln(M) ;
T := 0 ;
Write(’KET QUA: ’, T) ; Readln
End.
For i := M to N do
Write(’Nhap N = ’); Readln(N) ;
If (i mod 3 = 0) or (i mod 5 = 0) then T := T + i ;
2 Lặp với số lần biết trước và câu lệnh For-do
Chương trình
Trang 16Cñng cè kiÕn thøc
C©u lÖnh lÆp
FOR TO DO …
FOR Downto DO
+ Ý nghĩa: Lặp với số lần biết trước
+ Có 2 dạng:
- Lặp tiến: giá trị biến đếm tăng thêm 1
Công việc sau Do sẽ được thực hiện
tuần tự từ giá trị đầu đến giá trị cuối
- Lặp lùi: giá trị biến đếm giảm đi 1
Công việc sau Do sẽ được thực hiện tuần tự từ giá trị cuối về giá trị đầu
Trang 17BÀI TẬP VỀ NHÀ
ViÕt ch ¬ng tr×nh thùc hiÖn gi¶i c¸c bµi to¸n sau:
a)
b)
50
1
6
1 4
1 2
1
S
101
5 3
S
Trang 18Thực hiện tháng 11 năm 2013