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

SKKN: Phương pháp giảng dạy một số nội dung khó trong chương trình Tin học 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 (698.22 KB, 27 trang )

SÁNG KIẾN KINH NGHIỆM

PHƯƠNG PHÁP GIẢNG DẠY MỘT SỐ
NỘI DUNG KHĨ TRONG CHƯƠNG
TRÌNH TIN HỌC 11


I. LÝ DO CHỌN ĐỀ TÀI:
 

 

Công nghệ thông tin là một ngành khoa học đang phát triển rất mạnh mẽ.

Sự bùng nổ thông tin trong thời đại ngày nay, tốc độ phát triển của công nghệ
thông tin khiến cho người thầy khơng thể dạy hết mọi điều cho học trị, mà dù có
kéo dài thời gian để dạy hết mọi điều thì rồi các kiến thức đó cũng nhanh chóng
trở nên lạc hậu,
Do đó người thầy cần phải tìm ra phương pháp dạy học tích cực hơn để
tăng hiệu quả dạy và học. Dạy học sinh cách chủ động, phương pháp học, cách
học những điều mà thực tế đòi hỏi thay vì chuyển tải một lượng kiến thức quá
nhiều đến mức học sinh khơng thể nhớ nổi hoặc có nhớ lúc học, cịn lúc cần vận
dụng thì qn hết.
Mơn Tin học là một môn học mới mẻ của học sinh THPT, học sinh chưa có
khái niệm về cơng nghệ thơng tin, khái niệm thuật tốn trong các ngơn ngữ lập
trình, vì vậy rất khó cho việc dạy và học.
Vậy cần phải có phương pháp dạy và học cho một mơn học hoàn toàn mới.
Xuất phát từ thực tiễn giảng dạy tại trường THPT NGƠ SĨ LIÊN tơi thấy
rằng, để đạt hiệu quả cao trong mỗi phần học, tiết học cần có cách thiết kế bài
giảng cho phù hợp với nội dung kiến thức; phương pháp, phương tiện dạy học phải
phù hợp với từng đối tượng học sinh. Để qua mỗi phần học, tiết học học sinh thích


thú với kiến thức mới, qua đó hiểu được kiến thức đã học trên lớp, đồng thời học
sinh thấy được tầm quan trọng của vấn đề và việc ứng dụng của kiến thức trước hết
để đáp ứng những yêu cầu của môn học, sau đó là việc ứng dụng của nó vào các
cơng việc thực tiễn trong đời sống xã hội (nếu có).
Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình
tự hoạt động cho máy tính, máy gia dụng là cần thiết. Và để làm được việc đó cần
có một q trình nghiên cứu, học tập về ngơn ngữ lập trình lâu dài, qua đó nhà lập
trình có thể chọn một ngơn ngữ lập trình thích hợp. Tuy nhiên mọi thứ đều có điểm
khởi đầu của nó, với học sinh việc học Pascal là khởi đầu cho việc tiếp cận ngôn


ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt
động cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự
động…Q đó giúp các em có thêm một định hướng, một niềm đam mê về tin học,
về nghề nghiệp mà các em chọn sau này. Đồng thời Pascal là một ngơn ngữ có cấu
trúc thể hiện trên 3 yếu tố: Cấu trúc về mặt dữ liệu, cấu trúc về mặt lệnh, cấu trúc
về mặt chương trình.
Ở một khía cạnh khác, trong chương trình tin học lớp 11, ngoài những nội
dung đã được Bộ GD&ĐT đưa vào phần nội dung giảm tải. Vẫn còn một số nội
dung mà những học sinh mới được tiếp xúc với môn học Pascal cảm thấy khó tiếp
thu, khó hiểu và khơng làm được các bài tập áp dụng.
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “PHƯƠNG PHÁP GIẢNG DẠY
MỘT SỐ NỘI DUNG KHĨ TRONG CHƯƠNG TRÌNH TIN HỌC 11”, nhằm
giúp các em biết cách tiếp cận với những nội dung đó ở một góc độ dễ hơn, trực
quan hơn, từ đó hiểu rõ được ngữ nghĩa cũng như cách sử dụng các câu lệnh phù
hợp để có thể tiếp thu tốt nội dung bài học và làm tốt các bài tập áp dụng, từ đó
cảm thấy u thích hơn mơn tin học nói chung và nội dung về ngơn ngữ lập trình
nói riêng.

II. TỔ CHỨC THỰC HIỆN ĐỀ TÀI

1. Cơ sở lý luận
1.1 Mục đích chọn đề tài
Trong quá trình học một vấn đề mới thì học sinh cần phải có sự liên hệ với
những nội dung đã được học từ những bài trước, phân biệt được sự khác nhau về
kiểu dữ liệu, về cấu trúc và về câu lệnh. Từ đó mới hình thành được khả năng tư
duy và tiếp thu được nội dung mới của bài học. Vấn đề này được thể hiện khá rõ
khi học tới nội dung kiểu mảng một chiều (là dãy hữu hạn các phần tử có cùng kiểu
dữ liệu), kiểu xâu (có thể xem như mảng một chiều mà mỗi phần tử là một kí tự).
Một nội dung khác là “Chương trình con và phân loại ”. Học sinh cần hình
dung được chương trình thường có những đoạn chương trình hay phép tính lặp lại
nhiều lần. Nếu mỗi lần lặp lại, ta phải viết những đoạn lệnh như nhau thì chương
trình trở nên dài dòng, rối rắm và mất thời gian vơ ích. Để giải quyết những trường


hợp như vậy, Pascal cho phép tạo ra các module, mỗi module mang một đoạn
chương trình gọi là chương trình con (subroutine hay subprogram). Mỗi chương
trình con sẽ mang một tên khác nhau. Một module chỉ cần viết một lần và sau đó
có thể truy xuất nó nhiều lần, bất kỳ nơi nào trong chương trình chính. Khi cần
thiết, ta chỉ việc gọi tên chương trình con đó ra để thi hành lệnh. Học sinh hiểu
được việc sử dụng chương trình con, chương trình có thể tiết kiệm được ơ nhớ.
Đồng thời, có thể kiểm tra tính logic trong tiến trình lập trình cho máy tính điện
tử, có thể nhanh chóng loại bỏ những sai sót khi cần hiệu chỉnh hay cải tiến
chương trình. Đây là khái niệm cơ bản trong ý tưởng lập chương trình có cấu
trúc. Một q trình tính cũng có thể có nhiều chương trình con lồng ghép vào
nhau.
1.2. Phạm vi nghiên cứu
Nội dung nghiên cứu này sẽ nêu các phương pháp để làm rõ một số vấn đề
sau:
 Kiểu dữ liệu mảng một chiều là cần thiết trong các chương trình có sử dụng
nhiều giá trị có kiểu dữ liệu giống nhau

 Tại sao kiểu xâu có thể xem như mảng một chiều và khi sử dụng thì giống kiểu
mảng một chiều ở những điểm nào
 Chương trình con được viết dưới hai dạng: thủ tục (procedure) và hàm
(function).
- So sánh cấu trúc của 2 kiểu chương trình con này thì tương tự với nhau, mặc
dù cách truy xuất của chúng có khác nhau và cách trao đổi thơng tin trong mỗi
kiểu cũng có điểm khác nhau. Hàm (function) trả lại một giá trị kết quả vô
hướng thông qua tên hàm và hàm được sử dụng trong biểu thức.
- Liên hệ một số hàm và thủ tục chuẩn đã học:
+ Hàm chuẩn, như hàm sin(x) mà chúng ta đã biết trong chương trước
có thể được xem như một chương trình con kiểu function với tên là sin và tham
số là x.


+ Thủ tục (procedure) không trả lại kết quả thông qua tên của nó, do vậy, ta
khơng thể viết các thủ tục trong biểu thức. Các lệnh Writeln, Readln trong chương
trước được xem như các thủ tục chuẩn.
* Đối tượng, kế hoạch và nội dung nghiên cứu
 Đối tượng: Học sinh lớp 11A1, 11A3, 11A4, 11A5 Trường THPT Ngô Sĩ Liên
 Kế hoạch nghiên cứu: Trực tiếp trong các bài dạy
 Nội dung nghiên cứu: Một số nội dung trong chương trình tin học 11
1.3. Thực trạng về thuận lợi và khó khăn
*. Thuận lợi
- Trường THPT Ngơ Sĩ Liên nằm ở thị trấn Trảng bom nên đa số học sinh
có hộ khẩu ở thị trấn và một số vùng lân cận, điều đó đã dẫn đến việc có đa số học
sinh đã được tiếp xúc với máy vi tính và một số học sinh đã được học môn tin học
Pascal trong chương trình THCS
- Học sinh trong trường đa số có ý thức học tập tốt, ham học hỏi
- Đội ngũ giáo viên mơn tin học nhiệt tình, có trách nhiệm, ham học hỏi.
- Nhà trường có 2 phịng thực hành tin học, mỗi phịng có hơn 30 máy vi

tính và 3 phịng học có ứng dụng CNTT là điều kiện tốt để các em học sinh tiếp
cận dễ dàng hơn với mơn tin học nói chung và mơn Pascal nói riêng
*. Khó khăn
- Học sinh được tuyển sinh vào lớp 10 với chất lượng đầu vào chưa thật sự
cao dẫn đến tư duy của các em còn nhiều hạn chế đối với những mơn học địi hỏi
tư duy cao.
- Đội ngũ giáo viên mơn tin học nhiệt tình có tránh nhiệm tuy nhiên cịn trẻ
nên kinh nghiệm giảng dạy chưa nhiều.
- Đặc thù của môn tin học là một mơn có kiến thức trừu tượng, đặc biệt là
mơn tin học lớp 11 với một số phần như kiểu mảng, kiểu xâu và chương trình con.
- Một số giáo viên chưa tìm ra được phương pháp phù hợp để có thể truyền
đạt kiến thức cũng như giúp học sinh tìm ra được những kiến thức mới qua các bài
học của môn tin học 11, dẫn đến học sinh tiếp thu một cách thụ động, khơng có
hứng thú với mơn tin học vì cảm thấy khó.


- Giáo viên chưa biết cách đặt một vấn đề mang tính cởi mở để học sinh tiếp
cận với nội dung mới và chưa nhấn mạnh khi giải một bài tốn lớn và phức tạp thì
cần phải chia nhỏ bài tốn lớn đó ra thành các bài tốn nhỏ hơn, mà dạy theo cảm
tính và trình độ của mình, chưa tìm hiểu rõ năng lực của các đối tượng học sinh.
- Học sinh đa phần đã tiếp xúc với máy tính và mơn Tin học nhưng chủ yếu là
để giải trí và một số kiến thức tin học căn bản. cịn với mơn lập trình thì tư duy
trừu tượng của các em còn hạn chế.
- Bài giảng của giáo viên đối với một số nội dung khó chưa có tính liên hệ với
thực tế, với nội dung mơn Tốn học, vì thế khó gây được hứng thú đối với học sinh
trong việc tìm hiểu một kiến thức mới.
- Việc sử dụng tư liệu, đồ dùng dạy học của giáo viên đôi khi chưa hợp lý nên
chưa đáp ứng nhu cầu của bài học. Cụ thể với những nội dung này, giáo viên cần
sử 1 máy vi tính để trình bày tiết dạy theo dạng trực quan và thực hành một số ví
dụ về viết chương trình hồn chỉnh nhằm giúp học sinh thấy ngay kết quả thực

hành và cũng hình dung được cách sử dụng Chương trình để giải các bài tốn. Từ
đó các em sẽ thấy được nội dung bài học, ý nghĩa của từng phần cũng như các sử
dụng dữ liệu hay câu lệnh cho việc viết chương trình nhất là đối với những bài tốn
phức tạp khi được giải trên máy tính.
Như vậy khó khăn chung của một số nội dung này là: Giáo viên chưa tìm ra
được phương pháp phù hợp, chưa nghiên cứu tổng quát về hệ thống kiến thức cơ
bản, mối quan hệ giữa các kiến thức của bài này với bài khác, giữa các mơn Tin
học với Tốn học, với thực tế, chưa biết cách đặt tình huống cho các em tìm hiểu,
thảo luận...Do đó học sinh khơng nắm rõ được các khái niệm cơ bản của kiểu mảng
một chiều, kiểu xâu và chương trình con trong tin học, khơng phân biệt được điểm
giống và khác nhau giữa chúng hoặc có nắm bắt được cũng chỉ là một cách chung
chung, phiến diện, tiếp thu bài học một cách hời hợt và thụ động.


2. Nội dung, biện pháp thực hiện các giải pháp của đề tài
2.1. Kiểu mảng
Phương pháp giảng dạy khi bắt đầu cho học sinh làm quen với kiểu mảng
một chiều.
Bắt đầu từ kiểu dữ liệu có cấu trúc thì học sinh được tìm hiểu thêm một kiểu
dữ liệu mới là kiểu mảng một chiều vì vậy giáo viên phải biết cách đặt vấn đề để
học sinh hiểu rõ tại sao phải có kiểu dữ liệu đó, nếu khơng có dữ liệu đó mà chỉ cần
những dữ liệu đã học thì có thể giải quyết được các bài tốn hay khơng hay viết
chương trình có tối ưu khơng.
Trên cơ sở đó, giáo viên sẽ đặt câu hỏi để học sinh tự suy nghĩ, trả lời và
thấy được việc cần thiết phải sử dụng một kiểu dữ liệu mới đó là kiểu dữ liệu có
cấu trúc
Cách thức tiến hành giảng dạy có thể được thực hiện trong giáo án qua cụ thể một
số mục đích yêu cầu sau:
* HS biết ý nghĩa và khái niệm được kiểu mảng một chiều
- Giáo viên có thể đặt vấn đề với học sinh thơng qua giao tiếp cởi mở mà học

sinh có thể hiểu được vì sao cần phải sử dụng đến kiểu mảng một chiều. Có thể mơ
tả về sự giao tiếp đó để bắt đầu vào nội dung bài học như sau:
Các vấn đề mà giáo viên đặt ra

Suy nghĩ và trả lời của học sinh

- Với các chương trình đã học em có - Số lượng biến sử dụng ít, chỉ 1, 2 hoặc
nhận xét gì về số lượng biến sử dụng 3 biến.
trong chương trình?
- Mở rộng: giả sử cần nhập điểm trung - Bằng số lượng học sinh và biến có kiểu
bình của các học sinh trong lớp thì phải thực
khai báo bao nhiêu biến và kiểu dữ liệu
của mỗi biến là gì?
- Khi thực hiện câu lệnh trong chương - Phải viết nhiều câu lệnh lặp lại
trình thì sẽ gặp trở ngại gì? (Đối với học
sinh tồn trường thì sao?)


Các vấn đề mà giáo viên đặt ra
Suy nghĩ và trả lời của học sinh
- Kiểu dữ liệu mà chúng ta đã học khi sử - Khơng cịn phù hợp
dụng có cịn phù hợp khơng?
- Em có nhận xét gì về kiểu dữ liệu của - Có cùng kiểu với nhau
các biến đó?
- Về số lượng biến thì thế nào?

- Nhiều nhưng là số hữu hạn

….




- Dựa trên phương pháp vấn đáp đó giáo viên có thể giới thiệu được việc cần
thiết của kiểu mảng một chiều
- HS có thể tự khái niệm được: “Mảng một chiều là dãy hữu hạn các phần tử
cùng kiểu”.
* Khai báo mảng một chiều:
Sách giáo khoa có khai báo cả hai cách. Trong đó cách trực tiếp giới thiệu
trước và gián tiếp giới thiệu sau. Tuy nhiên nếu giới thiệu với học sinh theo trình tự
này có thể làm cho học sinh bị thụ động trong cách khai báo vậy giáo viên có thể
dẫn dắt để học sinh tự khai báo được một trong hai cách. Nhằm ghi nhớ sâu hơn
việc khai báo biến mảng một chiều.
- Bắt đầu từ khai báo đã biết
Var <Tên biến> : <Kiểu dữ liệu>;
GV giả sử ngoài những kiểu dữ liệu đã học bây giờ ta có một kiểu dữ liệu mới
dạng kiểu mảng có tên là DiemTrungBinh, và cho HS khai báo:
Var

DTB : DiemTrungBinh;

Tuy nhiên trên thực tế thì kiểu DiemTrungBinh chưa có và Pascal cho phép chúng
ta định nghĩa ra kiểu dữ liệu này bằng câu lệnh:
Type <Tên kiểu mảng> = array [Kiểu chỉ số] of <kiểu phần tử>:
Do phải định nghĩa trước và khai báo sau nên các câu lệnh sẽ được viết là:
Type <Tên kiểu mảng> = array [Kiểu chỉ số] of <kiểu phần tử>;
Var <Tên biến mảng> : <Tên kiểu mảng>;
 Đây là cách thứ nhất để khai báo


Trong đó:

- Kiểu chỉ số có dạng: n1 . . n2 (n1, n2 là những số nguyên hoặc biểu thức
nguyên và n1 ≤ n2)
- Kiểu phần tử là kiểu dữ liệu của từng phần tử trong mảng.
Ví dụ:

Type DiemTrungBinh = array [1..50] of real;
Var

DTB : DiemTrungBinh;

Đây chính là cách thứ nhất để khai báo mảng. Tiếp theo đó giáo viên cho
học sinh nhận xét về khai báo trên có đặc điểm giống như tính chất bắc cầu của các
biểu thức. và cho học sinh tự viết ra một cách khác.
HS sẽ nhận xét được . <Tên biến mảng> : <Tên kiểu mảng>;
Mà <Tên kiểu mảng > = array [Kiểu chỉ số] of <kiểu phần tử>;
Nên có thể thay thế câu lệnh trên bằng câu lệnh sau:
Var <Tên biến mảng> : array[Kiểu chỉ số] of <Kiểu phần tử>;
 Đây chính là cách thứ 2 để khai báo:
Như vậy với phương pháp giảng dạy như trên học sinh đã không cần phải phụ
thuộc vào sách giáo khoa, mà chỉ cần nhớ kiến thức cũ và trải qua quá trình vấn đáp
và suy nghĩ theo sự dẫn dắt của giáo viên các em cũng có thể hiểu rõ được vai trị
của kiểu mảng một chiều, khái niệm được và khai báo được mảng một chiều một
cách hoàn toàn tự nhiên. Học sinh sẽ cảm thấy hứng thú và nhớ bài ngay trên lớp.
2.2. Kiểu xâu:
Bản chất của kiểu xâu là kiểu mảng một chiều mà mỗi phần tử là một kí tự.
Dựa vào điều này giáo viên cần gợi ý để học sinh nhận xét và thấy rõ được đặc
điểm của kiểu xâu. Có thể dựa vào các mơ phỏng sau và cho học sinh nhận xét.

Dãy A:


1

4

2

8

5

Dãy B:

2.5

6.1

5.0

4.3

7.2

Dãy C:

T

I

N


H

O

9

C

3


HS nhận xét:

Dãy A là dãy gồm 7 số nguyên
Dãy B là dãy gồm 5 số thực
Dãy C là dãy gồm 6 kí tự

Theo định nghĩa về kiểu mảng thì mỗi dãy trên đều gồm một số hữu hạn các
phần tử có cùng kiểu dữ liệu nên các dãy trên đều có thể xem là mảng một chiều
Dãy A và dãy B đã quen thuộc trong các bài tập mảng, cịn dãy C có đặc điểm mới
đó là mỗi phần tử trong dãy là một kí tự. Mà một dãy các kí tự thì có thể xem là
một xâu kí tự. Để làm việc với dãy kí tự này thì Pascal hỗ trợ cho người lập trình
sử dụng một kiểu dữ liệu có tính tương đồng với kiểu mảng một chiều là kiểu xâu.
Từ cách dẫn dắt đặt vấn đề trên học sinh có thể hiểu và xem xâu kí tự là một
mảng một chiều mà mỗi phần tử là một kí tự. Điều đó sẽ có ích rất nhiều trong việc
sử dụng các câu lệnh để duyệt qua các kí tự như (While…do…, hay
For…to…do…) và cách để tham chiếu đến một kí tự nào đó trong xâu như (C[3],
C[4],…)
Mặc dù xâu có thể xem như mảng một chiều, tuy nhiên khi làm việc với dãy
hữu hạn các kí tự mà xem như một xâu thì người lập trình được sử dụng rất nhiều

câu lệnh cũng như các thủ tục và hàm, điều này sẽ thuận lợi hơn rất nhiều trong khi
viết chương trình. Từ đó có thể nhấn mạnh để học sinh hiểu rõ hơn về vai trò của
kiểu xâu
2.3. Chương trình con:
Ngồi 2 nội dung trên thì chương trình con là một nội dung mà học sinh khó
tiếp cận nhất trong nội dung tin học 11. Vì vậy, hiểu chi tiết biến, về cấu trúc của
chương trình con dạng thủ tục và hàm, về lời gọi chương trình con cũng như cách
truyền tham số cho chương trình con sẽ mang tình quyết định trong việc viết
chương trình có sử dụng chương trình con. Ta sẽ xét cụ thể từng phần như sau:
2.3.1. Một số khái niệm về biến
a. Biến tồn cục (global variable): Cịn được gọi là biến chung, là biến
được khai báo ở đầu chương trình, nó được sử dụng bên trong chương trình chính
và cả bên trong chương trình con. Biến tồn cục sẽ tồn tại trong suốt quá trình
thực hiện chương trình.


b. Biến cục bộ (local variable): Còn được gọi là biến riêng, là biến được
khai báo ở đầu chương trình con, và nó chỉ được sử dụng bên trong thân chương
trình con hoặc bên trong thân chương trình con khác nằm bên trong nó (các
chương trình con lồng nhau). Biến cục bộ chỉ tồn tại khi chương trình con đang
hoạt động, nghĩa là biến cục bộ sẽ được cấp phát bộ nhớ khi chương trình con được
gọi để thi hành, và nó sẽ được giải phóng ngay sau khi chương trình con kết thúc.
c. Tham số thực hay cịn gọi là Tham trị (actual parameter) là một
tham số mà nó có thể là một biến tồn cục, một biểu thức hoặc một giá trị số
(cũng có thể biến cục bộ khi sử dụng chương trình con lồng nhau) mà ta dùng
chúng khi truyền giá trị cho các tham số hình thức tương ứng của chương trình
con.
d. Tham số hình thức hay còn gọi là Tham biến (formal parameter) là
các biến được khai báo ngay sau Tên chương trình con, nó dùng để nhận giá trị
của các tham số thực truyền đến. Tham số hình thức cũng là một biến cục bộ, ta

có thể xem nó như là các đối số của hàm tốn học.
2.3.2. Lời gọi chương trình con
 

Để chương trình con được thi hành, ta phải có lời gọi đến chương trình con,
lời gọi chương trình con thơng qua tên chương trình con và danh sách các tham số
tương ứng (nếu có). Các qui tắc của lời gọi chương trình con:
 Trong thân chương trình chính hoặc thân chương trình con, ta chỉ có thể gọi
tới các chương trình con trực thuộc nó.
 Trong chương trình con, ta có thể gọi các chương trình con ngang cấp đã được
thiết lập trước đó.
2.3.3. Thủ tục (Procedure):
Thủ tục là một đoạn cấu trúc chương trình được chứa bên trong chương
trình Pascal như là một chương trình con. Thủ tục được đặt tên và có thể chứa
danh sách tham số hình thức (formal parameters). Các tham số này phải được đặt
trong dấu ngoặc đơn ( ). Ta có thể truy xuất thủ tục bằng cách gọi tên của thủ
tục. Chương trình sẽ tự động truy xuất thủ tục đúng tên đã gọi và thực hiện các


lệnh chứa trong thủ tục đó. Sau khi thực hiện thủ tục xong, chương trình sẽ trở lại
ngay lập tức sau vị trí câu lệnh gọi thủ tục đó.
Có 2 loại thủ tục:
+ Thủ tục không tham số
+ Thủ tục có tham số.
* Cấu trúc của thủ tục khơng tham số
PROCEDURE < Tên thủ tục > ;
{ Các khai báo hằng, biến, kiểu cục bộ... }
BEGIN
 


 

{ ... các lệnh trong nội bộ thủ tục ... }

 

END ;
Ví dụ1 : Tìm số lớn nhất trong 3 trị số nguyên
Program So_ln ;
Var
a, b, c : integer ; yn : Char ;
Procedure maximum ;
Var max : integer ;
Begin
if a > b then max := a
else max := b ;
if c > max then max := c ;
Writeln ( ‘ So lon nhat la ‘, max:6 ) ;
end ;
BEGIN
yn
:= ‘Y‘ ;
While (upcase(yn) = ‘Y ‘)
do Begin
Writeln ( ‘Nhap 3 so nguyen ‘ ) ;
Readln (a, b, c ) ;
maximum ;
Write ( ‘ Tiep tuc nhap 3 so moi khong (y/n) ? ‘ ) ; Readln (yn) ;
End ;
END.

Trong chương trình trên, thủ tục maximum được khai báo trước khi nó
được truy xuất, các biến a, b, c được gọi nhập vào ở chương trình chính và biến
max được định nghĩa bên trong thủ tục. Điều này cho ta thấy, không phải lúc nào
cũng cần thiết khai báo biến ngay đầu chương trình chính như vậy ở đây ta thấy
các biến a, b, c, yn là các biến toàn cục, biến max là biến cục bộ.


Ví dụ2 : nhập vào một mảng 1 chiều gồm n phần tử là các số nguyên tính và đưa
ra màn hình tổng các số nguyên lớn hơn 0.
PROGRAM tong_mang;
Uses crt;
Var a:array[1..100] of integer; n:integer;
PROCEDURE nhap;
Var i:integer;
Begin
Write(‘nhap n=’);
readln(n);
For i:=1 to n do
Begin
Write(‘a[’,i,’]=’);
Readln(a[i]);
End;
End;
Procedure tinhtong;
Var s,i:integer;
Begin
S:=0;
For i:=1 to n do
If a[i]>0 then
s:=s+a[i];

End;
BEGIN
Clrscr;
Nhap;
Tinhtong;
Readln;
END.
Trong chương trình trên a là 1 kiểu mảng, n là 1 kiểu số ngun, 2 biến đó
là 2 biến tồn cục. thủ tục nhap có vai trị nhập n phần tử từ bàn phím vào mảng a.
Các biến i, s là các biến cục bộ. ở chương trình trên chúng ta thấy phần chương
trình chính nhìn rất gọn gàng nhờ các lời gọi chương trình con. Những cơng việc
chủ yếu đều đã được giải quyết ở các chương trình con.


* Cấu trúc của thủ tục có tham số
PROCEDURE < Tên thủ tục > (<danh sách tham số hình thức >);
{ Các khai báo hằng, biến, kiểu cục bộ ... }
BEGIN
 
{ ... các lệnh trong nội bộ thủ tục ... }
END ;
Khi viết một thủ tục, nếu có các tham số cần thiết, ta phải khai báo nó
(kiểu, số lượng, tính chất, ...). Các tham số này gọi là tham số hình thức (formal
parameters).
Một thủ tục có thể có 1 hoặc nhiều tham số hình thức. Khi các tham số
hình thức có cùng một kiểu thì ta viết chúng cách nhau bởi dấu phẩy (,). Trường
hợp các kiểu của chúng khác nhau hoặc giữa khai báo tham số truyền bằng tham
biến và truyền bằng tham trị (sẽ học ở phần sau ) thì ta phải viết cách nhau bằng
dấu chấm phẩy (;).
Ví dụ : Tính giai thừa của một số

Program Tinh_Giai_thua ;
Var n : integer ; gt : real ;
Procedure giaithua (m : integer );
Var i : integer ;
Begin
gt := 1 ;
For i := 1 to m do gt := gt * i ;
End;
BEGIN
Write(‘Nhap so nguyen n (0 <= n < 33) = ‘ ) ;
Readln (n);
If n>=0 then
Begin
giaithua (n);
Writeln (‘Giai thua cua ‘, n, ‘ la : ‘, gt: 10 : 0) ;
End
Else
Writeln( ‘ khong tinh duoc giai thua!‘ ) ;
Readln;
END. 


- Trong chương trình trên m là các tham số hình thức của thủ tục
giaithua.
- Khi gọi thủ tục giaithua(n) thì tham số thực n được truyền tương ứng
cho tham số hình thức m.
2.3.4. Hàm (Function) :
Hàm là một chương trình con cho ta 1 giá trị kiểu vơ hướng. Hàm tương tự
như thủ tục nhưng trả về một giá trị thông qua tên hàm và lời gọi hàm tham gia
trong biểu thức.

Cấu trúc một hàm tự đặt gồm:
FUNCTION <Tên hàm> (<Tham số hình thức : kiểu biến>) :quả> ;
{ các khai báo hằng, biến, kiểu cục bộ... }
BEGIN
{ ... các câu lệnh trong nội bộ hàm ... }
END ;
Trong đó:
-

Tên hàm là tên tự đặt cần tuân thủ theo nguyên tắc đặt tên trong Pascal.

-

Kiểu kết quả là một kiểu vô hướng, biểu diễn kết quả giá trị của hàm.

-

Một hàm có thể có 1 hay nhiều tham số hình thức, khi có nhiều tham số hình

thức cùng một kiểu giá trị thì ta có thể viết chúng cách nhau bằng dấu phẩy (,).
Trường hợp các tham số hình thức khác kiểu thì ta viết chúng cách nhau bằng dấu
chấm phẩy (;).
- Trong hàm có thể sử dụng các hằng, kiểu, biến đã được khai báo trong chương
trình chính nhưng ta có thể khai báo thêm các hằng, kiểu, biến dùng riêng trong
nội bộ hàm. Chú ý là phải có một biến trung gian có cùng kiểu kết quả của hàm
để lưu kết quả của hàm trong quá trình tính tốn để cuối cùng ta có 1 lệnh gán giá
trị của biến trung gian cho tên hàm.



Ví dụ : FUNCTION TINH (x, y : integer ; z : real ) : real ;
Đây là một hàm số có tên là TINH với 3 tham số hình thức x, y, z. Kiểu
của x và y là kiểu số nguyên integer còn kiểu của z là kiểu số thực real. Hàm
TINH sẽ cho kết quả kiểu số thực real.
Ví dụ :
Bài tốn tính giai thừa.
Program giaithua;
Var x : integer ;
Function gt(n : integer):integer ;
Var i, tichso : integer ;
Begin
tichso:= 1 ;
If n > 1 Then
For i := 2 to n do
tichso:= tichso * i ;
gt := tichso;
End ;
BEGIN
Write (‘ Nhap vao so nguyen duong x = ‘ );
Readln (x) ;
Writeln (‘ Voi x = ‘, x , ‘ thi giai thua se la :
Readln;
END.

x ! = ‘, gt(x));

Khai báo kiểu dữ kiệu cho các tham số hình thức trong thủ tục và hàm, ta
cần phải chú ý điểm sau:
Nếu kiểu dữ liệu của các tham số hình thức là các kiểu dữ liệu có cấu trúc
(kiểu array, string, kiểu record,... ) thì việc khai báo kiểu dữ liệu cho các tham số

hình thức nên được khai báo theo cách gián tiếp, tức là phải thơng qua từ khóa
TYPE.
Ví dụ :

Procedure

Xuat1(hoten : string[25]);

Procedure Xuat2(mang: array[1..10] of integer);
Hai chương trình con Xuat1 và Xuat2 đều bị lỗi ở phần khai báo kiểu dữ liệu
cho hai tham số hình thức là hoten và mang.


Để khắc phục lỗi này, ta sẽ khai báo gián tiếp một kiểu dữ liệu str25 và
M10 thông qua từ khóa TYPE như sau:
TYPE
Str25=string[25]; {Str25 là một kiểu chuỗi có độ dài 25}
M10=Array[1..10] of integer; {M10 là một kiểu dữ kiệu mảng có 10 phần tử
nguyên}
Tiếp đến, dùng 2 kiểu dữ liệu mới định nghĩa Str25 và M10 để định kiểu cho
các tham số hình thức hoten và mang như sau:
Procedure Xuat1(hoten : Str25);
Procedure Xuat2(mang: M10);
2.3.5 Truyền tham số cho trương trình con
Khi truyền tham số trong Pascal, địi hỏi phải có sự tương ứng về tên của
kiểu dữ liệu của các tham số hình thức và tham số thực. Một số định nghĩa và qui
tắc về truyền tham số trong Pascal:
Những tham số hình thức nằm sau từ khóa VAR gọi là tham số biến
(variable parameter). Với tham số biến, các tham số thực bắt buộc phải là biến
chứ không được là giá trị. Khi giá trị của tham số biến thay đổi thì nó sẽ làm thay

đổi giá trị của tham số thực tương ứng và khi ra khỏi chương trình con đó, tham
số thực vẫn giữ giá trị đã được thay đổi đó.
Những tham số hình thức khơng đứng sau từ khóa VAR gọi là tham số trị
(value parameter), khi đó các tham số thực có thể là một biến, một biểu thức, một
hằng, hoặc một giá trị số. Các tham số trị nhận giá trị từ tham số thực khi truyền như
là giá trị ban đầu, khi giá trị của tham số trị thay đổi thì nó sẽ khơng làm thay đổi giá
trị của tham số thực, nghĩa là giá trị của tham số thực sau khi thốt khỏi chương trình


con vẫn luôn bằng với giá trị của tham số thực trước khi truyền đến chương trình con
đó. Do vậy một tham trị khơng bao giờ là kết quả tính tốn của chương trình con. 
Ví dụ1: Viết chương trình tính lập phương a3.
PROGRAM vidu_thamtri_1;
VAR num: integer;
{num là biến toàn cục}
PROCEDURE LapPhuong(var a:integer);{a là một tham biến}
Begin
a:=a*a*a;
End;
BEGIN
write(‘Nhập số cần tính lập phương num = ‘);
readln(num);
LapPhuong(num); {tham số thực num được truyền cho tham biến a}
writeln(‘Lập phương của số vừa nhập = ‘, num);
readln;
END.
Ví dụ:
PROGRAM vidu_Thamtri_2;
VAR
a, b : integer ; {biến tồn cục }

PROCEDURE thamso (x : integer ; VAR y : integer ) ;{ x: là tham số trị , còn y là
tham số biến}

BEGIN
x := x + 1 ;
y := y + 1 ;
Writeln (‘Trong procedure thamso, ... ‘) ;
Writeln (‘ Hai số của bạn là a = ‘, x : 3, ‘ và b = ‘, y : 3 ) ;
END ;
BEGIN
Write (‘ Nhập vào 2 trị số nguyên a, b : ‘) ;
Readln (a, b) ;
Writeln (‘ Ban đầu, Bạn đã nhập vào a = ‘, a : 3, ‘và b = ‘, b : 3 ) ;
thamso (a, b) ;{tham số thực a truyền cho tham số trị x tham số thực
b truyền cho tham số biến y }
Writeln (‘ Ngoài procedure thamso, ... ‘);
Writeln (‘ Hiện nay, số a là ‘, a : 3, ‘ và b là ‘, b : 3 )
Writeln (‘ Ta thấy, a không đổi và b thay đổi ! ) ;
Readln;
END.


Ví dụ2: giải bài tốn phương trình bậc 2 ax2+bx+c=0;
Cách 1: theo phương pháp khơng dùng chương trình con.
Program giai_pt_bac2;
Uses crt;
Var a, b, c, d: Real;
Begin
Clrscr;
Writeln('Nhap 3 he so cua phuong trinh:');

Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);
If a = 0 Then
If b = 0 Then
If c = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-c/b:0:1)
Else
Begin
d := b * b - 4 * a * c;
If d < 0 Then Writeln('Phuong trinh vo nghiem!')
Else
If d = 0 Then Writeln('Pt co nghiem kep: x1 = x2 = ',-b / (2 * a):0:1)
Else
Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-b + sqrt(d)) / (2 * a):0:1);
Writeln('x2 = ',(-b - sqrt(d)) / (2 * a):0:1);
End;
End;
Readln;
End.
Cách 2: theo phương pháp dùng chương trình con.
Mục tiêu là chia bài toán ban đầu thành những bài toán nhỏ độc lập. Chẳng hạn:
Ta sử dụng chương trình con thành hai bài tốn :
T1: Giải phương trình bậc nhất
T2: Giải phương trình bậc hai



Program giai_pt_bac2;
Uses crt;
Var a, b, c: Real;
Procedure ptb1(m,n:Real);
Begin
If m = 0 Then
If n = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-n/m:0:1)
End;
Procedure ptb2(x, y, z: Real);
Var d: Real;
Begin
D := y * y - 4 * x * z;
If d < 0 Then Writeln('Phuong trinh vo nghiem!')
Else
If d = 0 Then Writeln('Pt co nghiem kep: x1 = x2 = ',-y / (2 * x):0:1)
Else
Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-y + sqrt(d)) / (2 * x):0:1);
Writeln('x2 = ',(-y - sqrt(d)) / (2 * x):0:1);
End;
End;
Begin
Clrscr;
Writeln('Nhap 3 he so cua phuong trinh:');
Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);

If a=0 Then ptb1(b, c)
Else ptb2(a, b, c);
Readln
End.
Ở đây ta lại thấy trong bài toán trên việc giải phương trình bậc hai có ba trường
hợp xảy ra. Ta nên chia tiếp thành 5 bài toán nhỏ như sau và cách 2 có thế viết lại
như sau:
T1: Giải phương trình bậc nhất
T2:  > 0
T3:  = 0
T4:  < 0
T5: Giải phương trình bậc hai


Var a, b, c, d: Real;
Procedure ptb1(m, n : Real);
Begin
If m = 0 Then
If n = 0 Then Writeln('Phuong trinh co vo so nghiem!')
Else Writeln('Phuong trinh vo nghiem!')
Else Writeln('Phuong trinh co mot nghiem: x = ',-n / m:0:1)
End;
Procedure denta_am;
Begin
Writeln('Phuong trinh vo nghiem!');
End;
Procedure denta_0(p, q: Real);
Begin
Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-q / (2 * p):0:1)
End;

Procedure denta_duong(i, j: Real);
Begin
Writeln('Phuong trinh co hai nghiem phan biet:');
Writeln('x1 = ',(-j + sqrt(d)) / (2 * i):0:1);
Writeln('x2 = ',(-j - sqrt(d)) / (2 * i):0:1);
End;
Procedure ptb2(x, y, z: Real);
Begin
d := y * y - 4 * x * z;
If d < 0 Then denta_am
Else
If d = 0 Then denta_0(x, y)
Else denta_duong(x, y);
End;
Begin
Writeln('Nhap 3 he so cua phuong trinh:');
Write('a = '); Readln(a);
Write('b = '); Readln(b);
Write('c = '); Readln(c);
If a = 0 Then ptb1(b, c)
Else ptb2(a, b, c);
Readln
End.


III. HIỆU QUẢ CỦA ĐỀ TÀI
- Trong năm học 2011 – 2012 vừa qua tôi đã áp dụng những nội dung trên
của sáng kiến kinh nghiệm này vào giảng dạy ở một số lớp. Qua kết quả kiểm tra
đánh giá học sinh khi áp dụng kinh nghiệm so với khi chưa áp dụng kinh nghiệm
ở các lớp học có trình độ tương đương nhau tôi thấy các em đã nhận thức vấn đề

tốt hơn. Cụ thể tỉ lệ phần trăm điểm thi học kì 2 của một số lớp khi thực hiện thí
điểm giải pháp của sáng kiến như sau:

Lớp 

Mức độ áp dụng 

11A1 (45) 
11A3 (45) 
11A4 (44) 
11A5 (45)

Thường xuyên  
không áp dụng 
Có áp dụng 
Ít áp dụng

Kết quả 
Giỏi 
Khá 
Trung bình 
05(11.1%)  17(37.8%) 
21(46.6%) 
00 (0%) 
04(8.9%) 
19(42.2%) 
01(2.2%)  09(20.5%) 
20(45.5%) 
00 (0%) 05(11.1%)
21(46.7%)


Yếu – Kém 
02(4.5%) 
22(48.9%) 
14(31.8%) 
19(42.2%)

Trong đó lớp 11A3, 11A4, 11A5 trình độ tương đương nhau, cịn lớp 11A1 là
lớp chọn, có đầu vào tốt hơn.
Như vậy, với những suy nghĩ và cố gắng ban đầu, tôi đã biên soạn giáo án
và giảng dạy từ kinh nghiệm từ các năm, từ kinh nghiệp khi dự giờ của đồng
nghiệp cụ thể là những nội dung đã nêu trên tơi thấy đã có một kết quả khả
quan hơn điều đó được thể hiện ở tỉ lệ của các lớp được phân công giảng dạy
khi tôi áp dụng thử nghiệm với những mức độ khác nhau.
Bản thân tự nhận thấy rằng một khi giáo viên tập trung đầu tư công sức và
kiến thức vào bài dạy, học sinh sẽ tiếp thu bài một cách tích cực không thụ
động và hứng thú trong học tập hơn. Chính sự ham mê, tích cực học của học
sinh là động lực thúc đẩy giáo viên cần đổi mới tư duy, phương pháp dạy học
phù hợp với sách giáo khoa mới. Mỗi giờ học mà các em đạt kết quả cao đã thể
hiện được phần nào tâm huyết của người dạy.


IV. ĐỀ XUẤT, KHUYẾN NGHỊ KHẢ NĂNG ÁP DỤNG
Sau khi nghiên cứu và thử nghiệm áp dụng tại đơn vị bước đầu đã có những
hiệu quả, bên cạnh đó tơi thấy cần có thời gian nhiều hơn để thử nghiệm, vì vẫn cịn
có một số học sinh vẫn chưa đạt u cầu tuy điểm kiểm tra xấp xỉ trung bình.
Mơn Tin học là một môn học mới mẻ của học sinh THPT, học sinh chưa có
khái niệm về cơng nghệ thơng tin, khái niệm thuật tốn trong các ngơn ngữ lập
trình, vì vậy rất khó cho việc dạy và học. Cần phải có thời gian nhiều hơn cho lý
thuyết và thực hành, vì theo phân phối chương trình như hiện nay thời gian giảng

dạy cịn ít, học sinh chưa nắm bắt được lý thuyết cũng như thực hành. Đội ngũ
giáo viên Tin học cịn ít kinh nghiệm về giảng dạy, cho nên bài tập thực hành cịn
ít, hầu như chỉ bó gọn trong sách giáo khoa, chưa có được những thư viện về
bài tập. Vận dụng và sử dụng các thiết bị về cơng nghệ thơng tin cịn ít.
Giáo viên phải có sự tâm huyết với nghề, yêu nghề, yêu học sinh. Những
bài dạy trên lớp của giáo viên thể hiện một cách sinh động, nâng cao trách nhiệm
và tinh thần chịu khó suy nghĩ đổi mới phương pháp của người dạy.
Tin học là một khoa học mới mẻ mang tính trừu tượng, nhất là đối với các
em học sinh tuổi này. Nhưng đây cũng chính là điều kiện để các em cọ xát với
khoa học mới mẻ và đầy triển vọng trong thời đại CNTT này. Vì vậy giáo viên cần
sử dụng nhiều phương pháp dạy học như phương pháp trực quan, đặt vấn đề, thảo
luận nhóm.... để bằng mọi cách giúp học sinh tiếp cận nhanh nhất với nội dung bài
học.
Từ liên hệ thực tế học sinh có thể tự rút ra kết luận dưới sự tổ chức, hướng
dẫn của giáo viên, do đó vài trị tổ chức của giáo viên vô cùng quan trọng, cần tạo
ra không khí học tập một cách sinh động, hấp dẫn gây hứng thú cho học sinh khi
học tập. Tránh tình trạng nhồi nhét đơn giản hóa, đọc sách giáo khoa cho học sinh
ghi chép.
Trên đây là một số nội dung có đề cập đến phương pháp, hướng giải quyết
một số nội dung khó dạy trong chương trình tin học 11. Tùy thuộc vào từng nội
dung mà giáo viên sẽ biên soạn giáo án theo hướng tích cực nhằm tạo hứng thú
cho học sinh và phát huy được tính tích cực, chủ động sáng tạo của học sinh.


Một số giải pháp trên cũng mới chỉ dừng lại ở một số nội dung đã đề cập,
bên cạnh đó vẫn còn một số nội dung khác khi học sinh mới học cũng rất khó tiếp
thu như: “Câu lệnh lặp, Kiểu tệp,…” . Từ suy nghĩ của bản thân và kinh nghiệm
khi giảng dạy tôi sẽ cố gắng nghiên cứu tiếp để bổ sung và sửa đổi nhằm tìm ra
một phương pháp tốt nhất giúp học sinh có thể hiểu bài dễ hơn và quan trọng là
phát huy được tính tích cực của học sinh, rất mong được sự đóng góp ý kiến của

các đồng nghiệp

NGƯỜI THỰC HIỆN


V - TÀI LIỆU THAM KHẢO:
 

1. Sách giáo khoa tin học 11

Hồ Sĩ Đàm

chủ biên

2. Sách giáo viên tin học 11

Hồ Sĩ Đàm

chủ biên

3. Hướng dẫn việc thực hiện giảm tải môn tin học 11 của Bộ GD & ĐT
4. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp .
5. Cấu trúc dữ liệu và giải thuật của Đỗ Xuân Lôi


×