BAI 2
Chia sẻ bởi Nguyễn Thị Cầm Yến |
Ngày 10/05/2019 |
77
Chia sẻ tài liệu: BAI 2 thuộc Tin học 11
Nội dung tài liệu:
Bài 2: TỔ CHỨC LẶP
Lặp:
Vòng lặp có số lần chưa biết trước WHILE_DO:
Vòng lặp với số lần biết trước FOR_DO:
I. Lặp:
Với a là số nguyên và a>2, xét các bài toán sau:
Bài toán 1:
Cho đến khi
Bài toán 2:
I. Lặp (tt):
Cách tính tổng của hai bài toán trên đều tương tự nhau. Đầu tiên S được gán giá trị là
Tiếp theo, mỗi lần thêm vào S một giá trị là
với N=1, 2, 3,… Việc cộng thêm đó được lặp lại một số lần liên tiếp.
Đối với bài toán 1: phải tính lặp bao nhiêu lần ta chưa biết trước, chỉ biết việc lặp sẽ chấm dứt khi thỏa điều kiện
I. Lặp (tt):
Đối với bài toán 2, số lần lặp biết trước, việc tính lặp sẽ chấm dứt khi số lần đã thực hiện đủ 100.
Trong một số thuật toán có những thao tác được lặp đi, lặp lại một số lần liên tiếp. Ta phân biệt hai loại lặp: lặp có số lần chưa biết trước và lặp có số lần biết trước
II. Vòng lặp có số lần chưa biết trước while_do:
Thuật toán Tong_1
Bước 1: S:=1/a; N:=0; {khởi tạo S và N}
Bước 2: Nếu 1/(a+N) <0.0001 thì chuyển đến bước 5;
Bước 3: N:=N+1;
Bước 4: S:=S+1/(a+N) rồi quay lại bước 2;
Bước 5: Đưa kết quả S ra màn hình rồi kết thúc.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Việc lặp với số lần lặp chưa biết trước sẽ chấm dứt khi một điều kiện cụ thể cho biết trước được thỏa mãn.
Ñeå toå chöùc vieäc laëp nhö vaäy, TP duøng caâu leänh coù WHILE_DO daïng:
+ Điều kiện: biểu thức quan hệ (<, >, =,<=, >=, <>, …) hoặc logic (and, or, not).
+ Câu lệnh: một câu leänh của TP
WHILE <Điều kiện> DO
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ đồ vòng lặp với số lần chưa biết trước
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ đồ khối tính tổng S
II. Vòng lặp có số lần chưa biết trước while_do:
Ví dụ 1: Chương trình tính tổng ở bài toán 1
Program tong_1;
Var S: real;
a, N: integer;
Begin
Write(‘Nhap vao gia tri a’); readln(a);
S:=1/a;
N=0;
While not (1/(a+N) <0.0001) do
Begin
N:=N+1;
S:=S+1/(a+N);
End;
Writeln(‘Tong can tinh la:’,S);
Readln;
End.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Ví dụ 2: Tìm UCLN của 2 số M và N
Caùc böôùc cuûa thuaät toaùn:
Böôùc 1: Nhaäp M, N;
Böôùc 2: Neáu M=N thì laáy giaù trò chung ÖCLN roài chuyeån ñeán böôùc 5;
Böôùc 3: Neáu M>N thì M←M-N roài quay laïi böôùc 2;
Böôùc 4: N ←N-M roài quay laïi böôùc 2;
Böôùc 5: Ñöa ra keát quaû ÖCLN roài keát thuùc.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ dđ? khối tìm UCLN c?a 2 s? M & N
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Chương trình: Tìm UCLN của 2 số M và N
Program UCLN;
Var M, N: integer;
Be gin
Write(‘ Nhap vao gia tri M’); readln(M);
Write(‘Nhap vao gia tri N’); readln(N);
If (M=0) or (N=0) then
exit
While M<>N do
If M>N then
M:=M-N
Else
N:=N-M;
Writeln(‘UCLN cua 2 so M va N la:’,M);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Thuật toán Tong_2a
Bước 1: S:=1/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 kết quả ra màn hình rồi kết thúc
III. Vòng lặp với số lần biết trước FOR_DO
Thuật toán Tong_2b
Bước 1: S:=1/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 kết quả ra màn hình rồi kết thúc
III. Vòng lặp với số lần biết trước FOR_DO
Ñeå toå chöùc laëp vôùi soá laàn bieát tröôùc, TP duøng caâu leänh FOR_DO. Caâu leänh FOR_DO coù hai daïng:
Daïng laëp tieán:
Daïng laëp luøi:
FOR := TO
DO
FOR :=
DOWNTO DO
III. Vòng lặp với số lần biết trước FOR_DO
Trong đó:
Biến đếm là kiểu số nguyên, số thực hay kiểu miền con
Giá trị đầu, Giá trị cuối là các biểu thức cùng kiểu với các biến đếm
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 1a:
Program Tong_2a;
Var S: real;
a, N: integer;
Begin
Write(`Nhap vao gia tri a:`); readln(a);
S:=1/a;
For N:=1 to 100 do
S:=S+1/(a+N);
Writeln(`Tong can tinh la:`,S);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 1b:
Program Tong_2b;
Var S: real;
a, N: integer;
Begin
Write(`Nhap vao gia tri a:`); readln(a);
S:=1/a;
For N:=100 downto 1 do
S:=S+1/(a+N);
Writeln(`Tong can tinh la:`,S);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 2: viết chương trình tính nhập vào 2 số nguyên dương M&N (M Thuật toán Tong;
Bước 1: Nhập vào M, N;
Bước 2: T:=0;
Bước 3: Nếu (I mod 3<>0) or (I mod 5<>0) thì chuyển đến bước 5;
Bước 4: T:=T+I;
Bước 5: Đưa kết quả ra màn hình rồi kết thúc.
III. Vòng lặp với số lần biết trước FOR_DO
Chương trình:
Program Tong;
Var M,N, I:integer;
Begin
Write(`Nhap vao gia tri M=`); readln(M);
Write(`(`Nhap vao gia tri 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(`Tong can tinh la:`, T);
Readln;
End.
Lặp:
Vòng lặp có số lần chưa biết trước WHILE_DO:
Vòng lặp với số lần biết trước FOR_DO:
I. Lặp:
Với a là số nguyên và a>2, xét các bài toán sau:
Bài toán 1:
Cho đến khi
Bài toán 2:
I. Lặp (tt):
Cách tính tổng của hai bài toán trên đều tương tự nhau. Đầu tiên S được gán giá trị là
Tiếp theo, mỗi lần thêm vào S một giá trị là
với N=1, 2, 3,… Việc cộng thêm đó được lặp lại một số lần liên tiếp.
Đối với bài toán 1: phải tính lặp bao nhiêu lần ta chưa biết trước, chỉ biết việc lặp sẽ chấm dứt khi thỏa điều kiện
I. Lặp (tt):
Đối với bài toán 2, số lần lặp biết trước, việc tính lặp sẽ chấm dứt khi số lần đã thực hiện đủ 100.
Trong một số thuật toán có những thao tác được lặp đi, lặp lại một số lần liên tiếp. Ta phân biệt hai loại lặp: lặp có số lần chưa biết trước và lặp có số lần biết trước
II. Vòng lặp có số lần chưa biết trước while_do:
Thuật toán Tong_1
Bước 1: S:=1/a; N:=0; {khởi tạo S và N}
Bước 2: Nếu 1/(a+N) <0.0001 thì chuyển đến bước 5;
Bước 3: N:=N+1;
Bước 4: S:=S+1/(a+N) rồi quay lại bước 2;
Bước 5: Đưa kết quả S ra màn hình rồi kết thúc.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Việc lặp với số lần lặp chưa biết trước sẽ chấm dứt khi một điều kiện cụ thể cho biết trước được thỏa mãn.
Ñeå toå chöùc vieäc laëp nhö vaäy, TP duøng caâu leänh coù WHILE_DO daïng:
+ Điều kiện: biểu thức quan hệ (<, >, =,<=, >=, <>, …) hoặc logic (and, or, not).
+ Câu lệnh: một câu leänh của TP
WHILE <Điều kiện> DO
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ đồ vòng lặp với số lần chưa biết trước
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ đồ khối tính tổng S
II. Vòng lặp có số lần chưa biết trước while_do:
Ví dụ 1: Chương trình tính tổng ở bài toán 1
Program tong_1;
Var S: real;
a, N: integer;
Begin
Write(‘Nhap vao gia tri a’); readln(a);
S:=1/a;
N=0;
While not (1/(a+N) <0.0001) do
Begin
N:=N+1;
S:=S+1/(a+N);
End;
Writeln(‘Tong can tinh la:’,S);
Readln;
End.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Ví dụ 2: Tìm UCLN của 2 số M và N
Caùc böôùc cuûa thuaät toaùn:
Böôùc 1: Nhaäp M, N;
Böôùc 2: Neáu M=N thì laáy giaù trò chung ÖCLN roài chuyeån ñeán böôùc 5;
Böôùc 3: Neáu M>N thì M←M-N roài quay laïi böôùc 2;
Böôùc 4: N ←N-M roài quay laïi böôùc 2;
Böôùc 5: Ñöa ra keát quaû ÖCLN roài keát thuùc.
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Sơ dđ? khối tìm UCLN c?a 2 s? M & N
II. Vòng lặp có số lần chưa biết trước while_do (tt):
Chương trình: Tìm UCLN của 2 số M và N
Program UCLN;
Var M, N: integer;
Be gin
Write(‘ Nhap vao gia tri M’); readln(M);
Write(‘Nhap vao gia tri N’); readln(N);
If (M=0) or (N=0) then
exit
While M<>N do
If M>N then
M:=M-N
Else
N:=N-M;
Writeln(‘UCLN cua 2 so M va N la:’,M);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Thuật toán Tong_2a
Bước 1: S:=1/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 kết quả ra màn hình rồi kết thúc
III. Vòng lặp với số lần biết trước FOR_DO
Thuật toán Tong_2b
Bước 1: S:=1/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 kết quả ra màn hình rồi kết thúc
III. Vòng lặp với số lần biết trước FOR_DO
Ñeå toå chöùc laëp vôùi soá laàn bieát tröôùc, TP duøng caâu leänh FOR_DO. Caâu leänh FOR_DO coù hai daïng:
Daïng laëp tieán:
Daïng laëp luøi:
FOR
DO
FOR
DOWNTO
III. Vòng lặp với số lần biết trước FOR_DO
Trong đó:
Biến đếm là kiểu số nguyên, số thực hay kiểu miền con
Giá trị đầu, Giá trị cuối là các biểu thức cùng kiểu với các biến đếm
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 1a:
Program Tong_2a;
Var S: real;
a, N: integer;
Begin
Write(`Nhap vao gia tri a:`); readln(a);
S:=1/a;
For N:=1 to 100 do
S:=S+1/(a+N);
Writeln(`Tong can tinh la:`,S);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 1b:
Program Tong_2b;
Var S: real;
a, N: integer;
Begin
Write(`Nhap vao gia tri a:`); readln(a);
S:=1/a;
For N:=100 downto 1 do
S:=S+1/(a+N);
Writeln(`Tong can tinh la:`,S);
Readln;
End.
III. Vòng lặp với số lần biết trước FOR_DO
Ví dụ 2: viết chương trình tính nhập vào 2 số nguyên dương M&N (M
Bước 1: Nhập vào M, N;
Bước 2: T:=0;
Bước 3: Nếu (I mod 3<>0) or (I mod 5<>0) thì chuyển đến bước 5;
Bước 4: T:=T+I;
Bước 5: Đưa kết quả ra màn hình rồi kết thúc.
III. Vòng lặp với số lần biết trước FOR_DO
Chương trình:
Program Tong;
Var M,N, I:integer;
Begin
Write(`Nhap vao gia tri M=`); readln(M);
Write(`(`Nhap vao gia tri 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(`Tong can tinh la:`, T);
Readln;
End.
* 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ị Cầm Yến
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)