Bài 9. CẤU TRÚC RẼ NHÁNH I. Mục tiêu 1. Kiến thức Biết khái niệm rẽ nhánh. Hiểu cú pháp câu lệnh IF dạng thiếu và đủ. Hiểu ý nghĩa câu lệnh ghép. Vận dụng được câu lệnh IF trong lập trình. 2. Kỹ năng Vận dụng đúng, hợp lý câu lệnh IF dạng thiếu và đủ cho từng bài toán. Sử dụng đúng câu lệnh ghép. Trình bày cấu trúc chương trình đẹp, hợp lý. 3. Thái độ Tạo cho học sinh niềm yêu thích, say mê trong quá trình làm quen với cấu trúc rẽ nhánh Biết lựa chọn nhánh thực hiện phù hợp với điều kiện, hoàn cảnh trong thực tế 4. Các năng lực cần hình thành và phát triển Năng lực tự học thông qua sách giáo khoa, tài liệu, mạng internet Năng lực giải quyết vấn đề thông qua các ví dụ trong bài học Năng lực sáng tạo thông qua nội dung bài học Năng lực hợp tác thông qua bạn bè, thầy cô và những người xung quanh Năng lực thực hành thông qua các bài tập Năng lực sử dụng công nghệ thông tin thông qua việc thực hành các bài tập trên máy tính Năng lực tính toán thông qua việc nhập các bộ test trong các chương trình II. Chuẩn bị Giáo viên: + Các phiếu học tập (nếu có), video, máy tính, máy chiếu + Giáo án, bảng phụ, SGK, SGV, giấy A0, bút viết bảng Học sinh: + Ôn lại kiến thức cũ trong phần bài toán và thuật toán lớp 10, chuẩn bị bài mới trong sách giáo khoa + SGK, vở ghi. III. Tổ chức hoạt động học 1. Khởi động 1.1. Mục đích Gợi nhớ kiến thức cũ, thu hút sự tập trung của học sinh vào bài học mới 1.2. Nội dung Cho học sinh xem trình chiếu các sơ đồ khối về một số thuật toán đã học lớp 10. 1.3. Kĩ thuật tổ chức hoạt động Ở lớp 10, phần bài toán và thuật toán cô đã dạy các em về thuật toán. Các em còn nhớ cách trình bày thuật toán bằng phương pháp sơ đồ khối không? Trong thuật toán có dùng các hình khối nào? Khi sử dụng hình thoi ta luôn phải vẽ ra đủ hai nhánh nào? 1.4. Sản phẩm của học sinh Ở lớp 10 chúng em đã được học cách trình bày thuật toán bằng pp SĐK là sử dụng + Hình ovan để biểu diễn phép nhập hoặc kết thúc + Hình chữ nhật để biểu diễn phép tính toán hoặc phép gán + Hình thoi biểu diễn phép so sánh + Hình mũi tên để quy định trình tự thực hiện các thao tác. Khi vẽ hình thoi ta luôn phải vẽ đủ hai nhánh đúng và sai. 2. Hình thành kiến thức 2.1. Mục đích Giúp học sinh biết khái niệm rẽ nhánh và phân biệt hai loại rẽ nhánh. Giúp học sinh biết được cấu trúc lệnh rẽ nhánh IF – THEN ELSE và câu lệnh ghép. Áp dụng câu lệnh IF vào bài tập cụ thể để học sinh nắm rõ hơn. 2.2. Nội dung Nội dung 1: Tìm hiểu rẽ nhánh 1. Rẽ nhánh: Một số mệnh đề có dạng điều kiện: + Dạng thiếu: Nếu…thì… + Dạng đủ: Nếu … thì … nếu không thì … Cấu trúc dùng để mô tả các mệnh đề như trên được gọi là cấu trúc rẽ nhánh thiếu và đủ. Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh. Nội dung 2: Tìm hiểu cú pháp câu lệnh IF dạng thiếu và đủ, câu lệnh ghép 2. Câu lệnh IF – THEN: Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh: a. Dạng thiếu: Cú pháp: IF THEN ; SĐK Ý nghĩa: Điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh sẽ được thực hiện. Ngược lại thì câu lệnh sẽ bị bỏ qua. b. Dạng đủ: Cú pháp: IF THEN ELSE < câu lệnh 2>; SĐK Ý nghĩa: Điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh 1 sẽ được thực hiện. Ngược lại thì câu lệnh 2 sẽ được thực hiện Nội dung 3: Câu lệnh ghép NNLT cho phép gộp dãy các lệnh thành một câu lệnh ghép Begin ; End; Nội dung 4: Rèn luyện kĩ năng vận dụng lệnh IF Ví dụ 1: Cho số N nguyên. Viết chương trình kiểm tra tính chẵn lẻ của N Chương trình Program VD1; Var N: integer; Begin Write(‘nhap N:=’); readln(N); If N mod 2 = 0 then write (N,‘la so chan’) Else write (N,‘ la so le’); Readln End. Ví dụ 2: Cho 2 số nguyên a, b. Viết chương trình giải phương trình: ax+b=c Program VD2; Var a,b: integer; Begin Write(‘nhap a,b:=’); readln(a,b); If a=0 then If b=0 then write(‘PT VSN’) Else write(‘PT VN’); Else write (‘ PT co nghiem =’,ba:5:2); Readln End. Ví dụ 3: Cho ba số a,b,c. Viết chương trình giải PTBH: ax2 + bx + c =0 Program VD3; Var a,b,c,x1,x2: real; Begin Write(‘nhap a,b,c:=’); readln(a,b,c); d:=bb4ac; If d; SĐK Ý nghĩa: Điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh 1 sẽ được thực hiện. Ngược lại thì câu lệnh 2 sẽ được thực hiện GV: Bây giờ các nhóm hãy viết câu lệnh rẽ nhánh cho sơ đồ khối mà các em đã vẽ lúc đầu giờ ra giấy A0. GV: Quan sát và nhận xét kết quả của các nhóm. Nội dung 3: Câu lệnh ghép GV: Trong bài tập đưa cho các nhóm các em có để ý bài tập của nhóm 3 không? Sau từ Else các em cần phải thực hiện các lệnh: + Tính nghiệm x1 + Tính nghiệm x2 + Hiển thị kết quả ra màn hình Vậy làm sao để thực hiện được? NNLT cho phép gộp dãy các lệnh thành một câu lệnh ghép Begin ; End;
Trang 1Bài 9 CẤU TRÚC RẼ NHÁNH
I Mục tiêu
1 Kiến thức
- Biết khái niệm rẽ nhánh
- Hiểu cú pháp câu lệnh IF dạng thiếu và đủ
- Hiểu ý nghĩa câu lệnh ghép
- Vận dụng được câu lệnh IF trong lập trình
2 Kỹ năng
- Vận dụng đúng, hợp lý câu lệnh IF dạng thiếu và đủ cho từng bài toán
- Sử dụng đúng câu lệnh ghép
- Trình bày cấu trúc chương trình đẹp, hợp lý
3 Thái độ
- Tạo cho học sinh niềm yêu thích, say mê trong quá trình làm quen với cấu trúc rẽ nhánh
- Biết lựa chọn nhánh thực hiện phù hợp với điều kiện, hoàn cảnh trong thực tế
4 Các năng lực cần hình thành và phát triển
- Năng lực tự học thông qua sách giáo khoa, tài liệu, mạng internet
- Năng lực giải quyết vấn đề thông qua các ví dụ trong bài học
- Năng lực sáng tạo thông qua nội dung bài học
- Năng lực hợp tác thông qua bạn bè, thầy cô và những người xung quanh
- Năng lực thực hành thông qua các bài tập
- Năng lực sử dụng công nghệ thông tin thông qua việc thực hành các bài tập trên máy tính
- Năng lực tính toán thông qua việc nhập các bộ test trong các chương trình
II Chuẩn bị
- Giáo viên:
+ Các phiếu học tập (nếu có), video, máy tính, máy chiếu
+ Giáo án, bảng phụ, SGK, SGV, giấy A0, bút viết bảng
- Học sinh:
+ Ôn lại kiến thức cũ trong phần bài toán và thuật toán lớp 10, chuẩn bị bài mới trong sách giáo khoa
+ SGK, vở ghi
III Tổ chức hoạt động học
1 Khởi động
1.1 Mục đích
- Gợi nhớ kiến thức cũ, thu hút sự tập trung của học sinh vào bài học mới
1.2 Nội dung
- Cho học sinh xem trình chiếu các sơ đồ khối về một số thuật toán đã học lớp 10
1.3 Kĩ thuật tổ chức hoạt động
- Ở lớp 10, phần bài toán và thuật toán cô đã dạy các em về thuật toán Các em còn nhớ cách trình bày thuật toán bằng phương pháp sơ đồ khối không? Trong thuật toán có dùng các hình khối nào?
- Khi sử dụng hình thoi ta luôn phải vẽ ra đủ hai nhánh nào?
1.4 Sản phẩm của học sinh
Trang 2- Ở lớp 10 chúng em đã được học cách trình bày thuật toán bằng pp SĐK là sử dụng + Hình ovan để biểu diễn phép nhập hoặc kết thúc
+ Hình chữ nhật để biểu diễn phép tính toán hoặc phép gán
+ Hình thoi biểu diễn phép so sánh
+ Hình mũi tên để quy định trình tự thực hiện các thao tác
- Khi vẽ hình thoi ta luôn phải vẽ đủ hai nhánh đúng và sai
2 Hình thành kiến thức
2.1 Mục đích
- Giúp học sinh biết khái niệm rẽ nhánh và phân biệt hai loại rẽ nhánh
- Giúp học sinh biết được cấu trúc lệnh rẽ nhánh IF – THEN - ELSE và câu lệnh ghép
- Áp dụng câu lệnh IF vào bài tập cụ thể để học sinh nắm rõ hơn
2.2 Nội dung
Nội dung 1: Tìm hiểu rẽ nhánh
1 Rẽ nhánh:
* Một số mệnh đề có dạng điều kiện:
+ Dạng thiếu: Nếu…thì…
+ Dạng đủ: Nếu … thì … nếu không thì …
* Cấu trúc dùng để mô tả các mệnh đề như trên được gọi là cấu trúc rẽ nhánh thiếu và đủ
* Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh
Nội dung 2: Tìm hiểu cú pháp câu lệnh IF dạng thiếu và đủ, câu lệnh ghép
2 Câu lệnh IF – THEN:
* Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh:
a Dạng thiếu:
- Cú pháp: IF <điều kiện> THEN <câu lệnh>;
- SĐK
- Ý nghĩa: Điều kiện sẽ được tính và kiểm tra Nếu điều kiện đúng thì câu lệnh sẽ
được thực hiện Ngược lại thì câu lệnh sẽ bị bỏ qua
Lệnh
Điều kiện
đúng sai
Trang 3b Dạng đủ:
- Cú pháp: IF <điều kiện> THEN <câu lệnh 1> ELSE < câu lệnh 2>;
- SĐK
- Ý nghĩa: Điều kiện sẽ được tính và kiểm tra Nếu điều kiện đúng thì câu lệnh 1 sẽ được thực hiện Ngược lại thì câu lệnh 2 sẽ được thực hiện
Nội dung 3: Câu lệnh ghép
NNLT cho phép gộp dãy các lệnh thành một câu lệnh ghép
Begin
<các lệnh cần ghép>;
End;
Nội dung 4: Rèn luyện kĩ năng vận dụng lệnh IF
Ví dụ 1: Cho số N nguyên Viết chương trình kiểm tra tính chẵn lẻ của N
Chương trình
Program VD1;
Var N: integer;
Begin
Write(‘nhap N:=’); readln(N);
If N mod 2 = 0 then write (N,‘la so chan’)
Else write (N,‘ la so le’);
Readln
End
Ví dụ 2: Cho 2 số nguyên a, b Viết chương trình giải phương trình: ax+b=c
Program VD2;
Var a,b: integer;
Begin
Write(‘nhap a,b:=’); readln(a,b);
If a=0 then
If b=0 then write(‘PT VSN’)
Else write(‘PT VN’);
Điều kiện
Lệnh 1 Lệnh 2
Trang 4Else write (‘ PT co nghiem =’,-b/a:5:2);
Readln
End
Ví dụ 3: Cho ba số a,b,c Viết chương trình giải PTBH: ax2 + bx + c =0
Program VD3;
Var a,b,c,x1,x2: real;
Begin
Write(‘nhap a,b,c:=’); readln(a,b,c);
d:=b*b-4*a*c;
If d<0 then write(‘PT VN’)
Else If d=0 then write(‘PT co nghiem x:=’,-b/(2*a))
Else
Begin
X1:= (- b – sqrt (d))/(2*a);
X1:= (- b + sqrt (d))/(2*a);
write (‘ PT co hai nghiem x1=’,x1:5:2, ‘x2:=’,x2);
End;
Readln
End
2.3 Kĩ thuật tổ chức hoạt động
Nội dung 1: Rẽ nhánh
GV: Chia lớp thành 3 nhóm và cho bài tập:
Nhóm 1: - Cho số N nguyên Trình bày thuật toán kiểm tra tính chẵn lẻ của N
Nhóm 2: - Cho 2 số nguyên a, b Trình bày thuật toán bằng phương pháp sơ đồ khối giải phương trình: ax+b=c
Nhóm 3: - Cho ba số a,b,c Trình bày thuật toán giải PTBH: ax2 + bx + c =0
GV: Các em trình bày sơ đồ khối vào giấy A0 rồi 1 bạn đại diện nhóm lên trình bày Sau khi học sinh trình bày GV nhận xét SĐK của các nhóm và đưa ra câu hỏi ở SĐK trên các em nhìn thấy những nhánh nào?
Nghe câu trả lời và nhận xét rồi nói: trong cuộc sống hàng ngày ta gặp rất nhiều từ Nếu … thì
Ví dụ: Nếu hôm nay trời nắng thì Mai sẽ đến nhà Lan học bài …
Gv: Trong lập trình cũng có câu lệnh thể hiện câu Nếu thì … đó Mệnh đề để mô tả câu lệnh trên gọi là cấu trúc rẽ nhánh Nếu nhánh nào có trường hợp sai xảy ra thì gọi
là dạng đủ, còn không thì gọi là dạng thiếu.
Nội dung 2: Tìm hiểu cú pháp câu lệnh IF dạng thiếu và đủ, câu lệnh ghép
GV: Cho học sinh nghiên cứu sách giáo khoa rồi viết cấu trúc câu lệnh rẽ nhánh
a Dạng thiếu:
- Cú pháp: IF <điều kiện> THEN <câu lệnh>;
Lệnh
Điều kiện
đúng sai
Trang 5- SĐK
- Ý nghĩa: Điều kiện sẽ được tính và kiểm tra Nếu điều kiện đúng thì câu lệnh sẽ được thực
hiện Ngược lại thì câu lệnh sẽ bị bỏ qua
b Dạng đủ
- Cú pháp: IF <điều kiện> THEN <câu lệnh 1> ELSE < câu lệnh 2>;
- SĐK
- Ý nghĩa: Điều kiện sẽ được tính và kiểm tra Nếu điều kiện đúng thì câu lệnh 1 sẽ được thực hiện Ngược lại thì câu lệnh 2 sẽ được thực hiện
GV: Bây giờ các nhóm hãy viết câu lệnh rẽ nhánh cho sơ đồ khối mà các em đã vẽ lúc đầu giờ ra giấy A0
GV: Quan sát và nhận xét kết quả của các nhóm
Nội dung 3: Câu lệnh ghép GV: Trong bài tập đưa cho các nhóm các em có để ý bài tập của nhóm 3 không?
Sau từ Else các em cần phải thực hiện các lệnh:
+ Tính nghiệm x1
+ Tính nghiệm x2
+ Hiển thị kết quả ra màn hình
Vậy làm sao để thực hiện được?
NNLT cho phép gộp dãy các lệnh thành một câu lệnh ghép
Begin
<các lệnh cần ghép>;
End;
Điều kiện
Lệnh 1 Lệnh 2
Trang 6Nội dung 4: Rèn luyện kĩ năng vận dụng lệnh IF GV: Bây giờ các em hoàn thiện các chương trình sau ra giấy A0
Nhóm 1: Cho số N nguyên Viết chương trình kiểm tra tính chẵn lẻ của N Nhóm 2: Cho 2 số nguyên a, b Viết chương trình giải phương trình: ax+b=c Nhóm 3: Cho ba số a,b,c Viết chương trình giải PTBH: ax2 + bx + c =0
2.4 Sản phẩm của học sinh
* Ở nội dung 1: Học sinh có thể trả lời được các ý sau
- Đại diện của ba nhóm lên trình bày sơ đồ khối của nhóm mình
Nhóm 1:
Nhóm 2:
Nhập a, b
a = 0
b=0
-+
PT VN PT
VSN
PT có ng
Nhập N
N mod 2
=0
N là số chẵn
N là số lẻ Đ
S
Trang 7Nhóm 3:
- Liên hệ lấy được ví dụ cụ thể thường gặp trong cuộc sống hàng ngày
- Đưa ra được cấu trúc chung của các ví dụ GV gợi ý:
Nếu thì
Nếu thì nếu không thì
- Hình thành được cấu trúc rẽ nhánh có hai dạng: dạng thiếu và dạng đủ
* Ở nội dung 2: Học sinh trả lời được các ý sau:
- Cấu trúc chung của câu lệnh rẽ nhánh
- Các nhóm đưa ra được câu lệnh rẽ nhánh cho bài tập của nhóm mình
Nhóm 1:
If n mod 2 = 0 then write(‘n la so chan’);
Else write(‘n la so le’);
Nhóm 2:
if a= 0 then
if b=0 then write (‘PT VSN’) else write (‘PT VN’);
else write (‘Pt co nghiem x:=’, -b/a);
Nhóm 3:
If d<0 then write(‘pt vo nghiem’) Else if d=0 then write(‘PT co nghiem kep’, -b/2a);
Else write (‘pt co hai nghiem phan biet’);
* Ở nội dung 3: Học sinh hiểu được sau câu lệnh Else nếu có nhiều hơn một lệnh phải thực
hiện thì để các lệnh đó trong câu lệnh ghép
* Ở nội dung 4: Các nhóm hoàn thành chương trình của nhóm mình
Nhóm 1:
Program vidu1;
Var n: integer;
PT có 1 nghiệm
Nhập a, b,c
D=b*b-4*a*c
D<0 PT VN
PT có 2 nghiệm D=0
Đ
S
Đ
S
Trang 8Write(‘nhap n:=’); readln(n);
If n mod 2 = 0 then write(n,‘la chan’) Else write (n,’la le’);
Readln;
End
Nhóm 2:
Program vidu2;
Var a,b:integer;
Begin
Write(‘nhap a,b:=’); readln(a,b);
If a=0 then
If b=0 then write(‘’ptvsn) Else write(‘pt vn’)
Else write(‘pt co nghiem x:=’,-b/a:5:2);
Readln;
End
Nhóm 3:
Program vidu3;
Var a,b,c,d:integer;
Begin
Write(‘nhap a,b,c:=’); readln(a,b,c);
D:=b*b-4*a*c;
If d<0 then write(‘’ptvn) Else if d=0 then write(‘pt co nghiem x:=’,-b/(2*a))
x1:=’,-b-sqrt(d)/(2*a):5:2,’x2:=’,-b+sqrt(d)/(2*a):5:2);
Readln;
End
* Khó khăn và sai xót của học sinh
Trang 9- Ở ND1: Các em quên kiến thức cũ nên vẽ hình còn sai
- Ở ND2:
+ Trước câu lệnh else không được dùng dấu ;
+ Ví dụ của nhóm 3 chưa đưa được kết quả cụ thể khi d>0
+ Chương trình viết còn xảy ra lỗi cơ bản
3 Luyện tập
3.1 Mục đích
- Củng cố các kiến thức về cấu trúc rẽ nhánh
- Rèn luyện kỹ năng viết chương trình với các bài toán có sử dụng cấu trúc rẽ nhánh
3.2 Nội dung
Học sinh giải quyết các câu hỏi và bài tập sau:
Câu 1: Để mô tả cấu trúc rẽ nhánh, trong Pascal sử dụng câu lệnh If <điều kiện> then
<câu lệnh>; Điều kiện là:
A Biểu thức logic
B Biểu thức số học
C Biểu thức quan hệ
D Một câu lệnh
Câu 2: Với cấu trúc rẽ nhánh If <điều kiện> then <câu lệnh>; Câu lệnh đứng sau then được thực hiện khi:
A Điều kiện được tính toán xong
B Điều kiện được tính toán và cho giá trị đúng
C Điều kiện không tính được
D Điều kiện được tính toán và cho giá trị sai
Câu 3: Với cấu trúc rẽ nhánh If <điều kiện> then <câu lệnh 1> Else <Câu lệnh 2>; Câu lệnh 2 được thực hiện khi:
A Biểu thức thực hiện đúng và câu lệnh thực hiện xong
B Câu lệnh 1 được thực hiện
C Biểu thức điều kiện sai
D Biểu thức điều kiện đúng
Câu 4: Muốn dùng biến x lưu giá trị nhỏ nhất trong các giá trị của hai biến a,b có thể dùng cấu trúc rẽ nhánh như sau:
A If a<=b then x:=a else x:=b
B If a<b then x:=a
C x:=b; if a<b then x:=a
D if a<b then x:=a else x:=b
Câu 5: Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện
A A+B
B A>B
C N mod 100
D “A nhỏ hơn B”
Bài tập 1: Nhập vào 3 số nguyên a,b,c Viết chương trình tìm Max của 3 số.
Bài tập 2: Nhập vào số nguyên N Viết chương trình kiểm tra tính nguyên tố của N Bài tập 3: Tìm số ngày của năm N, biết rằng năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100
Trang 103.3 Kĩ thuật tổ chức hoạt động
- Các câu hỏi từ 1 -5 đọc và cho học sinh trả lời nhanh Chỗ nào học sinh vướng mắc thì giải thích
- Bài tập 1, bài tập 2, bài tập 3 cho học sinh làm theo nhóm
3.4 Sản phẩm của học sinh
Câu 1: C
Câu 2: B
Câu 3: C
Câu 4: D
Câu 5: B
4 Vận dụng, tìm tòi và mở rộng
4.1 Mục đích
- Giúp học sinh vận dụng kiến thức và kỹ năng để giải các bài tập trong thực tế
- Hôm sau có tiết bài tập
4.3 Kĩ thuật tổ chức hoạt động
- Chia lớp thành 3 nhóm về nhà làm các bài tập trong sách giáo khoa
- Tìm thêm các bài tập trên Internet
4.4 Sản phẩm của học sinh, kiểm tra, đánh giá
- Trình chiếu các bài tập đó trên PowerPoint
- Đánh giá vào đầu giờ buổi học sau