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

Chia sẻ bởi Nguyễn Thị Trưng | Ngày 10/05/2019 | 122

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:

Hãy quan sát và cho biết :
Mỗi tình huống mô tả điều gì được lặp lại ? Và lặp bao nhiêu lần ?
Tớ phải bị phạt đi tới đi lui như thế này cho tới bao giờ ?
Còn tớ phải bị phạt tập thể dục như thế này cho tới bao giờ ?
Cậu phải làm 50 lần như thế.
Cấu trúc lặp mô tả điều gì?
Có mấy loại lặp?
Cậu phải đi cho đến khi trời mưa.
Tình
huống 1
Tình
huống 2

Xét 3 bài toán :

Bài 1: tính tổng S1= 1+ 1/2+ . . . + 1/100
Bài 2: Hiển thị 100 chữ `Hello` trên các hàng khác nhau.
Bài 3 : Tính tổng S2=1/a+1/(a+1)+1/(a+2)+ . . . +1/(a+n) cho đến
khi 1/(a+n)<0.0001 (Với a,n là số nguyên dương bất kì (n>2) )


1. Lặp :

Bài 1 và bài 2 sử dụng cấu trúc lặp với số lần biết trước
Cấu trúc lặp mô tả thao tác lặp và được phân biệt bởi 2 loại là 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
Hãy cho biết trong 3 bài toán trên, bài toán nào sử dụng cấu trúc lặp với số lần biết trước ?
Hãy cho biết 2 câu lệnh sau thực hiện điều gì? Và biến i, j phải có kiểu dữ liệu nào
mới phù hợp? For i:=1 to 100 do writeln(`Hello`);
For j:=`z` downto `a` do writeln(j);
Ở dạng lặp tiến : 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
Để mô tả cấu trúc lặp với số lần biết trước, Pascal dùng câu lệnh FOR- DO
với 2 dạng lặp tiến và lặp lùi.
Lặp tiến:
FOR := TO DO ;
Lặp lùi:
FOR := DOWNTO DO ;

Trong đó:
thường có kiểu số nguyên hoặc kiểu kí tự
, : là biểu thức cùng kiểu với biến đếm và
?
là câu lệnh đơn hoặc câu lệnh ghép.
Ở dạng lặp lùi : 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
* Câu lệnh sau DO không được thay đổi giá trị của biến đếm.
Hãy nêu sự hoạt động của câu lệnh FOR - DO?
Câu lệnh sau DO có được thay đổi giá trị của biến đếm không ?
Vì sao?
Hãy cho biết điểm giống và khác nhau của 2 câu lệnh
FOR- DO dạng lặp tiến và lặp lùi?
2. Lặp với số lần biết trước và câu lệnh FOR - DO
VD1 : Phân tích và viết chương trình bài toán tính tổng
s1= 1+1/2+1/3+ . . . +1/100 đã nêu ở phần 1
Nhận xét:
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4


.....
S100 = S99 + 1/100
Bắt đầu từ S2 việc tính S được lặp đi lặp lại 99 lần theo quy luật
Ssau = Strước+ 1/i
với i chạy từ 2 ? 100
. . . . . . . . . . . . . . . . . . . .
chương trình
Sửa chương trình bên như thế nào để được chương trình tính tổng S=1+1/2+ . . .+1/N với N là số nguyên dương >2 nhập vào từ bàn phím
Hãy áp dụng câu lệnh lặp dạng tiến để viết chương trình tính tổng trên?

VD2: Cho biết câu lệnh sau thực hiện điều gì:
For i:=1 to 4 do
For j:=1 to 5 do
Writeln(`HELLO`);

VD3: Cho biết câu lệnh sau thực hiện điều gì:
S:=0;T:=0;
For i:=1 to 5 do
Begin
S:= s+i; T:=T+2;
End;
Write(`S=`,S,`T=`,T);
Hiển thị 20 chữ HELLO
trên các dòng khác nhau.
BTVN:
a/Viết chương trình tính tổng S=1+2+3+ . . + 100?
b/Viết chương trình tính tổng S=1/a+1/(a+1)+ . . .+1/(a+n)
Với a và n là các số nguyên dương nhập tùy ý từ bàn phím?
Tính và hiển thị:
S=15T=10
Lưu ý :
Các lệnh FOR -DO khi viết lồng nhau không được dùng chung một biến đếm
Sau Do nếu muốn thực hiện nhiều câu lệnh thì các lệnh ấy phải đặt
trong Begin . . . End; { câu lệnh ghép}
3. Lặp với số lần chưa biết trước và câu lệnh WHILE -DO
Để mô tả cấu trúc lặp với số lần chưa biết trước. Pascal dùng câu lệnh:
WHILE <điều kiện> DO ;
Trong đó
: là câu lệnh đơn hoặc câu lệnh ghép.
< điều kiện>: là biểu thức logic.



VD1: Viếtchương trình tính tổng S=1+1/2+1/3+ . . .+1/n cho đến khi 1/n<0.1.
VD2: Nhập a,Viết đoạn chương trình tính tổng
S=1/a+1/(a+1)+1/(a+2)+ . . . +1/(a+n) cho đến khi 1/(a+n)<0.0001




Hãy cho biết hoạt động của câu lệnh WHILE- DO?
Hãy cho biết WHILE- DO có áp dụng cho
cấu trúc lặp với số lần biết trước được không?
Hãy dùng lệnh WHILE- DO viết đoạn chương trình tính tổng
S=1+2+3+ . . .+100?
Cho biết kết quả của đoạn chương rình sau:

S:=0;i:=1;
While 1/i>=0.1 Do
Begin
S:=S+i;
i:=i+2;
End;
Write(`S=`,S);
Kết quả của đoạn chương rình là:
S=25


Cho biết kết quả của đoạn chương rình sau:

S:=0;i:=1;
While 1/i>=0.1 Do
Begin
S:=S+ 1;
i:=i+2;
End;
Write(`S=`,S);
Kết quả của đoạn chương rình là:
S=5


* 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ẻ: Nguyễn Thị Trưng
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)