Bài 10. Cấu trúc lặp
Chia sẻ bởi Lê Thị Kiều Nhi |
Ngày 10/05/2019 |
50
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:
TRU?NG THCS - THPT KHNH HUNG
Chào mừng các Thầy, Cô về dự giờ thăm lớp
Lớp 11A1
Giáo viên : L Th? Ki?u Nhi
Kiểm tra bài cũ
?Em hãy viết cú pháp của câu lệnh rẽ nhánh If-then dạng thiếu và dạng đủ? Cho ví dụ minh họa?
Trả lời:
Rẽ nhánh dạng thiếu:
If <điều kiện> then;
Ví dụ: If Delta<0 then write(‘phuong trinh vo nghiem’);
Rẽ nhánh dạng đủ:
If <điều kiện> then else ;
Ví dụ: If Delta<0 then write(‘phuong trinh vo nghiem’) else co nghiem’);
Để in ra màn hình 10 dòng chữ
“ thi dua day tot, hoc tot” thì ta phải dùng lệnh nào và phải dùng bao nhiêu lệnh?
Ta sẽ sử dụng lệnh write hoặc writeln và chúng ta phải đánh 10 lần câu lệnh
write (‘thi dua day tot, hoc tot ’);
Vậy để in ra 1000 dòng chữ như thế ta phải thực hiện như thế nào?
Mỗi năm cứ vào ngày 2/9 thì cả nước lại tổ chức kỉ niệm ngày quốc khánh nước CHXHCN Việt Nam, Việc tổ chức ngày quốc khánh cứ lặp lại mỗi năm.
=>Vậy, một công việc mà ta cứ thực hiện đi thực hiện lại nhiều lần gọi là lặp.
Trong lập trình, những thao tác phải lặp lại nhiều lần, ta gọi là cấu trúc lặp.
1.LẶP
Ví dụ:1
Với a là số nguyên và a>2. Tính tổng
S=1/a +1/(a+1) +1/(a+2)+…+1/(a+50)
S=1/a +1/(a+1) +1/(a+2)+…+1/(a+n)+..
cho đến khi 1/(a+n)<=0,005.
Ví dụ:2
1.LẶP
Phương pháp giải quyết
Ta xem S như một cái xô đựng nước , các số hạng như những cái ca có dung tích khác nhau. Khi đó việc tính tổng trở nên tương tự như việc đổ các ca nước vào thùng S.
1.LẶP
Mô phỏng VÍ DỤ 1,2: Một hồ nước,một xô đựng nước ,một ca
múc nước.
Hồ nước
Biến đếm
Tăng lên 1 đơn vị
Thỏa mãn ĐK đầy xô là dừng
Lặp với số lần biết trước
Lặp với số lần chưa biết trước
1.LẶP
Em hãy lấy ví dụ về lặp trong thực tế
Ví dụ 1: Học sinh A bị phạt trực nhật trong 7 ngày.
Ví dụ 2: Học sinh B bị phạt trực nhật cho đến khi nào cô giáo thấy bạn có ý thức tốt thì mới không phải trực nhật nữa.
Không biết trước phải trực nhật bao nhiêu ngày
=> Lặp với số lần không biết trước
Phải trực nhật 7 ngày => Lặp với số lần biết trước
Cấu trúc dùng để mô tả các thao tác lặp được chia làm mấy loại?
Có hai loại lặp:
Lặp với số lần chưa biết trước
Lặp với số lần biết trước
2.Lặp với số lần biết trước và câu lệnh For …do
* Cách 1: (thuật toán 1)
Bước 1: S 1/a; N 0; {Khởi tạo tổng S ban đầu và giá trị N}
Bước 2: N N +1;
Bước 3: Nếu N >50 thì chuyển sang bước 5
Bước 4: S S + 1/(a + N), rồi quay lại bước 2
Bước 5: Đưa ra tổng S cần tính rồi kết thúc
* Cách 2: (thuật toán 2)
Bước 1: S 1/a; N 51; {Khởi tạo tổng S ban đầu và giá trị N}
Bước 2: N N - 1;
Bước 3: Nếu N <1 thì chuyển sang bước 5
Bước 4: S S + 1/(a + N), rồi quay lại bước 2
Bước 5: Đưa ra tổng S cần tính rồi kết thúc
Ví dụ: Bài toán
Với a là số nguyên và a>2. Tính tổng
S=1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+50)
Để giải bài toán trên trên máy tính, người ta đưa ra 2 cách giải sau:
Với cách 1 thì giá trị tham gia ban đầu của N =1 và dừng lại khi N = 51 (N>50)
Với cách 2 thì giá trị tham gia ban đầu của N =50 và dừng lại khi N = 0 (N<1)
Lặp dạng tiến
Lặp dạng lùi
Cả 2 cách đều dừng lại khi thỏa mãn số lần xác định (N = 50lần)
Mô tả cấu trúc lặp với số lần biết trước và câu lệnh For…do
Dạng lặp tiến:
For:= to do ;
Dạng lặp lùi:
For:= downto do ;
Biến đếm: Là biến đơn, thường có kiểu 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 nhỏ hơn hoặc bằng giá trị cuối)
for, to, downto, do: Là từ khóa trong Pascal;
S
0
I
1
2
3
4
5
6
7
8
9
10
1
1
2
3
3
6
4
10
……….
10
55
11
dừng lặp
*Hoạt động của lệnh for-do:
For tiến: Các câu lệnh sau do được tự động thực hiện khi biến đếm tự động tăng từ giá trị đầu đến giá trị cuối, vòng lặp dừng lại khi biến đếm lớn hơn giá trị cuối
Ví dụ: Tính tổng S = 1 + 2 + 3 + ... + 10
For i:=1 to 10 do S:= S +i;
55
*Hoạt động của lệnh for-do:
For lùi: Các câu lệnh sau do được tự động thực hiện khi biến đếm tự động giảm từ giá trị cuối về giá trị đầu, vòng lặp dừng lại khi biến đếm nhỏ hơn giá trị đầu
Ví dụ: Tính tổng S = 1 + 2 + 3 + ... + 10
For i:=10 downto 1 do S:= S +i;
I
1
2
3
4
5
6
7
8
9
10
S
0
10
10
9
19
8
27
……….
1
55
0
dừng
55
Thay vì viết 1000 câu lệnh
Write (‘Thi dua day tot, hoc tot’);
thì bây giờ chỉ cần viết 1 câu lệnh For có thể in ra 1000 dòng chữ trên và hơn thế nữa bằng câu lệnh như sau:
Dạng Tiến : For i:=1 to 1000 do
Writeln (‘Thi dua day tot, hoc tot’);
Dạng Lùi: For i:=1000 downto 1 do
Writeln (‘Thi dua day tot, hoc tot’);
3.Một số ví dụ .
Ví dụ 1: Tính tổng S
Hãy xác định bài toán
Input:
Output:
- Dữ liệu vào (Input) : Nhập N
- Dữ liệu ra (Output) : Tổng S
S=1 + 1/2 + 1/3 +…+1/100
3.Một số ví dụ .
Xây dựng thuật toán
Đ
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.
i:= i+1
Ví dụ : Tính tổng S
S=1 + 1/2 + 1/3 +…+1/100
3.Một số ví dụ .
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
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4
S100 = S99 + 1/100
3.Một số ví dụ .
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;
3.Một số ví dụ .
Program vd2;
Var i:Integer;
Begin
Writeln(‘ Biến điều khiển tăng ‘);
For i:=1 to 10 do
Write(‘ ‘,i);
Readln;
End.
Ví dụ 2: viết chương trình in ra màn hình các số:
1 2 3 4 5 6 7 8 9 10
CỦNG CỐ
Dạng lặp tiến:
Dạng lặp lùi:
Tăng 1 đơn vị
Giảm 1 đơn vị
For:= to
do ;
For:= dowsto
do ;
1. lặp:
2.Lặp với số lần biết trước và câu lệnh for …do
Cú pháp :
Cú pháp :
Cc cu lƯnh Pascal sau c hỵp lƯ khng? v sao ?
HOẠT ĐỘNG NHÓM
NHÓM 1:
For i:=100 to 1 do
Write(‘A’);
Khng hỵp lƯ, v gi tr u lín hn gi tr cui
NHÓM 2:
For i:=1.5 to 10.5 do
Write(‘A’);
Khng hỵp lƯ, v gi tr u, gi tr cui l d liƯu kiĨu s thc
NHÓM 3:
For i:=1 to 10 do
Write(‘A’);
Hỵp lƯ
NHÓM 4:
For i:=10 Downto 1 do
Write(‘A’);
Hợp lệ
HẾT GIỜ
Cảm ơn các thầy cô giáo
Chúc các em học tốt
Chào mừng các Thầy, Cô về dự giờ thăm lớp
Lớp 11A1
Giáo viên : L Th? Ki?u Nhi
Kiểm tra bài cũ
?Em hãy viết cú pháp của câu lệnh rẽ nhánh If-then dạng thiếu và dạng đủ? Cho ví dụ minh họa?
Trả lời:
Rẽ nhánh dạng thiếu:
If <điều kiện> then
Ví dụ: If Delta<0 then write(‘phuong trinh vo nghiem’);
Rẽ nhánh dạng đủ:
If <điều kiện> then
Ví dụ: If Delta<0 then write(‘phuong trinh vo nghiem’) else co nghiem’);
Để in ra màn hình 10 dòng chữ
“ thi dua day tot, hoc tot” thì ta phải dùng lệnh nào và phải dùng bao nhiêu lệnh?
Ta sẽ sử dụng lệnh write hoặc writeln và chúng ta phải đánh 10 lần câu lệnh
write (‘thi dua day tot, hoc tot ’);
Vậy để in ra 1000 dòng chữ như thế ta phải thực hiện như thế nào?
Mỗi năm cứ vào ngày 2/9 thì cả nước lại tổ chức kỉ niệm ngày quốc khánh nước CHXHCN Việt Nam, Việc tổ chức ngày quốc khánh cứ lặp lại mỗi năm.
=>Vậy, một công việc mà ta cứ thực hiện đi thực hiện lại nhiều lần gọi là lặp.
Trong lập trình, những thao tác phải lặp lại nhiều lần, ta gọi là cấu trúc lặp.
1.LẶP
Ví dụ:1
Với a là số nguyên và a>2. Tính tổng
S=1/a +1/(a+1) +1/(a+2)+…+1/(a+50)
S=1/a +1/(a+1) +1/(a+2)+…+1/(a+n)+..
cho đến khi 1/(a+n)<=0,005.
Ví dụ:2
1.LẶP
Phương pháp giải quyết
Ta xem S như một cái xô đựng nước , các số hạng như những cái ca có dung tích khác nhau. Khi đó việc tính tổng trở nên tương tự như việc đổ các ca nước vào thùng S.
1.LẶP
Mô phỏng VÍ DỤ 1,2: Một hồ nước,một xô đựng nước ,một ca
múc nước.
Hồ nước
Biến đếm
Tăng lên 1 đơn vị
Thỏa mãn ĐK đầy xô là dừng
Lặp với số lần biết trước
Lặp với số lần chưa biết trước
1.LẶP
Em hãy lấy ví dụ về lặp trong thực tế
Ví dụ 1: Học sinh A bị phạt trực nhật trong 7 ngày.
Ví dụ 2: Học sinh B bị phạt trực nhật cho đến khi nào cô giáo thấy bạn có ý thức tốt thì mới không phải trực nhật nữa.
Không biết trước phải trực nhật bao nhiêu ngày
=> Lặp với số lần không biết trước
Phải trực nhật 7 ngày => Lặp với số lần biết trước
Cấu trúc dùng để mô tả các thao tác lặp được chia làm mấy loại?
Có hai loại lặp:
Lặp với số lần chưa biết trước
Lặp với số lần biết trước
2.Lặp với số lần biết trước và câu lệnh For …do
* Cách 1: (thuật toán 1)
Bước 1: S 1/a; N 0; {Khởi tạo tổng S ban đầu và giá trị N}
Bước 2: N N +1;
Bước 3: Nếu N >50 thì chuyển sang bước 5
Bước 4: S S + 1/(a + N), rồi quay lại bước 2
Bước 5: Đưa ra tổng S cần tính rồi kết thúc
* Cách 2: (thuật toán 2)
Bước 1: S 1/a; N 51; {Khởi tạo tổng S ban đầu và giá trị N}
Bước 2: N N - 1;
Bước 3: Nếu N <1 thì chuyển sang bước 5
Bước 4: S S + 1/(a + N), rồi quay lại bước 2
Bước 5: Đưa ra tổng S cần tính rồi kết thúc
Ví dụ: Bài toán
Với a là số nguyên và a>2. Tính tổng
S=1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+50)
Để giải bài toán trên trên máy tính, người ta đưa ra 2 cách giải sau:
Với cách 1 thì giá trị tham gia ban đầu của N =1 và dừng lại khi N = 51 (N>50)
Với cách 2 thì giá trị tham gia ban đầu của N =50 và dừng lại khi N = 0 (N<1)
Lặp dạng tiến
Lặp dạng lùi
Cả 2 cách đều dừng lại khi thỏa mãn số lần xác định (N = 50lần)
Mô tả cấu trúc lặp với số lần biết trước và câu lệnh For…do
Dạng lặp tiến:
For
Dạng lặp lùi:
For
Biến đếm: Là biến đơn, thường có kiểu 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 nhỏ hơn hoặc bằng giá trị cuối)
for, to, downto, do: Là từ khóa trong Pascal;
S
0
I
1
2
3
4
5
6
7
8
9
10
1
1
2
3
3
6
4
10
……….
10
55
11
dừng lặp
*Hoạt động của lệnh for-do:
For tiến: Các câu lệnh sau do được tự động thực hiện khi biến đếm tự động tăng từ giá trị đầu đến giá trị cuối, vòng lặp dừng lại khi biến đếm lớn hơn giá trị cuối
Ví dụ: Tính tổng S = 1 + 2 + 3 + ... + 10
For i:=1 to 10 do S:= S +i;
55
*Hoạt động của lệnh for-do:
For lùi: Các câu lệnh sau do được tự động thực hiện khi biến đếm tự động giảm từ giá trị cuối về giá trị đầu, vòng lặp dừng lại khi biến đếm nhỏ hơn giá trị đầu
Ví dụ: Tính tổng S = 1 + 2 + 3 + ... + 10
For i:=10 downto 1 do S:= S +i;
I
1
2
3
4
5
6
7
8
9
10
S
0
10
10
9
19
8
27
……….
1
55
0
dừng
55
Thay vì viết 1000 câu lệnh
Write (‘Thi dua day tot, hoc tot’);
thì bây giờ chỉ cần viết 1 câu lệnh For có thể in ra 1000 dòng chữ trên và hơn thế nữa bằng câu lệnh như sau:
Dạng Tiến : For i:=1 to 1000 do
Writeln (‘Thi dua day tot, hoc tot’);
Dạng Lùi: For i:=1000 downto 1 do
Writeln (‘Thi dua day tot, hoc tot’);
3.Một số ví dụ .
Ví dụ 1: Tính tổng S
Hãy xác định bài toán
Input:
Output:
- Dữ liệu vào (Input) : Nhập N
- Dữ liệu ra (Output) : Tổng S
S=1 + 1/2 + 1/3 +…+1/100
3.Một số ví dụ .
Xây dựng thuật toán
Đ
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.
i:= i+1
Ví dụ : Tính tổng S
S=1 + 1/2 + 1/3 +…+1/100
3.Một số ví dụ .
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
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4
S100 = S99 + 1/100
3.Một số ví dụ .
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;
3.Một số ví dụ .
Program vd2;
Var i:Integer;
Begin
Writeln(‘ Biến điều khiển tăng ‘);
For i:=1 to 10 do
Write(‘ ‘,i);
Readln;
End.
Ví dụ 2: viết chương trình in ra màn hình các số:
1 2 3 4 5 6 7 8 9 10
CỦNG CỐ
Dạng lặp tiến:
Dạng lặp lùi:
Tăng 1 đơn vị
Giảm 1 đơn vị
For
For
1. lặp:
2.Lặp với số lần biết trước và câu lệnh for …do
Cú pháp :
Cú pháp :
Cc cu lƯnh Pascal sau c hỵp lƯ khng? v sao ?
HOẠT ĐỘNG NHÓM
NHÓM 1:
For i:=100 to 1 do
Write(‘A’);
Khng hỵp lƯ, v gi tr u lín hn gi tr cui
NHÓM 2:
For i:=1.5 to 10.5 do
Write(‘A’);
Khng hỵp lƯ, v gi tr u, gi tr cui l d liƯu kiĨu s thc
NHÓM 3:
For i:=1 to 10 do
Write(‘A’);
Hỵp lƯ
NHÓM 4:
For i:=10 Downto 1 do
Write(‘A’);
Hợp lệ
HẾT GIỜ
Cảm ơn các thầy cô giáo
Chúc các em học tốt
* 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ẻ: Lê Thị Kiều Nhi
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)