Tải bản đầy đủ
Dạy học lập trình ở nhà trường phổ thông

Dạy học lập trình ở nhà trường phổ thông

Tải bản đầy đủ

cận với CNTT, thể nghiệm thao tác trực tiếp trên máy nên dễ dàng nắm bắt nội dung
của bài học.
Đối với giáo viên: là giáo viên trẻ nên có điều kiện tiếp cận với những tiến bộ
của CNTT, hỗ trợ rất lớn cho công tác giảng dạy.
Với học sinh, qua chương trình tin học lớp 10 các em đã được trang bị những kĩ
năng nhất định trong việc sử dụng máy tính; biết thế nào là thuật toán cũng như cách
xây dựng và mô tả một thật toán thông qua sơ đồ khối hoặc liệt kê các bước.
2. Khó khăn
Ngoài các thuận lợi đã nêu, công tác giảng dạy tin học tại trường THPT Quảng
Xương 4 cũng gặp những khó khăn nhất định:
Do đặc thù bộ môn, nên nhiều học sinh chưa thực sự say mê với môn học, thờ ơ
và coi nhẹ việc học tin học.
Đa phần học sinh nhà trường đều thuộc khu vực khó khăn ven biển nên học
sinh ít có điều kiện tiếp cận với CNTT. Với nội dung lập trình trong tin học, đây là một
nội dung mới và khó đối với đa số học sinh, phần lớn học sinh thực sự khó khăn trong
việc nắm bắt ý nghĩa của từng câu lệnh cũng như cách vận dụng chúng như thế nào
trong việc lập trình, do đó nhiều học sinh sau khi xác định được yêu cầu của bài toán
thường chỉ dừng lại ở việc xây dựng và biểu diễn thuật toán cho bài toán (dưới dạng sơ
đồ hoặc liệt kê các bước) chứ chưa biết sử dụng các câu lệnh như thế nào để mô tả các
thao tác đó thành chương trình, chưa biết cách sử dụng dữ liệu nào để biểu diễn cho
hợp lý ... nên kết quả học sinh bế tắc trong việc giải quyết các bài toán lập trình dẫn
đến kết quả giảng dạy chưa cao.
Đối với bản thân giáo viên: ít kinh nghiệm trong công tác giảng dạy nên việc
truyền đạt cho học sinh hiểu đúng bản chất và cách vận dụng các cấu trúc lệnh, các
kiểu dữ liệu phù hợp còn gặp không ít khó khăn, lúng túng đôi khi chú tâm nhiều vào
lí thuyết mà ít quan tâm đến việc hướng dẫn học sinh học tập trực tiếp thông qua các ví
dụ thực hành.
Sau một số năm giảng dạy, từ việc nhận thấy những khó khăn gặp phải của học
sinh trong việc học lập trình, cũng như việc thiếu kinh nghiệm truyền đạt của bản thân,
tôi đã tìm tòi, nghiên cứu tìm ra các nguyên nhân dẫn đến việc học sinh ngại học, chán
học lập trình điều đó không phải chỉ ở việc xây dựng các thuật toán để giải các bài
toán mà là làm thế nào để chuyển đổi chính xác thuật toán thành chương trình, lựa
chọn cấu trúc điều khiển các kiểu dữ liệu phù hợp như thế nào để có thể mô tả chính
xác thao tác của thuật toán.
III. GIẢI PHÁP
Bắt nguồn từ thực trạng việc giảng dạy tin học, từ nguyên nhân dẫn đến tình trạng
học sinh chưa có hứng thú học tập lập trình và từ thực tiễn việc học sinh hiểu và vận
dụng kiểu dữ liệu phù hợp, tôi đã đưa ra một giải pháp và đã đem lại những hiệu quả
nhất định trong việc giảng dạy, đó là thông qua việc hướng dẫn học sinh giải một số
bài toán thực tế có vận dụng cấu trúc dữ liệu phù hợp từ đó xác định các lệnh có liên
quan có thể áp dụng cho từng trường hợp cụ thể giúp học sinh dễ dàng giải quyết các
bài tập, gây hứng thú cho học sinh từ đó góp phần nâng cao chất lượng giáo dục.
A. KHAI BÁO VÀ TRUY XUẤT ĐẾN PHẦN TỬ XÂU
1. Khái niệm, cách khai báo và tham chiếu đến phần tử xâu

5

- Khái niệm: Xâu là dãy các kí tự thuộc bảng mã ASCII, mỗi kí tự được gọi là
một phần tử của xâu. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có
độ dài bằng 0 được gọi là xâu rỗng. Trong Turbo Pascal xâu rỗng được viết bởi hai dấu
nháy đơn liền nhau ‘và’.
Ví dụ: S=

‘Lop 11A’

gồm có: 7 ký tự

S1=

‘Truong thpt quang xuong 4’

gồm có: 25 ký tự

S2=

‘1234567*1234’

gồm có: 12 ký tự

S3=

‘’

gồm có: không ký tự

- Có thể xem xâu là một trường hợp đặc biệt của mảng một chiều mà mỗi phần
tử là một kí tự. Các kí tự của xâu được đánh số thứ tự thường bắt đầu từ 1. (như vậy
với các biến thuộc kiểu xâu, có thể áp dụng cách duyệt của mảng một chiều để xử lý
trong quá trình làm việc với dữ liệu xâu)
- Tham chiếu đến phần tử xâu: [chỉ số phần tử]
Ví dụ: S[1]= ‘L’, S[4]= ‘ ’, S[6]= ‘1’
Lưu ý: - Kiểu xâu khác với kiểu char (Các biến kiểu Char thuộc dạng biến đơn, mỗi
thời điểm chỉ lưu trữ được 1 ký tự)
2. Khai báo
Với nội dung này, để học sinh thấy rõ những điểm mới trong cấu trúc khai báo
giáo viên đưa ra yêu cầu: Viết khai báo biến cho ví dụ sau:
Bài toán 1: Nhập vào một ký tự Ch bất kỳ từ bàn phím
Bài toán 2: Nhập vào một mảng các ký tự S là họ tên của một người gồm 30 ký tự
Bài toán 3: Nhập vào một dãy ký tự bất kỳ có độ dài không quá 30 ký tự
Với các ví dụ này học sinh dễ dàng đưa ra các cách khai báo cho bài toán 1, 2
Bài toán 1: học sinh sử dụng cách khai báo biến đơn
Var Ch: Char;
Bài toán 2: Học sinh sử dụng cách khai báo mảng mà mỗi phần tử là một ký tự
C1: Khai báo trực tiếp
Var S:array[1..30] of Char;
C2: khai báo gián tiếp
Type DayKT=array[1..30] of Char;
Var S: DayKT;
Sau khi học sinh đưa ra hai cách khai báo này, giáo viên đưa ra cách khai báo
cho trường hợp bài tập 3 đồng thời yêu cầu học sinh rút ra điểm giống và khác trong
cách khai báo giữa các biến trong ba bài tập, từ đó học sinh rút ra được cấu trúc khai
báo biến tổng quát cho trường hợp dữ liệu kiểu xâu.
Ví dụ:

C1:

Var S:String[30];

C2:

Var

S: String;

* Cấu trúc tổng quát:
Var : string[độ dài lớn nhất của xâu];

6

- Nếu không khai báo độ dài lớn nhất của xâu thì xâu sẽ nhận giá trị ngầm định
là 255. Xâu ký tự trong bộ nhớ chiếm số byte bằng số ký tự cực đại được khai báo
cộng với byte đầu tiên chứa số ký tự hiện có của xâu.
- Ngoài ra có các kiểu khai báo khác của xâu như:
+ Shortstring: Chính là String
+ longstring: là mảng ký tự có kiểu char. Thông thường kiểu char có kích
thước 16 bit nên mảng có kích thước tối đa 16 bit = 65535 ký tự
+ ansistring (chỉ có trong free pascal)có kích thước gần 2GB = 230 B
3. Cách nhập/xuất
Khác hẳn với cách đọc, ghi dữ liệu mảng một chiều (luôn đi kèm với câu lệnh
duyệt các phần tử) Cách đọc hay viết dữ liệu kiểu xâu tương tự như các kiểu dữ liệu
chuẩn khác, ta sử dụng các thủ tục READ, hoặc WRITE.
Ví dụ: - Đọc dữ liệu:
- Ghi dữ liệu

Readln(s);

hoặc

Read(s);

Writeln(s);

hoặc

Write(s);

B. CÁC THAO TÁC XỬ LÍ XÂU
1. Phép ghép xâu (phép cộng xâu): kí hiệu là dấu cộng (+), dùng để ghép nhiều xâu
thành một.
Ví dụ: ‘123abc’ + ‘453acd’ cho kết quả ‘123abc453acd’
2. Các phép so sánh xâu
Các phép so sánh xâu bao gồm: <, <=, =, >=, >, <> có thứ tự thực hiện ưu tiên
thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo các quy tắc sau:
- Xâu A > xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có
mã ASCII lớn hơn.
Ví dụ: ‘anh’> ‘Anh’, kí tự ‘a’ có mã ASCII là 97, kí tự ‘A’ có mã ASCII là 65.
- Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A< B.
Ví dụ:

‘Quang Xuong’ < ‘Quang Xuong 4’

- A=B nếu xâu A và B giống nhau hoàn toàn
Ví dụ: ‘Quang Xuong’ = ‘Quang Xuong’; ‘Quang Xuong’ <> ‘ quang Xuong’
3. Một số thủ tục xử lý xâu
- Thủ tục Delete(st,vt,n): Xóa n kí tự của xâu St, bắt đầu từ vị trí vt
Ví dụ:
Giá trị St

Thao tác

Kết quả

‘Quang Xuong 4’

Delete(st,1,6)

‘Xuong 4’

‘hoc tin hoc’

Delete(st,7,4)

‘hoc tin’

- Thủ tục Insert(s1,s2,vt): Chèn xâu s1 vào s2, bắt đầu ở vị trí vt
Ví dụ

7

Giá trị s1

Giá trị s2

Thao tác

Kết quả

‘hoc’

‘ tin hoc’

Insert(s1,s2,1)

‘hoc tin hoc’

Insert(s1,s2,4)

‘ tinhoc hoc’

- Thủ tục str(value,s): chuyển đổi giá trị kiểu số (value) sang dạng xâu kí tự và gán
cho biến s.
Ví dụ:

n:=123;

str(n,s);

sẽ cho kết quả xâu s là s=’123’

- Thủ tục val(s,value,code): đổi xâu kí tự s sang dạng số và gán cho biến value, nếu
biến đổi thành công thì code nhận giá trị bằng 0, ngược lại cho giá trị khác 0. (lưu ý
code là biến thuộc kiểu Integer)
Ví dụ:

val(‘195’,value,code) lúc này code=0 và value=195

4. Một số hàm:
TT

Hàm

Ý nghĩa

1

Copy(st,vt,n)

Tạo xâu mới gồm n kí tự liên tiếp bắt đầu từ vị trí vt của
xâu st

2

Length(st)

Cho giá trị là độ dài xâu st

3

Pos(s1,s2)

Cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2

4

Upcase(ch)

Cho chữ cái in hoa ứng với chữ cái trong ch

5

Ord(ch)

Cho mã của kí tự ch trong bảng mã ASCII

6

Chr(n)

Cho kí tự có mã là n

7

Concat(s1,s2,..,sn)

Cho xâu mới bằng cách nối đuôi các xâu s1,s2,..,sn lại
với nhau

Ví dụ:
TT

Giá trị s

Biểu thức

Kết quả

Copy(s,1,11)

‘Quang xuong’

1

‘Quang xuong 4’

2

‘chao ban’

Length(s)

8

3

‘Quang xuong 4’

Pos(‘ng’,s)

4

4

‘a’

Upcase(s[1])

‘A’

5

‘a’

Ord(s[1])

97

6

Chr(65)

‘A’

7

Concat(‘hoc’,‘tin’,‘hoc’)

‘hoctinhoc’

8