B. những vấn đề cụ thể
phần 1. lập trình đơn giản
I. Giới thiệu
1. Mục tiêu
Mục tiêu của phần này là cung cấp cho HS một số kiến thức, kĩ năng cơ bản, phổ
thông về lập trình thông qua ngôn ngữ lập trình bậc cao Pascal.
Kiến thức
•
Biết được khái niệm bài toán, thuật toán, mô tả thuật toán bằng cách liệt kê;
•
Biết được một chương trình là mô tả của một thuật toán trên một ngôn ngữ cụ thể;
•
Hiểu thuật toán của một số bài toán đơn giản (tìm số lớn nhất, số nhỏ nhất; kiểm tra
ba số cho trước có phải là độ dài ba cạnh của một tam giác không);
•
Biết cấu trúc của một chương trình, một số thành phần cơ sở của ngôn ngữ;
•
Hiểu một số kiểu dữ liệu chuẩn, đơn giản, cách khai báo biến;
•
Biết các khái niệm: phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan
hệ;
•
Hiểu được lệnh gán;
•
Biết các câu lệnh vào/ra đơn giản để nhập thông tin từ bàn phím và đưa thông tin ra
màn hình;
•
Hiểu được câu lệnh điều kiện, câu lệnh ghép, câu lệnh lặp kiểm tra điều kiện trước,
vòng lặp với số lần định trước;
•
Biết được các tình huống sử dụng từng loại lệnh lặp;
•
Biết được khái niệm mảng một chiều, cách khai báo mảng, truy cập các phần tử của
mảng.
Kĩ năng
•
Mô tả được thuật toán đơn giản bằng liệt kê các bước;
•
Viết được chương trình đơn giản, khai báo đúng biến, câu lệnh vào/ra để nhập
thông tin từ bàn phím hoặc đưa thông tin ra màn hình;
•
Viết đúng các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ;
•
Biết sử dụng đúng và có hiệu quả câu lệnh điều kiện;
•
Viết đúng lệnh lặp với số lần định trước;
•
Thực hiện được khai báo mảng, truy cập phần tử mảng, sử dụng các phần tử của
mảng trong biểu thức tính toán.
Thái độ
•
Nghiêm túc trong học tập, ham thích lập trình trên máy tính để giải các bài tập.
2. Nội dung
Bài 1. Máy tính và chương trình máy tính (2 tiết)
Bài 2. Làm quen với chương trình và ngôn ngữ lập trình (2 tiết)
Bài thực hành 1. Làm quen với Turbo Pascal (2 tiết)
13
Bài 3. Chương trình máy tính và dữ liệu (2 tiết)
Bài thực hành 2. Viết chương trình để tính toán (2 tiết)
Bài 4. Sử dụng biến trong chương trình (2 tiết)
Bài thực hành 3. Khai báo và sử dụng biến (2 tiết)
Bài 5. Từ bài toán đến chương trình (4 tiết)
Bài 6. Câu lệnh điều kiện (2 tiết)
Bài thực hành 4. Sử dụng lệnh điều kiện if ... then (2 tiết)
Bài 7. Câu lệnh lặp (2 tiết)
Bài thực hành 5. Sử dụng lệnh lặp for ... do (2 tiết)
Bài 8. Lặp với số lần chưa biết trước (2 tiết)
Bài thực hành 6. Sử dụng lệnh lặp while...do (2 tiết)
Bài 9. Làm việc với dãy số (2 tiết)
Bài thực hành 7. Xử lí dãy số trong chương trình (2 tiết)Như đã nói ở trên, việc phân bố
thời lượng như trên chỉ là tương đối, trong quá trình giảng dạy, nhà trường, giáo viên có thể
phân bố thời lượng cho các bài sao cho phù hợp hơn với tình hình cụ thể của nhà trường và
trình độ nhận thức của học sinh.
3. Những điểm cần lưu ý và gợi ý dạy học
a. Nội dung của phần này là cung cấp cho học sinh một số kiến thức và kĩ năng ban đầu về
lập trình. Sau phần này, học sinh sẽ có một số hiểu biết cơ bản về lập trình, viết được một số
chương trình đơn giản bằng một ngôn ngữ lập trình cụ thể là ngôn ngữ Pascal. Các chương
trình đơn giản này một mặt gây sự hứng thú cho học sinh trong việc tìm hiểu các bài toán
phức tạp hơn và viết chương trình để giải quyết các bài toán đó, mặt khác chúng có thể phục
vụ cho việc học tập và tìm hiểu sâu hơn các môn học khác, nhất là môn Toán.
Phần này được chia thành 9 bài lí thuyết và 7 bài thực hành, nội dung mỗi bài được biên
soạn để trình bày trọn vẹn trong 02 tiết và 01 tiết bài tập. Riêng với Bài 5 thời lượng được
tăng gấp đôi, tức 04 tiết lí thuyết và 02 tiết câu hỏi và bài tập. Mỗi bài thực hành được trình
bày ngay sau bài lý thyết nhằm mục đích để học sinh ghi nhớ và rèn luyện những kiến thức
và kĩ năng học sinh đã học trong bài lí thuyết trước đó.
b. Về cơ bản SGK trình bày theo cách tiếp cận các kiến thức, khái niệm cơ bản về lập
trình từ khái quát đến cụ thể. Mục tiêu của SGK là trình bày các khái niệm ban đầu về lập
trình nói chung, với cố gắng không gắn với một ngôn ngữ lập trình cụ thể. Cách tiếp cận
này thể hiện rõ mục tiêu chính của chương trình là dạy kiến thức, kĩ năng về lập trình, ngôn
ngữ lập trình nói chung, không phải dạy một ngôn ngữ lập trình nhất định.
Đối với HS THCS, để HS dễ tiếp thu, việc trình bày về ngôn ngữ lập trình cần thông qua
một ngôn ngữ lập trình cụ thể để minh hoạ, giải thích. Hơn nữa, các kĩ năng lập trình như
viết, chỉnh sửa, dịch, chạy và kiểm thử chương trình đòi hỏi phải sử dụng một ngôn ngữ lập
trình bậc cao cụ thể. Khó có thể lựa chọn một ngôn ngữ lập trình cụ thể nào đó đáp ứng
cùng lúc được các tiêu chí như: hiện đại, cập nhật, dễ hiểu, dễ dùng, giá thành rẻ (hoặc miễn
phí) và tính sư phạm cao. Cho nên cách sử dụng Pascal để minh hoạ trong SGK chỉ là một
phương án. Giáo viên có thể thay thế ngôn ngữ Pascal bằng một ngôn ngữ lập trình khác
phù hợp hơn với thực tế của lớp học miễn là truyền đạt được kiến thức, kĩ năng theo yêu cầu
của chương trình.
14
Việc lựa chọn ngôn ngữ Pascal để minh hoạ trong SGK cũng được cân nhắc kĩ lưỡng bởi
một số lí do chính sau đây: (1) Ngôn ngữ Pascal là ngôn ngữ lập trình cấu trúc, trong sáng,
có tính sư phạm cao; (2) Phần lớn GV Tin học ở cấp THCS hiện nay đã được học và thực
hành ngôn ngữ lập trình Pascal là chính; (3) Ngôn ngữ Pascal có nhiều phiên bản chạy được
trên hệ điều hành khác nhau hiện có trong trường THCS; (4) Ngôn ngữ lập trình Pascal chạy
được trên hầu hết tất cả các máy đã được trang bị ở các trường THCS từ trước đến nay; (5)
Việc cài đặt Pascal là dễ dàng và ngôn ngữ Pascal có thể được sử dụng miễn phí.
Cũng có thể có ý kiến cho rằng có thể chọn một ngôn ngữ lập trình khác để minh họa,
chẳng hạn như Logo, Basic, VB, C hoặc Java, nhất là VB, C và Java do chúng là những
ngôn ngữ hiện đại và hiện được sử dụng để phát triển hầu hết các ứng dụng. Hai ngôn ngữ
đầu là những ngôn ngữ ít được phổ biến, hoặc đã không còn được sử dụng rộng rãi. Những
ngôn ngữ sau lại là những ngôn ngữ khá nặng nề và phức tạp trong việc cài đặt và sử dụng,
nhất là trong điều kiện hiện nay về cơ sở vật chất của các trường phổ thông. Do đó các tác
giả thấy rằng hiện tại Pascal vẫn là lựa chọn hợp lí và khả thi nhất.
Tuy sử dụng Pascal để minh họa, khi giảng dạy giáo viên cần lưu ý truyền đạt kiến thức
về lập trình là chính, tránh việc sa đà trình bày quá nhiều chi tiết về các thủ thuật với ngôn
ngữ Pascal.
c. Do chỉ là một ngôn ngữ đóng vai trò minh họa cho các kiến thức bắt đầu về lập trình
nên các nội dung cụ thể gắn liền với Pascal trong SGK đã được cố gắng trình bày một cách
cô đọng, tăng tính trực quan và giảm tối đa tính hình thức theo nguyên tắc cần đến đâu thì
giới thiệu đến đó. SGK không nhằm mục đích giới thiệu các thành phần, kiểu dữ liệu, cú
pháp, ngữ nghĩa của các câu lệnh và các đặc trưng khác của Pascal một cách đầy đủ như là
cẩm nang về lập trình. Chẳng hạn, rất nhiều kiểu dữ liệu, câu lệnh điều kiện case, các câu
lệnh lặp khác,... không được giới thiệu trong SGK, nhiều câu lệnh chỉ được giới thiệu ngắn
gọn mà không đi sâu vào giải thích cú pháp và ngữ nghĩa, v.v.
Các ví dụ và chương trình Pascal cũng được lựa chọn và trình bày theo nguyên tắc trên.
Xét về mặt nào đấy, chúng có thể chưa phải là những chương trình đã được viết một cách
gọn nhất hoặc tối ưu nhất. Tuy nhiên chúng được mô tả và trình bày một cách phù hợp với
sự phát triển tư duy của học sinh sau khi đã được giới thiệu phần kiến thức tương ứng về
ngôn ngữ lập trình. Trong quá trình học tập, với sự hướng dẫn của giáo viên, học sinh có thể
chỉnh sửa để có các chương trình tốt hơn, qua đó phát triển tốt hơn các kĩ năng lập trình.
d. Về thứ tự trình bày các nội dung trong Phần 1, giáo viên cần lưu ý một vài điểm sau
đây. Trước hết, cần nhấn mạnh rằng việc xác định bài toán và xây dựng thuật toán là bước
quan trọng nhất trong việc viết chương trình. Chương trình chỉ là thể hiện một thuật toán cụ
thể bằng ngôn ngữ lập trình. Chương trình chỉ hoạt động có hiệu quả khi có thuật toán đúng
và tối ưu và do vậy chỉ có thể viết được chương trình sau khi đã xây dựng và mô tả thuật
toán. Xét theo thứ tự thời gian và tư duy logic thì nội dung giới thiệu về bài toán và thuật
toán cần được giới thiệu ngay từ Bài 1.
Tuy nhiên, các tác giả cho rằng nội dung về thuật toán và mô tả thuật toán là vấn đề khó
nhất trong toàn bộ nội dung của SGK. Trước hết, thuật toán luôn luôn gắn liền với tư duy
toán học, việc mô tả thuật toán lại gắn liền với tư duy công nghệ. Không phải ngẫu nhiên
mà đa phần học sinh thường khó hiểu nội dung phép gán giá trị cho một biến, đặc biệt là
dưới dạng X = X + 1. Nếu trình bày về thuật toán ngay trong Bài 1, khi học sinh mới bắt đầu
một năm học mới, sẽ gây cảm giác quá tải cho học sinh, nhất là đối với phần lớn học sinh
không có nhiều năng khiếu về toán. Hơn thế nữa, việc giới thiệu như thế sẽ làm cho học
15
sinh hiểu nhầm rằng lập trình chính là giải toán (mặc dù việc giải quyết các bài toán nhỏ
đúng là như thế).
Mặt khác, với tâm sinh lí học sinh THCS, trước khi giới thiệu những nội dung khó cần
bắt đầu dẫn dắt từ những nội dung nhẹ nhàng hơn và dễ gây hứng thú cho học sinh. Nội
dung của các bài từ 1 đến 4 phục vụ mục đích này.
Có một lý do khác là nếu chưa được giới thiệu và chưa hiểu được bản chất của phép gán,
học sinh sẽ rất khó hiểu các nội dung về thuật toán. Trong khi đó, để học sinh có được khái
niệm về phép gán thì cách tốt nhất là giới thiệu các nội dung liên quan đến biến trong lập
trình.
Cuối cùng, để học sinh hiểu được nội dung của các bài từ 1 đến 4 không cần thiết phải có
những kiến thức về thuật toán. Các vấn đề giới thiệu trong các bài đó và trong các bài thực
hành có thể giải quyết được với những “thuật toán hiển nhiên”, hầu như học sinh nào cũng
có thể nhận biết và áp dụng. Tuy nhiên, trước khi đề cập tới các cấu trúc điều khiển trong
chương trình thì lại cần thiết phải giới thiệu trước về khái niệm thuật toán và mô tả thuật
toán.
Đó chính là lí do nội dung về bài toán và thuật toán được trình bày trong Bài 5.
e. Mỗi phần nội dung trong SGK được trình bày trong một bài lí thuyết và một bài thực
hành. Bài lí thuyết giới thiệu các kiến thức ban đầu về nội dung tương ứng. Ngay sau bài lí
thuyết (trừ bài 1 và bài 5) là bài thực hành những kiến thức lí thuyết đã học. Mục đích chính
của các bài thực hành là cung cấp kĩ năng cho HS, qua đó hiểu sâu hơn về các nội dung vừa
học ở bài lí thuyết. Các bài thực hành này về cơ bản là để HS thực hành, sử dụng những nội
dung vừa học ở phần lí thuyết. Tuy nhiên, càng về sau các bài thực hành không chỉ phục vụ
cho việc củng cố, thực hành nội dung lí thuyết của bài học tương ứng mà còn giúp ôn luyện
những kiến thức, kĩ năng đã được học ở các bài trước đó.
f. Cấu trúc của mỗi bài lí thuyết được xây dựng một cách nhất quán như sau:
Mỗi bài lí thuyết đêu cố gắng bắt đầu bằng những ví dụ trong cuộc sống hàng ngày, từ đó
dẫn dắt đến cách thức giải quyết các vấn đề đời thường đó bằng cách viết chương trình.
Quan điểm của các tác giả là chương trình máy tính được viết chính là để giải quyết các bài
toán đời thường như thế. Bằng cách đó học sinh sẽ dễ thấy hơn mối liên hệ chặt chẽ giữa
việc lập trình và cuộc sống, cũng lợi ích của việc lập trình để giải quyết các bài toán bằng
máy tính.
Phần nội dung tiếp theo trình bày các thành phần cơ bản hoặc cấu trúc tương ứng của
ngôn ngữ lập trình nói chung. Các nội dung này được cố gắng trình bày ở mức tổng quát
nhất có thể, nhưng vẫn đảm bảo học sinh có thể hiểu được. Do đó, khi sử dụng Pascal để
minh họa trong các mục tiếp theo, SGK không cố gắng trình bày cú pháp và ngữ nghĩa của
các câu lệnh Pascal một cách đầy đủ và chi tiết. Giáo viên cần lưu ý điều này để bổ sung
cho học sinh trong các bài thực hành tiếp ngay sau đó.
Cuối cùng là một số ví dụ về chương trình để minh họa tình huống sử dụng. Về các ví dụ,
các tác giả đã cố gắng hạn chế đến mức tối đa việc lập trình giải quyết các bài toán có nội
dung toán học, tránh gây quá tải cho học sinh hoặc dẫn đến sự hiểu nhầm là lập trình gắn
liền với toán học. Tuy nhiên, do hạn chế về nội dung của chương trình, những minh họa gây
hứng thú hơn như thiết kế giao diện, màu sắc, phông chữ hoặc mô phỏng chuyển động của
các đối tượng trên màn hình đã không được đưa vào. Do vậy các ví dụ về toán học vẫn
chiếm một tỷ lệ đáng kể.
16
Cuối mỗi bài lí thuyết đều có mục Ghi nhớ liệt kê một số điểm chính của bài học để HS
dễ dàng ghi nhớ. Mục ghi nhớ là căn cứ để GV xác định nội dung kiến thức, kĩ năng trọng
tâm của mỗi bài.
Mỗi bài lí thuyết đều có phần Câu hỏi và bài tập nhằm mục đích cho học sinh ôn luyện
các kiến thức, kĩ năng của bài học lí thuyết và chuẩn bị cho bài thực hành ngay sau đó. Một
phần của các câu hỏi, bài tập này chỉ là nhắc lại các kiến thức của bài học lí thuyết, vì vậy
cần hướng dẫn HS làm ngay trên lớp. Một phần khác dành để giúp học sinh nắm vững hơn
cú pháp và ngữ nghĩa của các câu lệnh Pascal. Với những câu hỏi và bài tập này giáo viên
nên hướng dẫn học sinh giải và trả lời trong tiết bài tập.
Trong phân bổ thời lượng, số tiết bài tập là khá nhiều (8 tiết). Điều này thể hiện câu hỏi,
bài tập là một phần quan trọng trong việc giúp HS tiếp thu kiến thức, rèn luyện kĩ năng. Hệ
thống câu hỏi, bài tập đa dạng, phù hợp với HS THCS, phù hợp với đổi mới dạy học và đổi
mới kiểm tra, đánh giá. Tốt nhất là nên tổ chức tiết bài tập sau khi học sinh đã thực hiện các
tiết thực hành.
Số lượng các câu hỏi và bài tập tương đối nhiều. Tuy nhiên, đa số các bài đó chỉ là các
câu hỏi và bài tập dễ, học sinh chỉ cần hiểu các kiến thức trong bài lý thuyết trước đó là có
thể trả lời và giải được. Một số bài tập khác, mặc dù không vượt quá kiến thức đã trình bày
trong phần lí thuyết, nhưng đòi hỏi học sinh vận dụng kiến thức một cách linh hoạt hơn.
Việc đưa ra nhiều câu hỏi và bài tập một mặt giúp cho việc sử dụng SGK một cách hiệu quả
và linh hoạt hơn trong những điều kiện học sinh khác nhau về trình độ, mặt khác giúp cho
học sinh có thể có điều kiện đào sâu suy nghĩ hơn kiến thức lí thuyết và giúp giáo viên phân
biệt trình độ của học sinh rõ hơn. Cũng có thể, ngay tại một trường, một số bài tập đối với
học sinh trong một lớp là hơi khó, nhưng các học sinh trong một lớp khác lại có thể tự giải
tất cả các bài tập đó một cách không khó khăn lắm. Do vậy, tuỳ tình hình tiếp thu kiến thức
của HS, giáo viên có thể lựa chọn chỉ làm một số bài hoặc chủ động ra thêm các câu hỏi, bài
tập phù hợp với trình độ học sinh, không nhất thiết phải làm hết các câu hỏi, bài tập trong
SGK.
g. Các bài thực hành cũng được xây dựng một cách nhất quán với việc đề ra mục tiêu,
các bước cần thực hiện, thông thường ở mức khá chi tiết. Ngoài ra còn có các ví dụ để học
sinh tìm hiểu tác dụng của các câu lệnh trong chương trình. Do thời lượng có hạn, giáo viên
nên khuyến khích học sinh viết và chạy các chương trình đó khi tự học ở nhà.
Khác với các bài thực hành trong các Quyển 1 và 2, trong SGK quyển 3 nội dung các bài
thực hành không chỉ ôn luyện, củng cố, thực hành các kiến thức đã học mà còn giới thiệu
kiến thức mới, cụ thể là những kiến thức lí thuyết, nhưng gắn liền với ngôn ngữ lập trình
Pascal. Một số kiến thức này không được trình bày trong bài lí thuyết với chủ đích tránh làm
dàn trải các nội dung lí thuyết về lập trình nói chung. Một số câu lệnh, thủ tục, hàm Pascal
được giới thiệu trong bài thực hành. Kiến thức về câu lệnh được đúc rút sau khi HS đã được
thực hành về câu lệnh. Giáo viên cần nhận rõ sự khác biệt này, dành thời gian giới thiệu,
hướng dẫn cho học sinh để tăng hiệu quả của các giờ thực hành.
Mục Tổng kết cuối mỗi bài thực hành tóm tắt các kiến thức, kĩ năng cơ bản học sinh cần
tiếp thu được của bài thực hành, chủ yếu là các bước đã thực hiện, cú pháp, ngữ nghĩa cũng
như cách sử dụng của Pascal. Phần này giúp HS hệ thống lại những kiến thức, kĩ năng của
bài thực hành và là nội dung giúp HS tra cứu nhanh trong quá trình học tập. Tuy nhiên,
không nên yêu cầu học sinh học thuộc lòng phần nội dung này. Trong quá trình thực hành,
học sinh sẽ từng bước ghi nhớ cú pháp và ngữ nghĩa các câu lệnh.
17
h. Nội dung về bài toán và thuật toán (Bài 5) được phân bố thời lượng gấp đôi (04 tiết lí
thuyết và 02 tiết bài tập). Theo đánh giá của các tác giả, đây là một phần nội dung quan
trọng, nếu không nói là quan trọng nhất. Nếu đã nắm vững cách thức mô tả thuật toán để
giải quyết bài toán, học sinh sẽ dễ dàng tiếp thu được các kiến thức trình bày trong những
bài tiếp theo.
Có thể biểu diễn thuật toán bằng sơ đồ khối hoặc bằng cách liệt kê. Tuy nhiên, SGK lựa
chọn giới thiệu cách biểu diễn thuật toán bằng cách liệt kê. Về cơ bản cách liệt kê gần gũi
với cách tư duy của HS THCS hơn và đặc biệt là mô tả bằng cách liệt kê thuận lợi hơn cho
viết chương trình. ở một vài chỗ, SGK chỉ sử dụng sơ đồ khối để biểu diễn hoạt động của
cấu trúc điều khiển (rẽ nhánh, lặp). GV không giới thiệu thêm về cách biểu diễn thuật toán
bằng sơ đồ khối hoặc yêu cầu học sinh mô tả thuật toán bằng cách vẽ sơ đồ khối.
Bên cạnh các kiến thức, kĩ năng theo yêu cầu của Chương trình, SGK còn giới thiệu thêm
một số nội dung, ví dụ một số công cụ lập trình (câu lệnh, hàm chuẩn, thủ tục chuẩn) nhằm
tạo thêm hứng thú cho HS; một số bài toán, thuật toán phổ thông, đơn giản để HS mở rộng
thêm kiến thức, kĩ năng; một số câu hỏi, bài tập, bài thực hành có yêu cầu cao hơn dành cho
HS khá, giỏi.
Một số kiến thức như cú pháp câu lệnh, cú pháp khai báo biến, kiểu dữ liệu,... được giới
thiệu dần dần. Do cách giới thiệu như vậy nên ban đầu có thể chưa đủ, chưa bao quát hết
nhưng đảm bảo không sai. Khai báo biến, cú pháp câu lệnh rẽ nhánh, câu lệnh lặp... được
đúc rút, khái quát hoá sau tiết thực hành.
i. Các nội dung đọc thêm ở cuối bài là không bắt buộc, tránh yêu cầu tất cả HS phải đọc,
hiểu, gây quá tải. GV có thể chọn lựa, giới thiệu, giải thích đôi chút để gây hứng thú cho các
em ham thích, đọc thêm.
Việc phân bổ thời lượng cho các bài lí thuyết, thực hành là tương đối, GV có thể phối
hợp với các tiết bài tập, ôn tập để tự cân đối thời lượng cho phù hợp với tình hình giảng dạy
thực tiễn. Điều quan trọng là đảm bảo truyền đạt đúng, đủ kiến thức, kĩ năng theo yêu cầu
của Chương trình.
II. Hướng dẫn chi tiết
Bài 1. Máy tính và chương trình máy tính
1. Mục đích, yêu cầu
• Biết con người chỉ dẫn cho máy tính thực hiện công việc thông qua lệnh.
•
Biết chương trình là cách để con người chỉ dẫn cho máy tính thực hiện nhiều công
việc liên tiếp một cách tự động.
•
Biết rằng viết chương trình là viết các lệnh để chỉ dẫn máy tính thực hiện các công
việc hay giải một bài toán cụ thể.
•
Biết ngôn ngữ dùng để viết chương trình máy tính gọi là ngôn ngữ lập trình.
•
Biết vai trò của chương trình dịch.
2. Những điểm cần lưu ý và gợi ý dạy học
Khái niệm về lệnh, nút lệnh HS đã được biết đến ở lớp 6 và lớp 7. Dựa trên hiểu biết
có sẵn của HS về lệnh, GV cần nhắc để HS nhớ lại và hình dung về lệnh một cách đơn giản,
phổ thông.
18