- Biết diễn đạt đúng các câu lệnh, soạn được chương trình giải các bài toán đơn giản áp dụng các loại cấu trúc điều khiển.. Thái độ:3[r]
Trang 1Ngày soạn 14/11/2008
§10 CẤU TRÚC LẶP
(TIẾT 1)
A 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 lặp biết trước, cấu trúc lặp kiểm tra điều kiện trước
- Bước đầu hình thành kĩ năng lập trình có cấu trúc lặp
2 Kỹ năng:
- Biết vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể
- Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp
- Biết diễn đạt đúng các câu lệnh, soạn được chương trình giải các bài toán đơn giản áp dụng các loại cấu trúc điều khiển
3 Thái độ:
- Xác định thái độ nghiêm túc trong học tập khi tiếp xúc với nhiều qui định nghiêm ngặt trong lập trình,
- Tiếp tục rèn luyện các phẩm chất cần thiết người lập trình
- Ham muốn giải các bài tập bằng lập trình
B PHƯƠNG PHÁP: Nêu tình huống có vấn đề, câu hỏi gợi mở
C CHUẨN BỊ CỦA GIÁO VIÊN, HỌC SINH:
1 Chuẩn bị của giáo viên: giáo án, phấn, bút, sổ điểm, SGK, dụng cụ trực quan, chương trình minh họa
2 Chuẩn bị của học sinh: SGK, vở, bút, các thuật toán giáo viên yêu cầu bài tập về nhà
D TIẾN TRÌNH LÊN LỚP:
I Ổn định:
II Kiểm tra bài cũ:
GV: gọi 2 học sinh lên bảng làm bài tập về nhà:
+ Hãy xây dựng thuật toán tính tổng và đưa kết quả ra màn hình S=1+2+3+…+N, biết
N được nhập vào từ bàn phím
+ Hãy xây dựng thuật toán tính tổng S, biết
S= 1+2+3+…+N dừng khi S>100
III Bài mới:
1 Đặt vấn đề: Cho chương trình sau:
Nhận xét kết quả thực hiện chương trình
Tiết
12
Trang 2Trong những câu lệnh chúng ta đã được học có lệnh nào thể hiện một công việc nào
đó được thực hiện nhiều lệnh không? Vậy muốn thực hiện công việc nào đó nhiều lần chúng
ta phải làm thế nào?
2 Triển khai bài:
Hoạt động 1: Tìm hi u v l pểu về lặp ề lặp ặp
Đề bài toán 1 và bài toán 2 yêu cầu học
sinh về nhà làm bài tập
Kiểm tra học sinh nêu thuật toán của 2
bài toán
Gọi 2 tổ lên bảng dán thuật toán của tổ
mình
HS: quan sát bạn thực hiện trên bảng và
suy nghĩ thuật toán
GV: gọi học sinh dưới lớp nhận xét
thuật toán của các bạn
HS: nhận xét bài của bạn trên bảng.
GV: sửa thuật toán của 2 bài toán đã đưa
ra
GV: tổng hợp ý kiến và đưa ra thuật
toán
GV: thuật hiện 2 thuật toán trên bằng
chương trình mô phỏng Crocodile và
yêu cầu học sinh nhận xét điểm giống và
khác nhau giữa 2 thuật toán
GV: hãy suy nghĩ và nếu thuật toán của
bài toán 2
+ Giống nhau:
Công việc tính tổng lặp đi lặp lại nhiều
lần;
+ Khác nhau:
- Thuật toán 1 dừng tính tổng khi i>N,
lặp với số lần lặp biết trước (N lần);
- Thuật toán 2 dừng tính tổng khi S>100;
lặp với số lần chưa biết trước (S>100)
1 Lặp:
a Bài toán 1: Tính tổng và đưa kết quả ra màn
hình S=1+2+3+…+N, biết N được nhập vào từ bàn phím
* Thuật toán tong1a;
Bước 1: Nhập N Bước 2: S ← 0; i ←1;
Bước 3: Nếu i >N chuyển đến B6 Bước 4: S ← S+i;
Bước 5: i ← i +1; quay lại Bước 2 Bước 6: Đưa ra S ; Kết thúc
* Thuật toán tong1b;
Bước 1: Nhập N Bước 2: S ← 0; i ←N;
Bước 3: Nếu i <1 chuyển đến B6 Bước 4: S ← S+i;
Bước 5: i ← i -1; quay lại Bước 2 Bước 6: Đưa ra S ; Kết thúc
b Bài toán 2: Tính tổng S, biết
S= 1+2+3+…+N dừng khi S>100
*Thuật toán tong_2:
Bước 1: S ←0; N ←0;
Bước 2: Nếu S >100 chuyển đến B5 Bước 3: N ←N+1;
Bước 4: S ← S+N; quay lại Bước 2 Bước 5: Đưa ra S ; Kết thúc
Kết luận:
Trong lập trình, cũng có những thao tác, những câu lệnh lặp đi lặp lại nhiều lần tạo thành một cấu trúc lặp
* Có 2 loại cấu trúc lặp:
- Lặp với số lần biết trước;
Trang 3- Lặp với số lần chưa biết trước.
Hoạt động 2: Lặp với số lần biết trước và câu lệnh for – do
Từ thuật toán tong_1a gợi ý để học sinh có thể
nêu lên thuật toán Tong_1b
GV: nhận xét thuật toán của học sinh đưa ra.
HS: chú ý lắng nghe.
GV: thực hiện minh họa thuật toán theo tong1a
và tong1b trên chương trình mô phỏng
GV: gọi HS nhận xét kết quả sau khi thực hiện
2 thuật toán đó
Nói chung một số thuật toán có những thao tác
thực hiện lặp đi lặp lại một số lần liên tiếp
=> Lặp với số lần biết trước
GV: thực hiện 1 lệnh đúng cú pháp trên Pascal
và yêu cầu học sinh nhận xét
For i:=1 to 10 do Writeln(i);
For i:=10 downto 1 do Writeln(i);
HS: quan sát câu lệnh thực hiện và nhận xét 2
câu lệnh trên
GV: Giải thích cú pháp từng câu lệnh
GV:
- Muốn in giá trị từ 1 đến 100 thì làm thế nào?
- Sử dụng hai cú pháp hãy viết lại đoạn in các
số
- Thấy khác khi in giá trị đó ra như thế nào?
HS:
For i:=1 to 100 do write(i:4);
For i:=100 downto 1 do write(i:4);
GV: Chạy đoạn lệnh trên trong chương trình
Pascal yêu cầu học sinh nhận xét:
For i:=1 to 10 do
Begin Write(i); i:= i+1; End;
X:=5; y:=15;
2 Lặp với số lần biết trước và câu lệnh for - do:
* Thuật toán tong1a;
Bước 1: Nhập N Bước 2: S ! 0; i !1;
Bước 3: Nếu i >N chuyển đến B6 Bước 4: S ! S+i;
Bước 5: i ! i +1; quay lại Bước 2 Bước 6: Đưa ra S ; Kết thúc
* Thuật toán tong1b;
Bước 1: Nhập N Bước 2: S ! 0; i !N;
Bước 3: Nếu i <1 chuyển đến B6 Bước 4: S ! S+i;
Bước 5: i ! i -1; quay lại Bước 2 Bước 6: Đưa ra S ; Kết thúc
* Dạng lặp tiến:
For <biến đếm>:=<Giá trị đầu> to <Giá trị cuối> do <câu lệnh>;
* Dạng lặp lùi:
For <biến đếm>:=<Giá trị cuối>
downto <Giá trị đầu> do <câu lệnh>;
Trong đó:
- Biến đếm là biến đơn, thường có kiểu
số nguyên
- Giá trị đầu và giá trị cuối: là các biểu
thức cùng kiểu với biến đếm và giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
Cách thực hiện For- do:
- Ở dạng lặp tiến, 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 tăng từ giá trị đầu đến giá trị cuối.
- Ở dạng lặp lùi, 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ị
Trang 4For x:=x+1 to y do
Begin Write(x:4); x:=2; end;
HS: suy nghĩ trả lời
GV: tập hợp ý kiến và giải thích cho hs.
- Trong vòng lặp không nên có câu lệnh gán giá
trị làm thay đổi biến điều khiển Trong TP thì
cho phép nhưng trong FP thì sẽ thông báo lỗi
biên dịch
- Các giá trị đầu và giá trị cuối có thể là những
biểu thức Giá trị được tính trước khi vào vòng
lặp và làm nhiệm vụ giá trị đầu và giá trị cuối
Do đó, trong vòng lặp nếu có biến nào nằm
trong 2 biểu thức này bị thay đổi thì giá trị đầu
và giá trị cuối vẫn không thay đổi
GV: áp dụng cú pháp đã học và thuật toán 1a
em nào có thể lên viết câu lệnh lặp tính tổng đó
HS: suy nghĩ, áp dụng cú pháp để trả lời câu
hỏi
GV: Chạy chương trình trên Pascal.
HS: chú ý quan sát kết quả khi chạy chương
trình
GV: Mở chương trình Violet để trắc nghiệm 1
số câu hỏi
đầu đến giá trị cuối.
Chú ý:
- Giá trị đầu và giá trị cuối có thể là những biểu thức
- Trong vòng lặp không nên có câu lệnh làm thay đổi giá trị biến điều khiển
Chương trình thuật toán 1:
Program tong1;
Var S,i,N:byte;
Begin Write('Nhap gia tri N: '); Readln(N); S:=0;
For i:=1 to N do S:=S+i;
Writeln(‘Tong la: ‘,S);
Readln;
End
IV Củng cố:
Câu 1: Kết quả của S sau khi thực hiện đoạn lệnh sau:
S:=0; For i:=1 to 3 do; S:=S+i;
a 0 b 1 c 3 d 6
Câu 2: Đoạn lệnh sau cho kết quả S bằng bao nhiêu:
S:=0; For i:=3 downto 1 do S:=S+1;
a 0 b 1 c 3 d 6
Câu 3: Hãy chọn đúng/ sai cho các phát biểu sau đây:
a Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu.
Trang 5b X là biến kiểu thực; Ta có câu lệnh lặp For X:=1 to 100 do S:=s+x;
c S, i là kiểu nguyên; Câu lệnh For i:=1 to 1 do S:=S+1;
Câu lệnh S:=S+1; sẽ được lặp 2 lần
d Sau DO muốn thực hiện nhiều lệnh phải sử dụng câu lệnh ghép.
I
V Dặn dò, hướng dẫn học sinh học tập ở nhà
- Xem lại cách viết một chương trình TP đơn giản
1 Làm bài tập 3,5a, 6 trong SGK (trang 51)
2 P = 1- 2 + 3 - 4 +…+(-1)n+1n
3 P=1*2*3*4*…*n
- Chuẩn bị bài mới: Bài 10 Cấu trúc lặp (tt)
Duyệt của Tổ trưởng CM/ Hiệu trưởng :