I. MỞ ĐẦU
1.1. Lý do chọn đề tài:
Hiện nay công nghệ thông tin nói chung và Tin học nói riêng là công cụ hỗ trợ
đắc lực cho công việc quản lý và giảng dạy trong các cơ sở giáo dục, trong hầu hết
mọi lĩnh vực CNTT đã được ứng dụng, với những tính năng ưu việt, sự tiện dụng,
tin học đã là một phần không thể thiếu được trong nhiều ngành cũng như sự phát
triển.
Trong nhiều năm gần đây ngành GD-ĐT đã trở thành điểm sáng về ứng dụng
CNTT vào quản lý và trong công tác giảng dạy của giáo viên.
Tin học là một môn học đã được đưa vào giảng dạy chính thức cho đối tượng
học sinh THPT trong nhiều năm nay. Tuy nhiên, đối với cấp THCS môn Tin học
vẫn chưa được coi là môn học chính thức mà chỉ là môn học tự chọn, đây là một
khó khăn không nhỏ đối với giáo viên bộ môn tin học vì sự nhìn nhận cũng như thái
độ học tập của học sinh đối với môn học. Là môn học đòi hỏi sự tìm tòi sáng tạo
của người học hơn nữa nó cũng có những đặc thù riêng là liên quan chặt chẽ với sử
dụng máy tính. Đây là một chương trình đào tạo mang tính ứng dụng, do đó yêu cầu
người học phải nắm bắt chính xác, nhanh, sử dụng máy tính tốt và kỹ năng thực
hành trên máy tính phải ở mức độ cao nhất.
Không như những môn học khác. Đặc trưng của môn Tin học là lí thuyết đi đôi
với thực hành. Thời lượng thực hành thông thường ít nhất là 50%, mức thời gian tốt
nhất là khoảng 75%, học sinh có thể học lý thuyết ngay trên phòng máy tính để
nhận biết các thao tác cũng như các lệnh và nút lệnh một cách trực quan và rõ ràng
hơn.
- Lịch sử nhân loại đã chứng kiến những cuộc cách mạng về công nghệ thông
tin với sự trợ giúp của máy tính và hệ thống máy tính, con người đã nâng cao năng
suất và tự động hóa ngày một hiệu quả hơn và một trong những ứng dụng không thể
không nhắc đến đó là những ứng dụng phần mềm của máy tính với nền công nghệ
thông tin hiện nay. Phần mềm máy tính ngày một đi lên và phát triển với những
ngôn ngữ lập trình khác nhau và cụ thể là ngôn ngữ lập trình Pascal. Pascal là một
ngôn ngữ lập trình có cú pháp chặt chẽ, đơn giản và dễ hiểu.
- Do vậy, Việt Nam nói chung và ngành giáo dục đào tạo nói riêng phải đầu tư phát
lập trình Pascal đó là: tư duy Toán của các em dừng lại ở mức độ Sách Giáo Khoa
Toán THCS do đó kỹ năng phân tích, tổng hợp, xây dựng thuật toán cho mỗi bài
toán hay vấn đề cần lập trình chưa tốt. Các em vẫn thụ động trong việc tiếp cận bài
toán, sắp xếp tư duy, xây dựng thuật giải.
- Từ thực tế trên, trong quá trình dạy học tôi luôn băn khoăn trăn trở làm thế nào
nâng cao chất lượng kỹ năng lập trình cho học sinh lớp 8. Việc tiếp cận với môn học
rất khó khăn, phải làm rất nhiều lần và thực hành rất nhiều tiết các em mới hiểu việc
nhập và xuất dữ liệu. Do đó sẽ rất khó khăn để các em hình thành kỹ năng viết
chương trình. Nhất là những năm gần đây Ngành giáo dục luôn thành lập đội tuyển
tham dự kì thi Tin học trẻ, Tin học không chuyên,…. Điều đó đã thúc đẩy tôi trong
quá trình giảng dạy phải nghiên cứu tìm tòi biện pháp, kinh nghiệm để giúp cho các
em có sự đam mê học tập về lập trình, giúp các em biết được quy trình lập trình như
thế nào và định hướng cho học sinh cách để trở thành một nhà lập trình thì cần phải
biết những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình
Pascal. Giúp các em yêu thích lập trình và học lập trình trong sự hứng thú.
1.2. Mục đích của nghiên cứu:
Việc thực hiện nội dung này đã góp thêm một phương pháp mới trong việc
giảng dạy học sinh lớp 8 có được kỹ năng cơ bản để giải bài toán trên máy tính
bằng ngôn ngữ lập trình Pascal. Tạo cho học sinh sự thích thú nhằm nâng cao tính
tích cực, độc lập, sáng tạo và kỹ năng chuyên nghiệp của học sinh trong quá trình sử
dụng máy vi tính.
Bên cạnh đó các học sinh sẽ cùng hỗ trợ lẫn nhau và thúc đẩy nhau cùng học
tập, cùng tiến bộ. Những đối tượng khác có niềm đam mê lập trình, đam mê nghiên
cứu viết phần mềm tin học sẽ ngày càng hứng thú khám phá trong quá trình thực
hành trên máy tính.
Hạt nhân của chương trình máy tính là sự lưu trữ và xử lý thông tin. Việc tổ
chức dữ liệu như thế nào có ảnh hưởng rất lớn đến cách thức xử lý dữ liệu đó, cũng
như tốc độ thực thi và sự chiếm dụng bộ nhớ của chương trình. Do đó mục đích của
2
pháp của đề tài:
Đặc trưng của môn Tin học là môn khoa học gắn liền với công nghệ hiện đại,
do vậy dạy học Tin học trong nhà trường nhằm trang bị cho học sinh kiến thức
khoa học về Tin học, phát triển tư duy thuật toán, kỹ năng lập trình và tiếp cận
những công nghệ mới của Tin học phục vụ học tập và đời sống. Nội dung chương
trình của môn Tin học hiện hành ở các trường THCS đã đáp ứng được những yêu
cầu trên.
Trong nhà trường hiện đang phấn đấu các mục tiêu cụ thể của ngành là: Tổ
chức tốt việc hướng dẫn học sinh biết cách lập trình để tham gia các kỳ thi như Tin
học trẻ, học sinh giỏi lớp 9,…
* Thuận lợi:
- Được sự quan tâm của Ngành giáo dục trong công cuộc đổi mới phương
pháp dạy học.
- Được sự quan tâm của BGH nhà trường trong việc đầu tư cơ sở vật chất, trang
thiết bị dạy học tương đối đầy đủ đảm bảo phục vụ giảng dạy bộ môn Tin học.
3
- Giáo viên giảng dạy được đào tạo theo đúng chuyên ngành và được bồi
dưỡng chuyên môn hàng năm.
- Phần lớn các em học sinh có ý thức tự học cao, luôn tìm tòi học hỏi những
kiến thức mới trong học tập và rất hứng thú với môn Tin học.
* Khó khăn:
- Một bộ phận học sinh lớp 8 chưa ý thức việc học Tin.
- Số lượng học sinh trong một lớp học còn quá đông gần 40 học sinh một lớp,
diện tích phòng máy nhỏ hẹp, phòng máy có 20 máy nhưng là máy cũ nên thường
hay hư hỏng, thiết bị hỗ trợ thường bị hư hao, không khí trong phòng máy không
thoáng mát làm cho học sinh không tập trung vào bài giảng ... ảnh hưởng rất lớn
trong quá trình giảng dạy và học tập.
- Vẫn còn một số em học sinh tiếp thu kiến thức còn chậm, đặc biệt là kĩ năng
Kết quả kiểm tra
Giỏi
SL
%
32
5
15,6
28
2
7
Tổng cộng
Khá
SL
%
TB
Yếu
Kém
0
17
53,1
7,1
9
32,1
17
60,8
0
0
0
0
11
39,3
11,7
cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal thì cần các
bước sau :
- Xác định bài toán
- Tìm cấu trúc dữ liệu biểu diễn thuật toán
- Xây dựng thuật toán
- Viết chương trình
- Kiểm thử chương trình
- Tối ưu chương trình.
2.3.1 Xác định bài toán:
a. Khái niệm bài toán:
Đối với bất kỳ một bài toán nào thì học sinh cũng được giáo viên hướng dẫn
là phải đọc kỹ đề rồi xác định nó : A B
Trong đó:
A là giả thiết : Điều kiện ban đầu hay cái đã cho khi bắt đầu giải bài toán.
B là kết luận : Mục tiêu cần đạt được hay cái phải tìm, phải làm ra khi kết
thúc bài toán.
là suy luận : Giải pháp cần xác định hay một chuỗi các bước cần thực hiện
từ A đến B.
b. Bài toán trên máy vi tính :
Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quát trên,
nhưng nó lại được diễn đạt theo một các khác.
- A : là đưa thông tin vào – thông tin trước khi xử lý (Input )
- B: là đưa thông tin ra – kết quả sau khi xử lý (Output)
- : là chương trình tạo từ các câu lệnh cơ bản của máy tính cho phép xử lý
từ A đến B.
c. Xác định bài toán:
Việc xác định bài toán là xác định xem ta phải giải quyết vấn đề gì? Với giả thiết
nào đã cho và với lời giải cần đạt những yêu cầu gì. Khác với các bài toán thuần túy
trong toán học là chỉ cần xác định rõ giả thiết và kết luận chứ không cần xác định
yêu cầu về lời giải, đôi khi những bài toán tin học trong thực tế chỉ cần tìm lời giải
+ Các dữ liệu cần xử lý để chế biến thông tin như:
Lần lượt đưa giá trị b, c vào
( b = 3 ; c= - 6)
Áp dụng công thức :
- Nếu b = 0 và c = 0 thì phương trình có vô số nghiệm
- Nếu b = 0 và c ≠ 0 thì phương trình vô nghiệm
- Nếu b ≠ 0 thì phương trình có nghiệm x = -c/b;
Kết quả in ra là x = 2
Ví dụ 3: Tìm giá trị lớn nhất của một dãy số nguyên
Các bước xác định cho bài toán:
+ Input
: số nguyên dương N và dãy N số nguyên a1, …., aN
N = 5 ; (7, 5, 9, 4, 10)
+ Output
: Giá trị lớn nhất Max của dãy số.
+ Các dữ liệu cần xử lý để chế biến thông tin như:
Khởi tạo giá trị Max = a1
Lần lượt với i từ 2 đến N, so sánh giá trị số hạng ai với giá trị Max, nếu ai >
Max thì Max nhận giá trị mới là ai.
Kết quả in ra là Max = 10.
2.3.2 Tìm cấu trúc dữ liệu biểu diễn thuật toán:
* Cấu trúc dữ liệu (data structure) : Là kiểu dữ liệu mà bên trong nó có chứa
nhiều thành phần dữ liệu và các thành phần dữ liệu đấy được tổ chức theo một cấu
Thuật toán là một hệ thống chặt chẽ và rõ ràng các quy tắc nhằm xác định
một dãy thao tác trên cấu trúc dữ liệu sao cho: với một bộ dữ liệu vào (Input), sau
số hữu hạn bước thực hiện các thao tác đã chỉ ra, ta đạt được kết quả đã định
(Output).
INPUT
OUTPUT
ALGORITHM
b. Phương pháp biểu diễn thuật toán:
Trong phần này chúng ta cần đưa ra một phương pháp mô tả thuật toán một
cách khoa học để học sinh nhận biết được quy trình làm việc của máy vi tính (Ngôn
ngữ lập trình) làm việc như thế nào. Mô tả thuật toán là bước quan trọng nhất đối
với người lập trình, nếu người lập trình mô tả thuật toán sai hoặc dài dòng thì dẫn
đến khi viết chương trình sẽ khó khăn hoặc sẽ cho kết quả sai. Ở bước này đòi hỏi
người lập trình cần có những hiểu biết cơ bản về toán học thì khả năng biểu diễn
thuật toán sẽ trở nên đơn giản hơn và sẽ thấy bài toán trở nên gần gủi. Vì vậy trong
phần này tôi sẽ đã đưa ra hai phương pháp mô tả thuật toán một cách rõ ràng và
khoa học nhất để các em dễ dàng mô tả thuật toán đúng theo ý tưởng của mình.
b.1 : Phương pháp biểu diễn từng bước:
* Phương pháp:
- Các thao tác của giải thuật được liệt kê từng bước
- Tại mỗi bước, sử dụng ngôn ngữ tự nhiên để diễn tả công việc phải làm.
- Bước đứng trước (có số thứ tự nhỏ hơn) được thực hiện trước, thực hiện xong
bước này mới chuyển sang bước khác, không nhập nhằng.
* Ưu - nhược điểm:
7
- Dễ hiểu, dễ làm
- Phụ thuộc vào “cách hành văn” của người diễn đạt
- Với những giải thuật phức tạp, cách diễn đạt này trở nên rườm rà,..
- Sử dụng các hình khối để minh hoạ cho các lệnh hay thao tác.
+ Khối bắt đầu
+ Khối kết thúc
+ Khối thao tác thực hiện tính toán
+ Khối kiểm tra điều kiện
+ Khối vào/ra dữ liệu
+ Khối gọi chương trình con,…
Các ký hiệu trong phương pháp biểu diễn này:
- Gọi chương trình con A
Khối bắt đầu và kết thúc
Begin
A
End
Thực hiện công việc A
- Kiểm tra điều kiện: Tùy thuộc
điều kiện(Đúng hay Sai) mà rẽ
nhánh thí
ch hợp
A
sai
§äc a,b,c
(a+b>c) and (b+c>a)
and (a+c>b)
Sai
In “Không tạo
thành TG”
§óng
C := (a+b+c)
p := C/2
S := p * ( p − a ) * ( p − b) * ( p − c )
In ra C,S
End
Thuật toán “Tìm giá trị lớn nhất của một dãy số nguyên”
begin
Nhập N và dãy a1, .., aN
Max ← a1 , i ← 2
i >N
Sai
Đúng
là giá trị lớn nhất.
2.3.4 : Viết chương trình
- Viết chương trình là dùng ngôn ngữ lập trình cụ thể nào (Ngôn ngữ Pascal) để
diễn tả thuật toán, cấu trúc dữ liệu thành câu lệnh để máy tính có thể thực hiện được và
giải quyết đúng bài toán mà người viết chương trình mong muốn. Và đây cũng là một
trong những bước then chốt của người lập trình.
- Sau khi đã có thuật toán ta phải lập trình để thực hiện thuật toán đó. Muốn lập
trình đạt hiệu quả cao, cần phải có kỹ thuật lập trình tốt. Kỹ thuật lập trình tốt thể hiện
ở kỹ năng viết chương trình, khả năng gỡ rối và thao tác nhanh.
- Lập trình tốt không chỉ nắm vững ngôn ngữ lập trình là đủ, mà phải biết cách
viết chương trình một cách uyển chuyển, khôn khéo và phát triển dần dần để chuyển
các ý tưởng ra thành chương trình hoàn chỉnh. Để đạt được những điều trên thì cơ bản
học sinh phải nắm được cấu trúc chung của một chương trình Pascal cần có những
thành phần nào.
Một chương
trình Pascal; có các phần:
PROGRAM
Tên_chương_Trình
USES
……
- Tên chương trình
- Thư viện
Phần khai báo
- Nhãn
LABEL ……
* Phần khai báo :
- Phần này bắt đầu bằng từ khóa Program rồi tiếp đến là tên của chương
trình và chấm dứt bằng dấu chấm phẩy (;).Tên chương trình phải được đặt theo
đúng qui cách của danh hiệu tự đặt (thỏa mãn quy ước đặt tên trong Pascal). Phần
này có hay không cũng được.
Ví dụ:
Program
Phuong_trinh_bac2 ;
Program
Vidu ;
- Tiếp đến là khai báo các thư viện bằng từ khóa Uses. Mỗi ngôn ngữ lập
trình thường có sẵn một số thư viện cung cấp một số chương trình và lệnh thông
dụng đã được lập sẵn.Ví dụ thư viện crt, graph……Và để sử dụng các chương trình
đó thì phải khai báo thư viện chứa nó.
Ví dụ:
Uses crt ;
{khai báo thư viện crt }
Thư viện crt trong Pascal cung cấp các chương trình có sẵn để làm việc với
màn hình và bàn phím. Ví dụ muốn xóa những gì đang có trên màn hình kết quả ta
dùng lệnh Clrscr. (Nếu như ta sử dụng lệnh này mà không khai báo thư viện Crt thì
máy tính sẽ báo lỗi).
KQ = ‘Ketqua’ ;
Và khi viết chương trình thay vì ghi giá trị cụ thể thì ta sử dụng tên hằng đã
khai báo (đã khai báo hằng MaxN = 1000 thì quá trình viết chương trình chỉ cần sử
dụng hằng MaxN thay cho giá trị 1000)
+ Trong quá trình lập trình nếu phát sinh những kiểu dữ liệu mới cần sử dụng
thì phải khai báo bằng từ khóa Type.
12
Ví dụ 1: Khai báo kiểu mảng một chiều
Type Kmang = array [1 .. 100] of integer ;
Ví dụ 2: Khai báo kiểu bản ghi
Type
Hocsinh = record
Hoten : string [30] ;
Ngaysinh : string [10] ;
Tin, toan, ly : real ;
End;
+ Tất cả các biến dùng trong chương trình đều phải đặt tên và phải khai báo
(sử dụng từ khóa Var) cho chương trình dịch biết để lưu trữ và xử lí. Biến chỉ nhận
một giá trị tại mỗi thời điểm thực hiện chương trình. Tên biến dùng để xác lập quan
hệ giữa biến với địa chỉ bộ nhớ nơi lưu trữ giá trị biến và mỗi biến chỉ được khai
báo một lần.
Var < danh sách biến > : < kiểu dữ liệu> ;
Trong đó : Danh sách biến là một hay 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
hay kiểu dữ liệu do người lập trình định nghĩa.
Ví dụ :
Var x , y : real ;
USES
Crt;
VAR
x : integer ;
BEGIN
{Dòng tiêu đề, khai báo tên chương trình }
{ Khai báo sử dụng thư viện Crt }
{ Khai báo biến }
{ Thân chương trình chính }
Clrscr ;
{ Xóa màn hình }
Writeln (‘Nhap gia tri cua x =’) ;
Readln (x) ;
x:= 0 ;
x:= x + 10 ;
Writeln (‘Gia tri cua x la’ , x );
Readln;
END.
{ Kết thúc chương trình}
thuộc vào lúc nhập giá trị a, b, c { nếu nhập thứ tự a = 5 ; b= 7; c= 9 thì sẽ cho ta kết
quả số lớn nhất là 7 sai hoàn toàn.
Do đó người lập trình cần phải biết cách tìm lỗi. Sữa lỗi, điều chỉnh viết lại
chương trình cũng là kỹ năng quan trọng của người lập trình. Vậy với ví dụ trên để
kết quả luôn đúng thì ta có thể viết lại chương trình
Lần 2: Program tim_so_lon_nhat ;
uses crt;
var
a,b,c, max :integer;
begin
clrscr ;
write('nhap 3 so = ') ; readln(a,b,c);
max:=a ;
if max < b then max :=b;
if max
Ví dụ 2: Viết chương trình in ra màn hình hình chữ nhật toàn dấu * với chiều
dài và chiều rộng nhập từ bàn phím.
Lần 1: Program hinh_chu_nhat;
Uses crt;
15
Var i, cd,cr :integer;
Begin
Clrscr;
Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd);
Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr);
For i : = 1 to cd*cr do writeln(‘*’);
Readln
End.
Với chương trình này cũng chạy được song kết quả sai (in ra màn hình một
cột toàn dấu * với chiều dài là diện tích hinh chữ nhật).
Với ví dụ trên để kết quả luôn đúng thì ta có thể viết lại chương trình.
Lần 2: Program hinh_chu_nhat ;
Uses crt;
Var i,j, cd,cr:integer;
Begin
Clrscr;
Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd);
Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr);
For i: = 1 to cr do
Begin
for j: = 1 to cd do write(‘*’);
Writeln;
xảo có thể khiến chương trình trở nên rối rắm, khó hiểu khi sửa đổi. Tiêu chuẩn hữu
hiệu nên dừng ở mức chấp nhận được, không quan trọng bằng 3 tiêu chuẩn trên. Vì
phần cứng phát triển rất nhanh, yêu cầu hữu hiệu không phải đặt ra gánh nặng.
=> Từ những phân tích trên, chúng ta thấy rằng việc làm ra một chương trình phải
trải qua rất nhiều công đoạn và tiêu tốn khá nhiều công sức. Chỉ một công đoạn
không hợp lý sẽ tăng chi phí viết chương trình.
Ví dụ : Viết chương trình tính tổng 2 số nguyên được nhập từ bàn phím
Bước 1: Xác định Input, Output
Input
: Hai số nguyên a và b;
Output
: Tổng s=a+b;
Lưu ý: nên viết theo cách ở trên vì chúng ta sẽ dễ nhận ra là dùng bao nhiêu biến.
Bước 2: Xây dựng thuật toán
- Bước 1: Nhập 2 số nguyên a và b;
- Bước 2: Tính tổng S= a+b;
- Bước 3: Hiển thị giá trị tổng s ra màn hình
Bước 3: Viết chương trình Pascal hoàn chỉnh
Program vidu ;
{ Tên chương trình là vidu }
Var a,b,S: integer ;
{ Khai báo 3 biến kiểu số nguyên }
em ngày càng yêu, đam mê công nghệ phần mềm và giúp các em có được nền tảng
cơ bản nhất để tiếp cận bất kỳ ngôn ngữ lập trình khác.
Kết quả kiểm tra học kì II lớp 8 năm học 2017-2018 (lập trình)
Kết quả kiểm tra
T
T
Lớp
Sĩ
số
Giỏi
SL
%
Khá
SL
%
TB
Yếu
Kém
Trên TB
0
0
0
0
0
32
100
2
8B
28
12
42,9
16 57,1
0
0
60
100
Tổng cộng
18
III.
KẾT LUẬN:
Tin học là môn học mang tính ứng dụng cao đòi hỏi học sinh phải có thái động
nghiêm túc trong học tập. Để tạo hứng thú học tập cho học sinh và từng bước nâng
cao chất lượng bộ môn đòi hỏi người giáo viên phải tìm tòi, đổi mới phương pháp
dạy học phù hợp, hiệu quả.
Trong quá trình dạy học sinh lập trình, vận dụng những kỹ năng cơ bản để
giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal tôi đã tạo cho học sinh
niềm đam mê, hứng thú, sáng tạo và đặc biệt các giờ học không còn là nỗi ám ảnh
của học sinh nữa và các em ở trường đã tiến bộ rõ rệch về kỹ năng lập trình từ
những bài toán đơn giản đến nâng cao.
Trên đây là một số kinh nghiệm của bản thân rút ra được trong quá trình hướng
dẫn dạy học sinh những kỹ năng cơ bản về lập trình. Rất mong nhận được sự góp ý
của quý thầy cô, bạn bè đồng nghiệp để tôi có thể hoàn chỉnh hơn kinh nghiệm này,
góp phần nâng cao kỹ năng và chất lượng dạy học lập trình cho học sinh lớp 8.
XÁC NHẬN CỦA THỦ TRƯỞNG
Hậu Lộc, ngày 25 tháng 5 năm 2019