Tải bản đầy đủ (.doc) (31 trang)

skkn ứng dụng lập trình ôn tập củng cố toán 10,11

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 (238.03 KB, 31 trang )

MỤC LỤC
I. TÊN SÁNG KIẾN, LĨNH VỰC ÁP DỤNG..................................................................3
II. NỘI DUNG SÁNG KIẾN.............................................................................................3
1. Giải pháp cũ thường làm.............................................................................................3
2. Giải pháp cải tiến........................................................................................................4
III. HIỆU QUẢ KINH TẾ VÀ XÃ HỘI............................................................................5
1. Hiệu quả kinh tế..........................................................................................................5
2. Hiệu quả xã hội...........................................................................................................5
IV. ĐIỀU KIỆN VÀ KHẢ NĂNG ÁP DỤNG..................................................................5
1. Điều kiện áp dụng:....................................................................................................5
2. Khả năng áp dụng.....................................................................................................5
PHỤ LỤC 1:
CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN.................................................................................7
PHỤ LỤC 2:
HỆ THỐNG BÀI TẬP TÍCH HỢP TOÁN PHỔ THÔNG VÀ CÁC BÀI TOÁN THỰC
TẾ (LỚP 10, LỚP 11).......................................................................................................8
PHỤ LỤC 3:
TÀI LIỆU THAM KHẢO...............................................................................................30

Page 1


CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
ĐƠN YÊU CẦU CÔNG NHẬN SÁNG KIẾN
Kính gửi: Hội đồng sáng kiến Sở Giáo dục và Đào tạo Ninh Bình
Chúng tôi ghi tên dưới đây
TT

Họ và tên


Ngày tháng Nơi công
năm sinh
tác

Tỷ lệ (%) đóng
Trình độ
Chức vụ
góp vào việc tạo
chuyên môn
ra sáng kiến

1
2
3
4
I. TÊN SÁNG KIẾN, LĨNH VỰC ÁP DỤNG
1. Tên sáng kiến:
Là nhóm đồng tác giả đề nghị xét công nhận sáng kiến “Sử dụng chương trình
Pascal để giải một số bài toán trong toán học THPT và trong thực tiễn”
2. Lĩnh vực áp dụng
Đề tài nghiên cứu trong phạm vi Tin học 11
II. NỘI DUNG SÁNG KIẾN
1. Giải pháp cũ thường làm
1.1. Thực trạng của giải pháp
Trong quá trình giảng dạy, đa số giáo viên đưa các bài toán gần gũi quen thuộc
vào các tiết dạy nhưng vẫn còn rất hạn chế. Các bài toán thực tế chủ yếu lấy trong sách
giáo khoa, đôi khi còn bị bỏ qua. Bên cạnh đó học sinh còn quên kiến thức toán học dẫn
đến việc xác định thuật toán gặp khó khăn.
1.2. Ưu điểm và hạn chế
+ Ưu điểm:

- Tốn ít thời gian không phải chuẩn bị nhiều
- Học sinh vận dụng các kĩ năng linh hoạt trong việc lập trình các bài toán đơn giản
và phức tạp
Page 2


- Rèn kĩ năng ghi nhớ, rèn luyện tư duy logic
+ Hạn chế
- Dạy học vẫn mang nặng về lý thuyết dẫn đến kĩ năng giải quyết các vấn đề thực
tiễn thông qua khả năng vận dụng còn hạn chế. Dẫn đến các chương trình khô
khan khó hiểu không liền mạch kết hợp ngôn ngữ lập trình và thuật toán, thiếu
tính thực tiễn và giảm khả năng sáng tạo của học sinh.
- Học sinh thực hành bằng cách ghi nhớ máy móc, làm theo khuôn mẫu yêu cầu đặt
ra, dẫn đến tâm lý chán nản, ngại học, học thụ động, không có phương pháp tự
học, học trước quên sau.
2. Giải pháp cải tiến
Để khắc phục những hạn chế của phương pháp cũ, chúng tôi đã nghiên cứu giải
pháp tích hợp một số bài toán thông dụng toán THPT (toán 10 và toán 11) và bài toán
thực tiễn dạy học lập trình trong tin học 11.
(Bảng mô tả chi tiết xem PHỤ LỤC 2)
2.1. Cơ sở của giải pháp
Nếu xây dựng được một hệ thống các bài toán thông dụng chương trình phổ thông
và bài toán thực tế vào các tiết dạy giúp học sinh yêu thích hơn, chủ động tìm tòi hơn để
các em nắm bắt các kiến thức và bồi dưỡng năng lực giải toán cũng như lập trình, qua
đó vận dụng vào thực tiễn.
(Bảng mô tả chi tiết xem PHỤ LỤC 1)
2.2. Bản chất của giải pháp
- Xây dựng phương pháp học tập hiệu quả phù hợp, lấy học sinh làm trung tâm.
- Xây dựng hệ thống các bài toán thực tiễn để lập trình cho phù hợp.
- Học sinh liên hệ thực tế, chủ động tích cực trong học tập.

2.3. Tính mới, tính sáng tạo của giải pháp
Học sinh sử dụng lập trình chương trình đơn giản, cấu trúc lặp và rẽ nhánh cho
những bài toán quen thuộc đã học trong chương trình toán 10, toán 11 và các bài toán
thực tế. Trên cơ sở học sinh ôn lại các kiến thức toán học mới học và chạy các test vừa
giúp học sinh củng cố kiến thức toán, tin vừa hứng thú tìm tòi thuật toán để viết chương
trình thực hành trên máy.
+ Đối với giáo viên
- Thực hiện tốt chủ trương đổi mới dạy học lấy học sinh làm trung tâm.
- Kích thích khả năng sáng tạo của học sinh và giáo viên.
Page 3


- Rèn luyện khả năng ứng dụng công nghệ thông tin trong dạy học.
- Tạo không khí vui vẻ trong tiết học.
+ Đối với học sinh
- Tạo hứng thú cho học sinh trong việc học toán và lập trình
- Kích thích tính chủ động, tích cực của học sinh và tính sáng tạo của mỗi học sinh.
- Rèn luyện kĩ năng cho học sinh về sử dụng lập trình đơn giản và cấu trúc rẽ nhánh, cấu
trúc lặp cho các bài toán.
+ Hiệu quả giảng dạy
Chúng tôi trong suốt quá trình giảng dạy luôn băn khoăn làm sao để học sinh yêu
thích môn toán và lập trình, làm sao để học sinh vận dụng kiến thức toán học vào thực
tiễn. Khi tích hợp toán học vào lập trình, sử dụng ngôn ngữ pascal để lập trình các bài
toán đã học trong toán THPT và thực tiễn chúng tôi thấy các em hứng thú hơn đặc biệt
qua thực hành trên máy với nhiều bộ test.
III. HIỆU QUẢ KINH TẾ VÀ XÃ HỘI
1. Hiệu quả kinh tế
Học sinh khi học lập trình thông qua tích hợp các bài toán giúp học sinh hứng thú
trong việc tiếp thu kiến thức và hình thành kỹ năng của học sinh. Học sinh có vốn kiến
thức toán học và lập trình tốt có thể tiếp cận với cơ hội nghề nghiệp tương lai và hoạt

động lao động năng động sáng tạo trong thời đại công nghiệp hóa hiện đại hóa, công
nghệ số.
2. Hiệu quả xã hội
- Tiết học sinh động, linh hoạt hơn, không còn thụ động, học đi đôi với hành.
- Học sinh liên hệ giữa toán vận dụng lập trình, ứng dụng thực tế.
IV. ĐIỀU KIỆN VÀ KHẢ NĂNG ÁP DỤNG
1. Điều kiện áp dụng:
- Giáo viên hệ thống kiến thức lập trình và các kiến thức toán học liên quan qua
đó đưa một số các bài toán phù hợp với từng tiết dạy.
- Học sinh nắm được kiến thức cơ bản, áp dụng kiến thức đã học để đưa ra thuật
toán, từ đó chuyển sang viết chương trình. Qua đó tạo tính sáng tạo, tìm tòi các bài tập
tương tự.
2. Khả năng áp dụng
Sáng kiến này có khả năng áp dụng đối với tất cả giáo viên và học sinh trong một
số tiết học Tin học 11.
Page 4


3. Danh sách những thành viên tham gia dự án
T

Họ và tên

Ngày tháng
Nơi công tác
năm sinh

Chức vụ

Trình độ

chuyên môn

Nội dung công
việc hỗ trợ

1
2
3
4

Chúng tôi xin cam đoan mọi thông tin nêu trên đơn là trung thực đúng sự thật và
chịu hoàn toàn trách nhiệm trước pháp luật
......., ngày 25 tháng 4 năm 2019
XÁC NHẬN
CỦA LÃNH ĐẠO ĐƠN VỊ CƠ SỞ

Người nộp đơn
Đại diện nhóm đồng tác giả
(Kí và ghi rõ họ tên)

Page 5


PHỤ LỤC 1:
CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN
I. Cơ sở lý luận
Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương
pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động
học tập. Điều24.2 của Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ thông phải
phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm

của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng
kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho
học sinh”. Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã
được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp
dạy học ở trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại
thói quen học tập thụ động. Với một số nội dung trong đề tài này, học sinh có thể tự học,
tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể.
Làm thế nào để tìm kiếm và xây dựng tích hợp các bài toán THPT và thực tế để
giúp học sinh rèn luyện khả năng toán học và yêu thích lập trình hơn? Đây là câu hỏi
băn khoăn của các nhà giáo dục, giáo viên. Qua tìm hiểu thực tiễn tôi thấy rằng các bài
toán được tìm thấy thông qua các hoạt động:
- Tìm hiểu tài liệu,tìm kiếm trên internet.
- Tham khảo bộ môn Toán học.
- Từ các vấn đề cuộc sống.
II. Cơ sở thực tiễn
Qua thực tế giảng dạy các năm qua, tôi nhận thấy khi học đến chương trình tin
học lớp 11 đa số học sinh đều nhận xét bộ môn tuy khó nhưng gây được hứng thú khi
giải quyết được các bài toán toán học bằng máy tính với nhiều bộ test khác nhau. Nhiều
học sinh tỏ ra rất thích thú khi lập trình để giải được một bài toán và cho chạy ra kết quả
đúng. Từ đó hăng say lập trình giải quyết các bải toán khó hơn. Bằng cách này sẽ giúp
phần nào cho các em trong việc học toán, một môn khá khó.
Các bài toán thông dụng và thực tế trong quá trình giảng dạy thường được sử dụng:
- Sử dụng ngôn ngữ lập trình viết chương trình đơn giản các bài toán thông dụng
lớp 10, 11 và các bài toán thực tiễn
- Sử dụng ngôn ngữ lập trình cấu trúc rẽ nhánh và câu trúc lặp viết chương trình
các bài toán lớp 10 và 11, các bài toán thực tiễn.
Page 6


HỆ THỐNG BÀI TẬP TÍCH HỢP TOÁN PHỔ THÔNG VÀ CÁC BÀI TOÁN

THỰC TẾ (LỚP 10, LỚP 11)
I. Phần I: Bài tập vận dụng cho chương II – Chương trình đơn giản
1. Tóm tắt kiến thức:
1.1. Chương trình gồm 2 phần: Khai báo, thân
a. Phần khai báo
* Tên chương trình
Program <tên chương trình>;
VD:
Program PT_Bac2;
Program VD;
* Thư viện
Uses <tên thư viện>;
VD:
Uses crt; { thư viện crt chứa các chương trình vào ra chuẩn làm việc với màn hình và
bàn phím}
Uses graph; { thư viện graph chứa các hàm đồ họa}
* Hằng
Const <tên hằng>=<giá trị hằng>;
VD:
Const n=100;
Const kq=’Ket qua’;
* Biến
Var <tên biến>: <kiểu dữ liệu>;
VD: Var x:integer;
b. Phần thân chương trình
Dãy lệnh trong phạm vi được xác định bởi cặp dấu mở đầu và kết thúc tạo thành thân
chương trình
Begin
[<dãy lệnh>]
End.

1.2. Các từ khóa khi viết chương trình: Begin, end, program, var, const, uses
1.3. Các kiểu dữ liệu
Page 7


+ Kiểu nguyên
Trong máy tính, kiểu nguyên là hữu hạn và có thứ tự

Kiểu
Byte
Integer
Word
Longint

Bộ nhớ lưu
trữ một giá trị
1 byte
2 byte
2 byte
4 byte

Phạm vi giá
trị
0 → 255
-215 → 215 – 1
0 → 216-1
-231 → 231-1

+ Kiểu thực


Real

Bộ nhớ lưu
trữ một giá
trị
6 byte

Extended

10 byte

Kiểu

Phạm vi giá trị
0 hoặc giá trị tuyệt đối nằm trong phạm vi 10-38 Đến 1038
0 hoặc giá trị tuyệt đối nằm trong phạm vi 10 -4932 đến
104932

+ Kiểu kí tự
- Kí tự: là tập các kí tự thuộc bộ mã ASCII gồm 256 kí tự được đánh số từ 0 đến 255
- Kiểu kí tự: là tập giá trị các kí tự trong bộ mã ASCII, được dùng khi thông tin là các kí tự

Bộ nhớ lưu trữ
Phạm vi giá trị
một giá trị
Char
1 byte
256 kí tự trong bộ mã ASCII
- Ứng dụng: Lưu trữ họ tên học sinh, địa chỉ…
+ Kiểu lôgic

Kiểu

- Được dùng khi kiểm tra một điều kiện hoặc tính giá trị của một biểu thức logic

Kiểu
Boolean

Bộ nhớ lưu trữ một giá trị
1 byte

Phạm vi giá trị
True hoặc False

* Nhập dữ liệu vào từ bàn phím
- Cú pháp:
Read(<danh sách biến vào>);
Readln(<danh sách biến vào>);
Đưa dữ liệu ra màn hình
- Cú pháp:
Write(<danh sách kết quả ra>);
Writeln(<danh sách kết quả ra>);
* Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình.
Page 8


- Soạn thảo: Gõ nội dung chương trình gồm phần khai báo và phần thân.
- Lưu chương trình:
C1: File  Save gõ tên file
C2: F2
- Biên dịch: Alt + F9

- Chạy chương trình: Ctrl + F9
- Đóng cửa sổ chương trình: Alt+F3
- Thoát phần mềm: Alt+X.
2. Các bài toán thông dụng
Bài toán 1: Một người đi xe đạp với tốc độ 10km/h và một người đi xe máy với tốc độ
30km/h cùng xuất phát từ một vị trí, cùng một thời điểm và đi cùng một hướng. Viết
chương trình tính khoảng cách giữa hai người sau t giờ (t là số nguyên dương, t �20 ).
Dữ liệu t được nhập vào từ bàn phím. Kết quả đưa ra màn hình. (Dạng dễ)
Phương án giải quyết
Khoảng cách: d
- Quãng đường người đi xe đạp sau thời gian t: 10.t
- Quãng đường người đi xe máy sau thời gian t: 30.t
- D = 30t-10t
- Xác định các biến: d, t
Chương trình:
Var t: byte; d:word;
Begin
Write(‘Nhap sau thoi gian t =’); readln(t);
D:=30*t -10*t;
Write(‘Khoang cach hai nguoi sau’, t, ‘ gio la’, d);
Readln
End.
Bài toán 2: Nam gọi điện thoại trao đổi với Huy. Cứ mỗi phút dùng điện thoại phải trả a
đồng. Cuộc trao đổi kéo dài t phút. Viết chương trình tính và đưa ra màn hình số tiền mà
mẹ bạn Nam cuối tháng phải thanh toán cho cuộc trao đổi này. Các dữ liệu a và t
(nguyên dương) được nhập vào từ bàn phím. (Dạng dễ)
Phương án giải quyết
Số tiền = số phút (a) * thời gian (t)
Page 9



Chương trình
Var s,t,a:word;
Begin
Write(‘Nhap sau thoi gian t =’); readln(t);
Write(‘Nhap so tien phai tra 1 phut’); readln(a);
s:=a*t;
Write(‘so tien phai tra sau’, t, ‘ phut la’, s);
Readln
End.
Bài 9/161SGK Đại số 10
Viết chương trình tính giá trị của các biểu thức lượng giác.
a) 4(Cos24o + Cos48o - Cos84o-Cos12o)
b)

9Sin Cos

Cos

Cos

Cos

c) Tan9o - Tan63o+Tan81o- Tan27o
phương pháp giải quyết
- Giúp học sinh hiểu qui tắc tính hàm lượng giác trong Pascal. Đó là đối số không nhận
giá trị độ mà nhận giá trị radian thông qua sử dụng hằng Pi có sẵn trong NNLT.
- Đối số của các hàm này chỉ tính theo đơn vị Radian và được đặt trong ngoặc tròn ().
Muốn tính được giá trị của một biểu thức trên máy tính thì người lập trình cần phải đưa
về ngôn ngữ để máy tính hiểu được thông qua các quy tắc, quy ước, cú pháp của từng

ngôn ngữ lập trình.
Chương trình
Program Bai9Tr161;
Begin
Writeln(‘KQ cau a = ’, 4*(Cos(24*pi/180) + Cos(48*pi/180)-Cos(840-Cos120)));
Writeln(‘KQ cau b = ’, 96*SQRT(3)*Sin(pi/48)*Cos(pi/48) Cos(pi/24)* Cos(pi/12)*
Cos(pi/6));
Writeln(‘KQ cau c = ’, Sin(9*pi/180)/Cos(9*pi/180) - Sin(63*pi/180)/Cos(63*pi/180)+
Sin(81*pi/180)/Cos(81*pi/180) - Sin(27*pi/180)/Cos(27*pi/180));
Readln;
End.
Page 10


Bài 1/59 SGK Hình học 10
Cho tam giác ABC vuông tại A, góc B =580 và cạnh a = 72cm. Tính góc C, cạnh b, cạnh
c và đường cao ha
Phương án giải quyết
- Các công thức lượng giác trong tam giác vuông. b=a.SinB;c=a.SinC;ha=b.SinC.
- Sử dụng câu lệnh gán trong chương trình là sẽ tính được yêu cầu của bài toán. Cuối
cùng là in kết quả ra màn hình.
Chương trình:
Program Bai1Tr59Hinh10;
Var gocc,b,c,ha,a:real;
Begin
a:=72;
gocc:=180-90-58;
b:=a*Sin(58*pi/180);
c:=a*Sin(gocc*pi/180);
ha:=b*Sin(gocc*pi/180);

Writeln(‘Do lon goc C= ‘,gocc);
Writeln(‘Canh b = ‘,b); Writeln(‘Canh c = ‘,c);
Writeln(‘Duong cao ha = ‘,ha);
Readln;
End.
Bài 4/59 SGK Hình học 10
Tính diện tích S của tam giác có số đo các cạnh lần lượt là 7,9,12.
Phương án giải quyết
Công thức tính diện tích tam giác thông qua độ dài các cạnh là công thức Herông.
S= sqrt(p ( p − a)( p − b)( p − c )) với p là nửa chu vi.
Chương trình:
Program Bai4Tr59Hinh10;
Var s,a,b,c,p:real;
Begin
Write(‘Nhap vao do lon cac canh a,b,c =’ );
Readln(a,b,c);
P:=(a+b+c)/2;
Page 11


s:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln(‘Dien tich tam giac la: ‘,s:5:2);
Readln;
End.
Bài 6/59 SGK Hình học 10
Tam giác ABC có các cạnh a=8cm; b=10cm và c=13cm. Tính độ dài trung tuyến
AM của tam giác ABC.
Phương án giải quyết
Tương tự mục tiêu trên thông qua bài này học sinh được học, nhớ lại kiến thức trong
toán học và từ đó vận dụng viết chương trình trong pascal. Qua đây các em nhìn thấy

được những ứng dụng cụ thể của ngôn ngữ lập trình trong việc giải toán.
Công thức tính độ lớn các trung tuyến ứng với mỗi cạnh là:
ma2 =AM2 = (2(b2 + c 2 ) – a2)/4
mb2 = (2(a2 + c2 ) – b2)/4
mc2 = (2(b2 + a2 ) – c2)/4
Chương trình
Var a,b,c,ma:real;
Begin
a:=8;b:=10; c:=13;
Ma:=sqrt((2*(b*b+c*c)-a*a)/4);
Writeln(‘Do dai trung tuyen AM la:’, ma,’ cm’);
Readln
End.
Bài toán tính diện tích tổng hợp:
Cho tam giác đều ABC độ dài cạnh là a được nhập vào từ bàn phím. Tính diện
tích tam giác và diện tích hình vành khăn được tạo bởi đường tròn nội, ngoại tiếp tam
giác ABC.
Phương án giải quyết
- Nhắc lại một số công thức trong phần giải tam giác của lớp 10 nếu các em quên.

Page 12


S = a.b. sinC hoặc S= b.c.sinA; S = a.c.sinB

S=

, R bán kính đường tròn ngoại tiếp tam giác

hoặc S= p.r, r là bán kính đường tròn nội tiếp tam giác

- Khai báo biến a,biến r,d lần lượt ứng với bán kínhđường tròn nội, ngoại tiếp tam giác.
Biến Stamgiac, Svanhkhan.
- Các công thức vận dụng Stamgiac=

r=

d=

;

với p= ;

;

Svanhkhan = pi.(d2-r2)
chương trình:
const pi=3.14;
Var stamgiac,a,p,d,r,Svanhkhan:real;
Begin
write(’Moi nhap a: ‘); Readln(a);
P:=(a+a+a)/2;
Stamgiac:=sqrt(p*(p-a)*(p-a)*(p-a));
D:=Stamgiac/(4*a*a*a);
R:=Stamgiac/p;
Svanhkhan:=pi*(sqr(d)-sqr(r));
Writeln(‘Dien tichtam giac la: ‘,stamgiac:6);
Writeln(‘Dien tich vanh khan: ‘, svanhkhan: 6);
Readln
End.
II. BÀI TẬP VẬN DỤNG CHO CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP

1. Kiến thức trọng tâm
Page 13


a. Câu lệnh rẽ nhánh IF-THEN
Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh IF - THEN. Pascal có 2
dạng câu lệnh IF - THEN
* Dạng thiếu :
If <Điều kiện> Then ;
* Dạng đủ :
If <Điều kiện> Then Else ;
Trong đó :
- Đ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à một câu lệnh của Pascal.
Hoạt động :
- Ở dạng thiếu : Đ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.
- Ở dạng đủ : Điều kiện cũng đượ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.
b. Câu lệnh lặp
Tất cả các ngôn ngữ lập trình đều có câu lệnh để mô tả cấu trúc lặp. Trong ngôn ngữ lập
trình Pascal ta có thể sử dụng 2 loại câu lệnh mô tả cấu trúc lặp là :
* Loại 1: Lặp với số lần biết trước :
+ Dạng lặp tiến :
For := To Do ;
Trong đó:
- For, To, Do là các từ khoá.
- Biến đếm là biến đơn, thường có kiểu nguyên.
- Giá trị đầu, Giá trị cuối là các biểu thức có giá trị 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. Nếu Giá trị đầu lớn hơn Giá trị cuối thì vòng

lặp không được thực hiện.
- Câu lệnh là một câu lệnh trong Pascal, có thể là câu lệnh đơn hoặc câu lệnh ghép.
Hoạt động:
Ở dạng lặp tiến, câu lệnh viết sau từ khóa 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 :
For := Downto Do ;
Page 14


Trong đó:
- For, Downto, Do là các từ khoá.
- Biến đếm là biến đơn, thường có kiểu nguyên.
- Giá trị đầu, Giá trị cuối là các biểu thức có giá trị cùng kiểu với Biến đếm.
- Câu lệnh là một câu lệnh trong Pascal, có thể là câu lệnh đơn hoặc câu lệnh ghép.
Hoạt động:
Ở dạng lặp lùi, câu lệnh viết sau từ khóa 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ị cuối đến Giá trị đầu.
* Loại 2: Lặp với số lần chưa biết trước:
While <điều kiện> do ;
+ Trong đó:
- While, do là các từ khoá;
- Điều kiện là biểu thức logic;
- Câu lệnh là một câu lệnh đơn hoặc lệnh ghép.
+ Cấu trúc hoạt động như sau:
- Bước 1: Tính ;
- Bước 2: Nếu kết quả là đúng (true) thì thực hiện và quay lại bước 1, ngược lại thì
chuyển sang câu lệnh tiếp theo trong chương trình.
2. Một số bài toán
Bài toán hệ phương trình bậc nhất 2 ẩn


Hệ hai phương trình bậc nhất hai ẩn có dạng tổng quát là :
Trong đó : x,y là hai ẩn, các chữ còn lại là hệ số.
Nếu cặp số (x₀,y₀) đồng thời thảo mãn hai phương trình của hệ thì (x₀,y₀) được gọi là
một nghiệm của hệ phương trình.
Giải hệ phương trình trên là tìm tập nghiệm của nó.
Bài 1: Lập trình để giải bài toán cổ sau :
Vừa gà vừa chó
Bó lại cho tròn
Ba mươi sáu con
Một trăm chân chẵn
Hỏi có bao nhiêu con mỗi loại ?
Page 15


(SGK Tin học 11 – Trang 51)
Phương án giải quyết
Với bài toán trên dễ thấy ta có hệ phương trình hai ẩn như sau:
x + y = 36 ;
2x + 4y = 100 ;
Trong đó : gọi x là số gà và y là số chó.
Từ dữ kiện của bài toán ta có :
1≤x≤36 ;
1≤y≤25 ;
Từ đó ta có chương trình:
* Sử dụng cấu trúc lặp với số lần đã biết :
Program gacho;
Var x,y:byte;
Begin
For x:=1 to 36 do

For y:=1 to 25 do
If (x+y=36) and (2*x+4*y=100) then
Begin
Writeln('So ga la: ',x);
Writeln('So cho la: ',y);
End;
Readln
End.
* Sử dụng cấu trúc lặp với số lần chưa biết trước :
Program gacho;
Var x,y:byte;
Begin
x :=1;
y :=36-x ;
While (2*x+4*y<>100)do
Begin
x :=x+1 ;
y :=36-x ;
Page 16


End ;
Writeln('So ga la: ',x);
Writeln('So cho la: ',y);
Readln
End.
Kết quả của chương trình : Số gà là 22, Số chó là 14.
Bài 2: Trong kho tàng văn hóa dân gian Việt Nam có bài toán “Trăm trâu trăm cỏ”
sau đây: (SGK Đại số 10 – Trang 67)
Trăm trâu trăm cỏ

Trâu đứng ăn năm
Trâu nằm ăn ba
Lụ khụ trâu già
Ba con một bó
Hỏi có bao nhiêu trâu đứng, bao nhiêu trâu nằm, bao nhiêu trâu già ?
Phương án giải quyết
Với bài toán trên dễ thấy ta có hệ hai phương trình bậc nhất 3 ẩn như sau:
x + y + z = 100;
5x + 3y + 3z = 100 ;
Trong đó : gọi x là số trâu đứng, y là số trâu nằm và z là số trâu già .
Từ dữ kiện của bài toán ta có :
1 ≤ x ≤ 20 ;
1 ≤ y ≤ 33 ;
1 ≤ z ≤ 100 ;
Từ đó ta có chương trình:
Program trauco;
var x,y,z:byte;
begin
for x:=1 to 20 do
for y:=1 to 33 do
for z:=1 to 100 do
if (5*x+3*y+1/3*z=100) and (x+y+z=100) then
Begin

Page 17


writeln('So trau dung la: ',x);
Writeln('So trau nam la: ',y);
Writeln('So trau gia la: ',z);

end;
readln
end.
Kết quả của chương trình : Bài toán có 3 tập nghiệm
(x =4; y =18; z = 78); ( x = 8; y = 11; z = 81); (x=12; y = 4; z = 84);
Bài 3: Một công ti có 85 xe chở khách gồm 2 loại, xe chở được 4 khách và xe chở được
7 khách. Dùng tất cả số xe đó, tối đa công ti chở 1 lần được 445 khách. Hỏi công ti đó
có mấy xe khách mỗi loại ?
(SGK Bài tập Đại số 10 – Trang 77)
Phương án giải quyết
Với bài toán trên dễ thấy ta có hệ hai phương trình bậc nhất 2 ẩn như sau:
x + y = 85;
4x + 7y = 445 ;
Trong đó : gọi x là số xe chở được 4 khách, y là số xe chở được 7 khách .
Từ dữ kiện của bài toán ta có :
1<=x<=85 ;
1<=y<=63 ;
Từ đó ta có chương trình:
Program xekhach;
Var x,y:byte;
Begin
x :=1;
y :=85-x ;
While (4*x+7*y<>445)do
Begin
x :=x+1 ;
y :=85-x ;
End ;
Writeln('So xe cho 4 khach la: ',x);
Page 18



Writeln('So xe cho 7 khach la: ',y);
Readln
End.
Kết quả của chương trình : Số xe khách 4 chổ ngồi là 50, Số xe khách 7 chổ ngồi là 35.
2.2. Một số bài toán khác về tọa độ điểm và đồ thị
Bài 1: Hãy giải bài toán sau trên máy tính thông qua ngôn ngữ lập trình Pascal. Thông
báo kết quả ra màn hình?
Cho hàm số y = 3x2 -2x + 1. Các điểm sau có thuộc đồ thị hàm số trên không?
a. M(-1,6)
b. N(1,1)
c. P(0,1)
(Bài 3/39sgk – Đại số 10)
Phương án giải quyết
Từ kiến thức các em được học trong toán học các em dễ dàng vận dụng nó trong
lập trình. Nếu một tọa độ điểm (x,y) thỏa mãn phương trình hàm số đã cho thì thông báo
điểm đó thuộc đồ thị còn không thông báo điểm đó không thuộc đồ thị.
Chương trình:
Program Hamso;
Var y,x:real;
Begin
Writeln(‘Nhap vao toa do diem can kiem tra ’);
Writeln(‘ x= ’);readln(x);
Writeln(‘ y= ’);readln(y);
If y=3*sqr(x)-2*x +1 then Write(‘ Diem co toa do (’,x,’,’,y,’) thuoc do thi ham
so’)
Else Write(‘ Diem co toa do (’,x,’,’,y,’) khong thuoc do thi ham so’);
Readln;
End.

Bài 2: Xác định tọa độ đỉnh và các giao điểm với trục tung, trục hoành (nếu có của mỗi
Parabol)
a. y = x2 – 3x +2
b. y = -2x2 +4x – 3

Page 19


c. y = x2 – 2x
d. y= -x2 + 4
(Bài 1/49 SGK Đại số 10)
Phương án giải quyết
- Công thức tính tọa độ đỉnh của Parabol (x0= -b/2a; ; y0 = - ∆/4a). (Các hệ số a,b,c
được nhập từ bàn phím)
- Trường hợp tìm giao với trục hoành gán x = 0 ta dễ dàng tính được y
- Trường hợp giao với trục tung tức y = 0. Tương đương với việc giải một phương trình
bậc hai tìm nghiệm x. Nếu phương trình không có nghiệm thì hàm số không giao với
trục hoành. Nếu phương trình có 1 nghiệm hoặc 2 nghiệm phân biệt thì phương trình
giao với trục hoành tại một điểm hoặc tại hai điểm. Khi đó máy tính sẽ thông báo ra
màn hình.
Chương trình:
Program Bai1tr49toan10;
Var y,x,x1,x2,a,b,c,d:real;
Begin
Writeln(‘Nhap vao he so a,b,c cua ham so can kiem tra ’);
Writeln(‘ a= ’);readln(a);
Writeln(‘ b= ’);readln(b);
Writeln(‘ b= ’);readln(b);
d:=sqr(b)-4a*c; x:=-b/2*a; y:=-d/4*a;
Writeln(‘Toa do dinh cua ham so la: (’,x,’,’,y,’)’ );

X:=0; y:=a*sqr(x)+b*x+c;
Writeln(‘Toa do diem giao voi truc hoanh la: (’,x,’,’,y,’)’ );
Y:=0;
If d<0 Then Writeln(‘ Do thi giao voi truc tung, khong giao voi truc hoanh’)
Else
If d=0 Then
Begin
X:= -b/2*a;
Writeln(‘ĐT giao voi truc tung, giao voi truc hoanh tai 1 diem la:
(’,x,’,’,y,’)’);
End
Page 20


Else
Begin
x1:=(-b+sqrt(d))/2*a;
x2:= (-b-sqrt(d))/2*a;
Write(‘ĐT giao voi truc tung va giao voi truc hoanh tai 2 diem la:
(’,x1,’,’,y,’)’);
Write(‘ va (’,x2,’,’,y,’)’);
End;
Readln;
End.
Thông qua chương trình này học sinh sẽ được khắc sâu và hiểu rõ hơn về cấu trúc If ..
Then .. Else cũng như sự hoạt động tuần tự của máy tính khi thực hiện chương trình.
2.3. Các bài toán truy hồi
Trong khoa học tính toán ngày nay, phép truy hồi là thuật toán cơ bản để giải một
số bài toán. Ưu điểm của phương pháp truy hồi là ở chỗ nó dùng một công thức nhất
định để diễn tả những phép tính lặp đi lặp lại bất chấp số lần lặp lại là bao nhiêu. Chẳng

hạn với bài toán cấp số cộng là một ví dụ :
Cho
U1 = a
Un = Un-1 + d (∀n ≥ 2) với a là một số cho trước và d là hằng số cố định (công sai).
- Nếu n là biết trước thì việc xác định số Un phải được thực hiện thông qua n bước lặp
theo công thức truy hồi.
- Nếu n là không được biết trước mà Un cần phải thỏa mãn một điều kiện nào đó thì việc
định Un là quá trình lặp với số lần chưa biết trước nhưng thỏa mãn điều kiện.
Nhiều bài toán truy hồi có thể phải thực hiện rất nhiều lần và các số tính toán có
thể rất lớn, nếu thực hiện việc tính toán mà không sử dụng đến máy tính là vô cùng khó
khăn. Một trong những đặc trưng của việc lập trình trên máy tính là có khả năng thực
hiện có hiệu quả các thao tác lặp trong thời gian rất nhanh.
2.3.1. Sử dụng cấu trúc lặp để giải bài toán truy hồi
a. Sử dụng cấu trúc For … To... Do...
Bài 1: Với a là số nguyên và a > 2, tính tổng:

Page 21


S=
(SGK Tin học 11 – Trang 42)
Phân tích:
Với bài toán trên dễ thấy ta có công thức truy hồi để tính giá trị S như sau:
S0 =

Sn = Sn-1 +
Với n = 1→100
Việc cộng vào tổng S được lặp lại 100 lần, giá trị n khi tham gia vòng lặp là 1 và sau
mỗi lần lặp n tăng lên 1 cho đến khi n > 100 thì dừng. Như vậy số lần lặp là biết trước,
biến n được sử dụng là một biến đếm từ 1 đến 100.

Từ đó ta có chương trình:
program tong1;
var s:real;
n,a : integer;
begin
writeln(' Hay nhap gia tri a (a>2):');
readln(a);
s := 1/a;
for n := 1 to 100 do
s := s + 1/(a+n);
writeln('Tong s la: ',s:8:4);
readln;
End.
Bài 2: Lập trình tính giai thừa của một số nguyên n (do giới hạn lưu trữ số nguyên cho
n<8).
* Phương án giải quyết
Giai thừa của n: n! = 1.2…n (tích các số tự nhiên từ 1 đến n). Không có công thức tổng
quát để tính n! nhưng ta có công thức truy hồi sau:
0! = 1
Page 22


n! = n.(n-1)!
go =1
Đặt gn=n!, theo công thức trên ta có:
gn =gn-1.n
* Chương trình tính giai thừa như sau:
program giaithua;
var n, i, g : integer;
begin

writeln('Chuong trinh tinh n! ');
write('Nhap (n<8): ');
readln(n);
g := 1;
for i := 1 to n do
g := g * i;
writeln('Ket qua: ',n,'! = ',g);
readln;
end.
Bài 2/92 SGK Đại số 11
Cho dãy số (Un) biết U1= -1; Un+1= Un +3 với n>=1. Viết chương trình in ra 5 số
hạng đầu của dãy số.
Phương án giải quyết
- Cho biết số hạng đầu của dãy số và công thức tính Un.
- Dùng vòng lặp For hoặc While để tính số hạng tiếp theo của dãy số thông qua công
thức tính Un+1= Un +3. Sau mỗi lần lặp ta sẽ tính và in ra được một số hạng tiếp theo của
dãy số đã cho. Đề bài yêu cầu in ra 5 số hạng đầu tiên nên ta dùng vòng For duyệt từ 2
đến 5 vì số hạng đầu đã biết, chỉ tính từ số hạng thứ 2 trở đi. (Từ vòng lặp For có thể dễ
dàng chuyển sang dùng vòng lặp while)
Chương trình:
Program Bai2tr92toan11For;
Var u,n : integer;
Begin
U:= -1;
Writeln(‘5 so hang dau cua day so la: ’);
Page 23


Write(u:5);
For n:=2 to 5 do

Begin
U:=u+3;
Write(u:5);
End;
Readln;
End.
Program Bai2tr92toan11While;
Var u,n : integer;
Begin
U:= -1;n:=2;
Writeln(‘5 so hang dau cua day so la: ’);
Write(u:5);
While n<= 5 do
Begin
U:=u+3; n:=n+1;
Write(u:5);
End;
Readln;
End.
Bài 3/92 SGK Đại số 11
Dãy số (Un) cho bởi U1=3; Un+1=

n>=1. Viết chương trình in ra 5 số hạng

đầu của dãy số.
phương án giải quyết
- Nhớ lại hàm SQTR và hàm SQR trong Pascal.
Chương trình:
Program Bai3tr92toan11For;
Var u,n : integer;

Begin
U:= 3;
Page 24


Writeln(‘5 so hang dau cua day so la: ’);
Write(u:5);
For n:=2 to 5 do
Begin
U:=SQRT(1+SQR(u));
Write(u:5);
End;
Readln;
End.
b. Sử dụng cấu trúc for... downto... do ...
Bài 3: Lập trình tính tổng sau: Y =
(SGK Tin học 11 – Trang 51)
phương án giải quyết
Với bài toán trên có thể sử dụng cấu trúc lặp với số lần biết trước dạng tiến hay
lùi đều được. Nếu sử dụng cấu trúc lặp For …downto … do ta có thể xây dựng công
thức truy hồi để tính giá trị Y như sau:
Yn = 0
Yn-1 = Yn +

, Với n từ 50 giảm dần về 1

Việc cộng vào tổng Y được lặp lại 50 lần, giá trị n khi tham gia vòng lặp là 50 và sau
mỗi lần lặp n giảm đi 1 cho đến khi n =1 thì dừng. Như vậy số lần lặp là biết trước, biến
n được sử dụng là một biến đếm giảm từ 50 về 1, tổng cần tính là Yo
Chương trình như sau:

program tong2;
var Y: real; n : integer;
begin
Y := 0;
for n := 50 downto 1 do
Y := Y + n/(n+1);
Page 25


×