- Sự cần thiết có cấu trúc rẽ nhánh trong lập trình - Học sinh biết được cấu trúc, ý nghĩa của cấu trúc rẽ nhánh lập trình bằng ngôn ngữ Pascal - Hiểu được câu lệnh rẽ nhánh dạng thiếu v
Trang 1Chương 3 CẤU TRÚC RẼ NHÁNH VÀ LẶP Bài 9 CẤU TRÚC RẼ NHÁNH (tiết 1)
Tiết PPCT: 12 Người soạn: Nguyễn Thị Quyên
Ngày soạn : 20/10/2009
Ngày giảng: 31/10/2009
I.Mục tiêu.
1 Về kiến thức
- Sự cần thiết có cấu trúc rẽ nhánh trong lập trình
- Học sinh biết được cấu trúc, ý nghĩa của cấu trúc rẽ nhánh lập trình bằng ngôn ngữ Pascal
- Hiểu được câu lệnh rẽ nhánh dạng thiếu và đầy đủ
- Sự cần thiết của câu lệnh ghép trong lập trình, nắm được cấu trúc câu lệnh ghép trong Pascal
2 Về kĩ năng
- Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản
- Viết được câu lệnh rẽ nhánh dạng thiếu và đầy đủ và áp dụng thực hiện được một số bài toán đơn giản
- Sử dụng câu lệnh ghép khi cần thiết trong lập trình
3 Về thái độ
- Giúp học sinh hiểu rõ tầm quan trọng của cấu trúc rẽ nhánh
- Làm cho học sinh yêu thích lập trình, yêu môn học hơn
- Phát triển tư duy lập trình, phương pháp làm việc khoa học
II Những phương pháp dạy học chủ yếu.
- Kết hợp các phương pháp sau: thuyết trình, vấn đáp, gợi mở, phát hiện
và giải quyết vấn đề, vẽ hình minh họa, phiếu học tập, tổ chức hoạt động nhóm nhỏ…
III Những hoạt động chính:
- Hoạt động 1: Tìm hiểu cú pháp và ý nghĩa cấu trúc rẽ nhánh
- Hoạt động 2: Tìm hiểu cú pháp và ý nghĩa câu lệnh rẽ nhánh if – then trong lập trình
- Hoạt động 3: Tìm hiểu cú pháp và ý nghĩa câu lệnh ghép trong lập trình
- Hoạt động 4: Rèn kĩ năng viết câu lệnh if - then
IV Phương tiện dạy học.
1.Chuẩn bị của giáo viên
- Máy tính, máy chiếu
- Giáo án, sách giáo khoa và sách giáo viên Tin học 11
Trang 2- Bảng, phấn, phiếu học tập, hình minh họa
2 Chuẩn bị của học sinh
- Vở ghi
- Sách giáo khoa Tin học 11
V Tài liệu tham khảo.
- Sách bài tập Tin học 11
VI Tiến trình lên lớp.
1 Ổn định lớp (1’)
- Gv: Yêu cầu lớp trưởng báo cáo sĩ số
- Hs: Báo cáo sĩ số
2 Gợi động cơ (3’)
- Gv: + Cho chạy CT giải phương trình bậc 2 đã được lập trình sẵn + Nhập bộ giá trị a=1, b=2, c=1 để delta>=0
+ Nhập bộ giá trị a=1, b=2, c=3 để delta <0 => CT gặp lỗi
- Gv: Làm thế nào để xử lí tình huống này? Làm thế nào để máy có thể đưa ra màn hình kết quả mà ta mong muốn là: đưa ra nghiệm của phương trình nếu delta>=0 nhưng vẫn đưa ra thông báo khi delta<0?
- Gv: Chúng ta sẽ cùng tìm hiểu cách mà máy tính làm việc đó trong giờ hôm nay
- Gv: Ghi tên chương, tên bài lên bảng
3 Nội dung bài học (27’)
3.1 Hoạt động 1: Giới thiệu cấu trúc rẽ nhánh trong lập trình (5’)
- VD1: Nếu tôi học tốt thì tôi sẽ đi thi
đại học
Nếu tôi học tốt thì tôi sẽ đi thi
đại học nếu không thì tôi sẽ đi học
nghề
- VD2: Tùy thuộc giá trị của delta đưa ra
kết luận nghiệm
Nếu delta>=0 thì kết luận phương
trình có nghiệm
Nếu delta<0 thì kết luận phương
trình vô nghiệm
Nếu delta>=0 thì kết luận phương
trình có nghiệm nếu không thì kết luận
phương trình vô nghiệm
- Cấu trúc chung:
Nếu thì
Nếu thì nếu không thì
- Gv: Trong mỗi NNLT thì luôn có các cấu trúc tương ứng để thực hiện việc chọn thực hiện hay không thực hiện 1 việc nào đó Trong Pascal cũng có các câu lệnh như vậy gọi là cấu trúc rẽ nhánh dạng thiếu và dạng đầy đủ
Trang 33.2 Hoạt động 2: Tìm hiểu cú pháp và ý nghĩa câu lệnh rẽ nhánh if – then trong lập trình Pascal (15’)
Tương ứng với 2 cấu trúc trên
Pascal có 2 dạng câu lệnh rẽ
nhánh dạng thiếu và đầy đủ sau:
- Cú pháp:
+ Dạng thiếu:
If <điều kiện> then <câu lệnh>;
+ Dạng đầy đủ:
If <điều kiện> then <câu lệnh 1>
else <câu lệnh 2>;
- Trong đó:
+ if, then, else là các từ khóa;
+ điều kiện là biểu thức logic;
+ câu lệnh, câu lệnh 1, câu lệnh 2
là 1 câu lệnh của Pascal
- Chú ý: trước else không có dấu
chấm phẩy (;)
- Y nghĩa câu lệnh:
+ Dạng thiếu: Kiểm tra điều kiện,
nếu điều kiện đúng thì câu lệnh
được thực hiện còn nếu điều kiện
sai thì câu lệnh bị bỏ qua
+ Dạng đầy đủ: Kiểm tra điều
kiện Nếu điều kiện đúng thì thực
hiện câu lệnh 1, nếu điều kiện sai
thì thực hiện câu lệnh 2
- Một số các ví dụ:
VD1: Xét nghiệm phương trình
bậc 2
- Dạng thiếu:
If delta<0 then write('phuong
trinh vo nghiem');
If delta>=0 then write('phuong
trinh co nghiem);
- Dạng đầy đủ:
- Gv: Cụ thể ngôn ngữ Pascal sẽ dùng câu lệnh nào để thực hiện việc rẽ nhánh trên? Chúng ta chuyển sang phần 2
- Gv: Viết cú pháp câu lệnh rẽ nhánh dạng thiếu và dạng đầy đủ
- Gv: Yêu cầu Hs nhắc lại biểu thức logic là gì?
- Gv: Nêu hoạt động của câu lệnh
rẽ nhánh dạng thiếu
- Gv: Yêu cầu học sinh nêu hoạt động của câu lệnh rẽ nhánh dạng đầy đủ?
- Gv: Hoàn chỉnh câu trả lời của hs
- Gv: Yêu cầu hs tìm từ khóa, biểu thức logic, câu lệnh trong ví dụ
- Hs: dựa vào cú pháp ở trên để trả lời
- Gv: Có nhận xét gì về 2 điều kiện viết ở dạng thiếu?
- Gv: nhận xét câu trả lời
- Gv: Vì vậy thay vì bắt máy tính
Trang 4If delta>=0 then write('pt co
nghiem') then write('pt vo
nghiem');
VD2: viết câu lệnh kiểm tra xem
x=100 hay không?
- Dạng thiếu:
If x=100 then write(‘x bang 100’);
If x<>100 then write(‘x khac
100’);
- Dạng đầy đủ:
If x=100 then write(‘x bang 100’)
else write(‘x khac 100’);
VD3: Kiểm tra xem số a(nguyên,
dương) là số chẵn hay số lẻ?
- Dạng thiếu:
If a mod 2=0 then write(‘a la so
chan’);
If a mod 2<>0 then write(‘a la so
le’);
- Dạng đầy đủ:
If a mod 2=0 then write(‘a la so
chan’) else write(‘a la so le’);
đi kiểm tra nhiều lần thì chúng ta
có thể gộp 2 câu lệnh đó lại thành
1 câu lệnh ở dạng đầy đủ như trên Nếu delta>=0 thì thông báo phương trình có nghiệm nếu không thì thông báo phương trình
vô nghiệm
- Gv: Minh họa bằng chạy chương trình Pascal cho hs thấy sự hoạt động của câu lệnh
Gv: Gọi 1 hs lên bảng viết các câu lệnh
- Gv: Gọi hs khác nhận xét bài làm trên bảng và hoàn chỉnh câu trả lời
- Gv: Minh họa bằng chương trình
đã đánh sẵn
- Gv: Gọi 1 hs lên bảng viết các câu lệnh
- Gv: Gọi hs khác nhận xét bài làm trên bảng và hoàn chỉnh bài làm của hs
- Gv: Minh họa bằng chương trình
đã đánh sẵn
3.3 Hoạt động giới thiệu câu lệnh ghép (7’)
- Gv: Bây giờ chúng ta quay lại ví dụ giải phương trình bậc 2 nhưng cô có yêu cầu là: tính nghiệm x1, x2 của phương trình khi delta>=0? => Làm thế nào để làm được điều này?
Trang 5Nội dung Hoạt động của thầy và trò
- Theo cú pháp, sau một số từ
khóa( như Then, Else) phải là một
câu lệnh nhưng trong nhiều trường
hợp, các thao tác phức tạp đòi hỏi có
nhiều câu lệnh để mô tả Trong
trường hợp như vậy NNLT cho phép
gộp nhiều câu lệnh thành một câu
lệnh ghép(câu lệnh hợp thành)
- VD1:
If delta<0 then write(‘pt vo
nghiem’) else
begin
X1:= (-b- sqrt(delta))/(2*a);
X2:= -b/a – X1;
Write(‘pt co nghiem: ‘ ,
X1:6:2, X2:6:2);
End;
- Cú pháp câu lệnh ghép trong
Pascal:
Begin
<các câu lệnh>;
End;
- Chú ý: sau end là dấu chấm phẩy
- VD: Đổi chỗ 2 số nguyên dương
a, b sao cho số lớn đứng
trước, số bé đứng sau
If a>b then
Begin
Tg:=a;
A:=b;
B:=tg;
End;
- Gv: Cho chạy CT giải bài toán trên nhưng không dùng câu lệnh ghép
- Gv: Hỏi hs là CT tính đúng nghiệm không, yêu cầu hs lấy các ví dụ để thử?
- Gv: Có 1 cách để giải quyết vấn đề này đó là biến câu lệnh đơn thành câu lệnh ghép bằng cách thêm cặp từ khóa (begin end;) vào
- Gv: Cho chạy lại CT sau khi đã sửa lại CT đúng
- Gv: Yêu cầu hs thay các giá trị khác
để kiểm tra tính đúng đắn của CT
- Gv: Nêu cú pháp câu lệnh trong Pascal
- Gv: Yêu cầu hs quan sát CT tìm sự đặc biệt?
(sau end là dấu chấm phẩy)
Trang 63.4 Hoạt động 4: Rèn luyện (9’)
- VD1: Kiểm tra xem a có là tháng trong năm hay không?
Dạng thiếu:
If (a>0) and (a<=12) then write(‘a la thang trong nam’);
If (a<0) and (a>12) then write(‘a khong la thang trong nam’); Dạng đủ:
If (a>0) and (a>=12) then write(‘a la thang trong nam’)
else write(‘a khong la thang trong nam’);
- VD2: Kết quả của đoạn chương trình sau là gì?
x:= -5; y:= 5;
if x>y then x:= x-y else x:= y-x;
C x= -10, y= 5 D x= -5, y= 10
Đáp án: A
- VD3: Điều kiện đỗ vào trường ĐHBK là thí sinh có tổng điểm 3 môn thi khối A: Toán Lý, Hóa phải lớn hơn 24 điểm Viết câu lệnh kiểm tra xem thí sinh Biết Tuốt có đỗ vào trường hay không?
Dạng thiếu:
If D>24 then write(‘Biet Tuot da do vao truong’);
If D<24 then write(‘Biet Tuot khong do vao truong’);
Dạng đủ:
If D>24 then write(‘Biet Tuot da do vao truong’)
else write(‘Biet Tuot khong do vao truong’);
- VD4: Dùng câu lệnh if – then để viết đoạn CT tính thương a/b ?
If b<>0 then
begin
T:= a/b;
write(‘ thuong so la: ‘, T);
end
else write(‘khong chia duoc’);
Trang 74 Củng cố - BTVN (2’)
- Nhắc lại nội dung chính
- Nhận xét tinh thần học tập của học sinh
- Ra BTVN: học bài cũ và đọc trước các ví dụ phần 4/41/SGK Tin học 11
5 Rút kinh nghiệm giờ lên lớp:
6 Giáo viên hướng dẫn kí duyệt: