Bài 10. Cấu trúc lặp

Chia sẻ bởi Lam Vinh Kieu | Ngày 10/05/2019 | 76

Chia sẻ tài liệu: Bài 10. Cấu trúc lặp thuộc Tin học 11

Nội dung tài liệu:

Kiểm tra bài cũ
HS1:
1./ Biểu thức gì nhất thiết phải có trong câu lệnh rẽ nhánh?
2./ Viết cú pháp câu lệnh rẽ nhánh dạng đủ.
HS2:
Mô tả nội dung dưới đây bằng các câu lệnh Pascal :
Nếu x cộng y lớn hơn 0 thì z = x*5 , ngược lại z = y+2

Nhà Hiếu đã gặt lúa xong, chỉ còn việc gánh lúa về nhà. Mọi người hàng xóm, cùng bạn bè của Hiếu cùng nhau gánh lúa, có anh gánh nhiều, có chị gánh ít, nhưng cuối cùng thì lúa ngoài đồng cũng được mang về. Trước khi mọi người bắt đầu công việc ta có biết trước mỗi người sẽ gánh lúa bao nhiêu lần không ?
Giả sử, bình nước lọc có dung tích là 20 lít, mỗi lần chỉ đổ 1 lít vào bình. Để cho nước đầy bình ta phải thực hiện bao nhiêu lần ?
? Lặp 20 lần.
? Không biết trước ( chỉ thực hiện gánh lúa cho đến khi không còn lúa ngoài đồng)
�10. CẤU TRÚC LẶP
1. Lặp :
Xét các bài toán sau:
? Bài toán 1: tính và đưa ra màn hình tổng


( N là số nguyên nhập từ bàn phím)


S := 0 ;
Lặp S := S+ i ;
( i = 1, 2, 3,...,n )
? Khi i > n thì kết thúc vòng lặp
? Ý tưởng
? Biết trước số lần lặp là n
Bài toán 2:
Tính tổng
Sao cho
S :=0 ;
i := 1 ;
Lặp S := S+ i ;
i := i +1 ;
?Khi S >100 thì kết thúc vòng lặp
? Ý tưởng
?Không biết trước số lần lặp
2.Lặp với số lần biết trước và câu lệnh for - do:
? Thuật toán để giải bài toán 1:

? Thuật toán tong1 :

Bước 1: Nhập n
Bước 2: S? 0 ; i?1 ;
Bước 3: Nếu i > n thì chuyển đến bước 5
Bước 4: S? S+ i ; i ? i +1 ; quay lại bước 3.
Bước 5: Đưa ra màn hình giá trị S rồi kết thúc.

? Thuật toán tong2 :

Bước 1: Nhập n
Bước 2: S? 0 ; i?n ;
Bước 3: Nếu i < 1 thì chuyển đến bước 5
Bước 4: S? S+ i ; i ? i - 1 ; quay lại bước 3.
Bước 5: Đưa ra màn hình giá trị S rồi kết thúc.
Trong Pascal, câu lệnh lặp for - do có 2 dạng: dạng tiến và dạng lùi.
a./ Dạng tiến
Cú pháp :

Trong đó:
For , to, do : từ khóa
Biến đếm là biến đơn thuộc kiểu nguyên.
Giá trị đầu và giá trị cuối phải cùng kiểu với biến đếm.
Giá trị đầu <= giá trị cuối.
for := to < gt cuoái> do < caâu leänh > ;
Số lần lặp = ( giá trị cuối - giá trị đầu ) +1

Bước 1: Gán giá trị đầu cho biến đếm .
Bước 2: kiểm tra xem biến đếm <= giá trị cuối? Nếu đúng thì thực hiện bước 3, ngược lại thì kết thúc vòng lặp.
Bước 3: Thực hiện câu lệnh, tăng biến đếm lên 1 đơn vị và quay lại bước 2.
Cách thực hiện:
Cách thực hiện:
Bước 1: Gán giá trị cuối cho biến đếm
Bước 2:
Kiểm tra xem biến đếm >= giá trị đầu ?
Nếu đúng thì thực hiện bước 3, ngược lại thì kết thúc vòng lặp.
Bước 3: Thực hiện câu lệnh, giảm biến đếm xuống1 đơn vị và quay lại bước 2.
for := downto < gt ñaàu> do < caâu leänh > ;
b./ Dạng lùi:
Cú pháp :
? For, downto, do : từ khóa
 Ví duï 1:
Viết chương trình tính và đưa ra màn hình tổng :

( N là số nguyên nhập từ bàn phím)

? Chương trình dùng câu lệnh lặp For - do dạng tiến :
Program tong1 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);

S:= 0;
For i := 1 to n do
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.



Program tong2 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);

S:= 0;
For i := n downto 1 do
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.

? Chương trình dùng câu lệnh lặp For - do dạng lùi

Ví dụ 2:
Viết chương trình nhập từ bàn phím 2 số nguyên dương M, N ( M < N), tính và đưa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M đến N.

Nhập M , N
S := 0 ;
Xét i từ m đến n
i ? m ;
Nếu i mod 3 = 0 hoặc i mod 5 = 0 thì
Lặp S := S+ i ; i tăng lên 1 ;
? Khi i > n thì kết thúc vòng lặp.
? Ý tưởng
Program vidu2 ;
Uses crt;
Var S,i,n,m : integer;
Begin
Clrscr;
Write(‘nhap M, N’);
readln(m,n);

S:= 0;
For i := m to n do
if (i mod 3 = 0) or (i mod 5 = 0)then
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.

2.Lặp với số lần chưa biết trước và câu lệnh while - do
Cú pháp :
While < điều kiện> do < câu lệnh> ;
?While, do : từ khóa
Sai
Điều kiện
Câu lệnh
Đúng
?Lưu đồ:
While
Do
Nếu điều kiện đúng thì thực hiện câu lệnh, sau đó quay lại kiểm tra điều kiện, cứ như thế đến khi điều kiện sai thì kết thúc vòng lặp.
? Cách thực hiện:
? Thuật toán để giải bài toán 2:

Bước 1: S? 0 ; i?1 ;
Bước 2: Nếu S > 100 thì chuyển đến bước 4
Bước 3: S? S+ i ; i ? i +1 ; quay lại bước 2.
Bước 4: Đưa ra màn hình giá trị S rồi kết thúc vòng lặp
Ví dụ 1:
Viết chương trình tính tổng:


Sao cho
Program tong2 ;
Uses crt ;
var i, n, s : integer;
Begin
Clrscr ;
s:= 0;
i:= 1 ;
while ( s <= 100 ) do
begin
s:= s + i;
i:= i + 1;
end;

writeln(` tong S = ` , s );
readln;
end.
Ví dụ 2:
Viết chương trình tìm ước số chung lớn nhất (ƯCLN) của hai số nguyên dương M và N.


Thuật toán :

B1: Nhập M, N;
B2: Nếu M = N thì ưCLN = M (hoặc N), rồi chuyển đến B5
B3: Nếu M >N thì M ? M - N rồi quay lại B2;
B4: ngược lại thì N ? N - M rồi quay B2;
B5: Đưa ra kết quả ưCLN
Program UCLN ;
Uses crt ;
var M, N : integer;
Begin
Clrscr ;
Write(‘ nhap M va N ‘);
Readln( M,N );
while ( M <> N ) do
begin
if M > N then
M := M – N
else N := N – M ;
end;

writeln(` UCLN = ` , M );
readln;
end.
Đúng
Đúng
Sai
Sai
5
10
10
10
5
5
15
25
3
2
1
Lặp
M =N ?
M > N ?
M= 25, N = 10
25 = 10 ?
25 >10
M ?25 - 10
15 = 10 ?
15 >10
M ?15 - 10
5 = 10 ?
5 > 10 ?
N = 10 - 5
5 = 5 ?
ƯSLN (25,10) = 5
M
N
Về làm bài tập 5, 6, 8 trang 51.
Xem trước bài tập và bài thực hành 2.
Định lí Bohn Jacopini : Mọi quá trình tính toán đều có thể mô tả và thực hiện dựa trên ba cấu trúc cơ bản là cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp.
Nhớ học bài cho tốt !
Hẹn gặp lại buổi thực hành.
Tạm biệt
các em nhé!
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Lam Vinh Kieu
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)