Trong lËp tr×nh, cã nh÷ng thao t¸c ph¶i lặp đi lặp lại một số lần, khi đó ta gọi là cÊu tróc lÆp Lặp thường có 2 loại: + Lặp với số lần biết trước + Lặp với số lần không biết trước GV: §[r]
Trang 1Đ12: cấu trúc Lặp
(Tiết PPCT: 12)
Ngày soạn: ……… Ngày đăng ký giáo án:
Người duyệt giáo án (TTCM duyệt, BGH duyệt):
I Mục Tiêu:
1 Kiến thức:
- Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán
- Hiểu cấu trúc lặp với số lần biết &" và câu lệnh For - Do
2 Kỹ năng:
Biết vận dụng &/ cấu trúc lặp và câu lệnh For - Do vào từng tình huống cụ thể
II chuẩn bị:
1 Giáo viên:
Giáo án, máy tính, máy chiếu
2 Học sinh:
Sách giáo khoa và tài liệu tham khảo
III tổ chức dạy học:
Kiểm tra bài cũ:
1 Nêu cấu trúc và sự hoạt động của câu lệnh IF - THEN dạng thiếu và dạng đủ?
2 Nêu khái niệm và cấu trúc câu lệnh ghép
HS: Lên bảng trả lời câu hỏi
GV: Đánh giá, cho điểm
1 Hoạt động 1: Tìm hiểu ý nghĩa của cấu trúc lặp
a Mục tiêu:
- Học sinh thấy &/ sự cần thiết của cấu trúc lặp trong lập trình
b Nội dung:
Bài toán 1: Viết
b Các bước tiến hành:
Hoạt động của giáo viên Hoạt động của học sinh
1 Bài toán 1: Tính tổng:
1
1 1
1
S
Trang 2- Hãy xác định công thức toán học để tính
tổng?
- Gợi ý
cái thùng, số hạng
tích khác nhau, khi đó việc tính tổng trên
- Có bao nhiêu lần đổ
- Mỗi lần một
đổ bao nhiêu?
- Phải viết bao nhiêu lệnh?
=> số lần lặp đã biết trước.
2 Bài toán 2: Tính tổng
N a a
a
a
S
2
1 1
1
1
với điều kiện 1 0 , 0001
N
a
- Hỏi: Sự khác nhau của bài toán này với
bài toán đã viết ở tiết &"B
- Hỏi: lặp lại bao nhiêu lần?
- Hỏi: lặp đến khi nào?
=> số lần lặp & biết &"
Trong lập trình, có những thao tác phải
lặp đi lặp lại một số lần, khi đó ta gọi là
cấu trúc lặp
Lặp
+ Lặp với số lần biết &"
+ Lặp với số lần không biết &"
GV: Để thực hiện tính tổng S ta phải thực
hiện
GV: Ta đã biết &/ câu lệnh IF – THEN
Nếu & câu lệnh này vào việc giải 2 bài
toán này thì em có nhận xét gì?
GV: H& ra cách giải bài toán 2 bằng các
lệnh IF –THEN sau:
S:=0;
If (1/a>0,0001) Then S:=S+1/a;
If (1/(a+1)>0,0001) Then S:=S+1/(a+1);
If (1/(a+2)>0,0001) Then S:=S+1/(a+2);
…
GV: Y/c HS nhận xét cách giải trên
- Rất khó xác định công thức tính
- Theo dõi gợi ý
- Có 100 lần đổ
- Mỗi lần đổ 1
ai
- Phải viết 100 lệnh
- Bài &" cho giới hạn N
- Bài này: cho giới hạn S
- W& xác định ngay &/
- Đến khi điều kiện 1 < 0.0001 &/
thoã mãn
- HS suy nghĩ để & ra cách giải quyết bài toán
- HS: H& ra các lệnh thực hiện các thao tác tính tổng
- H& ra ý kiến của mình
Trang 3GV: Nhận xét:
- Theo
thêm chỉ dừng khi 1/(a+N) < 0,0001
- Với bài toán 1, N=100 thì việc thực hiện
câu lệnh lặp lên đến 100 lần
kiện để kiểm tra không biết phải thực hiện
=> Với cách
đều thực hiện quá dài
Để thực hiện việc lặp
Pascal cung cấp cho ta một số câu lệnh lặp
để mô tả các cấu trúc lặp trên
Hoạt động 2: Xây dựng thuật toán cho bài toán 1
a Mục tiêu: Viết thuật toán cho bài toán 1, trên cơ sở đó xây dựng thuật toán 1b
Nêu vấn đề cho cấu trúc câu lệnh lặp với số lần biết &" ở cả 2 dạng
b Nội dung:
Thuật toán 1a:
Bước 1: N 0; S 1/a;
Bước 2: N N + 1;
Bước 3: Nếu N>100 thì chuyển đến &" 5
Bước 4: S S+1/(a+N) quay lại &" 2
Bước 5: H& S ra màn hình rồi kết thúc.
Thuật toán 1b:
Bước 1: N 101; S 1/a;
Bước 2: N N - 1;
Bước 3: Nếu N < 1 thì chuyển đến &" 5 Bước 4: S S+1/(a+N) quay lại &" 2
Bước 5: H& S ra màn hình rồi kết thúc.
c Cách tiến hành:
Hoạt động của giáo viên Hoạt động của học sinh
1 Y/c học sinh viết thuật toán giải bài toán
Gọi HS lên trình bày thuật toán
Gọi học sinh khác lên nhận xét đánh giá
- Chuẩn hoá lại thuật toán cho học sinh
GV: Có thể thay đổi kiểm tra điều kiện
N>100 để dừng việc tính tổng hay không?
GV: Dẫn dắt và & ra Thuật toán Tong_1b
Gọi HS lên trình bày thuật toán 1b bằng
cách thay điều kiện dừng lặp
1 Thảo luận theo nhóm để viết thuật toán:
- Trình bày thuật toán
- Nhận xét, đánh giá kết quả của nhóm khác
- H& ra ý kiến
- Trình bày thuật toán dạng lùi
- Theo dõi và ghi nhớ
3 Hoạt động 3: Tìm hiểu lệnh lặp for của ngôn ngữ lập trình Pascal
a Mục tiêu:
Học sinh biết &/ cấu trúc chung của lệnh FOR Hiểu &/ ý nghĩa của thành
phần trong lệnh Biết &/ sự thực hiện của máy khi gặp FOR vẽ sơ đồ thực hiện
đó
Trang 4b Nội dung:
* Dạng tiến:
Cấu trúc: FOR < biến đếm>:= <giá trị đầu> to <giá trị cuối > DO <lệnh cần lặp>;
Biến đếm: là kiểu nguyên, kiểu ký tụ hoặc miền con.
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm Giá trị đầu
phải nhỏ hơn hoặc bằng giá trị cuối
Sự thực hiện của máy:
Bước 1: Tính giá trị đầu, giá cho biến đếm.
Bước 2: Nếu biến đếm <= giá trị cuối thì thực hiện lệnh cần lặp và tăng biến
đếm lên 1 đơn vị, và quay lại &" 2
Sơ đồ thực hiện:
* Dạng lùi:
Cấu trúc: FOR < biến đếm>:= <giá trị cuối> downto <giá trị đầu > DO <lệnh cần
lặp>;
Biến đếm:
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm Giá trị đầu phải lớn
hơn hoặc bằng giá trị cuối
Sự thực hiện của máy:
Bước 1: Gán giá trị đầu cho biến đếm.
Bước 2: Nếu biến đếm >= giá trị cuối thì thực hiện lệnh cần lặp và giảm biến
đếm lên 1 đơn vị, và quay lại &" 2
Sơ đồ thực hiện:
Biến đếm:=G.trị đầu
Lệnh lặp cần biến đếm tăng 1
Biến đếm<=G.trị Cuối
S
Đ
Biến đếm:=G.trị đầu
Lệnh lặp cần biến đếm giảm 1
Biến đếm>=G.trị Cuối
S
Đ
Trang 5c Các bước tiến hành:
Hoạt động của giáo viên Hoạt động của học sinh
1 Yêu cầu học sinh nghiên cứu SGK và
cho biết cấu trúc cung của FOR?
- Giải thích:
<Biến đếm>: là kiểu nguyên kiểu ký tự
- Hỏi: ý nghĩa của <giá trị đầu> <giá trị
cuối>, kiểu dữ liệu của chúng
-Hỏi: Trong bài toán tính tổng, <giá trị
đầu> <giá trị cuối> là bao nhiêu?
- Hỏi: Khi lệnh khác nhau cần lặp lại ta
viết
- Hỏi: trong lệnh tính tổng, lệnh nào cần
lặp lại?
- Hỏi: em có nhận xét gì về <giá trị
đầu> <giá trị cuối> ?
- Dẫn dắt: Khi có lệnh FOR &/ gọi là
lệnh FOR tiến Turbo Pascal còn có một
loại lệnh for nữa là lệnh for lùi
2 Hãy yêu cầu trình bày cấu trúc của
lệnh for lùi
- Hỏi; so sánh <giá trị đầu> và <giá trị
cuối>?
- Hỏi: Trong 2 bài toán trên lệnh for nào
là phù hợp?
1 Đọc SGK để trả lời FOR < biến đếm>:= <giá trị đầu> to
<giá trị cuối > DO <lệnh cần lặp>;
- Dùng để làm giới hạn cho biến đếm
- Cùng kiểu với <biến đếm>
- <Giá trị đầu > là 1; <giá trị cuối> là 100
- Ta phải sử dụng lệnh ghép (Begin…end;)
S:=S + 1 ;
ai
- <Giá trị đầu> < <giá trị cuối>
Cấu trúc:
FOR < biến đếm>:= <giá trị cuối> downto <giá trị đầu > DO <lệnh cần lặp>;
<Giá trị đầu > > <giá trị cuối>
- Sử dụng dạng tiến là phù hợp
IV Củng cố:
Hiểu &/ ý nghĩa của cấu trúc lặp
Hiểu &/ cú pháp và sự hoạt động của câu lệnh for-do ở cả 2 dạng