Bài 10. Cấu trúc lặp
Chia sẻ bởi Tăng Thái Sơn |
Ngày 10/05/2019 |
64
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ũ
Viết cú pháp câu lệnh rẽ nhánh
(dạng đủ và dạng thiếu)
Cho ví dụ.
Bài 10
CẤU TRÚC LẶP
(3 Ti?t)
Bài 10: CẤU TRÚC LẶP
Lặp
Lặp với số lần biết trước và câu lệnh for….do….
Lặp với số lần chưa biết trước và câu lệnh while….do….
Bài tập Ví dụ
Thế nào là Lặp?
Bài 10: CẤU TRÚC LẶP
Lặp
Bài tập 1: Viết chương trình in ra màn hình dòng chữ “Hello”
Bài tập 2: Viết chương trình in ra màn hình 5 dòng chữ “Hello”
I. Tìm hiểu Lặp
Bài tập 3: Viết chương trình in ra màn hình 14 dòng chữ “Hello”
Nhận xét:
- Để viết ra màn hình 14 dòng chữ Hello chúng ta phải viết bao nhiêu câu lệnh trong phần thân chương trình Begin End?
- Các câu lệnh đó có giống nhau không?
- Số lần thực hiện của công việc in ra màn hình là bao nhiêu? Số lần này có xác định được không?
THPT Nguyễn Văn Trỗi
Bài tập 4: Viết chương trình in ra màn hình dòng chữ “Hello”, và thông báo có muốn tiếp tục hay không? Nếu muốn tiếp tục thì nhấn phím “c” còn nếu không thì nhấn phím “k” để kết thúc?
Nhận xét:
- Các công việc in ra màn hình đó có giống nhau không?
- Công việc in ra màn hình dòng chữ “Hello” và thông báo “Ban co muon tiep tuc khong? C/K?” có xác định được số lần in ra màn hình không?
THPT Nguyễn Văn Trỗi
Phân loại
2. Lặp với số lần biết trước và câu lệnh For-do
Lặp dạng tiến:
for:= to do
;
Lặp dạng lùi:
for:= downto do
;
Trong Pascal, có 2 loại câu lệnh lặp với số lần biết trước:
Trong đó:
for:= to do
;
Biến đếm thường là biến kiểu số nguyên
Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu ≤ giá trị cuối
Hoạt động của for-do
Biến đếm
Câu lệnh sau Do
Thực hiện
Gt đầu
Gt đầu + 1
Gt đầu + 2
Gt cuối
…
Thực hiện lần 1
Thực hiện lần 2
Thực hiện lần 3
Thực hiện lần cuối
Dạng lặp Tiến: for .. to .. do
Hoạt động của for-do
Dạng lặp Lùi: for .. downto .. do
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
Ví dụ áp dụng
Ví dụ 1:
Sử dụng cấu trúc lặp xác định để viết chương trình thực hiện in ra màn hình 20 dòng chữ Hello.
Xác định: - Câu lệnh lặp cần thực hiện?
- Lặp bao nhiêu lần?
- Giá trị đầu, giá trị cuối?
Ví dụ áp dụng
Ví dụ áp dụng
Ví dụ 2:
Ngày đầu tiên đi học mẹ cho bé 1 viên kẹo, ngày thứ 2 đi học mẹ cho bé 2 viên kẹo, ….., ngày thứ 7 đi học mẹ cho bé 7 viên kẹo. Hỏi sau 7 ngày bé có tất cả bao nhiêu viên kẹo
S:=0
S:=0+1
S:=0+1+2
S:=0+1+2+3
…..
S:=0+1+2+3+4+5+6+7
Writeln(‘So keo:’, s);
Program vd2;
Uses crt;
Var i,s : integer;
Begin
S:=0;
For i:=1 to 7 do
s:=s+i;
Readln;
End.
Hãy nhớ
Câu lệnh lặp
trong pascal
FOR ... TO ... DO ...…
FOR ... Downto ... DO ...
+ Ý nghĩa: Lặp với số lần biết trước.
Công việc sau Do sẽ được thực hiện tuần tự từ giá trị đầu đến giá trị cuối
+ Có 2 dạng:
- Lặp tiến: giá trị biến đếm tăng thêm 1.
- Lặp lùi: giá trị biến đếm giảm đi 1
Câu 1: Câu lệnh Pascal nào sau đây đúng?
Về nhà
Đ
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
FOR := TO DO < câu lệnh>;
Ví dụ: S:=1;
FOR i:=2 TO 100 DO S:=S+1/i;
b. Dạng 2 (dạng lùi)
FOR := DOWNTO DO ;
Ví dụ: S:=1;
FOR i:=100 DOWNTO 2 DO S:=S+1/i;
a. Dạng 1 (dạng tiến)
2. Lặp với số lần lặp biết trước
? Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu phải nhỏ hơn giá trị cuối.
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 đếm là biến kiểu số nguyên hoặc kí tự.
For i:=1 to 10 do write(i);
For i:=`a` to `z` do write(i);
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:
S := 1 ; i := 2;
i >N
KT
S := S +1/ i ;
i := i +1;
2.08
1.83
1.5
1
4
3
2
Lượt
i
S
2.28
5
Nhập N
S := 1 ; i := 2;
2>5 ?
S
S
S := 1 +1/2 ;
i := 2 +1;
3>5 ?
S := 1.5+1/3 ;
i := 3 +1;
4>5 ?
S := 1.83+1/4 ;
i := 4 +1;
5>5 ?
S := 2.08+1/5;
i := 5 +1;
6
S
S
S
6>5 ?
In Tổng S
Tổng S=2.28
Với N = 5
2.28
Đ
Đ
Mô phỏng thuật toán
3. Ví dụ
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.
Kiểm tra bài cũ
Viết cú pháp câu lệnh lặp for… do…..
Viết câu lệnh for … do… dùng để tính tổng các số tự nhiên từ 1 đến n
Ví dụ 1: Viết chương trình in ra màn hình dòng chữ Hello
Và thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Nhắc lại bài toán lặp
Các thao tác in ra màn hình dòng chữ Hello và thông báo
Ban co muon tiep tuc khong? C/K?
luôn được lặp đi lặp lại
Số lần thực hiện các câu lệnh đó phụ thuộc vào nhấn phím c và k Số lần thực hiện lặp đó là không xác định
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Nhận xét:
Nghiên cứu SGK
Cú pháp
2.Lặp với số lần chưa biết trướ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 của Pascal.
Sai
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
Ví dụ 1: Viết chương trình in ra màn hình dòng chữ Hello
Và thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.
Câu lệnh lặp ở đây là câu lệnh nào?
Writeln(‘Hello’);
Write(‘Ban muon tiep tuc khong? C/K? ’);
Readln(phimbam);
phimbam=‘c’
Điều kiện để công việc lặp được thực hiện là gì?
Chương trình:
program vd1;
uses crt;
var phimbam:char;
begin
clrscr;
phimbam:=`c`;
while phimbam=`c` do
begin
writeln (`Hello`);
writeln(`Ban muon tiep tuc khong? C/K ?`);
readln(phimbam);
end;
readln
end.
Ví dụ 2: 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ố đó.
Ý tưởng:
M=N thì ƯCLN (M,N)=M=N.
MM>N thì ƯCLN (M,N)= ƯCLN (N,M-N).
Thuật toán tìm ƯCLN
Đ
Đ
S
S
Thuật toán tìm ƯCLN
5
10
10
10
5
5
15
25
3
2
1
Lượt
Nhập M ,N
M =N ?
M > N ?
N ?N - M
M ?M - N
Đưa ra M ; Kết thúc
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 ?
ƯCLN (25,10) = 5
M
N
Ví dụ 2: 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 : Chừng nào MN
nếu M>N thì M:=M-N,
ngược lại thì N:=N-M;
B3: Đến khi M=N thì
=> Đưa ra ƯCLN(M,N)=M;
=> 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: Xuất ra ƯCLN(M,N)
THUẬT TOÁN
CÁC BƯỚC VIẾT CHƯƠNG TRÌNH
Program UCLN;
Uses crt;
Var M,N:Integer;
BEGIN
Clrscr;
Write(‘Nhap M:’); Readln(M);
Write(‘Nhap N:’); Readln(N);
While M<> N do
if M>N then M:=M-N
else N:=N-M;
Writeln(‘UCLN:’, M);
Readln;
END.
Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?
Đáp án: a. 3 b. 4 c. 5 d. 6
Trắc nghiệm: Em hãy chọn đáp án đúng
Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?
Đáp án: a. 9 b. 10 c. 12 d. Kết quả khác
Trắc nghiệm: Em hãy chọn đáp án đúng
Hãy nhớ
Câu lệnh lặp
trong pascal
FOR ... TO ... DO ....
FOR ... Downto ... DO ...
While <đk> Do;
Lặp với số lần biết trước.
Lặp với số lần chưa biết trước.
Viết cú pháp câu lệnh rẽ nhánh
(dạng đủ và dạng thiếu)
Cho ví dụ.
Bài 10
CẤU TRÚC LẶP
(3 Ti?t)
Bài 10: CẤU TRÚC LẶP
Lặp
Lặp với số lần biết trước và câu lệnh for….do….
Lặp với số lần chưa biết trước và câu lệnh while….do….
Bài tập Ví dụ
Thế nào là Lặp?
Bài 10: CẤU TRÚC LẶP
Lặp
Bài tập 1: Viết chương trình in ra màn hình dòng chữ “Hello”
Bài tập 2: Viết chương trình in ra màn hình 5 dòng chữ “Hello”
I. Tìm hiểu Lặp
Bài tập 3: Viết chương trình in ra màn hình 14 dòng chữ “Hello”
Nhận xét:
- Để viết ra màn hình 14 dòng chữ Hello chúng ta phải viết bao nhiêu câu lệnh trong phần thân chương trình Begin End?
- Các câu lệnh đó có giống nhau không?
- Số lần thực hiện của công việc in ra màn hình là bao nhiêu? Số lần này có xác định được không?
THPT Nguyễn Văn Trỗi
Bài tập 4: Viết chương trình in ra màn hình dòng chữ “Hello”, và thông báo có muốn tiếp tục hay không? Nếu muốn tiếp tục thì nhấn phím “c” còn nếu không thì nhấn phím “k” để kết thúc?
Nhận xét:
- Các công việc in ra màn hình đó có giống nhau không?
- Công việc in ra màn hình dòng chữ “Hello” và thông báo “Ban co muon tiep tuc khong? C/K?” có xác định được số lần in ra màn hình không?
THPT Nguyễn Văn Trỗi
Phân loại
2. Lặp với số lần biết trước và câu lệnh For-do
Lặp dạng tiến:
for
Lặp dạng lùi:
for
Trong Pascal, có 2 loại câu lệnh lặp với số lần biết trước:
Trong đó:
for
Biến đếm thường là biến kiểu số nguyên
Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu ≤ giá trị cuối
Hoạt động của for-do
Biến đếm
Câu lệnh sau Do
Thực hiện
Gt đầu
Gt đầu + 1
Gt đầu + 2
Gt cuối
…
Thực hiện lần 1
Thực hiện lần 2
Thực hiện lần 3
Thực hiện lần cuối
Dạng lặp Tiến: for .. to .. do
Hoạt động của for-do
Dạng lặp Lùi: for .. downto .. do
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
Ví dụ áp dụng
Ví dụ 1:
Sử dụng cấu trúc lặp xác định để viết chương trình thực hiện in ra màn hình 20 dòng chữ Hello.
Xác định: - Câu lệnh lặp cần thực hiện?
- Lặp bao nhiêu lần?
- Giá trị đầu, giá trị cuối?
Ví dụ áp dụng
Ví dụ áp dụng
Ví dụ 2:
Ngày đầu tiên đi học mẹ cho bé 1 viên kẹo, ngày thứ 2 đi học mẹ cho bé 2 viên kẹo, ….., ngày thứ 7 đi học mẹ cho bé 7 viên kẹo. Hỏi sau 7 ngày bé có tất cả bao nhiêu viên kẹo
S:=0
S:=0+1
S:=0+1+2
S:=0+1+2+3
…..
S:=0+1+2+3+4+5+6+7
Writeln(‘So keo:’, s);
Program vd2;
Uses crt;
Var i,s : integer;
Begin
S:=0;
For i:=1 to 7 do
s:=s+i;
Readln;
End.
Hãy nhớ
Câu lệnh lặp
trong pascal
FOR ... TO ... DO ...…
FOR ... Downto ... DO ...
+ Ý nghĩa: Lặp với số lần biết trước.
Công việc sau Do sẽ được thực hiện tuần tự từ giá trị đầu đến giá trị cuối
+ Có 2 dạng:
- Lặp tiến: giá trị biến đếm tăng thêm 1.
- Lặp lùi: giá trị biến đếm giảm đi 1
Câu 1: Câu lệnh Pascal nào sau đây đúng?
Về nhà
Đ
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
FOR
Ví dụ: S:=1;
FOR i:=2 TO 100 DO S:=S+1/i;
b. Dạng 2 (dạng lùi)
FOR
Ví dụ: S:=1;
FOR i:=100 DOWNTO 2 DO S:=S+1/i;
a. Dạng 1 (dạng tiến)
2. Lặp với số lần lặp biết trước
? Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu phải nhỏ hơn giá trị cuối.
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 đếm là biến kiểu số nguyên hoặc kí tự.
For i:=1 to 10 do write(i);
For i:=`a` to `z` do write(i);
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:
S := 1 ; i := 2;
i >N
KT
S := S +1/ i ;
i := i +1;
2.08
1.83
1.5
1
4
3
2
Lượt
i
S
2.28
5
Nhập N
S := 1 ; i := 2;
2>5 ?
S
S
S := 1 +1/2 ;
i := 2 +1;
3>5 ?
S := 1.5+1/3 ;
i := 3 +1;
4>5 ?
S := 1.83+1/4 ;
i := 4 +1;
5>5 ?
S := 2.08+1/5;
i := 5 +1;
6
S
S
S
6>5 ?
In Tổng S
Tổng S=2.28
Với N = 5
2.28
Đ
Đ
Mô phỏng thuật toán
3. Ví dụ
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.
Kiểm tra bài cũ
Viết cú pháp câu lệnh lặp for… do…..
Viết câu lệnh for … do… dùng để tính tổng các số tự nhiên từ 1 đến n
Ví dụ 1: Viết chương trình in ra màn hình dòng chữ Hello
Và thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Nhắc lại bài toán lặp
Các thao tác in ra màn hình dòng chữ Hello và thông báo
Ban co muon tiep tuc khong? C/K?
luôn được lặp đi lặp lại
Số lần thực hiện các câu lệnh đó phụ thuộc vào nhấn phím c và k Số lần thực hiện lặp đó là không xác định
3. Lặp với số lần chưa biết trước và câu lệnh while - do
Nhận xét:
Nghiên cứu SGK
Cú pháp
2.Lặp với số lần chưa biết trướ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 của Pascal.
Sai
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
Ví dụ 1: Viết chương trình in ra màn hình dòng chữ Hello
Và thông báo có muốn tiếp không? Nếu muốn tiếp tục in nhấn phím ‘c’ còn nếu không thì nhấn phím ‘k’ để kết thúc.
Câu lệnh lặp ở đây là câu lệnh nào?
Writeln(‘Hello’);
Write(‘Ban muon tiep tuc khong? C/K? ’);
Readln(phimbam);
phimbam=‘c’
Điều kiện để công việc lặp được thực hiện là gì?
Chương trình:
program vd1;
uses crt;
var phimbam:char;
begin
clrscr;
phimbam:=`c`;
while phimbam=`c` do
begin
writeln (`Hello`);
writeln(`Ban muon tiep tuc khong? C/K ?`);
readln(phimbam);
end;
readln
end.
Ví dụ 2: 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ố đó.
Ý tưởng:
M=N thì ƯCLN (M,N)=M=N.
M
Thuật toán tìm ƯCLN
Đ
Đ
S
S
Thuật toán tìm ƯCLN
5
10
10
10
5
5
15
25
3
2
1
Lượt
Nhập M ,N
M =N ?
M > N ?
N ?N - M
M ?M - N
Đưa ra M ; Kết thúc
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 ?
ƯCLN (25,10) = 5
M
N
Ví dụ 2: 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 : Chừng nào MN
nếu M>N thì M:=M-N,
ngược lại thì N:=N-M;
B3: Đến khi M=N thì
=> Đưa ra ƯCLN(M,N)=M;
=> 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: Xuất ra ƯCLN(M,N)
THUẬT TOÁN
CÁC BƯỚC VIẾT CHƯƠNG TRÌNH
Program UCLN;
Uses crt;
Var M,N:Integer;
BEGIN
Clrscr;
Write(‘Nhap M:’); Readln(M);
Write(‘Nhap N:’); Readln(N);
While M<> N do
if M>N then M:=M-N
else N:=N-M;
Writeln(‘UCLN:’, M);
Readln;
END.
Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?
Đáp án: a. 3 b. 4 c. 5 d. 6
Trắc nghiệm: Em hãy chọn đáp án đúng
Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu?
Đáp án: a. 9 b. 10 c. 12 d. Kết quả khác
Trắc nghiệm: Em hãy chọn đáp án đúng
Hãy nhớ
Câu lệnh lặp
trong pascal
FOR ... TO ... DO ....
FOR ... Downto ... DO ...
While <đk> Do
Lặp với số lần biết trước.
Lặp với số lần chưa 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ẻ: Tăng Thái Sơ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)