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

Một vài kinh nghiệm dạy lập trình pascal theo hướng tiếp cận từ dễ đến khó, từ một thuật toán xây dựng cú pháp câu lệnh

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 (297.65 KB, 24 trang )

MỤC LỤC

1. Mở đầu……………………………………………………………………….…2
1.1. Lí do chọn đề tài……………………………………………………………....2
1.2. Mục đích nghiên cứu…………………………………………………..……...2
1.3. Đối tượng nghiên cứu…………………………………………………………3
1.4. Phương pháp nghiên cứu…………………………………………………..….3
1.5. Những điểm mới của SKKN………………………………………………….3
2. Nội dung sáng kiến kinh nghiệm…………………………………………….….4
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm…………………………………...…4
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm……….……...…5
2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng
để giải quyết vấn đề……………………………………………………..…….5
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục,
với bản thân, đồng nghiệp và nhà trường……………………………….……22
3. Kết luận, kiến nghị………………………………………………………….…..23
3.1. Kết luận……………………………………………………………………….23
3.2. Kiến nghị………………………………………………………………….......23
Tài liệu tham khảo…………………………………………………………………24

1


1. Mở đầu
1.1. Lí do chọn đề tài.
Trong quá trình giảng dạy môn Tin học cho học sinh về ngôn ngữ lập
trình cụ thể là ngôn ngữ lập trình Pascal, là một phần nội dung có thể nói là khó
nhất trong chương trình tin học THPT. Nhất là trường THPT Thạch Thành 3 là một
trường miền núi, học sinh dân tộc thiểu số và vùng 135 chiếm trên 80% tổng số học
sinh nhà trường. Đây cũng là hạn chế lớn của các em trong việc tiếp cận nội dung
kiến thức khó như là việc lập trình trên ngôn ngữ lập trình Pascal. Thực tế khi giảng


dạy cho các em về các câu lệnh tôi thấy các em còn gặp nhiều khó khăn trong việc
xác định các câu lệnh (cú pháp câu lệnh, hoạt động của câu lệnh) cần dùng để làm
bài tập. Khi viết câu lệnh thể hiện phép toán còn nhầm lẫn giữa viết câu lệnh và
viết biểu thức bình thường, ví dụ như câu lệnh gán học sinh thường bỏ dấu ':'…
Trình tự trình bày nội dung kiến thức trong sách giáo khoa từ câu lệnh gán
đến cấu trúc rẽ nhánh tiếp theo là vòng lặp… Kiến thức có sự liền mạnh từ dễ đến
khó, từ thực tế rồi xây dựng câu lệnh. Sách giáo khoa đưa ra nhiều ví dụ thực tiễn
nhưng chưa có sự gắn kết thực sự từ câu lệnh dễ đến câu lệnh khó, từ bài trước rồi
đến bài sau, ưu điểm của cách đưa ra ví dụ như vậy tạo điều kiện phát triển tư duy
học sinh nhưng chưa phù hợp với học sinh như một trường miền núi như trường
tôi. Trong bài viết này tôi đưa ra một ví dụ xuyên suốt chương trình lớp 11 với mục
đích học cú pháp câu lệnh thay vì học sinh phải học cả cú pháp câu lệnh cả thuật
toán của ví dụ mới. Còn các ví dụ khác tôi khuyến khích học sinh tự đọc, tự học ở
nhà. Ngoài ra tôi dạy theo hướng nghiên cứu bài học có sử dụng đồ dùng dạy học
do học sinh tự làm nhằm giúp các em nắm vững câu lệnh qua đó giúp các em yêu
thích và hứng thú học tập môn Tin học hơn. Trong quá trình giảng dạy tin học ở
khối lớp 11 tôi đã đúc rút ra kinh nghiệm dưới đây tôi xin trình bày về sáng kiến:
“Một vài kinh nghiệm dạy lập trình pascal theo hướng tiếp cận từ dễ đến khó, từ
một thuật toán xây dựng cú pháp câu lệnh” sách giáo khoa tin học 11. Rất mong
được sự tham khảo góp ý của các giáo viên và học sinh về sáng kiến kinh nghiệm
này để giúp tôi có những bài giảng hay giúp học sinh học tốt môn Tin học hơn .
1.2. Mục đích nghiên cứu
Dạy lập trình phát triển từ một ví dụ (thuật toán) giúp học sinh tiếp cận cú
pháp câu lệnh một cách dễ dàng vì chỉ có một thuật toán ( bài toán) đã được hình
thành và biết từ trước đó. Khi học sinh tiếp cận được cú pháp câu lệnh việc còn lại
chỉ là dạy cho học sinh biết hoạt động của câu lệnh đó như thế nào mà thôi.
2


Dạy theo hướng nghiên cứu bài học có sử dụng đồ dùng dạy học do học sinh

tự làm: học sinh được hoạt động cá nhân, hoạt động nhóm, thảo luận nhóm để có
được sản phẩm của chính mình từ những đồ dùng do chính tay tự làm tạo hứng thú
nhất định trong giờ học. Học sinh tiếp nhận kiến thức một cách chủ động, loại bỏ
được tính ỉ lại, trông chờ kiến thức truyền thụ thụ động từ giáo viên.
1.3. Đối tượng nghiên cứu
Xây dựng các cú pháp câu lệnh phát triển từ một ví dụ duy nhất học sinh nhớ
cú pháp câu lệnh, hoạt động câu lệnh và không quan tâm đến thuật toán là tăng khả
năng tiếp cận kiến thức lập trình của học sinh, học sinh thấy học dễ hơn thích thú
với lập trình. Dạy như vậy phù hợp với yêu cầu của chuẩn kiến thức tin học lớp 11
là học sinh viết được chương trình pascal cơ bản.
Đa số học sinh chấp nhận hay thừa nhận các thuật toán sách giáo khoa đưa
ra. Giáo viên yêu cầu học sinh học thuộc, sau đó kiểm tra yêu cầu học sinh viết lại
thuật toán, cách học này là học thuộc lòng. Khi viết chương trình chỉ sử dụng một
thuật toán học sinh có thể hiểu sâu sắc hơn thuật toán đó. Các thuật toán khác giáo
viên khuyến khích học sinh học ở nhà đối với những học sinh có khả năng.
Dạy lập trình theo hướng nghiên cứu bài học, ngoài ra còn sử dụng đồ dùng
dạy học cộng thêm máy chiếu giúp rút ngắn thời gian viết bảng không cần thiết.
1.4. Phương pháp nghiên cứu.
Viết sáng kiến kinh nghiệm thường xuyên liên tục cũng là nhiệm vụ chính trị
của mỗi giáo viên, nhưng cần phải lựa chọn phương pháp nghiên cứu đúng đắn và
phù hợp với nhà trường trung học phổ thông. Sáng kiến kinh nghiệm đang trình bày
của tôi dựa theo các luận cứ khoa học hướng đối tượng, cụ thể: thuyết trình,
quan sát, điều tra khảo sát thực tế, phân tích kết quả thực nghiệm sư phạm, v.v…
phù hợp với bài học và môn học thuộc lĩnh vực Tin học.
Nêu vấn đề và giải quyết vấn đề đi từ thực tế hiện thực khánh quan → cụ thể
hóa → tổng quát hóa, trừu tượng hoá.
1.5. Những điểm mới của SKKN.
Trong sách giáo khoa Tin học 11 ứng với một cú pháp câu lệnh mới thì có
một bài toán mới đi cùng phù hợp nhất với cú pháp đó, một điều chắc chắn rằng
học sinh phải hiểu thuật toán giải bài toán này trước sau đó còn phải học cú pháp

câu lệnh. Trong sáng kiến kinh nghiệm của tôi tôi sử dụng một bài toán " Giải tam
giác" để dạy tất cả các cú pháp câu lệnh, kiểu dữ liệu, chương trình con...
3


Trước đây dạy học, viết sáng kiến kinh nghiệm theo hướng nghiên cứu bài
học khi thảo luận nhóm thường chia thành 4 nhóm mỗi nhóm 8 học sinh trở lên dẫn
đến việc thảo luận không hiệu quả vẫn có học sinh ỉ lại vào trưởng nhóm và những
học sinh tích cực. Do đó trường tôi đã thay đổi cho phù hợp bằng cách mỗi nhóm
chỉ 2 học sinh trên cùng 1 bàn.
Đồ dùng học tập, phiếu học tập tôi giao cho tất cả các học sinh làm từ đó học
sinh vừa lĩnh hội được những kiến thức mình đã chuẩn bị do tay mình tự làm.
2. Nội dung sáng kiến kinh nghiệm
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm.
2.1.1 Một số khái niệm
a. Bài toán
Là một công việc nào đó mà ta muốn máy tính thực hiện. [1]
VD: Tính chu vi, diện tích tam giác khi biết độ dài ba cạnh a,b,c.
b. Thuật toán
Thuật toán để giải một bài toán là dãy hữu hạn các thao tác được sắp xếp
theo trình tự xác định sao cho sau khi thực hiện dãy thao tác đó từ Input của bài
toán ta được Output cần tìm. [1]
c. Khái niệm lập trình:
Lập trình (programming): 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ể nào đó để mô tả dữ liệu và diễn đạt các thao tác của thuật
toán.[1]
d. Khái niệm ngôn ngữ lập trình:
Ngôn ngữ lập trình ( programming language): 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. [1]

¬ Cú pháp (syntax): là bộ quy tắc để viết chương trình. Dựa vào chúng, người lập
trình và CT dịch biết được tổ hợp nào của các ký tự trong bảng chữ cái là hợp lệ và
tổ hợp nào là không hợp lệ. Nhờ đó có thể mô tả chính xác thuật toán để máy thực
hiện. [1]
¬ Ngữ nghĩa (sematics): xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ
hợp ký tự dựa vào ngữ cảnh của nó. [1]
¬ Chương trình (program): Là một tập hợp các mô tả, các phát biểu, nằm
trong một hệ thống quy ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển
máy tính làm việc.
2.1.2. Các loại câu lệnh trong ngôn ngữ lập trình pascal.
4


a. Phép toán, câu lệnh gán.
Cú pháp: <Tên biến>:= <biểu thức>;[1]
Chức năng của câu lênh gán là: đặt cho biến có tên ở vế trái dấu “:=” giá trị mới
bằng giá trị của biểu thức ở vế phải. [1]
b. Nhập dữ liệu vào từ bàn phím
Cú pháp:
Readln(<danh sách biến vào>);[1]
c. Đưa dữ liệu ra màn hình
Cú pháp write(<danh sách kết quả ra>);
hoặc: writeln(<danh sách kết quả ra>); [1]
d. Câu lệnh rẽ nhánh dạng thiếu:
IF <điều kiện> THEN <câu lệnh>; [1]
e. Câu lệnh rẽ nhánh dạng đủ:
IF <điều kiện> THEN <câu lệnh 1> ELSE <câu lệnh 2>; [1]
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
Học sinh đa số có lực học trung bình, số học sinh khá giỏi rất ít chỉ đếm trên
đầu ngón tay, khi dạy câu lệnh mới cộng tuật toán mới học sinh như chui đầu vào

bụi dậm. Khi thực hiện các câu lệnh trên một ví dụ học sinh chỉ cần học câu lệnh.
Rất phù hợp với khả năng tiếp thu của học sinh.
Trước đây dạy học theo phương pháp thông thường hay hướng nghiên cứu
bài học khi thảo luận nhóm thường chia thành 4 nhóm mỗi nhóm 8 học sinh trở lên
dẫn đến việc thảo luận không hiệu quả vẫn có học sinh ỉ lại vào trưởng nhóm và
những học sinh tích cực.
2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết
vấn đề.
2.3.1 Phép toán, câu lệnh gán, nhập dữ liệu vào từ bàn phím, đưa dữ liệu ra màn
hình.
Phần kiến thức này tôi đưa ra các phương án dạy cho hai đối tượng học sinh:
Đối tượng lớp có tố chất khá, giỏi và lớp đa số là học sinh có học lực trung bình.
* Phương án 1.
Phiếu học tập:
Hoạt động 1:

5


Câu hỏi 1: Hãy tính chu vi và diện tích tam giác ( theo công thức Hê Rông) khi biết
a,b,c nguyên dương là độ dài ba cạnh tam giác.
Thực hiện:
Bước 1: Giáo viên phát phiếu học tập, yêu cầu học sinh thảo luận cá nhân ( 3 phút )
sau đó thảo luận nhóm 2 học sinh / 1 bàn ( 2 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm:
Nhóm 1:


Nhóm 2:

C=a+b+c

CV=a+b+c

S= p( p − a)( p − b)( p − c) với p =

a+b+c
2

S= p( p − a)( p − b)( p − c) với p =

a+b+c
2

Câu hỏi 2: Hãy sử dụng kiến thức trong bài 6 : phép toán, biểu thức, câu lệnh gán
viết lại các biểu thức tính chu vi, diện tích trong ngôn ngữ lập trình pascal.
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 3 phút ) sau đó thảo luận nhóm 2 học
sinh / 1 bàn ( 2 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm:
Nhóm 1:

Nhóm 2:


C=a+b+c

CV=a+b+c
6


S= p( p − a)( p − b)( p − c) với p =

a+b+c
2

S= p( p − a)( p − b)( p − c) với p =

Nhóm 3:

Nhóm 4:

C:=a+b+c;

CV:=a+b+c;

p:=C/2;

S:=sqrt((a+b+c/2)*(a+b+c/2-a)*

S:=sqrt(p*(p-a)*(p-b)*(p-c));

(a+b+c/2-b)*( a+b+c/2-c));


a+b+c
2

Câu hỏi 3: Hãy sử dụng kiến thức trong bài 6 : Vị trí phép toán, biểu thức, câu lệnh
gán, tại sao sau một biểu thức lại có dấu ";" trong trình bày của nhóm 3 và nhóm 4.
Nhóm 3: Lệnh gán
Nhóm 4:
Phép chia
C:=a+b+c; p:=C/2;

Phép
nhân

CV:=a+b+c;

S:=sqrt(p*(p-a)*(p-b)*(p-c));

S:=sqrt((a+b+c/2)*(a+b+c/2-a)*

(a+b+c/2-b)*( a+b+c/2-c));
Giáo viên dùng máy chiếu trình chiếu và giới thiệu lại nội dung kiến thức:
Hàm căn bậc hai

Phép toán: [1]
Phép toán

Trong toán học

Trong Pascal


Các phép toán số học với
số nguyên

+ (cộng), - (trừ), .
(nhân),
: (chia), div (chia
nguyên), mod (lấy phần dư).

+, -,*, /, div, mod

Các phép toán số học với
số thực

+ (cộng), - (trừ),
(nhân),
: (chia)

+,-, *,/

Các phép toán quan hệ

< (nhỏ hơn), ≤ (nhỏ hơn hoặc
bằng), ≥ (lớn hơn hoặc
bằng), = (bằng), (khác)
phủ định, hoặc, và

<, <=, >=, =, <>

Các phép toán lôgíc


not, or, and

Biểu thức: [1]
Trong lập trình, biểu thức số học là một biến kiểu số hoặc một hằng số hoặc
các biến kiểu số và các hằng số liên kết với nhau bởi một số hữu hạn phép toán số
học, các dấu ngoặc tròn "(" và ")" tạo thành một biểu thức có dạng tương tự như
cách viết trong toán học với những quy tắc sau:
- Chỉ dùng cặp ngoặc tròn để xác định trình tự thực hiện phép toán trong
trường hợp cần thiết.
- Viết lần lượt từ trái qua phải.
7


- Không được bỏ qua dấu nhân (*) trong tích.
Các phép toán được thực hiện theo thứ tự:
- Thực hiện các phép toán trong ngoặc trước;
- Trong dãy các phép toán không chứa ngoặc thì thực hiện từ trái sang phải,
theo thứ tự các phép toán nhân (*), chia nguyên (div), lấy phần dư (mod) thực hiện
trước và các phép toán cộng (+), trừ (-) thực hiện sau.
Ví dụ: Nhóm 4 sản phẩm sai nhưng khi các nhóm khác nhận xét không phát
hiện ra vì học sinh không nhận ra được p =

a+b+c
và a+b+c/2 khác nhau thế nào
2

trong tin học hay nói cách khác phải biết cách dùng "(" và ")".
Nhóm 4:
Đúng
Nhóm 4:

Sai
CV:=a+b+c;

CV:=a+b+c;

S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)*

S:=sqrt((a+b+c/2)*(a+b+c/2-a)*

((a+b+c)/2-b)*((a+b+c)/2-c)));

(a+b+c/2-b)*( a+b+c/2-c));

Hàm số học chuẩn [1]
• Hàm sổ học chuẩn là những hàm tính giá trị những hàm toán học thường
dùng trong các ngôn ngữ lập trình.
• Mỗi hàm chuẩn có tên chuẩn riêng. Đổi sổ của hàm là một hay nhiều biểu
thức số học và được đặt trong cặp ngoặc tròn "(" và ")" sau tên hàm.
• Kết quả của hàm có thể là nguyên hoặc thực hay phụ thuộc vào kiểu của
đối số.
Một số hàm chuẩn thường dùng:
Hàm
Bình phương

Biểu diễn
Biểu diễn
Kiểu đối số
Toán học trong Pascal

Kiểu kết quả


x2

sqr(x)

Thực hoặc
nguyên

Theo kiểu của đối số

x

Sqrt(x)

Thực hoặc
nguyên

Thực

Giá trị tuyệt
đối

|x|

Abs(x)

Thực

Theo kiểu của đối số


Lôgarit tự

lnx

ln(x)

Thực

Thực

Căn bậc hai

8


nhiên
Lũy thừa của
số e

ex

Exp(x)

Thực

Thực

Sin

Sinx


Sin(x)

Thực

Thực

Cos

Cosx

Cos(x)

Thực

Thực

Ví dụ:
S:=sqrt(p*(p-a)*(p-b)*(p-c)); sqrt: Căn bậc hai;
Biểu thức quan hệ [1]
• Hai biểu thức cùng kiểu liên kết với nhau bởi phép toán quan hệ cho ta một biểu
thức quan hệ.
Biểu thức quan hệ có dạng:
<biểu thức 1> <biểu thức 2>
Ví dụ : a+b <= c
a+b > c
• Biểu thức quan hệ được thực hiện theo trình tự:
Tính giá trị các biểu thức;
Thực hiện phép toán quan hệ.
Kết quả của biểu thức quan hệ là giá trị logic: true (đúng) hoặc false (sai).

Ví dụ: nếu a=1, b=2, c=3 thì a+b <= c có giá trị true.
thì a+b > c có giá trị false.
[1]
Biểu thức logic
Biểu thức lôgic đơn giản là biến lôgic hoặc lôgic.
Biểu thức lôgic là các biểu thức logic đơn giản, các biểu thức quan hệ liên
kết với nhau bởi phép toán logic. Giá trị biểu thức logic là true hoặc false. Các biểu
thức quan hệ thường đặt trong cặp ngoặc "(" và ")".
Dấu phép toán not được viết trước biểu thức cần phủ định.
Các phép toán and và or dùng để kết hợp nhiều biểu thức lôgic hoặc quan hệ,
thành một biểu thức thường được dùng để diễn tả các điều kiện phức tạp.
Ta có bảng giá trị phép toán logic:
A

0

1

Not A

1

0

A

0

0


1

1
9


B

0

1

0

1

A and B

0

0

0

1

A or B

0


1

1

1

Câu lệnh gán [1]
Lệnh gán trong Pascal có dạng:
<tên biến>:= <biểu thức>;
Trong trường hợp đơn giản, tên biến là tên của biến đơn.
Lệnh gán có chức năng gán giá trị cho một biến, nghĩa là thay giá trị cũ trong
ô nhớ (tương ứng với biến) bởi giá trị mới. Giá trị mới là giá trị của một biểu thức.
Biểu thức này đã có giá trị xác định thuộc phạm vi của biến. Kiểu giá trị của
biểu thức phải phù hợp với kiểu của biến. Một biến chỉ được coi là đã xác định giá
trị khi đã nhận được giá trị từ ngoài (đọc từ bàn phím hoặc từ tệp,...) hoặc trực tiếp
qua lệnh gán trong chương trình.
Ví dụ: p:=C/2; "C/2" là số số thực thì "p" cũng phải là số thực ;
C chia 2 rồi đưa vào p.
Một số điểm chú ý khi sử dụng lệnh gán:
Phải viết đúng kí hiệu lệnh gán, ví dụ trong Pascal kí tự hai dấu chấm phải
viết liền kí tự dấu bằng (: );
Biểu thức bên phải cần được xác định giá trị trước khi gán, nghĩa là mọi biến
trong biểu thức đã được xác định giá trị và các phép toán trong biểu thức có thể
thực hiện được trong miền giá trị của biến.
Kiểu của biến phải phù hợp với kiểu dữ liệu của giá trị biểụ thức bên phải.
Hoạt động 2:
Câu hỏi 1:
a. Để tính được chu vi (CV), diện tích (S) ở công thức C:=a+b+c; p:=C/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c)); thì cần giá trị của những biến nào ?
b. Tương tự như giải phương trình bậc 2 trên máy tính khi giải phương trình bậc 2

ta cần thực hiện như thế nào ? Trước khi có kết quả máy tính có phải thực hiện việc
tính toán không ? Máy tính cho ta thông tin gì ? thông tin đó hiển thị ở đâu ?
c. Vận dụng kết quả câu b. để tính được chu vi (CV), diện tích (S) ở câu a.
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 8 phút ) sau đó thảo luận nhóm 2 học
sinh / 1 bàn ( 6 phút ).
10


Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm:
a. Phải có giá trị của 3 biến : a,b,c
b.

+ Nhập 3 biến a,b,c từ bàn phím.
+ Máy tính tính toán.
+ Hiển thị kết quả ra màn hình.

c.

+ Nhập độ dài 3 cạch a, b, c từ bàn phím.
+ Máy tính tính chu vi (CV), diện tích (DT).
+ Hiển thị chu vi, diện tích ra màn hình.

Giáo viên trình chiếu thủ tục chuẩn vào/ ra đơn giản:
Nhập dữ liệu vào từ bàn phím[1]
Nhập dữ liệu vào từ bàn phím được thực hiện bằng thủ tục chuẩn:

Read(<danh sách biến vào>);
Hoặc
Readln(<danh sách biến vào>);
Chú ý:
Việc nhập giá trị cho danh sách biến phải chú ý các giá trị được nhập có kiểu
tương ứng với các biến trong danh sách; giữa hai giá trị liên tiếp phải nhấn phím
Space hoặc phím Enter.
Việc nhập giá trị của biến từ bàn phím được kết thúc bởi việc nhấn phím
Enter nên không phân biệt read và readln. Do đó khi nhập từ bàn phím nên dùng
readln.
Đưa dữ liệu ra màn hình[1]
Để đưa dữ liệu ra màn hình Pascal cung cấp thủ tục chuẩn:
write(<danh sách kết quả ra>);
hoặc:
writeln(<danh sách kết quả ra>);
Trong đó: <danh sách kết quả ra> có thể là tên biến đơn, biểu thức hoặc hằng
11


Chú ý: Với thủ tục write, sau khi đưa các kết quả ra màn hình, con trỏ không
chuyển xuống dòng tiếp theo. Với thủ tục writeln, sau khi đưa thông tin ra màn
hình con trỏ chuyển xuống đầu dòng tiếp theo.
Câu hỏi 2: Dựa vào kiến thức phần trình chiếu và kiến thức đã học thực hiện công
việc câu hỏi 1.c.
+ Nhập độ dài 3 cạch a, b, c từ bàn phím.
+ Máy tính tính chu vi, diện tích.
+ Hiển thị chu vi, diện tích ra màn hình.
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 8 phút ) sau đó thảo luận nhóm 2 học
sinh / 1 bàn ( 5 phút ).

Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm:
Nhóm 5:

Nhóm 6:

Readln(a) ;

Readln(a,b,c) ;

Readln(b) ;

CV:=a+b+c;

Readln(c) ;

S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)*

C:=a+b+c; p:=C/2;

((a+b+c)/2-b)*((a+b+c)/2-c)));

S:=sqrt(p*(p-a)*(p-b)*(p-c));

Write(CV) ;

Write(C) ;


Write(S) ;

Write(S) ;
Giáo viên trình chiếu cấu trúc chương trình, khai báo biến:
Cấu trúc chung: [1]
[]

Các thành phần của chương trình. [1]
12


a. Phần khai báo:
• Khai báo tên chương trình: có thể có hoặc không.
Với Pascal phần khai báo tên chương trình như sau:
Program <tên chương trình>;
• Khai báo thư viện: muốn sử dụng thư viện nào thì ta cần phải khai báo
thư viện đó trước: uses < tên thư viện >;
• Khai báo hằng: const < hằng > = < giá trị >;
• Khai báo biến: Var < danh sách biến > : <Kiểu dữ liệu >;
b. Phần thân chương trình.
Trong Pascal:
Begin

[<dãy lệnh>];
End.
[1]

Khai báo biến
Trong Pascal, khai báo biến có dạng:

Var <danh sách biến>:<kiểu dữ liệu>;
Trong đó:
- <danh sách biến> là một hoặc nhiều tên biến, các tên biến được viết cách nhau
bởi dấu phảy.
- <kiểu dữ liệu> thường là một trong các kiểu dữ liệu chuẩn hoặc kiểu dữ liệu do
người lập trình định nghĩa.
- Sau từ khoá var có thể khai báo nhiều danh sách biến khác nhau, tức là cấu trúc:
Var
<danh sách biến>:<kiểu dữ liệu>;
<danh sách biến>:<kiểu dữ liệu>;
Một số kiểu dữ liệu chuẩn[1]
a. Kiểu nguyên.
Các kiểu nguyên được lưu trữ và kết quả tính toán là số đúng, nhưng có
hạn chế về miền giá trị. Tập số nguyên là vô hạn và có thứ tự, đếm được nhưng
trong máy tính thì kiểu nguyên là hữu hạn, có thứ tự.
Kiểu
Bộ nhớ lưu trữ một giá trị
Phạm vi giá trị
byte
1 byte
Từ 1 đến 255
Integer
2 byte
Từ –215 đến 215 – 1
Word
2 byte
Từ 0 đến 216 – 1
longint
4 byte
Từ – 231 đến 231 – 1

b. Kiểu thực.
Các kiểu thực được lưu trữ và kết quả tính toán chỉ là gần đúng với sai số
không đáng kể (so với yêu cầu tính toán của các bài toán thông thường), nhưng
13


miền giá trị được mở rộng hơn so với kiểu nguyên. Số thực trong máy tính là
hữu hạn.
Kiểu
Bộ nhớ lưu trữ một giá trị
Phạm vi giá trị
Real
0 hoặc có giá trị tuyệt đối nằm trong
6 byte
phạm vi từ 10-38 đến 1038
c. Kiểu logic.
Kiểu logic trong Pascal chỉ có hai giá trị đúng (true) hoặc sai (false), được
dùng khi kiểm tra điều kiện hay tìm giá trị của một biểu thức logic.
Kiểu
Bộ nhớ lưu trữ một giá trị
Phạm vi giá trị
Boolean 1 byte
true hoặc false
Hoạt động 3:
Cho bảng
Nhóm 5:

Nhóm 6:

Readln(a) ;


Readln(a,b,c) ;

Readln(b) ;
Readln(c) ;
C:=a+b+c;

CV:=a+b+c;

p:=C/2;

S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)*

S:=sqrt(p*(p-a)*(p-b)*(p-c));

((a+b+c)/2-b)*((a+b+c)/2-c)));

Write(C) ;

Write(CV) ;

Write(S) ;
Write(S) ;
Câu hỏi: Viết chương trình ( cấu trúc chương trình )
Thực hiện việc khai báo biến var và viết phần thân chương trình tính CV, S?
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 5 phút ) sau đó thảo luận nhóm 2 học
sinh / 1 bàn ( 3 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các

nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
14


Trong quá trình thảo luận giáo viên quan sát và giúp đỡ các nhóm thảo luận
và cung cấp thêm kiến thức về biến và khai báo biến.
Biến : Bản chất là một ô nhớ có tên trong máy tính, tại ô nhớ đó lưu trữ giá
trị của biến có địa chỉ là tên biến.
Khai báo biến : Nhắc lại kiến thức ở câu lệnh gán trong Ví dụ: p:=C/2; "C/2"
là số số thực thì "p" cũng phải là số thực ; Tức là phụ thuộc vào biến hay giá trị
"C/2" để khai báo cho biến "p".
Sản phẩm:
Nhóm 7:

Nhóm 8:

Var a,b,c,C : Integer ;

Var a,b,c,CV : Integer ;

p,s : real ;
begin

p,s : real ;
begin

Readln(a) ;

Readln(a,b,c) ;


Readln(b) ;
Readln(c) ;

CV:=a+b+c;

C:=a+b+c; p:=C/2;

S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)*

S:=sqrt(p*(p-a)*(p-b)*(p-c));

((a+b+c)/2-b)*((a+b+c)/2-c)));

Write(C) ;

Write(CV) ;

Write(S) ;

Write(S) ;

end.

end.
Khi nhận xét bài của nhóm 7 các nhóm khác không nhận ra được sai sót của

nhóm này ở phần khai báo Var a,b,c,C : Integer ; có 2 biến c,C thực tế trong pascal
không phân biệt chữ in hoa và in thường.
- Sau khi sửa khai báo có học sinh thắc mắc trong khai báo Var a,b,c thì c

vừa là cạch c vừa là chu vi theo quy định của toán học giáo viên giải thích câu lệnh
gán tính chu vi C:=a+b+c ; cho kết quả chu vi C là không sai vì máy tính sẽ tính
toán biểu thức a+b+c rồi mới đưa vào biến C.

15


- Sau học sinh phát hiện ra nếu giá trị cạnh c thay bằng chu vi C thì diện tích
S:=sqrt(p*(p-a)*(p-b)*(p-c)); thay đổi. Giáo viên yêu cầu học sinh đưa ra giải pháp,
học sinh đưa ra ý kiến thay biến C bằng 1 biến khác như nhóm 8 : CV
Nhóm 7:

Nhóm 8:

Var a,b,c,CV : Integer ;

Var a,b,c,CV : Integer ;

p,s : real ;
begin
Readln(a) ;

p,s : real ;
begin
Readln(a,b,c) ;

Readln(b) ;
Readln(c) ;

CV:=a+b+c;


CV:=a+b+c; p:=CV/2;

S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)*

S:=sqrt(p*(p-a)*(p-b)*(p-c));

((a+b+c)/2-b)*((a+b+c)/2-c)));

Write(CV) ;

Write(CV) ;

Write(S) ;

Write(S) ;

end.

end.

*Phương án 2. Đối tượng lớp có tố chất khá, giỏi.
Phiếu học tập: cho bảng sau
Var a,b,c,CV : Integer ;
p,s : real ;
begin
Readln(a) ;
Readln(b) ;
Readln(c) ;
CV:=a+b+c; p:=CV/2;

S:=sqrt(p*(p-a)*(p-b)*(p-c));
Write(CV) ;
16


Write(S) ;
end.
Câu hỏi 1: Dựa vào kiến thức sách giáo khoa, giải thích ý nghĩa của từng câu lệnh.
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 10 phút ) sau đó thảo luận nhóm 2
học sinh / 1 bàn ( 10 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm :
begin

Bắt đầu phần thân chương trình

Readln(a) ;

Nhập giá trị từ bàn phím cho a

Readln(b) ;

Nhập giá trị từ bàn phím cho b

Readln(c) ;


Nhập giá trị từ bàn phím cho c

CV:=a+b+c;

Tính a+b+c rồi ‘gán’ giá trị vào biến CV

p:=CV/2;

Tính CV chia 2 rồi ‘gán’ giá trị vào biến

S:=sqrt(p*(p-a)*(p-b)*(p-c));

Tính giá trị

p

p ( p − a )( p − b)( p − c ) rồi ‘gán’ giá

trị vào biến S
Write(CV) ;

Đưa giá trị CV ra màn hình

Write(S) ;

Đưa giá trị S ra màn hình

end.
Kết thúc chương trình
Câu hỏi 1: Dựa vào kiến thức sách giáo khoa, thực hiện khai báo biến, giải thích ý

nghĩa của từng khai báo.
Thực hiện:

17


Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 5 phút ) sau đó thảo luận nhóm 2 học
sinh / 1 bàn ( 5 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm.
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các
nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức.
Sản phẩm :
Var a,b,c,CV : Integer ;

a, b, c nguyên dương nên CV:=a+b+c ; CV nguyên
dương : integer ;

p,S : real ;

CV/2 là số thực ‘p’ là số thực;
sqrt(p*(p-a)*(p-b)*(p-c)); là số thực : S là số thực.

begin

Bắt đầu phần thân chương trình

Readln(a) ;

Nhập giá trị từ bàn phím cho a


Readln(b) ;

Nhập giá trị từ bàn phím cho b

Readln(c) ;

Nhập giá trị từ bàn phím cho c

CV:=a+b+c;

Tính a+b+c rồi ‘gán’ giá trị vào biến CV

p:=CV/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));

Tính CV chia 2 rồi ‘gán’ giá trị vào biến
Tính giá trị

p ( p − a )( p − b)( p − c) rồi ‘gán’ giá

Write(CV) ;

trị vào biến S

Write(S) ;

Đưa giá trị CV ra màn hình

end.


p

Đưa giá trị S ra màn hình
Kết thúc chương trình
Hoạt động 4. Thực hành
Giáo viên yêu cầu học sinh thực hành:
18


Cho học sinh chạy chương trình
Kết quả: Hiển thị trên màn hình

Học sinh không thấy xuất hiện gì !
Giáo viên giải thích máy tính đang chờ nhập a,b,c từ bàn phím, yêu cầu học sinh
nhập a=2
b=3
19


c=4
Học sinh thực hiện nhập, cứ nhập 1 số thì bấm enter, kết quả:

Giáo viên yêu cầu học sinh nhận xét các giá trị in ra màn hình
Học sinh: CV=9
S=2.90473775097E+00.
Giáo viên: thêm thủ tục nào để màn hình nhập và in ra hiển thị như sau:
a=2
b=3
c=4

CV=9
S=

2.90

Học sinh: Đưa a=,b=,c= … ra màn hình bằng câu lệnh Write('a=');… và quy định
kiểu hiển thị của diện tích S.
Giáo viên: Yêu cầu học sinh thực hành
Sản phẩm:

20


Kết quả:

Học sinh thắc mắc câu lệnh Write(S:10:2); vì nghĩ rằng diện tích chia cho 10 lại
chia tiếp cho 2.
Giáo viên giải thích: Dành 10 chỗ trên màn hình để hiển thị giá trị S, dành 2 chỗ
cho số thập phân sau dấu '.' ;
Củng cố:
? 1. So sánh: Write('CV='); và Write(CV);
21


2. Write('a='); readln(a); đâu là câu lệnh nhập giá trin cho a từ bàn phím, nếu
không có Write('a='); có nhập được giá trị a không ?
Hoạt động 5: Bài tập về nhà
Bài 1: Nhập vào 2 cạnh của một hình chữ nhật. In ra màn hình diện tích và chu vi
của nó.
Bài 2: Nhập vào bán kính của hình tròn. In ra màn hình diện tích và chu vi của nó.

Bài 3: Viết chương trình giải phương trình bậc 1 (ax + b = 0) với a khác 0
Bài 4: Viết chương trình giải phương trình bậc 2 (ax2 + bx + c =0) với a khác 0
Bài 5: Nhập vào thời gian 1 công việc nào đó là x giây. Hãy chuyển đổ i và viết ra
màn hình số thời gian trên dưới dạng bằng bao nhiêu giờ, bao nhiêu phút, bao nhiêu
giây.
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản
thân, đồng nghiệp và nhà trường:
Qua kết quả khảo sát mức độ hứng thú và hiểu bài của học sinh trong các tiết
dạy học theo hướng nghiên cứu bài học có sử dụng đồ dùng dạy học như sau:
Kết quả
Trước khi áp dụng sáng kiến
Sau khi áp dụng sáng kiến
Thái độ
Sự tập trung chú ý vào bài học HS hứng thú, sự tập trung
của HS chưa cao.
chú ý vào bài học được
nâng cao.
Hành vi
Một số HS trung bình, yếu HS trung bình yếu đã mạnh
chưa chủ động tham gia thảo dạn tham gia thảo luận. Cả
luận, ỉ lại vào bạn cùng nhóm, lớp tích cực, chủ động khám
xây dựng bài miễn cưỡng.
phá nội dung bài học.
Nhận thức
- Tỉ lệ tiếp thu kiến thức ngay - Tỉ lệ tiếp thu kiến thức
trên lớp đạt khoảng từ 65% ngay trên lớp đạt từ 87% -70%.
95%.
- Thực hành vận dụng kiến - Thực hành vận dụng kiến
thức vào viết chương trình đạt thức vào viết chương trình
khoảng 70%.

đạt 90%-95%.
Tôi tin tưởng rằng với cách làm này, HS sẽ thực sự yêu thích môn Tin học
và chất lượng chắc chắn sẽ được nâng cao và việc học Tin học sẽ không còn đơn
thuần là việc câu lệnh bằng ngôn ngữ lập trình khô khan mà hướng tới học sinh học
chủ động tích cực.
3. Kết luận, kiến nghị
22


3.1. Kết luận
Sau khi dạy theo 2 phương án tôi đưa ra đa số học sinh đã hiểu và viết tốt
chương tính chu vi, diện tích tam giác trong đó 3 số a,b,c nguyên dương là 3 cạnh
tam giác. Đạt yêu cầu đề ra của chuẩn kiến thức kỹ năng tin học 11. Trong sáng
kiến này tôi xin chỉ trình bày đến phép toán, biểu thức, câu lệnh gán, thủ tục vào ra,
cấu trúc chương trình... phần câu lệnh rẽ nhánh, câu lệnh lặp, kiểu dữ liệu, chương
trình con… xin phép được trình bày ở bài viết sau.
Học sinh được hoạt động nhóm ( dạy học theo hướng phát triển năng lực học
sinh ) học sinh tự học, khám phá kiến thức, đã tạo ra được sản phẩm từ đó tạo hứng
thú trong học tập ( học sinh cảm thấy mình đã thực hiện được từ những đồ dùng tự
làm). Giờ học sôi nổi, học sinh hoạt động tích cực.
Thảo luận nhóm thay vì 8 học sinh như trước tôi chỉ cho 1 nhóm 2 học sinh
giúp cho học sinh được hoạt động thực sự, loại bỏ tính ỉ lại khi hoạt động nhóm quá
nhiều học sinh vì thực tế lớp học còn đông học sinh ( khoảng 40 học sinh ).
Trong bài viết này vẫn còn hạn chế khi trong cả quá trình dạy chỉ dạy một
bài toán dẫn đến nhàm chán cho học sinh khá giỏi, phát huy tính sáng tạo, tính
phong phú khi thực hiện trong nhiều bài toán là chưa thật tốt. Vậy rất mong Hội
đồng khoa học góp ý để sáng kiến kinh nghiệm của tôi được hoàn thiện hơn.
3.2. Kiến nghị: Không
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ


Phó Hiệu trưởng

Thanh Hóa, ngày 18 tháng 6 năm
2020.
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung của
người khác.

Đỗ Duy Thành
Nguyễn Hồng Nhất

23


Tài liệu tham khảo
[1]

Hồ Sĩ Đàm (chủ biên), Hồ Cẩm Hà, Trần Đỗ Hùng, Nguyễn Đức Nghĩa,
Nguyễn Thanh Tùng, Ngô Ánh Tuyết (2006), Sách giáo khoa Tin học 11,
NXB Giáo dục .

24



×