Giáo án điện tử
Chia sẻ bởi Đinh Hải Đường |
Ngày 26/04/2019 |
34
Chia sẻ tài liệu: Giáo án điện tử thuộc Tin học 12
Nội dung tài liệu:
Bài 10
cấu trúc lặp
Bài toán 1:
Bài toán 2:
Xét các bài toán : TÝnh tæng S, víi a lµ sè nguyªn vµ a>2
cho đến khi
1. Lặp
Xuất phát
Lần 1
Lần 2
+…
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 tang thờm: ???? (V?i N =1, 2,
.)
a + N
Cách tính tổng S
Bài toán 1:
Bài toán 2:
Cho đến khi
? 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
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.
1. Lặp
2. Lặp với số lần lặp biết trước và câu lệnh For - do
Tính tổng S (với a là số nguyên nhập vào từ bàn phím và a>2).
?
Hãy xác định giá trị khởi đầu của S, quy luật thay đổi giá trị của S và số lần lặp.
Viết chương trình để giải bài toán trên.
S:=1/a;
- S:= S + 1/(a+i);
- i chạy từ 1 đến 100 => Số lần lặp là 100 lần.
FOR := TO DO < câu lệnh>;
Ví dụ: S:=1/a;
FOR i:=2 TO 100 DO S := S+1/(a+i);
b. D?ng l?p lựi:
FOR := DOWNTO DO ;
Ví dụ: S:=1/a;
FOR i:=100 DOWNTO 2 DO S:=S+1/(a+i);
a. D?ng l?p ti?n:
2. L?p v?i s? l?n l?p bi?t tru?c v cõu l?nh for - do:
? Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm
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.
Trong đó
? Bi?n d?m thu?ng cú ki?u nguyờn ho?c kớ t?
For i:=1 to 10 do write(i);
For i:=`a` to `z` do write(i);
2. L?p v?i s? l?n l?p bi?t tru?c v cõu l?nh for - do:
- Dữ liệu ra (Output) : Tổng S
- Dữ liệu vào (Input) : S? nguyờn duong N
Hãy xác định INPUT và OUTPUT của bài toán trên!
Ví dụ: Lập trình tính tổng sau
Đ
S
B1: Nhập N;
B2: S:=1; i:=2;
B3: Nếu i > N thì đưa ra giá trị S => Kết thúc;
B4 : S:= S + 1/i;
B5: i := i +1 quay lại B3.
Xây dựng thuật toán
i := i+1
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;
Chương trình:
Bài toán
Dữ liệu ra (Output) : Tổng S
Dữ liệu vào (Input) : Nhập a
Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?
Cho đến khi
Tính giá trị tổng S, với a là số nguyên và a>2.
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Bước 2:
S:=1/a; N:=1;
{Khởi tạo S và N}
Bước 3:
Nếu 1/(a+N) < 0.0001
=> Bước 5
Bước 4:
S:=S+1/(a+N);
N:=N+1;
=> quay lại bước 3
thuật toán
Bước 1: Nhập a.
Đưa ra S
=> Kết thúc
? Vòng lặp chỉ dừng khi 1/(a+N)<0.0001
S
Đ
Bước 5: In S => Kết thúc.
WHILE <Điều kiện> DO;
Điều kiện
Đúng
Câu lệnh
Điều kiện: Là biểu thức
quan hệ hoặc lôgic.
Câu lệnh: Là một câu lệnh don ho?c ghộp.
Sai
3. Lặp với số lần lặp không biết trước
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
WHILE 1/(a+N) >= 0.0001 DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
Một số ví dụ
a
Bài toán đặt vấn đề:
Nhận xét:
Chừng nào 1/(a+N)>=0.0001 thì còn thực hiện:
+ Tăng giá trị của tổng S thêm 1/(a+N).
+ Tăng N thêm 1 đơn vị.
Tính giá trị tổng S, với a là số nguyên và a>2
thì dừng lại.
Cho đến khi
Chương trình
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(`Nhap gia tri cua a= `);Readln(a);
S:=1/a;N:=1;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
S:=S+1/(a+N);
N:=N+1;
END;
Writeln(`Gia tri cua tong S = `,S:8:3);
Readln;
END.
b
Vi?t chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.
B1: Nhập M,N;
B2 : N?u M = N thỡ chuy?n xu?ng B5.
B3: N?u M>N thì M:= M-N,
ngược lại thì N := N-M;
B4: Quay l?i B2
B5: Dua ra M r?i k?t thỳc.
B1: Nhập M,N
B2 : While M<>N DO
If M>N then M := M - N
else N := N - M;
B3: Dua ra M r?i k?t thỳc.
Thuật toán
các bước viết chương trình
CHƯƠNG TRÌNH:
Program UCLN;
Uses Crt;
Var M,N:Integer;
Begin
Clrscr;
Write(`Nhap 2 so nguyen duong: `);
Readln(M, N);
while M <> N do
if M > N then M := M - N else N := N - M;
writeln (UCLN = `,M);
Readln;
End.
Hãy nhớ!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN;
trong pascal
FOR ... TO ... DO ....
IF <đk> THEN
ESLE;
FOR ... Downto ... DO ...
While <đk> Do;
Dạng thi?u.
Dạng đầy đủ.
Lặp với số lần lặp biết trước.
Lặp với số lần lặp không biết trước.
cấu trúc lặp
Bài toán 1:
Bài toán 2:
Xét các bài toán : TÝnh tæng S, víi a lµ sè nguyªn vµ a>2
cho đến khi
1. Lặp
Xuất phát
Lần 1
Lần 2
+…
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 tang thờm: ???? (V?i N =1, 2,
.)
a + N
Cách tính tổng S
Bài toán 1:
Bài toán 2:
Cho đến khi
? 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
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.
1. Lặp
2. Lặp với số lần lặp biết trước và câu lệnh For - do
Tính tổng S (với a là số nguyên nhập vào từ bàn phím và a>2).
?
Hãy xác định giá trị khởi đầu của S, quy luật thay đổi giá trị của S và số lần lặp.
Viết chương trình để giải bài toán trên.
S:=1/a;
- S:= S + 1/(a+i);
- i chạy từ 1 đến 100 => Số lần lặp là 100 lần.
FOR
Ví dụ: S:=1/a;
FOR i:=2 TO 100 DO S := S+1/(a+i);
b. D?ng l?p lựi:
FOR
Ví dụ: S:=1/a;
FOR i:=100 DOWNTO 2 DO S:=S+1/(a+i);
a. D?ng l?p ti?n:
2. L?p v?i s? l?n l?p bi?t tru?c v cõu l?nh for - do:
? Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm
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.
Trong đó
? Bi?n d?m thu?ng cú ki?u nguyờn ho?c kớ t?
For i:=1 to 10 do write(i);
For i:=`a` to `z` do write(i);
2. L?p v?i s? l?n l?p bi?t tru?c v cõu l?nh for - do:
- Dữ liệu ra (Output) : Tổng S
- Dữ liệu vào (Input) : S? nguyờn duong N
Hãy xác định INPUT và OUTPUT của bài toán trên!
Ví dụ: Lập trình tính tổng sau
Đ
S
B1: Nhập N;
B2: S:=1; i:=2;
B3: Nếu i > N thì đưa ra giá trị S => Kết thúc;
B4 : S:= S + 1/i;
B5: i := i +1 quay lại B3.
Xây dựng thuật toán
i := i+1
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;
Chương trình:
Bài toán
Dữ liệu ra (Output) : Tổng S
Dữ liệu vào (Input) : Nhập a
Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?
Cho đến khi
Tính giá trị tổng S, với a là số nguyên và a>2.
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Bước 2:
S:=1/a; N:=1;
{Khởi tạo S và N}
Bước 3:
Nếu 1/(a+N) < 0.0001
=> Bước 5
Bước 4:
S:=S+1/(a+N);
N:=N+1;
=> quay lại bước 3
thuật toán
Bước 1: Nhập a.
Đưa ra S
=> Kết thúc
? Vòng lặp chỉ dừng khi 1/(a+N)<0.0001
S
Đ
Bước 5: In S => Kết thúc.
WHILE <Điều kiện> DO
Điều kiện
Đúng
Câu lệnh
Điều kiện: Là biểu thức
quan hệ hoặc lôgic.
Câu lệnh: Là một câu lệnh don ho?c ghộp.
Sai
3. Lặp với số lần lặp không biết trước
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
WHILE 1/(a+N) >= 0.0001 DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
Một số ví dụ
a
Bài toán đặt vấn đề:
Nhận xét:
Chừng nào 1/(a+N)>=0.0001 thì còn thực hiện:
+ Tăng giá trị của tổng S thêm 1/(a+N).
+ Tăng N thêm 1 đơn vị.
Tính giá trị tổng S, với a là số nguyên và a>2
thì dừng lại.
Cho đến khi
Chương trình
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(`Nhap gia tri cua a= `);Readln(a);
S:=1/a;N:=1;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
S:=S+1/(a+N);
N:=N+1;
END;
Writeln(`Gia tri cua tong S = `,S:8:3);
Readln;
END.
b
Vi?t chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.
B1: Nhập M,N;
B2 : N?u M = N thỡ chuy?n xu?ng B5.
B3: N?u M>N thì M:= M-N,
ngược lại thì N := N-M;
B4: Quay l?i B2
B5: Dua ra M r?i k?t thỳc.
B1: Nhập M,N
B2 : While M<>N DO
If M>N then M := M - N
else N := N - M;
B3: Dua ra M r?i k?t thỳc.
Thuật toán
các bước viết chương trình
CHƯƠNG TRÌNH:
Program UCLN;
Uses Crt;
Var M,N:Integer;
Begin
Clrscr;
Write(`Nhap 2 so nguyen duong: `);
Readln(M, N);
while M <> N do
if M > N then M := M - N else N := N - M;
writeln (UCLN = `,M);
Readln;
End.
Hãy nhớ!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN
trong pascal
FOR ... TO ... DO ....
IF <đk> THEN
ESLE
FOR ... Downto ... DO ...
While <đk> Do
Dạng thi?u.
Dạng đầy đủ.
Lặp với số lần lặp biết trước.
Lặp với số lần lặp không biết trước.
* 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ẻ: Đinh Hải Đườ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)