Tải bản đầy đủ (.pdf) (22 trang)

Skkn phát triển kỹ năng và tư duy lập trình cấu trúc câu lệnh rẽ nhánh thông qua hệ thống bài tập

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (305.97 KB, 22 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT CHU VĂN AN

SÁNG KIẾN KINH NGHIỆM

PHÁT TRIỂN KỸ NĂNG VÀ TƯ DUY LẬP TRÌNH
CẤU TRÚC CÂU LỆNH RẼ NHÁNH THƠNG QUA
HỆ THỐNG BÀI TẬP

Người thực hiện: Nguyễn Thị Hằng
Chức vụ: Giáo viên
SKKN thuộc lĩnh mực : Tin học

THANH HOÁ NĂM 2021

skkn


MỤC LỤC
A. ĐẶT VẤN ĐỀ.................................................................................................1
I. Lý do chọn đề tài............................................................................................1
II. Mục đích nghiên cứu.....................................................................................1
III. Đối tượng và phạm vi nghiên cứu................................................................2
1. Đối tượng nghiên cứu...............................................................................2
2. Phạm vi nghiên cứu..................................................................................2
IV. Nhiệm vụ nghiên cứu...................................................................................2
V. Phương pháp nghiên cứu...............................................................................2
1. Nghiên cứu lý thuyết................................................................................2
2. Thực nghiệm sư phạm..............................................................................2
B. GIẢI QUYẾT VẤN ĐỀ..................................................................................3


I. Cơ sở lý luận...................................................................................................3
II. Cơ sở thực tiễn..............................................................................................4
* Thuận lợi:...................................................................................................4
* Khó khăn:...................................................................................................4
III. Biện pháp tổ chức thực hiện........................................................................4
1. Hướng dẫn lý thuyết.................................................................................4
2. Hệ thống bài tập rẽ nhánh cơ bản...........................................................5
3. Bài tập rèn luyện.....................................................................................16
IV. Kết quả kiểm nghiệm.................................................................................16
C. KẾT LUẬN VÀ ĐỀ XUẤT..........................................................................19
I. Một số kết luận rút ra....................................................................................19
II. Đề xuất.........................................................................................................19

1

skkn


A. ĐẶT VẤN ĐỀ
I. Lý do chọn đề tài
Là một người giáo viên, khi bước lên bục giảng, chắc chắn rằng ai cũng
có những trăn trở như tơi, đó là: làm sao có thể truyền đạt đầy đủ kiến thức cho
học sinh của mình, làm sao cho học sinh cảm thấy bài học thật hữu ích, đem lại
sự hứng thú, say mê học tập cho các em. Mỗi giáo viên phải có lịng u nghề,
kiến thức, kỹ năng và phương pháp giảng dạy. Tình yêu nghề phải được xác
định ngay từ khi chúng ta bước chân vào con đường sư phạm, và tình u đó
ngày càng được vun đắp thêm theo năm tháng, qua lớp lớp thế hệ học sinh. Kiến
thức thì rộng lớn vơ cùng, mỗi giáo viên phải học tập suốt đời, phải học thêm ở
sách vở, ở đồng nghiệp, ở internet...Kỹ năng được tôi luyện theo năm tháng, mỗi
người có mỗi phương pháp, mỗi cách truyền đạt, sao cho học sinh hiểu bài và có

thể vận dụng để làm bài. Kỹ năng và kiến thức sẽ dần trở thành kinh nghiệm
giảng dạy riêng của mỗi người. Luôn trăn trở với các thế hệ học trò, mong muốn
mang lại những gì tốt đẹp nhất đối với các em, tôi đã xây dựng đề tài: "Phát
triển kỹ năng và tư duy lập trình cấu trúc câu lệnh rẽ nhánh thông qua hệ
thống bài tập", tôi rất mong nhận được nhiều sự đóng góp và phản hồi để đề tài
ngày càng được hồn thiện hơn.
Mơn tin học là mơn có những đặc thù rất riêng, là môn liên quan nhiều
đến cơ sở vật chất: máy tính, máy chiếu, nhưng khơng phải trường nào cũng đáp
ứng được đầy đủ. Vì vậy để gây được hứng thú cho các em khi học tin, mỗi giờ
lý thuyết trên lớp giáo viên phải cố gắng rất nhiều, từ bài bản đến cách thức bố
trí tiết học, để các em có thể nắm vững kiến thức, dẫn đến giờ thực hành mới
hiệu quả. Mặt khác, với nội dung chương trình lớp 11, lần đầu tiên các em được
làm quen với ngơn ngữ lập trình, lần đầu tiên được biết máy tính giải các bài
tốn như thế nào, nên các em cịn nhiều bỡ ngỡ. Ngồi việc phải tìm hiểu cấu
trúc ngơn ngữ, nhớ câu lệnh, mà các em cịn phải có tư duy về tốn học, điều
này cũng gây một phần khó khăn đối với các em có lực học mơn tốn yếu.
Chính vì lý do này, tôi suy nghĩ, và rút kinh nghiệm từ những năm dạy
trước, khi dạy lập trình cho các em, tơi ln hướng các em tới những cái gì đơn
giản, dễ hiểu, gần gũi và quen thuộc nhất để các em nắm vững được kiến thức,
lập trình giải quyết bài tốn, để những tiết học lập trình khơng cịn trừu tượng,
căng thẳng đối với các em, thay vào đó là sự cụ thể, rõ ràng.
II. Mục đích nghiên cứu
Với chủ trương của giáo dục: lấy học sinh làm trung tâm, người thầy đóng
vai trị dẫn dắt học sinh, hướng dẫn các em, và theo phương châm của tôi, phải
dạy làm sao cho học sinh phải hiểu được và làm được. Muốn học sinh hiểu
được, thì giáo viên phải nghiên cứu cách giảng dạy, làm sao truyền đạt được
đúng, đủ kiến thức, nhưng phải dễ hiểu nhất, cụ thể nhất. Giáo viên phải thật sự
tận tâm, nhiệt huyết với bài dạy thì cũng mới truyền được cảm hứng học tập cho
các em, tránh được sự mệt mỏi, buồn ngủ, nhàm chán của tiết học. Khi học sinh
đã hiểu, nắm vững kiến thức của bài học, để học sinh có thể làm được bài tập,

thực hành được thì giáo viên phải có một hệ thống bài tập cụ thể, từ dễ đến khó,
1

skkn


từ đơn giản đến phức tạp, để nâng dần khả năng tư duy của các em, để các em
có thế lấy cái dễ áp dụng làm được cái khó. Học sinh thường hay suy nghĩ theo
tư duy lối mòn, thụ động trong việc giải quyết các bài tốn, vì vậy giáo viên cần
phải kích thích sự mày mị tìm hiểu, sáng tạo của các em, dẫn dắt, hướng dẫn
các em tìm ra hướng giải chứ khơng giải cụ thể cho các em.
Khi nghiên cứu đề tài này, mục đích chính của tôi là đưa ra hệ thống bài
tập cụ thể, cách thức dạy, để học sinh có thể dễ hiểu nhất, nắm vững kiến thức
và làm được bài. Học sinh khơng cịn cảm thấy mơn tin khó hiểu, trừu tượng bởi
ngơn ngữ và cấu trúc lập trình. Khi các em đã làm được một số bài, đã thực hành
và chạy được chương trình, các em sẽ rất u thích và hứng thú môn học.
III. Đối tượng và phạm vi nghiên cứu
1. Đối tượng nghiên cứu
- Nghiên cứu nội dung và kiến thức chương tình Tin học phổ thơng, cụ thể
là tin học 11
- Nghiên cứu các tài liệu liên quan đến thuật tốn và ngơn ngữ lập trình Pascal
- Nghiên cứu tâm sinh lý của học sinh THPT
- Nghiên cứu về kỹ năng, phương pháp dạy học, đổi mới theo hướng tích
cực, lấy học sinh làm trung tâm
2. Phạm vi nghiên cứu
Trong phạm vi đề tài này, tôi xin đưa ra một số kinh nghiệm và phương
pháp dạy học nội dung cấu trúc rẽ nhánh (bài 9- sgk tin học 11) thông qua hệ
thống bài tập cụ thể.
IV. Nhiệm vụ nghiên cứu
Để đạt được mục đích nghiên cứu đề ra, cần phải thực hiện những nhiệm

vụ sau:
- Nghiên cứu cơ sở lý luận dạy học
- Nghiên cứu cơ sở thực tiễn, thực trạng dạy và học ở trường THPT
- Nghiên cứu phương pháp truyền đạt, cách thức bố trí bài giảng để tạo
được hứng thú cho học sinh, tạo cho các em sự say mê lập trình
- Xây dựng hệ thống bài tập đa dạng, phù hợp với năng lực của học sinh
V. Phương pháp nghiên cứu
1. Nghiên cứu lý thuyết
- Nghiên cứu các tài liệu về ngôn ngữ lập trình Pascal, các tài liệu về phương
dạy học tốn học, tư duy toán học, các tài liệu về giáo dục học, tâm lý học.
- Nghiên cứu các công văn hướng dẫn của Bộ Giáo dục và Đào tạo, Sở
Giáo dục và Đào tạo về vấn đề đưa Tin học vào chương trình THPT cũng như
các vấn đề về yêu cầu chất lượng giáo dục.
2. Thực nghiệm sư phạm
- Thông qua quá trình dạy, nắm bắt được khả năng và tâm lý của học sinh
khi học môn Tin học
- Thông qua việc trao đổi với giáo viên và đồng nghiệp để hiểu rõ hơn lực
học, khả năng tiếp thu bài của từng lớp để có những thay đổi, điều chỉnh cách
dạy phù hợp từng đối tượng
2

skkn


- Kiểm chứng thông qua việc tiến hành giảng dạy trên 2 đối tượng: lớp
thực nghiệm và lớp đối chứng để so sánh kết quả. Lớp đối chứng là theo phương
pháp cũ, giáo viện dạy lý thuyết, có hướng dẫn một vài bài tập ví dụ. Lớp thực
nghiệm áp dung phương pháp mới, lấy học sinh làm trung tâm, giáo viên dẫn
dắt, gợi động cơ, hướng dẫn học sinh giải quyết vấn đề, thực nghiệm đề tài
nghiên cứu. Cụ thể như sau:

Lớp đối chứng
Lớp thực nghiệm
Lớp 11B1
Lớp 11B3
Lớp 11B2
Lớp 11B5
Số lượng
40 hs
42 hs
40 hs
41 hs
Giỏi
5 hs 12.5% 3 hs 7.1%
4 hs
10%
3 hs
7.3%
Khá
19 hs 47.5% 12 hs 28.6% 20 hs 50% 10 hs 24.4%
Trung bình 14 hs 35% 21 hs 50% 13 hs 32.5% 22 hs 53.7%
Yếu
2 hs
5%
6 hs 14.3% 3 hs
7.5%
6 hs 14.6%
Kết quả nghiên cứu được kiểm chứng thông qua quá trình dạy thực
nghiệm, so sánh kiểm tra giữa các lớp có lực học, khả năng tiếp thu bài ngang
nhau. So sánh lớp 11B1 và 11B2, so sánh lớp 11B3 và 11B5.
B. GIẢI QUYẾT VẤN ĐỀ

I. Cơ sở lý luận
* Một số khái niệm về lập trình.
Tin học 11 với nội dung chính là hướng học sinh làm quen với khái niệm
lập trình và ngơn ngữ lập trình, cụ thể là ngơn ngữ lập trình Pascal. Để các em
có thể giải quyết được những bài toán cụ thể. Quá trình giải quyết bài tốn chính
là thực hiện cơng việc: tìm hiểu bài tốn, xác định thuật tốn, và viết chương
trình. Cụ thể, khi đưa ra một bài tốn, giáo viên sẽ hướng học sinh thực hiện 3
bước như sau:
Bước 1: cũng giống như trong toán học, học sinh sẽ phải xác định bài
tốn, chính là đi tìm Input và Output.
- Input: là các thơng tin đã có
- Output: Các thơng tin cần tìm từ Input
Bước 2: Xác định thuật toán
Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp
xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ
Input của bài toán, ta nhận được Output cần tìm.
Bước 3: Viết chương trình (lập trình). Trước khi viết chương trình phải
hiểu được ngơn ngữ lập trình là gì? Lập trình là đi làm cơng việc gì?
Ngơn ngữ lập trình là một hệ thống các kí hiệu tuân theo các quy ước về
ngữ pháp và ngữ nghĩa, dùng để xây dựng các chương trình cho máy tính.
+ Ngữ pháp: Quy ước về quan hệ giữa các ký hiệu. Ví dụ trong ngơn ngữ
Pascal: các ký hiệu Begin, end phải đi thành từng cặp, sau từ khóa if sẽ là một
biểu thức điều kiện, sau đó là từ khóa then.

3

skkn


+ Ngữ nghĩa: Quy ước về ý nghĩa của kí hiệu. Ví dụ trong ngơn ngữ

Pascal: dấu + biểu thị cho phép cộng, dấu - biểu thị cho dấu trừ …Phát biểu if
… then … có nghĩa là “nếu … thì làm …”.
Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngơn ngữ lập
trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán.
II. Cơ sở thực tiễn
Một số thuận lợi và khó khăn khi thực hiện nghiên cứu đề tài:

* Thuận lợi:
- Môn tin học là một môn mới nên học sinh hứng thú với mơn học, u
thích những giờ thực hành.
- Nhà trường quan tâm, tạo điều kiện về cơ sở vật chất, phòng máy thực
hành, máy chiếu, thư viện sách có nhiều tài liệu, sách tham khảo tin học.
- Đội ngũ giáo viên tin học trẻ, được đào tạo theo đúng chuyên ngành, có
nhiều tâm huyết, thường xuyên trao đổi chuyên môn, học hỏi kinh nghiệm và
góp ý, bổ sung cho nhau.
- Một số học sinh u thích mơn học tự nhiên, đam mê lập trình, nên các
em tỏ ra rất hứng thú và chăm chú trong tiết học lý thuyết, nhiệt tình say sưa giờ
thực hành, điều này mang lại niềm vui và sự động viên lớn cho giáo viên.
* Khó khăn:
- Vì là mơn tự nhiên, liên quan nhiều đến toán học, nên một số em có kiến
thức yếu bên tự nhiên tỏ ra ngại học, không tập trung cao
- Một số học sinh có tư tưởng mơn tin học là mơn phụ, khơng thi đại học,
khơng thi tốt nghiệp nên các em có suy nghĩ học đối phó, khơng chú trọng.
- Do phần lớn là học sinh nơng thơn, gia đình các em hầu như chưa có
máy tính, nên khả năng tự thực hành, ơn bài ở nhà khó.
- Cơ sở vật chất của nhà trường còn nhiều hạn chế cho việc dạy và học
theo phương pháp mới.
III. Biện pháp tổ chức thực hiện
1. Hướng dẫn lý thuyết
Khi dạy lý thuyết về cấu trúc rẽ nhánh, đầu tiên giáo viên phải làm sáng rõ

rẽ nhánh là gì, thơng qua những ví dụ cụ thể từ thực tiễn cuộc sống và trong toán
học.
Vd1: Nếu mai trời mưa thì đường sẽ rất trơn
Vd2: Nếu em học bài chăm chỉ thì em sẽ được điểm cao, khơng thì em sẽ
bị điểm kém
Vd3: Nếu n>0 thì n là số dương
Vd4: Nếu a>b thì giá trị lớn nhất là a, khơng thì giá trị lớn nhất là b
Giáo viên chỉ rõ cho học sinh thấy ở Vd1 và Vd3 là cách diễn đạt rẽ
nhánh dạng thiếu: Nếu... thì....Ở Vd2 và Vd4 là rẽ nhánh dạng đủ:
Nếu...thì...khơng thì ( hoặc có thể nói : Nếu... thì..., ngược lại thì....)
Để diễn đạt những câu lệnh có dạng rẽ nhánh như trên, ngơn ngữ lập trình
Pascal sử dụng 2 dạng cấu trúc rẽ nhánh If- then.
a) Dạng thiếu:
4

skkn


If <điều kiện> then <câu lệnh>;
Điều kiện

Đúng

Câu lệnh

Sai

+ Hoạt động: Nếu biểu thức điều kiện đúng thì câu lệnh được thực hiện,
điều kiện sai câu lệnh bị bỏ qua.
Vd1: Nếu n>0 thì n là số dương

=> If n> 0 then write (' n la so duong ');
Vd2: Nếu tam giác có kích thước 3 cạnh a=b=c thì là tam giác đều
=> if (a=b) and (b=c) then write(' la tam giac deu');
b) Dạng đủ:
if < điều kiện> then < câu lệnh 1> else < câu lệnh 2>;

Câu lệnh 2

Sai

Điều
kiện

Đúng

Câu lệnh 1

+ Hoạt động: Nếu biểu thức điều kiện đúng thì câu lệnh 1 được thực hiện,
điều kiện sai câu lệnh 2 được thực hiện.
vd1: if a>b then Max:=a else Max:=b;
vd2: Nếu a chia hết cho 2 thì a là số chẵn, khơng thì a là số lẻ
=> if a mod 2= 0 then write ('a la so chan') else write( ' a la so le ');
2. Hệ thống bài tập rẽ nhánh cơ bản.
Vì đây là nội dung đầu tiên trong chương trình dạy lập trình có cấu trúc,
thuộc bài 9: Cấu trúc rẽ nhánh, học sinh còn bỡ ngỡ khi viết chương trình, chưa
có thời gian để thực hành nhiều. Mặt khác, kiến thức rẽ nhánh được áp dụng rất
nhiều bài tập thực tiễn, và cả những bài tập của những chương sau, vì vậy tơi
muốn đưa hệ thống bài tập để học sinh nắm thật vững kiến thức, thực hành
thành thạo bài tập, và hình thành cho mình kỹ năng giải quyết những bài tập có
liên quan cấu trúc rẽ nhánh.

Hệ thống bài tập mà tôi đưa ra sẽ là từ những bài tập đơn giản và cơ bản
để học sinh có thể nắm vững kiến thức về rẽ nhánh là như thế nào, làm thế nào
để có thể chuyển từ ngơn ngữ tốn học sang câu lệnh lập trình? Những bài tốn
gắn liền với thực tế, và rất hay gặp trong tốn học, để những em có kiến thức
yếu về mơn tốn cũng có thể hiểu rõ được bản chất tốn học, hiểu rõ máy tính có
thể giải quyết các bài tốn tốn học thơng qua chương trình như thế nào. Qua
quá trình dạy học và khảo sát ở những năm trước, tơi nhận thấy nhiều em cịn
mơ hồ, lập trình là cái gì, nó để làm gì, nó có ứng dụng gì trong cuộc sống, có
5

skkn


thiết thực không. Nhiều khi các em không hiểu rõ bản chất, ứng dụng của môn
học, các em sẽ cảm thấy khơng cần thiết, sẽ khơng có niềm đam mê thật sự, dẫn
đến tinh thần học rời rạc, không chú tâm. Khi dạy lập trình, tơi thường nhấn
mạnh vào ý nghĩa và ứng dụng thực tế của môn học, và ứng dụng đó chính là đi
giải quyết các bài tốn mà các em đã biết, đang học, và gắn liền với cuộc sống.
Từ đó sẽ đem lại sự hứng khởi cho môn học, ý thức học tập của các em cũng
được nâng cao.
Khi đưa ra một bài toán, bao giờ việc đầu tiên tôi cũng yêu cầu HS xác
định bài tốn, cụ thể là xác định Input và Output, cơng việc này các em đã thành
thạo trong chương trình lớp 10, nên việc xác định khơng gặp khó khăn. Tiếp
theo giáo viên hướng dẫn bài tốn để các em có thể xác định được nội dung rẽ
nhánh của bài toán: "Nếu điều kiện xảy ra thì sẽ thực hiện gì, ngược lại điều
kiện khơng xảy ra thì thực hiện gì?". Khi đã hiểu được nội dung rẽ nhánh của
bài toán, giáo viên sẽ yêu cầu các em chuyển sang ngôn ngữ lập trình Pascal, có
thể những bài tốn đầu các em cịn gặp khó khăn, nhưng sau khi thực hiện một
số bài, các em sẽ quen dần với cách chuyển từ nội dung rẽ nhánh sang câu lệnh
rẽ nhánh, sẽ thành thạo hơn với các câu lệnh đã học. Giáo viên sẽ hướng dẫn kỹ

những bài tập đầu để các em hiểu rõ nội dung sau từ khóa Else là đi với câu lệnh
If nào? để các em phân biệt được sự rẽ nhánh. Đồng thời giáo viên cũng phải
rất chú ý cách trình bày viết câu lệnh, hướng dẫn các em cách viết câu lệnh,
cách trình bày chương tình sao cho khoa học, dễ nhìn và dễ hiểu. Mặt khác,
trong q trình dạy học ở những năm trước, tơi thấy nhìn chung khi học đến
câu lệnh ghép các em đang con rất mơ hồ, thường các em không biết khi nào
nên đặt cặp từ khóa begin ..end, hoặc là tại sao đoạn lệnh này lại có cặp từ
khóa Begin..End. Do đó, khi dạy nội dung cấu trúc rẽ nhánh, tơi đã đưa một số
bài tập có nội dung câu lệnh ghép, và trong q trình dạy, tơi hướng dẫn cụ thể
cho các em nội dung này. Sau khi đã biết chuyển từ nội dung rẽ nhánh sang
câu lệnh có nghĩa là học sinh đã nắm được cấu trúc rẽ nhánh của bài tốn, nắm
vững cấu trúc chương trình, các câu lệnh trong Pascal thì các em có thế viết
được chương trình hồn chỉnh.
Bài tốn 1: Nhập vào 2 số nguyên a, b. Tìm giá trị lớn nhất của 2 số đó (Max)
* HS Xác định bài tốn:
+ Input: 2 số nguyên a,b
+ Output: Giá trị Max (a, b)
Với bài tốn này, giáo viên có thể hướng dẫn học sinh làm theo 2 cách để
làm sáng tỏ câu lệnh rẽ nhánh dạng thiếu và dạng đủ:
a) Rẽ nhánh dạng thiếu:
* GV yêu cầu HS đưa ra ý tưởng bài toán
* GV hướng dẫn: việc tìm ra giá trị lớn nhất giữa 2 số thì thực tế rất đơn
giản, nhưng đối với máy tính thì giải quyết như thế nào? Đầu tiên ta có gán giá
trị Max nhận một trong 2 giá trị a hoặc b. Sau đó đem so sánh giá trị Max với
giá trị còn lại, nếu Max nhỏ hơn giá trị cịn lại thì Max sẽ thay đổi và nhận giá trị

6

skkn



đó, ngược lại Max sẽ giữ nguyên giá trị ban đầu, và khơng cần phải thực hiện
cơng việc gì nữa.
* HS xác định nội dung (ND) rẽ nhánh:
Đầu tiên gán Max nhận giá trị là a: Max:=a;
Nếu Max* HS viết câu lệnh rẽ nhánh:
If Max* GV hướng dẫn HS viết chương trình:
Program Tim_max;
Uses crt;
Var a, b: integer;
Begin
Write( ' nhap vao 2 so:');
Readln(a,b);
Max:=a;
If MaxWriteln( 'gia tri lon nhat la:', Max);
Readln;
End.
b) Rẽ nhánh dạng đủ:
* GV yêu cầu HS đưa ra ý tưởng bài toán
* GV hướng dẫn: So sánh 2 giá trị a và b, nếu giá trị a lớn hơn thì Max sẽ
nhận giá trị a, ngược lại Max nhận giá trị b.
* Xác định nội dung (ND) rẽ nhánh:
Nếu a>b thì Max:=a, ngược lại thì Max:=b
* HS viết câu lệnh rẽ nhánh:
If a> b then Max:=a else Max:=b;
* GV hướng dẫn HS viết chương trình:
Program Tim_max;

Uses crt;
Var a, b: integer;
Begin
Write( ' nhap vao 2 so:');
Readln(a,b);
If a>b then Max:=a else Max:=b;
Writeln( 'gia tri lon nhat la:', Max);
Readln;
End.
* GV kiểm tra lại chương trình, nhắc lại ý nghĩa từng câu lệnh
Từ bài toán 1, giáo viên có thể vận dụng để học sinh xây dựng bài tốn
tương tự: Tìm giá trị nhỏ nhất của 2 số a, b (Min). Có thể chỉ cần yêu cầu học
sinh lên viết câu lệnh rẽ nhánh, không cần viết chương trình.
Bài tốn 2: Phát triển bài tốn 1. Tìm giá trị lớn nhất của 3 số nguyên a, b, c
7

skkn


* Xác định bài toán:
+ Input: 3 số nguyên a, b, c
+Output: Max (a,b,c)
* GV yêu cầu HS đưa ra ý tưởng bài tốn
* GV Hướng dẫn: Muốn tìm giá trị lớn nhất của 3 hoặc 4 số thì trước hết
chúng ta phải đi tìm giá trị lớn nhất của từng cặp 2 số, sau đó lấy kết quả lớn
nhất đó đi so sánh với số cịn lại. Với bài toán này, giáo viên sẽ hướng các em
tới dạng toán mà trong chương trình có nhiều hơn một lệnh rẽ nhánh, để các em
làm quen, hiểu rõ cấu trúc.
* HS Xác định ND rẽ nhánh:
Nếu a>b thì Max:=a else Max:=b;

Nếu Max* Xác định câu lệnh rẽ nhánh
If a>b then Max:=a else Max:=b;
If Max* HS viết chương trình:
Program Max_3so;
Uses crt;
Var a, b, c: integer;
Begin
Write( ' nhap vao 3 so:');
Readln(a,b,c);
If a>b then Max:=a else Max:=b;
If MaxWriteln( 'gia tri lon nhat la:', Max);
Readln;
End.
* GV kiểm tra lại chương trình, nhắc lại ý nghĩa từng câu lệnh
Bài tốn 3: Nhập vào từ bàn phím số tự nhiên a. Kiểm tra xem a là số
chẵn hay lẻ?
* Xác định bài toán:
+ Input: số tự nhiên a
+ Output: a chẵn hoặc a lẻ
*GV hướng dẫn: Đặt câu hỏi:
- Một số như thế nào là số chẵn, số lẻ?
- Trong ngôn ngữ lập trình Pascal, số chẵn được viết như thế nào?
GV nhắc lại kiến thức về phép toán Div và Mod
* HS xác định ND rẽ nhánh:
Nếu a chia hết cho 2 thì a là số chẵn, ngược lại thì a là số lẻ.
* HS viết câu lệnh rẽ nhánh:
If a mod 2=0 then write (a, ' la so chan ')

else write (a, ' la so le ');
* HS viết chương trình:
8

skkn


Program Chan_le;;
Uses crt;
Var a: Byte;
Begin
Write( ' nhap vao so tu nhien:');
Readln(a);
If a mod 2 = 0 then write (a, ' la so chan ')
else write (a, ' la so le ');
Readln;
End.
* GV kiểm tra lại chương trình, nhắc lại ý nghĩa từng câu lệnh, nhắc học
sinh chú ý câu lệnh trước từ khóa Else khơng có dấu ";"
Tương tự bài tốn 2, có thể cho học sinh thực hành, kiểm tra một số có
chia hết cho 3, hoặc cho 5, cho 10. Yêu cầu học sinh lên bảng viết câu lệnh rẽ
nhánh cho từng trường hợp.
Bài tốn 4:Viết chương trình giải phương trình bậc nhất: ax+b = 0
* Xác định bài toán:
+ Input: nhập vào 2 số a,b
+Output: Nghiệm x của phương trình
* Hướng dẫn: Để viết được chương trình, học sinh phải nhớ lại những
trường hợp nghiệm của chương trình bậc nhất 1 ẩn. GV yêu cầu học sinh nhắc
lại cách biện luận giải phương trình bậc nhất
* HS xác định ND rẽ nhánh:

+ Nếu a = 0
- Nếu b = 0 thì phương trình vơ số nghiệm
- ngược lại b<>0 thì phương trình vơ nghiệm
+ Ngược lại nếu a<>0 thì phương trình có nghiệm duy nhất x=-b/a
* HS xác định câu lệnh rẽ nhánh:
+ HS có thể trình bày rẽ nhánh dạng thiếu:
If (a=0) and (b=0) then write (' pt vo so nghiem');
if (a=0) and( b<>0) then write (' pt vo nghiem');
if (a<>0) then write(' pt co nghiem duy nhat: x=',-b/a:5:2);
+ hoặc có thể trình bày rẽ nhánh dạng đủ (cấu trúc If lồng)
if a=0 then
if b=0 then write (' pt vo so nghiem')
else write(' pt vo nghiem')
else write(' pt co nghiem duy nhat x=',-b/a:5:2);
* Chú ý: giáo viên phải hướng dẫn cụ thể, làm sáng tỏ, câu lệnh else đi
với cấu trúc if nào, tránh để học sinh hiểu nhầm bản chất câu lệnh.
* HS viết chương trình:
Program Giai_pt_bac1;
Uses crt;
Var a, b: real;
9

skkn


Begin
Write( ' nhap vao 2 so:');
Readln(a,b);
if (a=0) and (b=0) then write (' pt vo so nghiem');
if (a=0) and( b<>0) then write (' pt vo nghiem');

if (a<>0) then write(' pt co nghiem duy nhat: x=',-b/a:5:2);
Readln;
End.
* GV kiểm tra lại chương trình
Bài tốn 5: Giải phương trình bậc 2: ax2+bx+c=0
* Xác định bài toán:
+ Input: nhập vào 3 số nguyên a,b,c
+ Output: nghiệm x của phương trình
* Hướng dẫn: Đây là bài toán quen thuộc mà các em hay gặp trong toán
học, GV yêu cầu HS trình bày cách giải phương trình bậc 2, củng cố lại kiến
thức toán học của các em.
* HS xác định ND rẽ nhánh:
Nếu Delta<0 thì phương trình vơ nghiệm
ngược lại nếu Delta=0 thì pt có nghiệm kép x= -b/2a
ngược lại Delta>0 thì pt có 2 nghiệm phân biệt:
x1=
x2=
* Trong bài tốn này, có câu lệnh ghép, GV cần phải hướng dẫn kỹ cho
HS cách sử dụng câu lệnh ghép, vì sao cần phải sử dụng câu lệnh ghép? Đối với
trường hợp Delta>0, sau câu lệnh Else có nhiều hơn 1 câu lệnh (cụ thể: câu lệnh
Write in kết quả, câu lệnh tính x1, x2) nên các câu lệnh này phải được đặt trong
cặp từ khóa Begin...end
* HS xác định câu lệnh rẽ nhánh:
If Delta<0 then Write( 'phuong trinh vo nghiem')
Else If Delta=0 then Write (' pt co nghiem kep x= ', -b/(2*a))
Else
Begin
Write( ' pt có 2 nghiem phan biet:');
x1:= (-b + sqrt(delta))/(2*a);
x2:= (-b - sqrt(delta))/(2*a);

writeln(‘ x1=’, x1:6:2,' x2:=’, x2:6:2);
End;
* Học sinh viết chương trình:
Program Giai_pt_bac2;
Uses crt;
Var a, b, c: integer;
10

skkn


delta, x1, x2: real;
Begin
Write( ' nhap vao 3 so:');
Readln(a, b, c);
Delta:= b*b - 4*a*c;
If Delta<0 then Write( 'phuong trinh vo nghiem')
Else If Delta=0 then Write (' pt co nghiem kep x= ', -b/(2*a))
Else
Begin
Write( ' pt có 2 nghiem phan biet:');
x1:= (-b + sqrt(delta))/(2*a);
x2:= (-b - sqrt(delta))/(2*a);
writeln(‘ x1=’, x1:6:2,’x2:=’, x2:6:2);
End;
Readln;
End.
* GV kiểm tra lại chương trình
Bài tập 6: Giải hệ phương trình bậc nhất 2 ẩn:
* Xác định bài tốn:

+ Input: 4 số a, b, c, d
+ Output: nghiệm x, y của hệ pt.
* Hướng dẫn: GV yêu cầu HS nhắc lại cách giải hệ phương trình bậc nhất
2 ẩn, các trường hợp nghiệm, điều kiện nghiệm thông qua định thức.
* HS xác định ND rẽ nhánh:
- Nếu dd = 0 thì
+ Nếu dx=0 và dy=0 thì hệ phương trình vơ số nghiệm
+ Ngược lại dx<>0 hoặc dy<>0 thì hệ phương trình vơ
nghiệm
- Ngược lại (dd<>0) thì hệ phương trình có nghiệm x=dx/dd, y=dy/dd
* HS xác định câu lệnh rẽ nhánh:
if dd = 0 then
if (dx=0) and (dy=0) then write (' he pt vo so nghiem')
else write (' he pt vo nghiem')
else write (' he pt co nghiem: x=', dx/dd:4:2, 'y=', dy/dd:4:2);
* Học sinh viết chương trình
Program he_pt_bac1;
Uses crt;
Var a, b, c, d, m, n : real;
dd, dx, dy: real;
Begin
write('nhap a='); Readln(a);
write('nhap b='); Readln(b);
11

skkn


write('nhap c='); Readln(c);
write('nhap d='); Readln(d);

write('nhap m='); Readln(m);
write('nhap n='); Readln(n);
dd:=a*d-b*c;
dx:=m*d-b*n;
dy:=a*n-c*m;
if dd = 0 then
if (dx=0) and (dy=0) then write (' he pt vo so nghiem')
else write (' he pt vo nghiem')
else write (' he pt co nghiem: x=', dx/dd:4:2, 'y=', dy/dd:4:2);
Readln;
End.
* GV kiểm tra lại chương trình
Bài tốn 7: Tính theo dương lịch, một năm thường có 365 ngày, nếu là
năm nhuận thì có 366 ngày, 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. Hãy lập trình nhập vào năm N, cho biết số
ngày của năm đó?
* Xác định bài tốn:
+ Input: Nhập vào năm N
+ Output: nếu N là năm nhuận thì số ngày =366, khơng thì số ngày=365
* Hướng dẫn: Học sinh thường quen với khái niệm năm thường và năm
nhuận, nhưng chưa biết cụ thể tính tốn như thế nào để biết đó là năm thường
hay năm nhuận, GV cần phải giải thích rõ vấn đề này cho HS. GV nhắc lại phép
toán và (And), hoặc ( or).
* HS xác định ND rẽ nhánh:
Nếu (N chia hết cho 400) hoặc (N chia hết cho 4 nhưng không chia hết
cho 100) thì số ngày = 366 ngược lại số ngày = 365
* HS xác định câu lệnh rẽ nhánh:
if ( N mod 400 = 0 ) or (( N mod 4=0) and (N mod 100 <>0)) then
SN:=366 else SN:=365;
* GV kiểm tra lại câu lệnh rẽ nhánh, chú ý khi dùng từ khóa or và and,

hướng dẫn kỹ cho những HS chưa viết được.
* Học sinh viết chương trình:
Program Nam_nhuan;
Uses crt;
Var N, SN: integer ;
Begin
Write( ' nhap vao nam can kiem tra: ');
Readln(N);
if (N mod 400 = 0 ) or (( N mod 4=0) and (N mod 100 <>0))
then SN:=366 else SN:=365;
Writeln( ' so ngay cua nam la:', SN);
12

skkn


Readln;
End.
* GV kiểm tra lại chương trình
Bài tốn 8: Nhập vào từ bàn phím 3 số nguyên a, b, c kiểm tra xem 3 số
đó có là 3 cạnh của tam giác không, nếu là 3 cạnh của tam giác thì tính chu vi,
diện tích của tam giác đó.
* Xác định bài toán:
+ Input: nhâp 3 số a, b, c
+ Output: nếu a, b, c là 3 cạnh của tam giác thì đưa ra của chu vi (C) và
diện tích của tam giác
* Hướng dẫn: Yêu cầu học sinh nhắc lại điều kiện để 3 giá trị thỏa mãn là
3 cạnh của tam giác?
-> Đk: a, b, c dương và a+b>c và b+c>a và a+c>b (các điều kiện này xảy
ra đồng thời

Nếu 3 giá trị thỏa mãn là 3 cạnh của tam giác thì cơng thức để tính chu vi
và diện tích của tam giác là gì? u cầu học sinh nhớ lại kiến thức toán học, nhớ
lại hệ thức hê-rơng để tính diện tích tam giác khi biết kích thước 3 cạnh.
* Xác định ND rẽ nhánh:
Nếu (a>0) và (b>0) và (c>0) và (a+b>c) và (b+c>a) và (a+c>b) thì a, b, c
là 3 cạnh tam giác
C=a+b+c;
P= C/2; ( Cần tính P để áp dụng cơng thức Hê-rơng)
S=
ngược lại a, b, c không là 3 cạnh của tam giác.
* Chú ý: Trường hợp 3 giá trị a, b, c thỏa mãn là 3 cạnh tam giác thì phải
thực hiện đồng thời nhiều công việc, giáo viên phải gợi mở, hướng HS sử dụng
câu lệnh ghép.
* Xác định cấu trúc rẽ nhánh:
IF (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a) and (a+c>b)
then
Begin
write ( 'a, b, c là 3 canh tam giac');
C:=a+b+c;
P:= C/2;
S:= Sqrt((P*(P-a)*(P-b)*(P-c));
Writeln (' chu vi la:', C);
Writeln (' dien tich la:', S);
End
Else Write ('a, b, c khong la 3 canh cua tam giac');
* Học sinh viết chương trình:
Program Tam_giac1;
Uses crt;
Var a, b, c: integer;
13


skkn


C, P: word;
Begin
Write( ' nhap vao 3 so:');
Readln(a,b,c);
IF (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a)
and (a+c>b) then
Begin
write ( 'a, b, c là 3 canh tam giac');
C:=a+b+c;
P:= C/2;
S:= Sqrt((P*(P-a)*(P-b)*(P-c));
Writeln ('chu vi la:', C);
Writeln ('dien tich la:', S);
End
Else Write ('a, b, c khong la 3 canh cua tam giac');
Readln;
End.
* GV kiểm tra lại chương trình
Bài tốn 9: Nhập vào 3 cạnh của một tam giác, cho biết tam giác đó
thuộc loại tam giác gì (cân, đều, vng, hay thường)
* Xác định bài toán:
+ Input: 3 cạnh tam giác: a, b, c
+ Output: tam giác đó là cân hoặc đều hoặc vng hoặc thường
* Hướng dẫn: Đối với bài tốn này khơng cần kiểm tra điều kiện tam
giác vì đề bài đã cho: kích thước a, b, c là 3 cạnh của tam giác. Nếu bài toán
yêu cầu kiểm tra điều kiện thì ta lại áp dụng điều kiện kiểm tra giống bài toán 8

ở trên.
Điều kiện để tam giác là tam giác vuông, cân, đều khi nào? yêu cầu học
sinh nhắc lại kiến thức toán học.
+a=b=c
=> tam giác đều
+ a = b hoặc b = c hoặc c = a => tam giác cân
+ (a2=b2+c2) hoặc (b2=a2+c2) hoặc (c2=a2+b2) => tam giác vng
+ trường hợp cịn lại là tam giác thường
*HS xác định ND rẽ nhánh:
Nếu (a=b) and (b=c) thì là tam giác đều,
ngược lại nếu (a=b) hoặc (b=c) hoặc (c=a) thì là tam giác cân
ngược lại nếu (a2=b2+c2) hoặc (b2=a2+c2) hoặc (c2=a2+b2)
thì là tam giác vng
ngược lại là tam giác thường
* HS xác định cấu trúc rẽ nhánh:
If (a=b) and (b=c) then write(' la tam giac deu')
else
If (a=b) or (b=c) or (c=a) then write(' la tam giac can')
14

skkn


else
if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b)
then write(' la tam giac vuong')
else write(' la tam giac thuong');
* Học sinh viết chương trình:
Program tam_giac2 ;
Uses crt;

Var a, b,c : byte;
Begin
Write( ' nhap vao 3 canh tam giac:');
Readln(a, b, c);
If (a=b) and (b=c) then write(' la tam giac deu')
else
If (a=b) or (b=c) or (c=a) then write(' la tam giac can')
else
if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b)
then write(' la tam giac vuong')
else write(' la tam giac thuong');
Readln;
End.
* GV kiểm tra lại chương trình
Bài tốn 10: Nhập vào 3 số nguyên m, n, k. Kiểm tra xem 3 số có là một cấp
số cộng, nếu 3 số lập thành một cấp số cộng thì tính và đưa ra tổng của 3 số đó.
* Xác định bài toán:
+ Input: 3 số nguyên m, n, k
+ Output: nếu m, n, k là cấp số cộng thì đưa ra tổng (S) của 3 số
* Hướng dẫn: Trong chương trình tốn lớp 11, các em đã được tìm hiểu
kiến thức về cấp số cộng:
Cấp số cộng là một dãy số mà trong đó, kể từ số hạng thứ 2, mỗi số hạng
đều bằng tổng của số hạng đứng ngay trước nó và một số d khơng đổi, nghĩa là:
Un=Un-1+d
Vậy nếu m, n, k là một cấp số cộng thì phải thỏa mãn điều kiện gì? Yêu
cầu học sinh trả lời.
Theo lý thuyết thì n=m+d;
k=n+d
hay nói cách khác: n-m=k-n
* HS xác định ND rẽ nhánh:

Nếu n-m=k-n thì m, n, k là một cấp số cộng: S=m+n+k
ngược lại m, n, k không là cấp số cộng
* HS xác định cấu trúc rẽ nhánh:
if n-m=k-n then
begin
writeln (m:2, n:2, k:2, ' la cap so cong');
15

skkn


S:=m+n+k;
Writeln (' tong la:', S);
end
Else writeln (m:2, n:2, k:2, ' khong la cap so cong');
* Học sinh viết chương trình
Program Cap_so_cong;
Uses crt;
Var m, n, k, s: integer;
Begin
Write( ' nhap vao 3 so:');
Readln(m, n, k);
if n-m=k-n then
begin
writeln (m:2,n:2,k:2, ' la cap so cong');
S:=m+n+k;
Writeln (' tong la:',S);
end
Else writeln (m:2, n:2, k:2, ' khong la cap so cong');
Readln;

End.
* GV kiểm tra lại chương trình
3. Bài tập rèn luyện
HS có thể thực hành tại nhà, hoặc thực hành trên phòng máy vào các giờ
thực hành, giáo viên cần phải khuyến khích HS thực hành nhiều để các em thành
thạo với máy tính, nhận ra lỗi và biết cách sửa lỗi lập trình, khuyến khích các em
tìm thêm tài liệu, bài tập, tìm ra những phương pháp lập trình mới, giải quyết
được bài tốn khó hơn, nâng cao khả năng lập trình.
BT1: Nhập vào số tự nhiên a, kiểm tra xem a có là số chính phương hay khơng
Hướng dẫn: Giáo viên phải chỉ rõ cho HS biết số chính phương là số như thế
nào? Từ đó gợi mở để các em tìm ra điều kiện để kiểm tra số chính phương.
BT2: Nhập vào số bán kính đường trịn, tọa độ điểm A(x,y). Kiểm tra xem A có
thuộc đường trịn hay khơng?
BT3: Kiểm tra một số có là số ngun tố hay khơng?
Hướng dẫn: Số nguyên tố là số chỉ có 2 ước là 1 và chính nó.
BT4: Nhập vào một số tự nhiên, kiểm tra số đó có là số hồn hảo?
Hướng dẫn: Số hồn hảo là số có tổng các ước (trừ nó) bằng chính số đó
VD: số 6=1+2+3 ( số 6 có ước 1, 2, 3)
IV. Kết quả kiểm nghiệm
Thông qua quá trình dạy thực nghiệm ở lớp 11B2 và 11B5 năm học 20202021, áp dụng phương pháp đổi mới dạy học, thay đổi tư duy của học sinh, giáo
viên đóng vai trị là người dẫn dắt, gợi mở, học sinh đóng vai trị chủ đạo, giải
quyết vấn đề, tơi nhận thấy sự thay đổi, tiến bộ rõ rệt ở các em:

16

skkn


- Các em khơng cịn thụ động trong cách học, tự tìm hiểu, phân tích vấn
đề, nhìn nhận vấn đề, tự tìm ra hướng giải quyết.

- Tiết học lý thuyết luôn sôi động, hào hứng, tiết thực hành luôn nghiêm
túc và hiệu quả.
- HS cảm thấy hứng thú khi tự mình giái quyết được bài tốn, thực hành
chạy chương trình cho ra kết quả chính xác
- Khi GV giao bài tập về nhà, các em tự giác làm bài, tự giác hỏi GV
những chỗ cịn vướng mắc, khó hiểu
- Vì các em đã nắm vững kiến thức rẽ nhánh nên khi gặp bài tập ở những
chương sau có liên quan đến cấu trúc rẽ nhánh, các em không những không bị
qn kiến thức mà cịn nhanh chóng viết được chương trình.
Đối với lớp đối chứng 11B1 và 11B3, vẫn áp dụng phương pháp dạy cũ,
học sinh được làm bài tập và thực hành ít, nên hiệu quả học tập chưa tốt, các em
cịn rất lúng túng khi viết chương trình, rất hay quên cấu trúc câu lệnh. Với
những bài tập ở các chương sau có nội dung rẽ nhánh, thường các em không viết
được, khả năng tự học, tự phân tích bài tốn và thực hành cịn rất hạn chế.
Thơng qua q trình giảng dạy trên lớp, thơng qua các tiết thực hành, bài tập
giao về nhà, đánh giá qua bài kiểm tra 1 tiết. Kết quả thực nghiệm cụ thể như sau:
* Kết quả so sánh lớp 11B1 và 11B2:

Lớp 11B1
40 hs

Số lượng
Giỏi
Khá
Trung bình
Yếu

4 hs
21 hs
12 hs

3 hs

10 %
52.5 %
30 %
7.5 %

5 hs
24 hs
10 hs
1 hs

Lớp 11B2
40 hs
12.5 %
60 %
25 %
2.5 %

BIỂU ĐỒ SO SÁNH LỚP 11B1 VÀ 11B2
70 %
60 %

60 %

52.5 %

50 %
40 %


Lớp 11B1
30 %

30 %
20 %
10 %

Lớp 11B2

25 %

10 %

12.5 %

7.5 %
2.5 %

0%
Giỏi

Khá

Trung
bình

Yếu

17


skkn


* Kết quả so sánh lớp 11B3 và 11B5:

Lớp 11B3
42 hs
3 hs
7.1 %
12 hs
28.6 %
22 hs
52.4 %
5 hs
11.9 %

Số lượng
Giỏi
Khá
Trung bình
Yếu

Lớp 11B5
41 hs
4 hs
17 hs
17 hs
3 hs

9.6 %

41.5 %
41.5 %
7.4 %

BIỂU ĐỒ SO SÁNH LỚP 11B3 VÀ 11B5
60 %

52.4 %

50 %
41.5 %

40 %

41.5 %

Lớp 11B3

28.6 %

30 %

Lớp 11B5

20 %
10 %

11.9 %
7.4 %


9.6 %
7.1 %

0%
Giỏi

Khá

Trung
bình

Yếu

18

skkn