Bài 10. Cấu trúc lặp
Chia sẻ bởi Nguyễn Duy Quang |
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:
Bài 10
Bài toán 1 : Tính tổng
S1 =
Ý tưởng:
Ban đầu S0.Sau đó cho i nhận lần lượt các giá trị liên tiếp
tăng từ 1 cho đến 100, mỗi lần i nhận 1 giá trị thì thực
hiện: SS+1/i
Bài toán 2 : Tính Tổng
Cho đến khi: 2-S<0,001
S2=
Ý tưởng:
Ban đầu S0;i1. Sau đó thực hiện lặp lại: SS+1/i;
iI+1Cho đến khi 2-S<0,001 thì dừng lại
Trong một số thuật toán có những thao tác phải lặp lại nhiều lần. Cấu trúc lặp mô tả thao tác lặp.
Lặp có 2 loại :
- Lặp với số lần biết trước .
- Lặp với số lần chưa biết trước .
B1: S:=0; i:=1;
B2: Nếu i > 100 thì đưa ra giá trị S, rồi kết thúc;
B3 : S:= S + 1/i;
B4: i := i +1 quay lại B2.
Thuật toán bài toán 1:
*Thuật toán a:
B1: S:=0; i:=100;
B2: Nếu i <1 thì đưa ra giá trị s, rồi kết thúc;
B3 : S:= S + 1/i;
B4: i := i -1 quay lại B2.
Xây dựng thuật toán
*Thuật toán b:
FOR := TO DO ;
Dạng lặp lùi:
FOR := DOWNTO DO ;
Dạng lặp tiến:
Trong đó:
? là biến thuộc kiểu đếm được (số nguyên, kí tự,.)
?, là các biểu thức cùng kiểu với biến
đếm, phải nhỏ hơn hoặc bằng .
? là một câu lệnh bất kỳ của Pascal
Câu lệnh For - do:
Dạng lặp tiến:
Hoạt động của lệnh For - do:
sau từ khoá Do được thực hiện lặp lại tuần tự với
lần lượt nhận các giá trị liên tiếp tăng từ
đến.
Dạng lặp lùi:
sau từ khoá Do được thực hiện lặp lại tuần tự với
lần lượt nhận các giá trị liên tiếp giảm từ
đến.
? Giá trị được điều chỉnh tự động, vì vậy câu lệnh sau từ khoá DO không được làm thay đổi giá trị .
Chú ý:
Ví dụ 1 :
S:=0;
FOR i:=1 TO 100 DO S:=S+1/i;
Biến đếm
Giá trị đầu
Giá trị cuối
Câu lệnh
S:=0;
FOR i:=1 TO 5 DO S:=S+1/i;
Giá trị i
Giá trị S
Lệnh thực hiện
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
Lần:
1
1
0
2
2
3
4
5
1
3
6
10
15
3
4
5
Kết thúc
Ví dụ 2 :
S:=0;
FOR i:=100 DOWNTO 1 DO S:=S+1/i;
S:=0;
FOR i:=1 TO 5 DO S:=S+1/i;
Giá trị i
Giá trị S
Lệnh thực hiện
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
Lần:
1
1
0
2
2
3
4
5
1
3
6
10
15
3
4
5
Kết thúc
Ví dụ 3 :
FOR i:=10 TO 20 DO write(i:4);
Ví dụ 4 : cho biết lệnh sau khi thực hiện sẽ như thế nào?
FOR i:=10 TO 20 DO
Begin
write(i:4);
i:=I+1;
end;
Uses crt;
Var i,N : Integer; S : real;
BEGIN
Readln;
END.
S:=1;
FOR i:=2 to N do S := S+1/i;
Writeln(` Tong S =`,S:8:3);
Write(` Nhap vao gia tri cua N :`);readln(N);
Program Tinh_tong;
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 đặt vấn đề.
Lập chương trình tính tổng sau:
Ví dụ 2 : Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong phạm vi từ M đến N (MProgram Vidu_2;
Uses CRT;
Var M,N,i: Integer;
T: Longint;
Begin
Clrscr;
Writeln(‘ Hay nhap 2 so M va N, M Write(‘M=‘); Redaln(M);
Write(‘N=‘); Readln(N);
T:=0;
For i:=M To N Do
If (I mod 3=0) Or (I mod 5=0) Then
T:= T+I;
Writeln(‘ Ket qua:’,T);
End.
Về viết lại chương trình giải bài toán 1 (2 ctrình)
Viết thuật toán cho bài toán 2
Bài toán 1 : Tính tổng
S1 =
Ý tưởng:
Ban đầu S0.Sau đó cho i nhận lần lượt các giá trị liên tiếp
tăng từ 1 cho đến 100, mỗi lần i nhận 1 giá trị thì thực
hiện: SS+1/i
Bài toán 2 : Tính Tổng
Cho đến khi: 2-S<0,001
S2=
Ý tưởng:
Ban đầu S0;i1. Sau đó thực hiện lặp lại: SS+1/i;
iI+1Cho đến khi 2-S<0,001 thì dừng lại
Trong một số thuật toán có những thao tác phải lặp lại nhiều lần. Cấu trúc lặp mô tả thao tác lặp.
Lặp có 2 loại :
- Lặp với số lần biết trước .
- Lặp với số lần chưa biết trước .
B1: S:=0; i:=1;
B2: Nếu i > 100 thì đưa ra giá trị S, rồi kết thúc;
B3 : S:= S + 1/i;
B4: i := i +1 quay lại B2.
Thuật toán bài toán 1:
*Thuật toán a:
B1: S:=0; i:=100;
B2: Nếu i <1 thì đưa ra giá trị s, rồi kết thúc;
B3 : S:= S + 1/i;
B4: i := i -1 quay lại B2.
Xây dựng thuật toán
*Thuật toán b:
FOR
Dạng lặp lùi:
FOR
Dạng lặp tiến:
Trong đó:
?
?
đếm,
?
Câu lệnh For - do:
Dạng lặp tiến:
Hoạt động của lệnh For - do:
đến
Dạng lặp lùi:
đến
? Giá trị
Chú ý:
Ví dụ 1 :
S:=0;
FOR i:=1 TO 100 DO S:=S+1/i;
Biến đếm
Giá trị đầu
Giá trị cuối
Câu lệnh
S:=0;
FOR i:=1 TO 5 DO S:=S+1/i;
Giá trị i
Giá trị S
Lệnh thực hiện
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
Lần:
1
1
0
2
2
3
4
5
1
3
6
10
15
3
4
5
Kết thúc
Ví dụ 2 :
S:=0;
FOR i:=100 DOWNTO 1 DO S:=S+1/i;
S:=0;
FOR i:=1 TO 5 DO S:=S+1/i;
Giá trị i
Giá trị S
Lệnh thực hiện
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
S:=S+i;
Lần:
1
1
0
2
2
3
4
5
1
3
6
10
15
3
4
5
Kết thúc
Ví dụ 3 :
FOR i:=10 TO 20 DO write(i:4);
Ví dụ 4 : cho biết lệnh sau khi thực hiện sẽ như thế nào?
FOR i:=10 TO 20 DO
Begin
write(i:4);
i:=I+1;
end;
Uses crt;
Var i,N : Integer; S : real;
BEGIN
Readln;
END.
S:=1;
FOR i:=2 to N do S := S+1/i;
Writeln(` Tong S =`,S:8:3);
Write(` Nhap vao gia tri cua N :`);readln(N);
Program Tinh_tong;
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 đặt vấn đề.
Lập chương trình tính tổng sau:
Ví dụ 2 : Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong phạm vi từ M đến N (M
Uses CRT;
Var M,N,i: Integer;
T: Longint;
Begin
Clrscr;
Writeln(‘ Hay nhap 2 so M va N, M
Write(‘N=‘); Readln(N);
T:=0;
For i:=M To N Do
If (I mod 3=0) Or (I mod 5=0) Then
T:= T+I;
Writeln(‘ Ket qua:’,T);
End.
Về viết lại chương trình giải bài toán 1 (2 ctrình)
Viết thuật toán cho bài toán 2
* 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 Duy Quang
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)