j) ViÖc giíi thiÖu phÇn mÒm häc tËp nh»m môc ®Ých chÝnh lµ cung cÊp kiÕn thøc, rÌn luyÖn kÜ n¨ng khai th¸c phÇn mÒm cho HS. Do vËy, mÆc dï SGK tr×nh bµy hai phÇn t¸ch biÖt nhng kh«ng cã [r]
Trang 1o Biết cách sử dụng đợc các phần mềm học tập trình bày trong SGK.
o Hiểu đợc ý nghĩa của các phần mềm máy tính ứng dụng trong các lĩnh vực khác nhau của cuộcsống
Kĩ năng:
o Giải đợc một số bài toán đơn giản trên máy tính bằng cách vận dụng thuật toán đơn giản, dữ liệuchuẩn trên ngôn ngữ lập trình bậc cao cụ thể
o Sử dụng và khai thác thành thạo các phần mềm học tập đợc giới thiệu
o Rèn luyện khả năng thao tác nhanh với bàn phím và chuột máy tính
Thái độ:
o Ham thích môn học, tác phong làm việc nghiêm túc, cẩn thận và tinh thần làm việc theo nhóm
o Nghiêm túc khi học và làm việc trên máy tính không phân biệt phần mềm học tập hay phần mềmtrò chơi Có ý thức sử dụng máy tính đúng mục đích
Biết đợc khái niệm bài toán, thuật toán
Biết rằng có thể mô tả thuật toán bằng cáchliệt kê các bớc hoặc sơ đồ khối
Biết đợc một chơng trình là mô tả của mộtthuật toán trên một ngôn ngữ cụ thể
Trang 2 Hiểu đợc một số kiểu dữ liệu chuẩn
Hiểu đợc cách khai báo biến
Biết đợc 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ậpthông tin từ bàn phím và đa thông tin ra mànhình
Kĩ năng
Viết đợc chơng trình TP đơ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
- Có thể sử dụng ngôn ngữ lậptrình khác theo hớng dẫn thực hiệnchơng trình
- Minh hoạ các khái niệm bằngmột chơng trình TP đơn giản
- Cần xây dựng các bài thực hành
và tổ chức thực hiện tại phòng máy
để học sinh đạt đợc những kỹ năngtheo yêu cầu
Biết sử dụng đúng và có hiệu quả câu lệnh rẽnhánh
- Nhấn mạnh 3 cấu trúc điều khiển
là tuần tự, rẽ nhánh và lặp
- Trình bày đợc thuật toán của một
số bài toán rẽ nhánh thờng gặp,chẳng hạn giải phơng trình bậcnhất
Biết đợc khái niệm mảng một chiều
Biết cách khai báo mảng, truy cập các phần
tử của mảng
Kĩ năng
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 trongbiểu thức tính toán
- Yêu cầu học sinh viết đợc chơngtrình của một số bài toán sau: nhậpgiá trị phần tử của mảng, in, tínhtổng các phần tử
- Lựa chọn phần mềm học tập theohớng dẫn thực hiện chơng trình
II Giới thiệu sách giáo khoa tin học dành cho trung học cơ sở - quyển 3
1 Cấu trúc, nội dung và phân bổ thời lợng
Trang 3Sách giáo khoa Tin học dành cho THCS Q3 đợc biên soạn theo một số định hớng cụ thể sau:
Thể hiện đúng các nội dung, yêu cầu của chơng trình đã đợc Bộ Giáo dục và Đào tạo phê duyệt làcung cấp cho học sinh những kiến thức, kĩ năng cơ bản, thiết thực và có hệ thống ban đầu về thuậttoán và kĩ thuật lập trình
Tiếp cận đợc trình độ giáo dục phổ thông của các nớc tiên tiến trong khu vực và trên thế giới
Nội dung sách giáo khoa tập trung vào những kiến thức định hớng để từ đó học sinh có thể phát huynhững yếu tố tích cực của các thành tựu công nghệ thông tin và tăng cờng khả năng tự học
Nội dung, cách trình bày và diễn đạt ngắn gọn, dễ hiểu thông qua mô tả và các ví dụ minh hoạ cụ thể
Tơng ứng với Chơng trình giáo dục phổ thông môn Tin học, cấp Trung học Cơ sở (THCS), phần III,sách giáo khoa (SGK) gồm hai phần:
Phần 1- Lập trình đơn giản: gồm 9 bài lí thuyết, 7 bài thực hành;
Phần 2 - Phần mềm học tập: gồm 4 bài lí thuyết kết hợp với thực hành
TIN học dành cho THCS - quyển 3
Phần 1- Lập trình đơn giản
Bài 1 Máy tính và chơng trình máy tính
Bài 2 Làm quen với Chơng trình và Ngôn ngữ lập trình
Bài thực hành 1 Làm quen với Turbo Pascal
Bài 3 Chơng trình máy tính và dữ liệu
Bài thực hành 2 Viết chơng trình để tính toán
Bài 4 Sử dụng biến trong chơng trình
Bài thực hành 3 Khai báo và sử dụng biến
Bài 5 Từ bài toán đến chơng trình
Bài 6 Câu lệnh điều kiện
Bài thực hành 4 Sử dụng lệnh điều kiện if then
Bài 7 Câu lệnh lặp
Bài thực hành 5 Sử dụng lệnh lặp for do
Bài 8 Lặp với số lần cha biết trớc
Bài thực hành 6 Sử dụng lệnh lặp while do
Bài 9 Làm việc với dãy số
Bài thực hành 7 Xử lí dãy số trong chơng trình
Phần 2 - Phần mềm học tập
Luyện gõ phím nhanh với Finger Break Out
Tìm hiểu thời gian với phần mềm Sun Times
Tổng số tiết
Trang 42 Một số giải thích
a) Sách giáo khoa Tin học dành cho THCS - Quyển 3 đợc biên soạn bám sát theo nội dung, yêu cầu củaChơng trình giáo dục phổ thông môn Tin học, cấp THCS, phần III đã đợc ban hành kèm theo Quyết
định số 16/2006/QĐ-BGDĐT ngày 05/5/2006 của Bộ trởng Bộ Giáo dục và Đào tạo
b) Phần 1 gồm 9 bài lí thuyết, mỗi bài dạy trong 02 tiết lí thuyết và 01 tiết bài tập, riêng bài 5 dạy trong
04 tiết lí thuyết và và 02 tiết bài tập; các Bài 1 và 2 không có tiết bài tập riêng Có 7 bài thực hành,mỗi bài dạy trong 02 tiết Phần 2 gồm 4 bài lí thuyết kết hợp thực hành Mỗi bài đ ợc dạy trong trọnvẹn 04 tiết Về cơ bản 8 tiết bài tập dành cho việc làm bài tập phần 1 (Lập trình đơn giản), phần 2(Phần mềm học tập) không cần tiết bài tập
c) Thời lợng dành cho ôn tập cuối kì là 04 tiết, mỗi học kì 02 tiết Thời lợng dành cho các bài kiểm tra
định kì là 8 tiết, mỗi học kì 04 tiết
Việc phân bổ thời lợng trên đây chỉ là tơng đối, trong quá trình dạy học giáo viên (GV) có thể điều chỉnh đểphù hợp với tình hình thực tiễn
d) 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ộtphần quan trọng trong việc giúp HS tiếp thu kiến thức, rèn luyện kĩ năng
e) 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, đọcthêm
3 Gợi ý về cách tiến hành giảng dạy
a) Về cơ bản SGK lựa chọn phơng án trình bày kiến thức, kĩ năng chung về lập trình và sử dụng ngônngữ Pascal để minh hoạ Cách tiếp cận này thể hiện rõ việc dạy lập trình nói chung mà không phải làdạy ngôn ngữ lập trình cụ thể Pascal Tuy nhiên, khi giảng dạy GV không nhất thiết phải trình bàytheo cách tiếp cận này Có thể tiếp cận bằng cách đi từ ngôn ngữ lập trình cụ thể Pascal rồi khái quátthành những kiến thức, kĩ năng của lập trình nói chung Cách tiếp cận từ cụ thể đến khái quát có thể
sẽ phù hợp hơn với phần lớn HS THCS Trong SGV, ở nội dung của từng bài cụ thể đợc gợi ý về cáchdạy học theo hớng từ cụ thể để khái quát
b) Do sử dụng ngôn ngữ Pascal để minh hoạ, thời lợng làm việc với các câu lệnh, chơng trình, phầnmềm TP là khá nhiều nên dễ cảm nhận là đang học ngôn ngữ Pascal Vì vậy, trong quá trình dạy học
GV cần lu ý tiến hành khái quát đúng lúc, đúng chỗ để HS vợt ra khỏi một ngôn ngữ cụ thể, rút ra
đ-ợc những kiến thức, kĩ năng, nguyên lí của lập trình nói chung Trong SGV có hớng dẫn thời điểmkhái quát hoá kiến thức, kĩ năng ở một số bài học cụ thể
c) Các chơng trình đợc viết khi học ở tiết lí thuyết, tiết bài tập cần để HS chạy thử ở bài thực hành ngaysau đó Làm nh vậy sẽ giúp HS củng cố, hiểu rõ hơn về nội dung lí thuyết vừa học Hơn nữa, việc này
sẽ giúp tạo hứng thú, củng cố niềm tin cho HS, gắn kết tốt hơn giữa học với hành Để tránh HS mấtnhiều thời gian vào việc gõ chơng trình, GV nên gõ sẵn các chơng trình đợc viết trong giờ lí thuyết,giờ bài tập để HS chỉnh sửa, chạy thử, tìm hiểu trong giờ thực hành, không nên yêu cầu HS gõ cácchơng trình này trong tiết thực hành
d) Trong phân bổ thời lợng dành 8 tiết để làm bài tập, 4 tiết để ôn tập Các tiết này cha đợc định nộidung cụ thể, GV hoàn toàn chủ động đa ra nội dung cho tiết bài tập, ôn tập Tuy nhiên, tiết bài tậpnên dành thời gian để hớng dẫn học sinh làm một số bài tập trong SGK (nếu trong tiết lí thuyết chalàm hết), chuẩn bị cho những bài thực hành sau đó Tuỳ mức độ tiếp thu của HS, GV có thể ra thêmcác bài tập, bổ sung bài thực hành trên máy tính để HS ôn luyện kiến thức, kĩ năng Các tiết ôn tậpnên đợc bố trí vào cuối kì (ngay trớc hoặc ngay sau bài kiểm tra cuối học kì), trong tiết ôn tập cầntổng kết, khái quát những kiến thức, kĩ năng trọng tâm của chơng trình để HS khắc sâu, ghi nhớ Đặcbiệt tiết ôn tập cần khái quát hoá để thể hiện đợc t tởng dạy lập trình mà không dạy ngôn ngữ lậptrình cụ thể
e) Trong SGV có gợi ý mô tả một số thuật toán theo cách biểu diễn gần với câu lệnh mà học sinh cầnviết hoặc cần tìm hiểu trong chơng trình tơng ứng GV có thể tham khảo, lựa chọn cách mô tả này đểgiảng dạy phù hợp với đối tợng HS của mình
f) Các bài toán đợc giới thiệu trong SGK nói chung là đơn giản, có thể viết chơng trình mà không gặpnhiều khó khăn Đối với một bài toán cụ thể, nhiệm vụ của HS là viết đợc chơng trình Tuy nhiên,qua các bài toán HS cần hiểu và thực hiện đợc các bớc giải bài toán trên máy tính: Xác định bài toán,xây dựng (lựa chọn) thuật toán và viết chơng trình Do vậy, cần thực hiện đầy đủ các bớc đi từ bàitoán đến chơng trình: Xác định input, output của bài toán, xây dựng, mô tả thuật toán bằng cách liệt
kê và viết chơng trình
g) Có một thực tế là một số câu lệnh (nhất là câu lệnh có cấu trúc) thì hay đợc giới thiệu gắn liền vớimột số bài toán, thuật toán điển hình nào đó Cách làm này có thuận lợi là HS vừa học đ ợc câu lệnhmới vừa học đợc bài toán, thuật toán mới Tuy nhiên, đối với một số HS việc cùng lúc phải học cả hainội dung mới không phải lúc nào cũng dễ dàng Để giảm bớt khó khăn cho HS, nên tách việc dạy câu
Trang 5lệnh mới với việc dạy thuật toán mới, nghĩa là dạy xong câu lệnh rồi đến thuật toán hoặc ngợc lại.Trong SGV có giới thiệu một số cách làm nh vậy, bài toán sử dụng để giới thiệu hoặc áp dụng câulệnh mới thờng dễ hoặc HS đã biết bài toán, thuật toán từ trớc Khi đó, HS chỉ còn duy nhất nhiệm vụtìm hiểu câu lệnh, không phải mất thời gian để hiểu bài toán, thuật toán HS chỉ cần tập trung tìmhiểu câu lệnh mới Ngợc lại, khi giới thiệu thuật toán mới thì cần sử dụng câu lệnh HS đã biết sửdụng, lúc đó HS cũng chỉ tập trung vào tìm hiểu thuật toán mới Hi vọng cách làm nh vậy sẽ tạothuận lợi để học sinh tiếp thu kiến thức nhẹ nhàng hơn.
h) SGK là tài liệu mà HS nào cũng có SGK đợc in màu, hình thức đẹp, các tranh, ảnh cách trình bàytrong SGK đã đợc chọn lọc, cân nhắc kĩ lỡng Vì vậy, cần khai thác tối đa SGK trong quá trình dạyhọc Một trong những việc có thể thực hiện ngay trong lớp học đó là hớng dẫn HS và dành thời giancho HS tự nghiên cứu nội dung SGK Ban đầu việc giao bài cho HS đọc có thể mất thời gian, nh ngkhi kĩ năng đọc hiểu của HS đợc cải thiện thì việc dành thời gian để các em tự đọc có thể sẽ khôngnhững không mất thời gian mà ngợc lại sẽ tiết kiệm thời gian
i) Việc dạy học các phần mềm dạy học sẽ hiệu quả hơn nếu tiến hành tại phòng máy tính Nh ng khidạy lập trình không nên lạm dụng phòng máy tính Tiết thực hành cơ bản là để HS chạy thử chơngtrình, rèn luyện kĩ năng làm việc với môi trờng lập trình Không để tình trạng vào tiết thực hành HSmới biết bài toán và viết chơng trình ngay trên máy tính mà cha chuẩn bị trớc
j) Việc giới thiệu phần mềm học tập nhằm mục đích chính là cung cấp kiến thức, rèn luyện kĩ năngkhai thác phần mềm cho HS Bên cạnh đó, việc khai thác phần mềm học tập còn nhằm mục đích tạo
sự thay đổi, gây thêm hứng thú học tập Do vậy, mặc dù SGK trình bày hai phần tách biệt nh ngkhông có nghĩa là phải dạy theo đúng tuần tự trình bày các bài trong SGK Nội dung của Phần 2(Phần mềm học tập) cần đợc dạy xen kẽ với Phần 1 (Lập trình đơn giản) Cũng chính vì lí do này màtrong SGK không đánh số thứ tự bài ở phần Phần mềm học tập
4 Ôn tập và kiểm tra
a) Thời lợng dành cho ôn tập là 04 tiết (02 tiết/học kì) Căn cứ vào tình hình thực tế của lớp học, giáoviên tự xác định nội dung các tiết ôn tập Tuy nhiên, nên dành các tiết ôn tập để ôn luyện, tổng kếtkiến thức, kĩ năng trọng tâm của chơng trình Trong các tiết ôn tập GV cần khái quát kiến thức, kĩnăng lập trình nói chung thể hiện rõ mục tiêu, trọng tâm của chơng trình
b) Thời lợng để kiểm tra, đánh giá là 8 tiết, mỗi học kì 04 tiết Có thể dành 2 tiết cho bài kiểm tra cuốihọc kì, 2 tiết còn lại dành cho các bài kiểm tra định kì trong học kì Nếu tiến hành hai bài kiểm tra
định kì (mỗi bài 1 tiết) trong một học kì, thì nên có một bài kiểm tra trên giấy, 1 bài kiểm tra thựchành trên máy Hớng dẫn cụ thể hơn về kiểm tra, đánh giá có trong cuốn Hớng dẫn thực hiện chơngtrình, sách giáo khoa môn Tin học lớp 8 và phân phối chơng trình môn học
c) Nội dung kiểm tra phải đảm bảo cả lí thuyết và thực hành Cần lựa chọn nội dung kiểm tra để đảmbảo bao quát hết kiến thức, kĩ năng trọng tâm của chơng trình
d) Một số nội dung trong phần lập trình đơn giản thuận lợi cho việc áp dụng phơng pháp trắc nghiệmkhách quan trong kiểm tra, đánh giá Vì vậy, cần lu ý tăng cờng sử dụng trắc nghiệm khách quantrong kiểm tra, đánh giá nội dung này
e) Việc kiểm tra, đánh giá có tác động đến quá trình dạy học Để định hớng học tập đúng cho HS, bêncạnh việc kiểm tra những kiến thức, kĩ năng gắn liền với ngôn ngữ lập trình cụ thể, cần dành một tỉ lệthích đáng cho câu hỏi, bài tập về kiến thức, kĩ năng lập trình nói chung Những câu hỏi, bài tập này
sẽ giúp HS có ý thức chú trọng đến kiến thức, kĩ năng lập trình nói chung, tránh HS chỉ chú trọng đến
đến chi tiết cụ thể của ngôn ngữ lập trình Pascal
f) Cần tiến hành đánh giá học sinh trong giờ thực hành, điểm này là điểm kiểm tra thờng xuyên (hệ số1) Trong tiết thực hành có thể đánh giá, cho điểm cả lớp một nhóm hoặc một vài học sinh Tuynhiên, cần lu ý mục tiêu của giờ thực hành là để học sinh thực hành, không phải là giờ kiểm tra.Kiểm tra trong giờ thực hành là để học sinh tập trung, chăm chỉ, nghiêm túc học tập
g) Việc kiểm tra, đánh giá môn Tin học cấp THCS đợc thực hiện theo Quy chế Đánh giá, xếp loại họcsinh trung học cơ sở và học sinh trung học phổ thông (Ban hành kèm theo Quyết định số:40/2006/QĐ-BGDĐT ngày 05 tháng 10 năm 2006 của Bộ trởng Bộ Giáo dục và Đào tạo)
5 Thiết bị dạy học
a) Bộ Giáo dục và Đào tạo đang tiến hành xây dựng, ban hành danh mục thiết bị dạy học tối thiểu mônTin học cấp THCS Theo đó, các trờng THCS phải đáp ứng đợc danh mục thiết bị dạy học tối thiểunày thì mới có thể tổ chức dạy học môn Tin học Dự kiến danh mục thiết bị dạy học tối thiểu quy
định mỗi trờng THCS phải có tối thiểu một phòng máy với ít nhất 25 máy vi tính nối mạng và kết nốiInternet Ngoài máy tính, danh mục còn có các tranh, ảnh đợc phóng to để dạy học
Trang 6b) Phần lớn các nội dung dạy học Tin học THCS sẽ rất hiệu quả khi sử dụng các thiết bị trình chiếu, dovậy máy chiếu projector, máy chiếu overhead, máy chiếu vật thể, là các thiết bị đợc khuyến khíchtrang bị để dạy học cho môn Tin học.
c) Trong SGK sử dụng phần mềm Turbo Pascal để minh hoạ Phần mềm TP chạy trên các máy tính cótốc độ cao hiện nay có thể bị lỗi Division by zero (khi sử dụng th viện crt - uses crt) GV có thể tảiphần mềm TP đã đợc chỉnh sửa lỗi này trên website www.vnschool.net Với các nội dung dạy họctrong SGK thì hoàn toàn có thể thay thế TP (for Dos) bằng Pascal for Windows hoặc Free Pascal.Các phần mềm phục vụ dạy học theo SGK (kể cả các phần mềm học tập) đều có thể đợc tải về từwebsite nêu trên và có sẵn trong đĩa CD của GV tham dự lớp bồi dỡng GV cốt cán (xem trang 24)d) Những trờng đợc trang bị hệ thống Hishare (một CPU kết nối với nhiều màn hình) có thể gặp khókhăn khi sử dụng TP (for DOS), do tốc độ rất chậm Trong trờng hợp đó nên thay thế TP (for DOS)bằng Pascal for Windows hoặc Free Pascal
e) Hiện nay ở một số trờng THCS có thể còn có những máy tính cấu hình thấp đã đợc trang bị từ trớc.Những máy tính này hoàn toàn có thể đợc sử dụng để thực hành với phần mềm TP (for DOS) Dovậy, cần rà soát, tận dụng các máy tính cũ để phục vụ cho các tiết thực hành với TP
f) Hiện nay có một số phần mềm hỗ trợ cho việc quản lí dạy học trên phòng máy tính Hơn thế nữa cácphần mềm này còn giúp khai thác phòng thực hành môn Tin học nh một phòng đa phơng tiện để dạyhọc môn học khác Dới đây giới thiệu một số phần mềm để giáo viên tham khảo:
o XClass: www.hungphat.com.vn.
o Magic Class: www.anhkiet.com.vn.
o NetOPSchool (Đề nghị sử dụng www.google.com để tìm kiếm).
o E-Learning Class (Đề nghị sử dụng www.google.com để tìm kiếm).
Xem lại các địa chỉ này Nếu không có phần mềm đợc download miễn phí thì không nên giới thiệu
Trang 7B những vấn đề cụ thể phần 1 lập trình đơn giản
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ímhoặ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;
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)
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 cha 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)
Trang 8Bà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 saocho 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 lu ý 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ộtngô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ú chohọ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ặtkhá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àytrọ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à 02tiế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 ghinhớ 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ônggắ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ạykiế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ểmthử 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ônngữ 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ớithự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
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ínhsau đâ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 nhLogo, 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 trongviệ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áctá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 lu ý 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 đíchgiớ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 trng 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ể cha 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ầnkiế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 lu ý 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
Trang 9Tuy 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ạigắ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 sinhkhô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 sinh hiểu nhầm rằnglậ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 cha đợc giới thiệu và cha 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ớinhữ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ựchà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ựchà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ữngkiế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 đếncá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ơngtrì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ếtcá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ìnhnó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ể, nhng 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ìnhbà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 lu ý đ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ảicho 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ộidung 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ẫnchiếm một tỷ lệ đáng kể
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àychỉ 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ácdà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ộtphầ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ứctiế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ậpkhác, mặc dù không vợt quá kiến thức đã trình bày trong phần lí thuyết, nhng đòi hỏi học sinh vận dụng kiếnthứ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ộtcá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
Trang 10sinh 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ọcsinh 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ó, nhngcá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 Dovậ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 rathê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ậptrong 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âulệ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ơngtrì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ànhkhô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, nhng 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ìnhbà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ớngdẫ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ầnnà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 nhanhtrong 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 Trongquá 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
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áckiế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áchbiể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ểudiễ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àithự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 Docách giới thiệu nh vậy nên ban đầu có thể cha đủ, cha bao quát hết nhng đả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àitậ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ảotruyề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ộtcá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ộtbà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
Trang 112 Những điểm cần lu ý 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
HS đã thực hiện các thao tác khởi động/thoát khỏi phần mềm, sao chép, cắt, dán và thực hiện các bớc
để tắt máy tính (theo đúng quy cách) Đặc biệt HS vẫn thờng xuyên sử dụng các nút lệnh trên thanh công cụhoặc các lệnh trong bảng chọn để làm việc với chơng trình soạn thảo văn bản, chơng trình bảng tính Khithực hiện các thao tác này chính là HS ra lệnh cho máy tính thực hiện một công việc nào đó Ví dụ, khi thực
hiện thao tác nháy vào nút lệnh Cut trên thanh công cụ của Word là đã ra lệnh cho máy tính thực hiện công
việc cắt văn bản
Thực ra khái niệm về “lệnh” đối với máy tính khá phức tạp, có thể hiểu và mô tả lệnh với các mức độ
chi tiết khác nhau Xét đến cùng thì mỗi kiến trúc máy tính đều có một tập hợp (không nhiều) các lệnh cơ
bản hay vi lệnh hoặc chỉ lệnh (micro-instruction), các lệnh dùng để chỉ dẫn máy tính đều là một dãy các lệnh
cơ bản này (với một thứ tự nhất định) Từ đó thờng nảy sinh câu hỏi đây đã phải là lệnh cha hay là một tậphợp các lệnh Tuy nhiên ngời ta thờng hiểu lệnh máy tính là một chỉ dẫn của con ngời để máy tính thực hiệnmột công việc cụ thể nào đó Giáo viên cũng chỉ nên giới thiệu về lệnh cho HS ở mức độ này
Kết thúc mục 1, học sinh cần biết đợc rằng con ngời điều khiển máy tính thông qua lệnh
Cần cho HS nhận thấy sự khác biệt giữa việc ra lệnh cho máy tính với ra lệnh cho con ngời Qua ví
dụ điều khiển rô-bốt nhặt rác, GV cần cho HS nhận thấy một công việc rất đơn giản với con ngời, nhng khimuốn máy tính thực hiện thì cần phải chia thành nhiều thao tác nhỏ, đơn giản, cụ thể mà rô-bốt có thể thựchiện đợc Có sự khác biệt đó chính là bởi vì, khác với con ngời, máy tính là vật vô tri, vô giác
Có hai cách có thể để điều khiển rô-bốt thực hiện công việc trên: Cách thứ nhất là ra từng lệnh một vàrô-bốt thực hiện từng thao tác một; Cách thứ hai là chỉ dẫn để rô-bốt tự động thực hiện lần l ợt các thao táctrên Việc viết các lệnh để điều khiển, chỉ dẫn rô-bốt (hay máy tính) thực hiện tự động một loạt các thao tácliên tiếp chính là viết Chơng trình máy tính, hay còn gọi tắt là Chơng trình
Kết thúc mục 2 và mục 3 học sinh cần biết chơng trình là cách để con ngời chỉ dẫn cho máy tính thựchiện nhiều công việc liên tiếp một cách tự động và viết chơng trình là viết các lệnh để chỉ dẫn máy tính thựchiện các công việc hay giải một bài toán cụ thể
Có thể dẫn dắt HS tiếp cận khái niệm ngôn ngữ lập trình nh sau: Chơng trình mà con ngời viết ra phải
đảm bảo máy tính có thể "hiểu" đợc HS đã biết máy tính chỉ có thể hiểu đợc ngôn ngữ nhị phân, tức là dãy
số 0 và 1 Vì vậy, về nguyên tắc để máy tính "hiểu" đợc phải viết chơng trình bằng ngôn ngữ máy
Vấn đề là ngôn ngữ máy lại rất khó sử dụng, khó nhớ đối với con ngời Vì vậy, rất khó cho con ngờinếu sử dụng ngôn ngữ này để viết chơng trình
Do đó cần phải tìm ra một ngôn ngữ trung gian giữa con ngời và ngôn ngữ máy để con ngời dễ dàng
sử dụng khi viết chơng trình và sau đó chuyển đổi sang dạng ngôn ngữ máy sao cho máy tính có thể hiểu
đ-ợc Ngôn ngữ lập trình bậc cao là giải pháp nh vậy Có thể liệt kê ra một số ngôn ngữ lập trình bậc cao nhPascal, Free Pascal, C, Java Để tránh quá tải cho học sinh về mặt thuật ngữ, trong SGK các tác giả chỉ sử
dụng thuật ngữ ngôn ngữ lập trình nói chung với hàm ý ngôn ngữ lập trình bậc cao.
Tuy nhiên, nh đã nêu ở trên, chơng trình viết bằng ngôn ngữ lập trình phải đợc chuyển sang thành
ch-ơng trình ở ngôn ngữ nhị phân Điều này cũng giống nh việc phiên dịch khi trao đổi với ngời nớc ngoài vậy.Chơng trình đóng vai trò dịch từ ngôn ngữ lập trình bậc cao sang ngôn ngữ máy gọi là "chơng trình dịch"
Nh vậy, để có đợc một chơng trình mà máy tính có thể thực hiện đợc cần qua hai bớc:
(1) Viết chơng trình theo ngôn ngữ lập trình;
(2) Dịch chơng trình thành ngôn ngữ máy để máy tính hiểu đợc.
Cần lu ý rằng, các bớc nêu trên chỉ là hai trong số rất nhiều bớc (giai đoạn) để tạo ra một chơng trình
cụ thể có thể “chạy” trên máy tính Để có một chơng trình hoạt động hiệu quả trên máy tính và phục vụ đúngmục tiêu, ngời ta còn phải thực hiện nhiều công việc khác, bắt đầu từ việc khảo sát nhu cầu của ngời sử dụng(xác định mục tiêu, yêu cầu; khảo sát các qui trình nghiệp vụ, ), phân tích, thiết kế, lập trình, kiểm thử,triển khai cài đặt, đào tạo, hỗ trợ, v.v Hai bớc nói trên chỉ là một phần của công việc lập trình, sau khi thuậttoán đã đợc xây dựng Tuy nhiên, đối với học sinh mới bắt đầu làm quen với lập trình và ngôn ngữ lập trình,cách giới thiệu nh trong SGK là đủ và nhằm để học sinh phân biệt đợc hai công việc viết chơng trình và dịchchơng trình Trong các bài thực hành với Pascal, học sinh sẽ phân biệt rõ hơn hai bớc này
Ngôn ngữ lập trình là các đối tợng đợc định nghĩa một cách trừu tợng và hình thức, còn nhiệm vụchính của chơng trình dịch là dịch chơng trình đã đợc soạn thảo bằng ngôn ngữ lập trình sang ngôn ngữ máy.Tuy nhiên, ngời ta thờng cung cấp chơng trình dịch cho một ngôn ngữ lập trình cụ thể kèm theo một số công
cụ hỗ trợ ngời lập trình nh: phần mềm soạn thảo; công cụ phát hiện và thông báo lỗi; công cụ theo dõi, gỡ rốichơng trình; các th viện chơng trình chuẩn và các dịch vụ khác Tất cả tạo nên môi trờng lập trình của ngônngữ lập trình đó GV không cần giải thích kĩ về môi trờng lập trình với HS
Trang 12Qua mục 4 học sinh cần ghi nhớ đợc ngôn ngữ lập trình là công cụ để viết chơng trình máy tính vàchơng trình dịch đóng vai trò dịch chơng trình viết bằng ngôn ngữ lập trình sang ngôn ngữ máy.
Nội dung của bài 1 đợc xem nh là một cầu nối cho học sinh từ ngời sử dụng sang ngời xây dựng
ch-ơng trình máy tính Qua bài này học sinh cần biết phía sau những thao tác nh nháy nút lệnh Cut, Copy
mà các em đã quen sử dụng là những đoạn chơng trình máy tính tơng ứng Khi nháy một nút lệnh là các em
đã yêu cầu máy tính thực hiện đoạn chơng trình tơng ứng đã đợc viết sẵn
3 Hớng dẫn trả lời câu hỏi và bài tập
Bài 1 Khi soạn thảo văn bản trên máy tính, ta yêu cầu chơng trình tìm kiếm một cụm từ và thay thế bằng
một cụm từ khác, thực chất ta đã yêu cầu máy tính thực hiện rất nhiều lệnh Có thể mô tả các lệnh vớinhững mức độ chi tiết khác nhau
Dới đây chỉ mô tả những lệnh cơ bản nhất theo trật tự thực hiện:
1 Sao chép cụm từ cần tìm vào bộ nhớ (gọi là cụm từ 1)
2 Sao chép cụm từ sẽ thay thế vào bộ nhớ (cụm từ 2)
3 Tìm cụm từ 1
4 Xóa cụm từ 1 tìm đợc
5 Dán cụm từ 2 từ bộ nhớ vào vị trí cũ của cụm từ 1
Với các lệnh đợc liệt kê theo thứ tự nh trên, ta thấy chỉ có thể thay đổi thứ tự của một vài lệnh (ví dụ
nh các lệnh 1 và 2), nhng nói chung việc thay đổi thứ tự của phần lớn các lệnh sẽ không cho kết quả nhmong muốn, chẳng hạn nh thay đổi thứ tự của các lệnh 3 và 4 là không có nghĩa
Lu ý đối với giáo viên Việc mô tả các lệnh có thể thực hiện với nhiều mức chi tiết khác nhau Tuy cha
đầy đủ ở mức có thể lập trình đợc (cha tính đến điều kiện kết thúc, tức khi con trỏ đợc di chuyển đến cuốivăn bản), nhng dới đây là một mô tả chi tiết hơn:
1 Sao chép dãy kí tự cần tìm vào bộ nhớ (dãy 1)
2 Sao chép dãy kí tự sẽ thay thế vào bộ nhớ (dãy 2)
3 Đặt con trỏ trớc kí tự đầu tiên của văn bản
4 Sao chép dãy kí tự (tính từ vị trí con trỏ sang phải) có độ dài bằng dãy 1 vào bộ nhớ (dãy 3)
5 So sánh dãy 1 và dãy 3 Nếu dãy 3 không trùng với dãy 1, chuyển đến lệnh 8
6 Xóa dãy 3 trong văn bản
7 Dán dãy 2 vào vị trí cũ của dãy 3 và chuyển con trỏ đến cuối dãy 2 này
Vẫn không chính xác nếu lệnh (bớc) 8 chuyển con trỏ đi 1 nữa!
8 Di chuyển con trỏ sang phải một kí tự và quay lại lệnh 4
Thuật toán đúng nh thế này, không sai!
Học sinh chỉ cần có đáp án mô tả những lệnh cơ bản nhất là đạt yêu cầu Giáo viên chỉ nên giới thiệumô tả chi tiết nh trên khi học sinh có yêu cầu
Bài 2 Nếu thay đổi thứ tự của hai lệnh nào đó trong chơng trình điều khiển rô-bốt, có thể rô-bốt sẽ không
thực hiện đợc công việc nhặt rác vì nó sẽ đi không đúng hớng và có thể không tới đợc vị trí có rác dẫn
đến không nhặt đợc rác, Ví dụ, nếu thay đổi thứ tự của lệnh 1 "Tiến 2 bớc" và lệnh 2 "Quay trái, tiến
1 bớc" Khi đó, sau hai lệnh trên rô-bốt sẽ "Quay trái và tiến 3 bớc" và nó sẽ đi tới vị trí không có rác.Nói chung, các lệnh trong chơng trình cần đợc đa ra theo một thứ tự xác định sao cho ta đạt kết quảmong muốn
Vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy nhặt rác" là vị trí có thùng rác (ở góc đối diện)
Có nhiều cách khác nhau để đa ra hai lệnh để rô-bốt trở lại vị trí ban đầu của mình, một trong các cách
đó là hai lệnh "Quay trái, tiến 5 bớc" và "Quay trái, tiến 3 bớc"
Lu ý đối với giáo viên Trong một nhiều trờng hợp, ta có thể đa ra các lệnh khác nhau, nhng vẫn đạt kết
quả Chẳng hạn, trong ví dụ về rô-bốt, thay cho hai câu lệnh đầu tiên, ta có thể điều khiển rô-bốt đến
đúng vị trí có rác bằng các lệnh sau: "Quay trái, tiến 1 bớc" và "Quay phải, tiến 2 bớc" hoặc "Quayphải, tiến 2 bớc", "Quay trái, tiến 2 bớc" và "Quay trái, tiến 4 bớc" Trong một số trờng hợp khác, việcthay đổi thứ tự của một vài câu lệnh vẫn cho kết quả đúng nh yêu cầu Tuy nhiên, nh là một nguyên tắcchung, việc thay đổi thứ tự các câu lệnh sẽ không cho kết quả đúng Có thể liên hệ với thứ tự các bớccủa thuật toán trong Bài 5
Bài 3 Lí do: Điều khiển máy tính tự động thực hiện các công việc đa dạng và phức tạp mà một lệnh đơn
giản không đủ để chỉ dẫn
Bài 4 Các ngôn ngữ lập trình bậc cao đợc phát triển để khắc phục các yếu điểm trên của ngôn ngữ máy:
khó sử dụng, khó nhớ Ngôn ngữ lập trình sử dụng các cụm từ tự nhiên nên dễ nhớ, dễ học
Quá khó đối với HS
Trang 13Lu ý đối với giáo viên Tuy ngôn ngữ máy cũng là một loại ngôn ngữ lập trình, nhng ở đây chúng ta
hiểu ngôn ngữ lập trình là ngôn ngữ lập trình bậc cao Trong ngôn ngữ máy, mọi chỉ thị đều đợc biểudiễn bằng các con số nhị phân 0 và 1 Ngôn ngữ máy tuy khó đọc và khó sử dụng, nhng là ngôn ngữduy nhất mà bộ vi xử lí có thể nhận biết và thực hiện các lệnh một cách trực tiếp Ngoài ra yếu điểmcủa các chơng trình viết bằng ngôn ngữ máy là phụ thuộc vào phần cứng máy tính
(Nhận biết và thực hiện gi?
điểm yếu?
Yếu điểm là một khái niệm chung, còn điểm yếu là một cái gì đó cụ thể Giữ nguyên!)
Bài 5 Chơng trình dịch là chơng trình có chức năng chuyển đổi chơng trình đợc viết bằng ngôn ngữ lập
trình thành chơng trình thực hiện đợc trên máy tính Nh vậy, chơng trình dịch chuyển đổi các dònglệnh đợc soạn thảo thành tệp có thể chạy trên máy tính
Bài 6 Hai bớc cơ bản để tạo ra các chơng trình máy tính là:
(1) Viết chơng trình theo ngôn ngữ lập trình;
(2) Dịch chơng trình thành ngôn ngữ máy để máy tính hiểu đợc Kết quả là tệp tin có thể thực hiện đợctrên máy tính
Lu ý đối với giáo viên Đây chỉ là hai bớc cơ bản trong lập trình và chỉ là một phần của công việc giải
quyết bài toán bằng máy tính
Bài 2 Làm quen với chơng trình và ngôn ngữ lập trình
1 Mục đích, yêu cầu
Biết ngôn ngữ lập trình gồm các thành phần cơ bản là bảng chữ cái và các quy tắc để viết chơngtrình, câu lệnh
Biết ngôn ngữ lập trình có tập hợp các từ khóa dành riêng cho mục đích sử dụng nhất định
Biết tên trong ngôn ngữ lập trình là do ngời lập trình đặt ra, khi đặt tên phải tuân thủ các quy tắc của ngôn ngữ lập trình Tên không đợc trùng với các từ khoá.
Biết cấu trúc chơng trình bao gồm phần khai báo và phần thân chơng trình
2 Những điểm cần lu ý và gợi ý dạy học
Mục tiêu của bài 2 là giới thiệu cho học sinh về một số thành phần cơ bản của ngôn ngữ lập trình nóichung, làm quen với một chơng trình đơn giản, làm quen với TP để chuẩn bị cho bài thực hành 1
Để giới thiệu các thành phần của ngôn ngữ lập trình, SGK sử dụng cách tiếp cận xuất phát từ một
ch-ơng trình Pascal cụ thể, sau đó khái quát hóa và tổng kết Cần lu ý không giải thích ngay tất cả những gì cótrong chơng trình ví dụ, tránh sa đà giới thiệu chi tiết cú pháp và ngữ nghĩa của các câu lệnh Pascal mà chỉnên tập trung khai thác những điểm cần thiết phục vụ cho mục tiêu của bài học Cần đến thành phần, câulệnh nào thì tập trung vào đó, phân tích, giải thích vừa đủ, biết điểm dừng để luôn hớng đến mục tiêu củamục, của bài
HS đã biết viết chơng trình cần sử dụng một ngôn ngữ lập trình cụ thể ở bài 1 Do vậy, GV có thể đặtcâu hỏi tại sao lại phải viết chơng trình theo một ngôn ngữ lập trình cụ thể nào đó để HS thảo luận, trả lờinhằm ôn lại bài cũ
Cần cho HS quan sát hình 6 để thấy trực quan một chơng trình cụ thể Cách làm này nhằm gây hứngthú cho học sinh ngay khi vào bài học Từ việc quan sát ví dụ này GV khái quát lên thành những kiến thứcchung về ngôn ngữ lập trình
Ngôn ngữ lập trình Pascal đã đợc nhắc đến ở bài 1, do vậy giáo viên có thể giới thiệu cho các em biết
ví dụ trong hình 6 là một chơng trình viết bằng ngôn ngữ lập trình Pascal
Để dạy mục 2, SGK dựa trên những gì học sinh quan sát đợc nh chữ cái, kí hiệu để khái quát nênthành phần thứ nhất: bảng chữ cái, các kí hiệu Dựa trên ví dụ về câu lệnh writeln('Chao Cac Ban'); để kháiquát thành phần thứ hai: quy tắc viết
Với mục 2, có thể xuất phát từ ngôn ngữ tiếng Việt, nếu HS đợc học ngoại ngữ thì dùng ngôn ngữ tựnhiên là chính ngoại ngữ các em đang học để lấy ví dụ sẽ thuận tiện hơn HS biết một ngôn ngữ bao gồm cácchữ cái, các từ và quy tắc ngữ pháp Muốn ngời khác hiểu đợc và hiểu đúng thì cần dùng các chữ cái, những
từ cho phép và phải đợc ghép theo đúng quy tắc ngữ pháp
Ngôn ngữ lập trình cũng vậy (quan sát hình 6), có bảng chữ cái và các quy tắc viết Khi viết chơngtrình phải sử dụng các chữ cái, các từ và tuân thủ quy tắc tắc viết mà ngôn ngữ lập trình đặt ra Có nh vậy ch-
ơng trình mới có thể đợc dịch sang ngôn ngữ máy mà máy tính có thể hiểu và thực hiện đợc Cụ thể, để ra
Trang 14lệnh cho máy tính hiển thị dòng chữ chào các bạn thì trong chơng trình trên phải viết là: writeln('Chao cac
ban');.
Giáo viên có thể sử dụng cách so sánh với ngôn ngữ tự nhiên để học sinh dễ dàng hiểu đ ợc nội dungnày Chẳng hạn, trong tiếng Việt, không phải chúng ta cứ ghép các chữ cái bất kì là đợc một từ có nghĩa,hoặc cứ ghép các từ (có nghĩa) là có một câu có nghĩa Nh vậy có thể xem quy tắc viết các câu lệnh trongmột ngôn ngữ lập trình (cú pháp và ngữ nghĩa) là quy tắc “chính tả” và “ngữ pháp” của ngôn ngữ lập trình
đó
Trên thực tế, một chơng trình có thể đợc viết không phải chỉ bằng một ngôn ngữ lập trình cụ thể mà
có thể là hai hoặc nhiều ngôn ngữ lập trình cùng đợc sử dụng trong một chơng trình Ví dụ, nh trong một
ch-ơng trình đợc soạn thảo và dịch với TP có thể có một số lệnh đợc viết bằng ngôn ngữ Assembly (hợp ngữ).Tuy nhiên, ở đây ta không đề cập đến vấn đề này mà mặc định những chơng trình mà ta đề cập đến chỉ sửdụng một ngôn ngữ lập trình
Mục 3, GV sử dụng ví dụ ở hình 6, SGK (CT_Dau_Tien) để minh hoạ cho HS về các thành phần của
ngôn ngữ lập trình
Các từ nh program, uses, begin, end đợc gọi là từ khoá (nhiều tài liệu chuyên môn gọi là từ dành
riêng), đólà các từ mà ngôn ngữ lập trình đã quy định dùng với ý nghĩa, chức năng cố định Từ khoá là kháiniệm mới với HS, vì vậy để HS hiểu về quy định từ khoá trong ngôn ngữ lập trình, có thể lấy ví dụ về cụm từ
Lớp trởng Lớp trởng là một cụm từ dành riêng để gọi một HS trong lớp đảm nhiệm chức vụ lớp trởng của
lớp, không thể có một HS nào khác trong lớp cũng đợc gọi là lớp trởng (trong cùng thời điểm)
Tên là do ngời lập trình tự đặt ra và sử dụng những kí tự mà ngôn ngữ lập trình cho phép, tất nhiên làtên không đợc trùng với từ khoá
Câu lệnh writeln('Chao cac ban') là một câu lệnh chỉ dẫn máy tính hiển thị dòng chữ "Chao cac ban"
trên màn hình
GV không cần giải thích sâu về chơng trình này, cũng không nên giải thích quá kĩ về từ khoá, tên,câu lệnh ở đây HS sẽ còn tiếp cận dần với những kiến thức này ở các bài học sau
GV có thể giới thiệu thêm về việc thay cụm từ Chao cac ban thành cụm từ khác để HS có thể thực
hiện ở bài thực hành sắp tới, tạo hứng thú cho HS trong tiết thực hành
Mục 4, dựa vào hình 7 (CT_Dau_Tien), chỉ cần cho HS nhận biết đợc chơng trình gồm hai phần:
Phần khai báo: Khai báo tên và một số khai báo khác (các em sẽ học sau).
Phần thân: Bắt đầu bằng từ khoá Begin và kết thúc bằng từ khoá End và dấu chấm (End.) Giữa từ
khoá Begin và End là các câu lệnh
Lu ý: phần thân là phần quan trọng, bắt buộc phải có ở mọi chơng trình, còn phần khai báo có thể cóhoặc không
Đến đây có thể cho HS phát hiện về từ khoá và chức năng của từ khoá qua chơng trình trong hình 7SGK: Program là từ khoá dùng để khai báo tên chơng trình; Từ khoá Begin dùng để khai báo bắt đầu chơngtrình, từ khoá End dùng để khai báo kết thúc chơng trình
Cách tiếp cận từ cụ thể đến khái quát có u điểm là phù hợp với lứa tuổi học sinh THCS Tuy nhiên,hạn chế của cách tiếp cận này là HS dễ bị dẫn đến nhận thức rằng đang học ngôn ngữ Pascal Nh đã biết,mục tiêu là dạy học lập trình, ngôn ngữ Pascal là một minh hoạ cụ thể Do vậy, GV cần lu ý trớc khi chuyểnsang mục 5, cần nhấn mạnh để học sinh ghi nhớ, với tất cả ngôn ngữ lập trình đều có tập hợp các kí hiệu(bảng chữ cái) và quy tắc riêng để viết chơng trình
Có thể giới thiệu nội dung Mục 5 trên lớp hoặc yêu cầu các em đọc nội dung này ở nhà chuẩn bị chobài thực hành 1 Mục tiêu là để HS nhận biết giao diện của phần mềm Turbo Pascal và biết các b ớc soạnthảo, dịch chơng trình phục vụ trực tiếp cho bài thực hành 1 Nếu giới thiệu trên lớp, giáo viên nên chuẩn bịsẵn một số hình ảnh về giao diện của Turbo Pascal trên giấy khổ rộng và tận dung kênh hình trong SGK.Trong cả hai trờng hợp, khi tiến hành Bài thực hành 1 giáo viên cần tổng kết lại nội dung này ngay trớc khihọc sinh bắt đầu sử dụng máy tính để thực hành
Cần nhấn mạnh cho HS về việc tạo chơng trình chạy đợc trên máy tính gồm hai bớc: bớc một, soạnthảo chơng trình trên máy tính theo một ngôn ngữ lập trình cụ thể; bớc hai, dịch chơng trình vừa soạn thảosang ngôn ngữ máy
Việc soạn thảo chơng trình về cơ bản giống với soạn thảo văn bản mà các em đã học Việc dịch
ch-ơng trình cũng rất đơn giản, ví dụ với ngôn ngữ lập trình Turbo Pascal, sau khi soạn thảo xong chỉ cần nhấn
Alt+F9 là máy tính tự động dịch chơng trình Để dịch và chạy chơng trình, nhấn Ctrl + F9.
Trong phần này cần cho HS biết có nhiều ngôn ngữ lập trình, trong chơng trình học các em sẽ làmviệc với một ngôn ngữ lập trình Pascal
Trang 153 Hớng dẫn trả lời câu hỏi và bài tập
Bài 1 Các thành phần cơ bản ngôn ngữ lập trình gồm bảng chữ cái và các quy tắc để viết các câu lệnh (cú
pháp) có ý nghĩa xác định, cách bố trí các câu lệnh, sao cho có thể tạo thành một chơng trình hoànchỉnh và chạy đợc trên máy tính
Lu ý đối với giáo viên Các quy tắc nhắc đến ở đây bao gồm các thuật ngữ chuyên môn là cú pháp và ngữ nghĩa Xem SGK, mục 2, bài 2.
Bài 2 Không Các cụm từ sử dụng trong chơng trình (từ khoá, tên) phải đợc viết bằng các chữ cái trong
bảng chữ cái của ngôn ngữ lập trình Các ngôn ngữ lập trình phổ biến hiện nay đều có bảng chữ cái làbảng chữ cái tiếng Anh và các kí hiệu khác, trong đó không có các chữ có dấu của tiếng Việt
Lu ý đối với giáo viên Câu hỏi trong bài là "viết chơng trình có các câu lệnh bằng tiếng Việt" Điều
này không có nghĩa là trong chơng trình không thể có các chữ cái có dấu của tiếng Việt (hay của một ngôn
ngữ khác) nh là dữ liệu dạng văn bản cần xử lí Các chữ có dấu đó sẽ đợc ngôn ngữ lập trình xử lí mã kí tự
t-ơng ứng trong các bảng mã ASCII mở rộng Ví dụ cht-ơng trình Pascal sau đây hoàn toàn hợp lệ:
begin program CT_thu;
writeln(' Chào các bạn');
end.
Bài 3 Tên trong chơng trình là dãy các chữ cái hợp lệ đợc lấy từ bảng chữ cái của ngôn ngữ lập trình
Từ khoá của một ngôn ngữ lập trình (còn đợc gọi là từ dành riêng) là tên đợc dùng cho các mục đích
nhất định do ngôn ngữ lập trình quy định, không đợc dùng cho bất kì mục đích nào khác
Ngời lập trình có thể đặt tên một cách tuỳ ý nhng phải tuân thủ các quy tắc của ngôn ngữ lập trìnhcũng nh của chơng trình dịch, trong đó (1) Hai đại lợng khác nhau phải có tên khác nhau; (2) Tênkhông đợc trùng với các từ khoá
Bài 4 Các tên hợp lệ: a, Tamgiac, beginprogram, b1, abc; tên không hợp lệ: 8a (bắt đầu bằng số), Tam giac (có dấu cách), end (trùng với từ khoá)
Bài 5 Xem SGK, mục 4, bài 2.
Bài 6 Chơng trình 1 là chơng trình Pascal đầy đủ và hoàn toàn hợp lệ, mặc dù chơng trình này chẳng thực
hiện điều gì cả Phần nhất thiết phải có trong chơng trình là phần thân đợc xác định bởi hai từ khoá
begin và end (có dấu chấm)
Chơng trình 2 là chơng trình Pascal không hợp lệ vì câu lệnh khai báo tên chơng trình program
CT_thu nằm ở phần thân chơng trình.
Bài thực hành 1 Làm quen với Turbo Pascal
1 Mục đích, yêu cầu
Thực hiện đợc thao tác khởi động/kết thúc TP, làm quen với màn hình soạn thảo TP
Thực hiện đợc các thao tác mở các bảng chọn và chọn lệnh
Soạn thảo đợc một chơng trình Pascal đơn giản
Biết cách dịch, sửa lỗi trong chơng trình, chạy chơng trình và xem kết quả
Biết sự cần thiết phải tuân thủ quy định của ngôn ngữ lập trình
2 Những điểm cần lu ý và gợi ý dạy học
Để chạy đợc chơng trình Turbo Pascal cần có tối thiểu hai tệp: TURBO.exe và TURBO.TPL Lu ý
rằng nếu sử dụng Turbo Pascal for DOS, trong chơng trình có sử dụng th viện crt (khai báo uses crt) thì khi
dịch chơng trình có thể sẽ có thể gặp thông báo lỗi Error 200: Division by zero nh hình dới đây
Lỗi này không phải chơng trình đợc viết có lỗi mà do phần mềm Turbo Pascal đang sử dụng khôngphù hợp với máy tính hiện tại có tốc độ cao Để khắc phục lỗi này, GV có thể tải phần mềm Turbo Pascal đã
Trang 16đợc sửa lỗi này ở website www.vnschool.net hoặc có thể sử dụng phần mềm Pascal for Windows hoặc
Free Pascal Tất cả các phần mềm này có sẵn trong đĩa CD phát cho GV tham gia tập huấn cốt cán
Lặp trang 13
Vì HS đã đợc học, thực hành về khởi động chơng trình ở các năm học trớc nên việc khởi động TP là
dễ dàng với các em Mặc dù vậy, GV nên tạo biểu tợng của chơng trình TP trên màn hình nền (Shortcut) đểthuận tiện cho HS khởi động trong tiết thực hành
Khi khởi động TP, màn hình hiện lên nh hình dới đây Rất có thể HS bỡ ngỡ, lúng túng vì có một
thông báo giữa màn hình vì điều này không đợc nhắc đến trong SGK GV lu ý nhắc HS nháy nút OK để bắt
đầu làm việc với TP
Một lu ý nữa, có thể màn hình làm việc của TP chỉ là một cửa sổ nhỏ, không chiếm hết toàn bộ mànhình nh minh hoạ dới đây
Để HS tiện theo dõi thì nên mở rộng cửa sổ TP ra toàn bộ màn hình Cách làm nh sau:
- Chọn biểu tợng tắt của TP trên màn hình nền;
- Nháy nút phải chuột để mở bảng chọn tắt nh hình dới đây:
- Trong bảng chọn tắt, chọn mục Properties, cửa sổ Shortcut to Turbo Pascal Properties hiện lên.
- Trong cửa sổ Shortcut to Turbo Pascal Properties, chọn mục Screen, sau đó nháy chuột chọn
Full-screen nh hình dới đây.
Trang 17- Nháy OK để kết thúc
Từ lần khởi động TP tiếp theo màn hình làm việc của TP sẽ mở rộng toàn bộ màn hình máy tính.Trong bài 1, cần cho HS nhận biết biểu tợng của TP trên màn hình nền, khởi động/thoát khỏi TP; biếtcách mở bảng chọn; nhận biết đợc dòng trợ giúp nằm dới cùng của màn hình để tra cứu nhanh phím chứcnăng khi cần Không nên mất nhiều thời gian cho bài 1 bởi vì những kĩ năng này học sinh sẽ còn phải làmquen, sử dụng ở những bài sau SGK đã trình bày các nội dung này theo từng bớc rất cụ thể (cầm tay chỉviệc), vì vậy giáo viên chỉ cần yêu cầu học sinh làm theo các bớc đó
Với bài 2, cần nhắc HS gõ chính xác chơng trình vào máy tính
Mặc dù việc soạn thảo một chơng trình ngắn nh ví dụ đa ra cha cần sử dụng nhiều đến các công cụsoạn thảo Tuy nhiên, GV cần lu ý cho HS một số điểm: Soạn thảo trong TP có một số điểm khác với soạn
thảo văn bản mà các em đã đợc học, cần hớng dẫn học sinh sử dụng phím Delete, Backspace khi soạn
thảo trong TP Các công cụ soạn thảo nh: sao chép, cắt, dán trong TP cũng khác, cần hớng dẫn HS cách tracứu các lệnh này trong bảng chọn khi cần thiết Có thể HS muốn gõ tiếng Việt có dấu ở những câu tiếng Việt(do đã quen với gõ tiếng Việt có dấu khi làm việc với phần mềm bảng tính, phần mềm soạn thảo văn bản ởcác lớp trớc), cần lu ý các em chỉ gõ tiếng Việt không dấu, TP không hỗ trợ gõ tiếng Việt có dấu
Trọng tâm của bài 2 này là HS thực hiện đợc việc soạn thảo, lu, dịch và chạy đợc chơng trình
Khi dịch chơng trình rất có thể máy tính sẽ báo lỗi do HS soạn thảo chơng trình còn lỗi chính tả,không hoàn toàn chính xác GV yêu cầu HS tự đối chiếu chơng trình vừa gõ với chơng trình trong SGK đểchỉnh sửa theo đúng chơng trình mẫu Việc làm này là cần thiết để HS thấy đợc tính nghiêm ngặt của ngônngữ lập trình và rèn luyện thái độ nghiêm túc trong học tập, làm việc với ngôn ngữ lập trình
Khi nhấn Ctrl+F9 để dịch và chạy chơng trình, có thể HS không xem đợc kết quả hiển thị trên màn
hình Để dừng màn hình lại cho HS quan sát kết quả cần thêm lệnh Readln ngay trớc từ khoá End Khi đó,
màn hình sẽ dừng lại để HS quan sát kết quả, quan sát kết quả xong nhấn phím Enter để trở về màn hình
soạn thảo của TP
GV có thể hớng dẫn các em thay các cụm từ Chao cac ban và Minh la Turbo Pascal bằng các cụm từ
Nếu còn thời gian, GV có thể yêu cầu HS thay đổi giữa cách viết thờng và cách viết hoa của từ khoá
để thấy đợc PASCAL không phân biệt chữ hoa và chữ thờng Cho HS thay lệnh write() bằng writeln() (hoặcngợc lại) và quan sát để nhận thấy sự khác biệt giữa lệnh write() và writeln() Ví dụ, ban đầu trong ch ơng
Trang 18trình có hai dòng lệnh writeln('Chao cac ban'); và writeln('Minh la Turbo Pascal'); thì kết quả đa ra màn hình trên hai dòng Sau đó sửa lệnh đầu tiên thành write('Chao cac ban') và giữ nguyên lệnh thứ hai thì kết
quả in ra trên một dòng So sánh hai kết quả để rút ra sự khác nhau giữa lệnh write là writeln Cách làm này
là một phơng pháp hớng dẫn HS tự khám phá, tìm hiểu câu lệnh của ngôn ngữ lập trình
Bài 3 Chơng trình máy tính và dữ liệu
1 Mục đích, yêu cầu
Biết khái niệm kiểu dữ liệu;
Biết một số phép toán cơ bản với dữ liệu số;
Biết khái niệm điều khiển tơng tác giữa ngời với máy tính
2 Những điểm cần lu ý và gợi ý dạy học
HS đã đợc làm quen với khái niệm dữ liệu ở các lớp trớc, không cần thiết phải giải thích sâu thêm vềkhái niệm dữ liệu ở đây
Kiểu dữ liệu là một khái niệm mới và tơng đối khó với HS Vì vậy, không yêu cầu truyền đạt hết kiếnthức về kiểu dữ liệu ở bài này HS còn đợc tiếp cận dần về kiểu dữ liệu ở các bài sau
Có thể nêu cho HS thấy, ở môn Văn-Tiếng Việt có thể tiến hành phân tích, phát biểu cảm nghĩ về bàivăn, bài thơ nào đó Nhng ở môn Toán thì ta thờng tính toán bằng các phép cộng trừ, nhân, chia với cáccon số
Cũng có thể bắt đầu bài học với một ví dụ khác ở lớp trớc học sinh đã bớc đầu làm quen với các kiểu dữliệu số và dữ liệu văn bản khi học sử dụng chơng trình bảng tính Giáo viên có thể nhắc lại hai kiểu dữ liệuquen thuộc trong Excel và đặt câu hỏi hoặc nêu ví dụ về kết quả nhập công thức tính tổng giá trị lu trong hai
ô tính chứa các dữ liệu số hoặc văn bản, yêu cầu học sinh dự đoán kết quả nhận đợc (hình dới)
Từ đó kết luận: Đối với các kiểu dữ liệu khác nhau, ngời ta thờng thực hiện các phép xử lí dữ liệu khácnhau
Tơng tự nh vậy, ngôn ngữ lập trình thờng phân chia dữ liệu thành các kiểu và định nghĩa các phép xử lítơng ứng trên mỗi kiểu dữ liệu
SGK chỉ hạn chế giới thiệu các kiểu dữ liệu đơn giản và thờng đợc sử dụng nhất: dữ liệu kiểu sốnguyên, kiểu số thực, kiểu kí tự và kiểu xâu kí tự Thậm chí, kiểu số nguyên trong ngôn ngữ minh họa là
Pascal, SGK cũng chỉ bớc đầu giới thiệu kiểu integer Trong các bài thực hành tiếp theo, học sinh sẽ dần dần
đợc giới thiệu thêm một vài kiểu dữ liệu khác Một khi học sinh đã làm quen và hiểu các khái niệm cơ bản
về một vài kiểu dữ liệu, việc giới thiệu các kiểu dữ liệu khác sẽ rất nhẹ nhàng Học sinh sẽ dần biết về tầmquan trọng của các kiểu dữ liệu khi học đến bài tiếp theo, sử dụng biến trong chơng trình
Tơng ứng với mỗi kiểu dữ liệu cụ thể đều có các phép toán xử lí tơng ứng, ví dụ với dữ liệu là số thì có
thể tiến hành các phép toán cộng, trừ, nhân, chia với các số đó Phép toán nh div, mod lại chỉ có thể thực hiện
với kiểu nguyên mà không thực hiện đợc với kiểu thực
Về thao tác xử lí dữ liệu kiểu xâu, GV có thể cho HS thấy ví dụ về thực hiện thao tác hiển thị dữ liệukiểu xâu ra màn hình mà các em đã học ở bài thực hành 1
writeln('Chao Cac Ban');
write('Minh la Turbo Pascal');
Lu ý rằng dữ liệu kiểu xâu trong Pascal đợc đặt trong cặp dấu nháy đơn GV cha nên giới thiệu vềcác thao tác xử lí đối với dữ liệu kiểu xâu kí tự gây quá tải với HS
Mục 2 chỉ nêu các phép toán với dữ liệu kiểu nguyên và kiểu thực Cần lu ý một số điểm sau:
- Sự khác nhau giữa kí hiệu phép toán trong toán học và trong Pascal Có thể cho HS tự xem cácbảng ở mục 2 để phát hiện ra sự khác nhau này
- Trong Pascal (và trong hầu hết các ngôn ngữ lập trình nói chung) chỉ đợc phép sử dụng cặp dấungoặc tròn () để gộp các phép toán Không dùng cặp dấu ngoặc vuông [] hay cặp dấu ngoặc nhọn{} nh trong toán học GV có thể hỏi HS, giả sử khi viết chơng trình một bạn nào đó đã quên quy
định này của Pascal mà dùng dấu ngoặc vuông hay dấu ngoặc tròn để viết biểu thức thì có đợckhông? Mục tiêu của câu hỏi này là để các em nhớ rằng luôn phải tuân thủ những nguyên tắc, quy
định mà ngôn ngữ lập trình đặt ra, nếu không chơng trình dịch sẽ không hiểu và không thể dịch racho máy tính thực hiện đợc
Trang 19- Các phép toán đợc thực hiện theo thứ tự u tiên:
Các phép toán trong ngoặc đợc thực hiện trớc tiên;
Trong dãy các phép toán không có dấu ngoặc, các phép nhân, phép chia, phép chia lấy phầnnguyên (div) và phép chia lấy phần d (mod) đợc thực hiện trớc;
Cuối cùng thực hiện phép cộng và phép trừ theo thứ tự từ trái sang phải
Các phép toán lấy phần nguyên (div), lấy phần d (mod) chỉ giới thiệu cho HS biết, không nên dànhnhiều thời gian vào giới thiệu hai phép toán này
Trong số các quy tắc trên có một quy tắc quan trọng mà học sinh thờng bỏ qua và có ảnh hởng tới kếtquả tính toán: Trong một biểu thức chỉ có phép cộng và phép trừ, hoặc chỉ có phép nhân hoặc phép chia, các
phép tính đợc thực hiện theo thứ tự từ trái sang phải Cần đặc biệt lu ý đến điều này khi chuyển đổi các biểu
thức toán học sang dạng biểu thức trong Pascal Giáo viên có thể nhiều ví dụ khác nhau để nhắc nhở họcsinh lu ý và sử dụng các cặp dấu ngoặc đơn để nhóm các phép tính, ví dụ:
10 5 + 2 = 7, nhng nếu thực hiện phép cộng trớc ta đợc kết quả 3
66/22 = 36, nhng nếu thực hiện các phép nhân trớc ta đợc kết quả là 9
Chẳng hạn, học sinh thờng chuyển nhầm biểu thức
2 2(2 )
là đúng hoặc sai HS sẽ hiểu rõ hơn về ý nghĩa của phép so sánh khi học đến câu lệnh điều kiện, cấu trúc
điều khiển ở bài sau
Cần lu ý rằng các kí hiệu phép toán, phép so sánh ở trên là của Pascal Có sự khác nhau về các kíhiệu này ở các ngôn ngữ lập trình khác nhau Khi làm việc với ngôn ngữ lập trình nào thì phải tuân thủ cácquy định về kí hiệu phép toán của ngôn ngữ lập trình đó Tuy nhiên, các ngôn ngữ lập trình đều cho phépbiểu diễn các phép tính số học, phép so sánh
Nội dung mục 4, Giao tiếp ngời-máy tính, tốt nhất nên đợc GV minh hoạ trên máy tính Có thểviết sẵn và cho chạy một chơng trình nh sau (GV có thể sử dụng chơng trình khác):
Chơng trình này sẽ cho phép nhập tên của ngời sử dụng và tiến hành in ra màn hình dòng chữ chào
với tên mà ngời sử dụng vừa nhập Chơng trình sẽ lặp đến khi ngời sử dụng nhấn phím khác với phím C Có
thể mời lần lợt một số em lên nhập tên của chính các em để thấy đợc sự thay đổi tơng ứng với dữ liệu nhậpvào Từ đó các em thấy đợc khái niệm tơng tác ngời-máy tính
Một điểm cần lu ý ở đây là cần cho HS thấy sự tơng tác giữa ngời và máy có đợc là do ngời lập trìnhtạo ra Có thể mở chơng trình và giải thích sơ bộ cho các em về một số câu lệnh đơn giản để nhập tên, indòng chào với tên tơng ứng Lu ý, lúc này không phải là thời điểm thích hợp để giải thích tất cả các câu lệnhtrong chơng trình Những tơng tác ngời-máy tính mà các em đã thực hiện khi soạn thảo văn bản, sử dụng hệ
điều hành do ngời lập trình tạo ra là một kiến thức quan trọng mà các em cần rút ra ở đây Điều này thểhiện sự khác biệt giữa học tin học đơn thuần chỉ để sử dụng và học tin học với t cách là một ngành khoa học
HS sẽ dần hiểu rõ hơn về việc này ở những bài học sau
Để chuẩn bị cho bài thực hành 2, GV có thể cho HS làm câu a, bài 1 của bài thực hành 2 ngay trênlớp
Trang 203 Hớng dẫn trả lời câu hỏi và bài tập
Bài 1 Vì dữ liệu và các thao tác xử lí dữ liệu rất đa dạng, lí do dễ nhận thấy nhất là việc phân chia dữ liệu
thành các kiểu giúp xác định các phép xử lí (phép toán) có thể thực hiện trên mỗi kiểu dữ liệu Ngoài
ra, việc phân chia kiểu dữ liệu còn cho biết các giá trị có thể (phạm vi) của dữ liệu, giúp cho việc quản
lí tài nguyên của máy tính (đặc biệt là bộ nhớ trong) một cách hiệu quả
Bài 2 Có thể nêu các ví dụ sau đây:
a) Dữ liệu kiểu số và dữ liệu kiểu xâu kí tự Phép cộng đợc định nghĩa trên dữ liệu số, nhng không cónghĩa trên dữ liệu kiểu xâu
b) Dữ liệu kiểu số nguyên và dữ liệu kiểu số thực Phép chia lấy phần nguyên và phép chia lấy phần d
có nghĩa trên dữ liệu kiểu số nguyên, nhng không có nghĩa trên dữ liệu kiểu số thực
Bài 3 Dãy chữ số 2010 có thể là dữ liệu kiểu dữ liệu số nguyên, số thực hoặc kiểu xâu kí tự Tuy nhiên, để
chơng trình dịch Turbo Pascal hiểu 2010 là dữ liệu kiểu xâu, chúng ta phải viết dãy số này trong cặpdấu nháy đơn (')
var a: real; b: integer; c: string;
Bài 5 Lệnh Writeln('5+20=','20+5') in ra màn hình hai xâu kí tự '5+20' và '20+5' liền nhau: 5+20 = 20+5,
còn lệnh Writeln('5+20=',20+5) in ra màn hình xâu kí tự '5+20' và tổng 20 + 5 nh sau: 5+20=25.
Bài 6 Các biểu thức trong Pascal:
Bài 10.Một số ví dụ về tơng tác giữa ngời và máy tính khi chơng trình hoạt động: thông báo kết quả tính
toán hay trạng thái hoạt động của chơng trình, nhập dữ liệu, tạm ngừng chơng trình Xem SGK, mục 4,bài 2
Bài thực hành 2 Viết chơng trình để tính toán
1 Mục đích, yêu cầu
Chuyển đợc biểu thức toán học sang biểu diễn trong Pascal;
Biết đợc kiểu dữ liệu khác nhau thì đợc xử lý khác nhau
Hiểu phép toán div, mod
Hiểu thêm về các lệnh in dữ liệu ra màn hình và tạm ngừng chơng trình
Trang 212 Những điểm cần lu ý và gợi ý dạy học
Câu a của bài 1 nhằm mục đích để HS tập chuyển biểu thức viết ở dạng toán học sang viết trongPascal Chỉ cần tập trung vào bốn phép tính đơn giản là cộng, trừ, nhân, chia Mặc dù trong Pascal có hàmsqr, nhng trong bài này để biểu diễn bình phơng của một số chỉ dùng phép nhân số đó với chính nó Ví dụ, 32
Nội dung của câu a là để HS làm trên lớp, không cần thiết phải sử dụng đến máy tính Do vậy, nộidung này có thể đợc dạy trên lớp ngay sau bài 3
Trong phần b và phần c, HS luyện tập soạn thảo, chỉnh sửa, biên dịch, chạy và xem kết quả của
ch-ơng trình Cần lu ý HS gõ chuẩn xác, dựa vào thông báo lỗi của TP khi biên dịch, đối chiếu với nội dung introng SGK để chỉnh sửa chơng trình nếu có (do HS gõ nhầm)
Các biểu thức ở câu b chính là biểu diễn của các biểu thức toán học ở câu a
Khi quan sát kết quả trên màn hình cần cho HS thấy đợc với mỗi lệnh write(), TP hiển thị ra màn
hình những xâu kí tự nằm trong cặp dấu nháy đơn và hiển thị kết quả của biểu thức đ ợc đặt ngay sau dấuphẩy
Cần giải thích để HS thấy đợc hai dãy giống nhau gồm số và kí hiệu phép toán, nếu đặt trong cặp dấu
nháy đơn thì Pascal hiểu đó là xâu kí tự và lệnh write sẽ hiển thị y nguyên xâu kí tự ra màn hình Nhng nếu không đặt trong cặp dấu nháy đơn thì Pascal coi đó là một biểu thức và sẽ tính toán biểu thức và lệnh write()
sẽ hiển thị kết quả của biểu thức Đây cũng chính là một ví dụ minh hoạ cho việc kiểu dữ liệu khác nhau thìcách xử lí dữ liệu khác nhau Sự kết hợp giữa hiển thị dữ liệu xâu và kết quả biểu thức ở đây tạo thuận lợicho con ngời theo dõi kết quả tính toán
Để HS có thể dễ dàng kiểm chứng kết quả tính toán biểu thức, tạo niềm tin, hứng thú trong học tập,
GV có thể dành thời gian để HS tự tính toán và đối chiếu với kết quả trên màn hình TP Nếu cần thiết, GV cóthể thay các ví dụ trong SGK bằng các ví dụ khác, đơn giản hơn, dễ kiểm chứng kết quả hơn đối với HS,tránh mất thời gian tính toán không cần thiết
Qua bài này HS còn nhận ra rằng chơng trình Pascal có thể không có phần khai báo Nói cách khác làphần khai báo không bắt buộc phải có, ngợc lại phần thân chơng trình thì bắt buộc phải có
Yêu cầu HS lu lại bài 1 để còn sử dụng khi tiến hành bài 3
Qua bài 2 và bài 3 về cơ bản HS cần hiểu đợc lệnh div, mod và tiếp tục rèn luyện một số thao tác nh
soạn thảo, dịch, hiệu chỉnh, chạy và quan sát kết quả của chơng trình Cần lu ý một số điểm sau:
- HS làm quen với phép tính div, mod; thấy đợc sự khác nhau giữa phép div, phép mod và phép chia.
- Biết lệnh clrscr đợc dùng để xóa tất cả những gì có trên màn hình cho đến thời điểm đó Lệnh này
có trong th viện crt nên muốn sử dụng lệnh này thì phải khai báo sử dụng th viện này ở đầu chơng
trình GV gợi ý HS bỏ lệnh uses crt để kiểm chứng điều này (nếu nh cha thực hiện thao tác này ởbài thực hành 1)
- Các lệnh delay(), read, readln đợc dùng để tạm ngừng chơng trình Các lệnh này thờng đợc dùng ởcác vị trí thích hợp trong chơng trình để con ngời quan sát kết quả, theo dõi chơng trình Việc sửdụng các lệnh này là một ví dụ về việc điều khiển giao tiếp ngời-máy tính
Khi làm bài 3 HS phải mở chơng trình đã đợc ghi vào đĩa ở bài 1 Mặc dù việc mở tệp có sẵn HS đã
đợc thực hành nhiều ở các lớp dới, tuy nhiên thao tác mở tệp của TP hơi khác, có thể HS sẽ lúng túng Dovậy, cần lu ý hớng dẫn HS các thao tác mở tệp khi bắt đầu bài 3
Việc điều khiển ghi số thực trên màn hình của TP chỉ cần giới thiệu qua, đây không phải là kiến thứctrọng tâm của bài thực hành
Bài 4 Sử dụng biến trong chơng trình
1 Mục đích, yêu cầu
Biết khái niệm biến, hằng;
Hiểu cách khai báo, sử dụng biến, hằng;
Biết vai trò của biến trong lập trình;
Trang 22 Hiểu lệnh gán.
2 Những điểm cần lu ý và gợi ý dạy học
Đây là bài tơng đối khó đối với HS Cần lu ý nhấn mạnh một số điểm sau:
Biến là đại lợng để lu trữ dữ liệu, có thể thay đổi giá trị của biến tại bất kì vị trí nào trong ch ơng trình.Muốn sử dụng biến thì phải khai báo, khi khai báo biến phải khai báo kiểu dữ liệu mà biến sẽ lu trữ Biến chỉ
có thể lu trữ đợc dữ liệu có kiểu thuộc kiểu của biến Ngời lập trình tự đặt tên cho biến theo quy tắc của ngônngữ lập trình đang sử dụng Có thể gán giá trị cho biến và tính toán với biến
Hằng có khai báo là đại lợng để lu trữ dữ liệu cố định Không đợc phép thay đổi giá trị của hằngtrong chơng trình
Bài này hoàn toàn có thể đợc tiến hành dạy học theo đúng trình tự nh trong SGK Tuy nhiên, dới đâyxin giới thiệu một cách tiến hành dạy học khác để GV tham khảo
Vào đầu bài học GV có thể yêu cầu HS viết một chơng trình tính diện tích hình tròn có bán kính r =
2 Do HS đã đợc thực hành về viết biểu thức trong Pascal nên HS sẽ dễ dàng làm đợc bài này
GV đa ra yêu cầu là (Đây không phải là lý do hàng đầu phải sử dụng biến Nh thế dễ nhầm vai trò củabiến với hằng!) cần viết một chơng trình cho phép ngời sử dụng nhập từ bàn phím bán kính của hình tròn,sau đó tính toán diện tích và hiển thị kết quả ra màn hình
Nói chung HS cha đa ra đợc phơng án để giải quyết vấn đề này GV cần đa ra một chơng trình thựchiện điều này để các em quan sát
Var
R: Integer;
Begin
Write('Nhap ban kinh hinh tron R=: '); Readln(R);
Write('Dien tich hinh tron la: ', 3.14*R*R);
readln;
end.
Nếu dạy với máy tính, GV có thể cho chạy thử chơng trình này để HS quan sát sẽ hiệu quả hơn
Dựa trên chơng trình này GV giới thiệu về biến nhớ, cách khai báo biến và sử dụng lệnh read() hoặc
readln() để nhập giá trị biến từ bàn phím, cụ thể có thể giới thiệu nh sau:
Trong chơng trình đã sử dụng một công cụ hỗ trợ lập trình của PASCAL là biến nhớ R.
Var R: Integer;
là lệnh khai báo biến nhớ Khi chạy chơng trình, đến lệnh này PASCAL dành một phần bộ nhớ và đặt tên
cho phần bộ nhớ này là R - gọi tắt là ô nhớ R Có thể hình dung ban đầu ô nhớ R này cha chứa giá trị (nói
đúng hơn là chứa một giá trị nào đó - tuỳ thuộc vào ngôn ngữ lập trình, nh ng đây cha phải là thời điểm phùhợp để nói về chi tiết này với HS) Về cú pháp khai báo biến chỉ cần lu ý tên biến do ngời lập trình đặt (tuânthủ theo qui tắc đặt têncủa ngôn ngữ lập trình) và kiểu dữ liệu của biến Chi tiết hơn về khai báo tên sẽ đợc
đề cập trong bài thực hành 3
Readln(R);
là lệnh dùng để nhập giá trị cho biến R từ bàn phím Gặp lệnh này chơng trình sẽ dừng lại và yêu cầu ngời sử
dụng nhập giá trị từ bàn phím Khi ngời sử dụng nhập một số, ví dụ số 3, rồi nhấn Enter, thì chơng trình sẽ
"mang" số 3 này "đặt" vào ô nhớ R Trong lập trình việc này đợc gọi là gán giá trị 3 cho biến R Đến đây, biến R có giá trị bằng 3.
Với câu lệnh Write('Dien tich hinh tron la: ', 3.14*R*R);
Trang 23điểm cần giải thích ở câu lệnh này đối với HS là biểu thức 3.14*R*R Vì R đã đợc khai báo là biến và đã đợc gán giá trị bằng 3 nên khi tính toán biểu thức này, Pascal thay tên biến R bằng giá trị là 3 đang đợc lu ở ô nhớ R, nghĩa là tính 3.14*3*3 Biểu thức này tính diện tích hình tròn với bán kính là 3 vừa đợc nhập từ bàn
phím
Khi thực hiện chơng trình, ngời sử dụng có thể nhập giá trị bán kính bất kì (chính xác thì phải là số
nguyên bất kì, nhng GV cha cần giải thích chính xác, đầy đủ ở đây) Điều đó có nghĩa là ô nhớ R có thể nhận các giá trị khác nhau phụ thuộc vào ngời sử dụng Đây là đặc điểm quan trọng của biến: Giá trị của
biến có thể thay đổi.
Lu ý rằng cách trình bày nh trên chỉ giúp dẫn dắt học sinh đến khái niệm về biến Sau này, trong quátrình giới thiệu các nội dung tiếp theo và các bài thực hành, giáo viên cần nhấn mạnh để học sinh hiểu rõ:
mục tiêu của việc sử dụng biến không phải là tránh hoặc giảm đơn giản công việc chỉnh sửa chơng trình mà mục tiêu hàng đầu là lu trữ các giá trị trung gian (đợc nhập vào hay đợc tính toán) cho các hoạt động xử lí
dữ liệu về sau và tên biến giúp chơng trình nhận biết chính xác dữ liệu đợc lu ở đâu trong bộ nhớ Nhiều thaotác xử lí dữ liệu không thể thực hiện đợc nếu không sử dụng biến SGK đã trình bày rất rõ ý này
Đến đây nhấn mạnh cho HS rằng cần khai báo biến, kiểu của biến trớc Có thể gán giá trị cho biến và
sử dụng biến trong tính toán Giá trị của biến có thể thay đổi
Sau đó GV có thể đa ra chơng trình dới đây:
So với chơng trình trớc, điểm khác biệt của chơng trình này là khai báo hằng số So_PI, sử dụng hằng
số So_PI để tính diện tích hình tròn trong biểu thức So_PI*R*R Cần nhấn mạnh cho HS về cách khai báo
hằng và đặc điểm của hằng số là giá trị đợc xác định ngay từ khi khai báo và không thay đổi giá trị Thực
hiện đến lệnh này PASCAL dành một ô nhớ với tên là So_PI và gán giá trị cho ô nhớ này là 3.14 Tơng tự
nh với biến R, trong biểu thức So_PI*R*R, khi tính toán Pascal sẽ thay hằng số So_PI bằng giá trị 3.14 đợc
l-u trong ô nhớ So_PI
Câu lệnh S:= So_PI*R*R đợc sử dụng để giải thích cho HS về lệnh gán HS đã biết cách khai báo biến
R, cách gán giá trị cho biến R thông qua lệnh Readln() Cách gán giá trị cho biến S ở đây là dùng lệnh gán,
kí hiệu là := Gặp lệnh này, Pascal sẽ tính giá trị của biểu thức ở bên phải phép gán và gán giá trị này cho biến ở bên trái dấu gán Cụ thể, Pascal sẽ tính toán biểu thức So_PI*R*R ở bên phải dấu :=, sau đó mang giá trị vừa tính đợc đặt vào ô nhớ S Cần lu ý HS đây không có nghĩa nh dấu bằng trong toán học.
Lu ý, trong TP đã đinh nghĩa sẵn hàm Pi để cho giá trị của số π(Hàm) , vì vậy thực chất chơng trình
trên có thể không cần khai hằng số So_PI Tuy nhiên, tại thời điểm này giáo viên không đề cập đến điều này
để tránh gây phức tạp vấn đề
Có thể dựa vào sự khác nhau giữa hai khai báo biến trong chơng trình này để giới thiệu cho HS cần
thiết phải có sự phù hợp giữa kiểu của biến với kiểu dữ liệu Cụ thể, biến R đợc khai báo với kiểu integer thì
khi nhập bán kính ngời dùng chỉ đợc phép nhập các giá trị nguyên Nếu dạy cùng với máy tính, máy chiếu
GV có thể cho HS quan sát trực quan tình huống báo lỗi khi nhập bán kính là số thực
Có thể yêu cầu HS giải thích tại sao lại khai báo S là kiểu thực, nếu khai báo là kiểu nguyên có đ ợc
không? Qua câu hỏi này HS cần nhận thấy đợc S phải có kiểu là số thực bởi vì So_PI là số thực, nên kết
quả của biểu thức So_PI*R*R là số thực
Về vấn đề hợp kiểu của biến với giá trị gán cho biến, ở đây chỉ cần HS biết đợc nếu biến kiểu nguyênthì chỉ có thể đợc gán giá trị nguyên, nếu biến có kiểu thực thì có thể đợc gán giá trị thực Không nên giớithiệu, phân tích sâu, chi tiết những tình huống ngoại lệ hoặc sự biến đổi kiểu dữ liệu ở đây
Trang 24Các chơng trình ví dụ trên đây còn có thể đợc sử dụng để giới thiệu cho HS về việc kết hợp giữa lệnh
write(), writeln() và read(), readln() để tạo giao diện nhập, xuất dữ liệu.
Để chuẩn bị cho bài thực hành 3, GV có thể ra bài tập để học sinh tập khai báo biến trong Pascal, cụthể nh: khai báo biến để lu giữ tuổi của một ngời; khai báo biến để lu giữ tên ngời, khai báo biến để lu cânnặng, chiều cao ngời HS cần giải thích đợc việc lựa chọn kiểu dữ liệu phù hợp
Cuối bài học này, cần khái quát cho HS biết biến, hằng là những đại lợng có trong mọi ngôn ngữ lậptrình Trên đây là những ví dụ đợc viết trong ngôn ngữ Pascal
Lu ý: Việc sử dụng biến đã giúp cải tiến chơng trình ban đầu để cho phép ngời sử dụng có thể tính diện
tích hình tròn với bán kính nhập từ bàn phím Điều đó đã góp phần lí giải ý nghĩa, lợi ích của biến trong
ch-ơng trình Tuy nhiên, ví dụ trên lại cha làm rõ ý nghĩa của hằng trong chch-ơng trình
Thử hình dung, nếu trong chơng trình trên sử dụng So_PI nhiều lần, tức là nếu có nhiều biểu thức dùng
đến So_PI nh tính diện tích, tính chu vi của nhiều hình tròn chẳng hạn Trong trờng hợp không sử dụng hằngthì ở tất cả các biểu thức cần dùng số Pi đều phải viết giá trị số là 3.14 Giả sử sau đó muốn tính toán với độchính xác cao hơn, chẳng hạn với số Pi là 3.1416, thì ngời lập trình phải tìm tất cả các chỗ mà số Pi đã đợcviết là 3.14 để thay bằng 3.1416 Nh vậy sẽ mất thời gian và dễ nhầm lẫn
Nhng nếu chơng trình sử dụng hằng So_PI, đợc khai báo ban đầu là Const So_PI = 3.14; và sau đó trongcác công thức có sử dụng đến số Pi, thay vì phải viết là 3.14 ng ời lập trình dùng hằng So_PI thay thế vào đó.Vì vậy, nếu muốn thay đổi giá trị của số Pi trong toàn bộ chơng trình từ 3.14 sang 3.14.16 thì ngời lập trìnhchỉ cần tiến hành một chỉnh sửa duy nhất câu lệnh khai báo ở đầu chơng trình thành So_PI = 3.1416;, khôngcần phải chỉnh sửa các biểu thức trong chơng trình Khi đó tất cả các biểu thức dùng hằng So_PI trong chơngtrình đều đợc tính toán với số Pi có giá trị mới là 3.1416
Tình huống này là ví dụ làm rõ một trong những lợi ích và ý nghĩa của hằng trong lập trình
Nếu khả năng tiếp thu của HS tốt và còn thời gian, sau khi đã hoàn thành bài học, căn cứ vào giải thích ý
nghĩa của hằng ở trên, giáo viên có thể lấy một chơng trình minh hoạ ý nghĩa, lợi ích của hằng cho HS Phần giải thích về ý nghĩa, lợi ích của hằng không bắt buộc phải giới thiệu cho HS
3 Hớng dẫn trả lời câu hỏi và bài tập
Bài 1 Xét về mặt lập trình, biến đại lợng đợc dùng để lu trữ dữ liệu và dữ liệu đợc biến lu trữ có thể thay đổi
trong khi thực hiện chơng trình Xét về mặt lu trữ dữ liệu, có thể xem biến là "tên" của một vùng nhớ
đợc dành sẵn để lu dữ liệu trong suốt quá trình thực hiện chơng trình
Gán giá trị cho một biến về thực chất là lu dữ liệu tơng ứng vào vùng nhớ đợc đặt tên và dành riêngcho biến Việc thực hiện các tính toán và xử lí với biến có nghĩa là thực hiện tính toán và xử lí với dữliệu đợc gán đó
Giả sử X đợc khai báo là biến với kiểu dữ liệu số nguyên và X đợc gán dữ liệu là số 5 Sau khi khai báo, chơng trình sẽ dành riêng một vùng nhớ nào đó cho biến X, và khi gán 5 cho X thì vùng nhớ
đó lu dữ liệu 5 Lệnh ghi X ra màn hình có nghĩa là ghi số 5 ra màn hình.
Lu ý đối với giáo viên Khi một vùng nhớ đợc khai báo để lu dữ liệu làm giá trị của một biến,
vùng nhớ đó sẽ không đợc phép sử dụng vào mục đích khác Do vậy, một trong những kĩ năng lập trình
là sử dụng càng ít biến càng tốt, nhất là trong những trờng hợp việc sử dụng bộ nhớ bị hạn chế Nhngvới công nghệ hiện nay, bộ nhớ máy tính đã có dung lợng rất lớn nên vấn đề hạn chế sử dụng biếntrong chơng trình đã không còn là vấn đề cấp thiết
Bài 2 Việc khai báo biến gồm: Khai báo tên biến và khai báo kiểu dữ liệu của biến.
Khi khai báo biến, ngoài việc tên biến đợc đa vào danh sách các đối tợng quản lí, máy tính (thông quachơng trình dịch) sẽ xác định kiểu của biến và dành một vùng nhớ có độ lớn thích hợp với phạm vikiểu của biến để lu giá trị của biến Ví dụ, cũng để lu các giá trị là số nguyên, khi khai báo biến kiểubyte, máy tính chỉ dành vùng nhớ có độ lớn 1 byte, nhng khi khai báo biến kiểu nguyên, máy tính sẽdành vùng nhớ có độ lớn 2 byte, hoặc vùng nhớ 6 byte đợc dành cho biến đợc khai báo với kiểu sốthực, Nhờ thế việc sử dụng bộ nhớ sẽ hiệu quả hơn Ngoài ra máy tính sẽ biết áp dụng các phép toánthích hợp đối với giá trị của biến
Bài 3 Đáp án: a) Hợp lệ; b) Không hợp lệ; c) Hợp lệ; d) Không hợp lệ
Bài 4 Mặc dù đều cùng phải khai báo trớc khi có thể sử dụng trong chơng trình, sự khác nhau giữa biến và
hằng là ở chỗ giá trị của hằng không thay đổi trong suốt quá trình thực hiện chơng trình, còn giá trịcủa biến thì có thể thay đổi đợc tại từng thời điểm thực hiện chơng trình
Bài 5 Không thể gán lại giá trị 3.1415 cho Pi trong phần thân chơng trình vì giá trị của hằng không thay đổi
trong suốt quá trình thực hiện chơng trình
Bài 6. a) Hợp lệ; b) Không hợp lệ vì tên biến không hợp lệ; c) Không hợp lệ vì hằng phải đợc cho giá trị khi
khai báo; c) Không hợp lệ vì hằng phải đợc cho giá trị khi khai báo; d) Không hợp lệ vì không đợc gán
giá trị cho biến khi khai báo (cách gán giá trị cho biến cũng không đúng cú pháp)
Trang 25Bài 7 Các lỗi trong chơng trình: (1) Thừa dấu bằng ở dòng 1 (chỉ cần dấu hai chấm); (2) Thừa dấu hai chấm
ở dòng 2 (với hằng chỉ cần dấu bằng); (3) Thiếu dấu chấm phẩy ở dòng 4; (4) Khai báo kiểu dữ liệu
của biến b không phù hợp: Khi chia hai số nguyên, kết quả luôn luôn là số thực, cho dù có chia hết hay không Do đó cần phải khai báo biến b là biến có kiểu dữ liệu số thực.
Bài 8 Cách khai báo hợp lí:
a) Các biến a và h là kiểu số nguyên; biến S: kiểu số thực.
b) Cả bốn biến a, b, c và d là các kiểu số nguyên.
Bài 9 Cần sử dụng các biến sau đây với mỗi học sinh: một biến kiểu xâu để lu tên, ví dụ Hoa, Mai, , một
biến kiểu số nguyên để lu điểm, ví dụ Diem_Hoa, Diem_Mai; ngoài ra cần một biến Trungbinh là biến
kiểu số thực để ghi điểm trung bình của cả lớp (Bài này khó hiểu, với mỗi học sinh, cần gì điểm trungbình, còn tên thì 50 HS thì 50 tên khác nhau, 50 điểm khác nhau!!!)
Bài 10.Chơng trình Pascal có thể nh sau đây:
writeln('Chu vi duong tron bang ',C:8:2);
writeln('Dien tich hinh tron bang ',S:8:2);
end.
Bài thực hành 3 Khai báo và sử dụng biến
1 Mục đích, yêu cầu
Thực hiện đợc khai báo đúng cú pháp, lựa chọn đợc kiểu dữ liệu phù hợp cho biến
Kết hợp đợc giữa lệnh write(), writeln() với read() readln() để thực hiện việc nhập dữ liệu cho biến
từ bàn phím
Hiểu về các kiểu dữ liệu chuẩn: kiểu số nguyên, kiểu số thực
Sử dụng đợc lệnh gán giá trị cho biến
Hiểu cách khai báo và sử dụng hằng
Hiểu và thực hiện đợc việc tráo đổi giá trị của hai biến
2 Những điểm cần lu ý và gợi ý dạy học
Chơng trình trong câu a, bài 1 là chơng trình giả định số tiền phải trả bao gồm số tiền mua hàng(bằng đơn giá nhân với số lợng) và số tiền cớc phí vận chuyển (cố định là 10000) Tổng số tiền phải trả bằng
số tiền mua hàng cộng với cớc phí
Với bài này HS tập khai báo biến trong Pascal, cần cho HS tìm hiểu cú pháp khai báo biến, đặt tên
đúng theo quy định của Pascal, chọn đúng kiểu dữ liệu của biến
Rèn luyện soạn thảo, dịch, hiệu chỉnh, chạy và kiểm tra kết quả cũng là một mục tiêu của bài này.Cần hớng dẫn để HS tìm hiểu chức năng của lệnh Readln(tên biến); để nhập giá trị của biến; Sự kết
hợp của write() và readln() trong việc nhập giá trị biến từ bàn phím; Việc sử dụng biến trong biểu thức
thanhtien:= soluong*dongia+cuocphi.
Các chú thích đặt trong cặp dấu ngoặc {} hoặc (* *) đợc dùng để giải thích câu lệnh, ý đồ của ngờiviết chơng trình Gặp cặp dấu ngoặc này Pascal bỏ qua, không dịch những nội dung bên trong Việc viết chúthích trong chơng trình đôi khi rất cần thiết để giúp ngời khác có thể nhanh chóng hiểu đợc chơng trình,thậm chí là để chính ngời đã viết ra chơng trình dễ dàng hơn khi xem lại hoặc chỉnh sửa chơng trình củamình
Có thể gợi ý HS nhập số lợng là một số thực, ví dụ 6.5 chẳng hạn và giải thích hiện tợng xảy ra
Nguyên nhân là do kiểu dữ liệu nhập vào là số thực không phù hợp với kiểu của biến Soluong đã khai báo
Trang 26trong chơng trình là số nguyên Có thể gợi ý để HS thay đổi kiểu của biến số lợng đã khai báo để có thể nhập
số lợng là một số thực
Khi nhập bộ số liệu (1, 35000), kết quả không còn đúng nữa, nguyên nhân của hiện t ợng này là do
tràn số Biến Soluong có kiểu là integer nên chỉ cho phép chứa các giá trị trong khoảng từ 32768 đến 32767,
giá trị 35000 ngoài khoảng giá trị trên cho nên đã gây ra lỗi, kết quả đa ra không chính xác Có thể gợi ý cho
HS chỉnh sửa khai báo kiểu dữ liệu để khắc phục hạn chế này
Một trong những nội dung quan trọng của bài này là giúp học sinh luyện tập việc nhận biết và khai báokiểu dữ liệu hợp lí cho các biến Khai báo kiểu dữ liệu hợp lí một mặt sẽ giúp cho việc sử dụng bộ nhớ mộtcách tối u (ví dụ, với đại lợng chỉ nhận giá trị số tự nhiên trong vợt quá 255 thì không cần thiết phải khai báobiến kiểu số nguyên, mà chỉ cần kiểu byte), mặt khác giúp tránh lỗi tràn dữ liệu và dẫn đến kết quả sai.Trong các bài thực hành sau, giáo viên nên lu ý học sinh đến điểm này
Với bài 2, trọng tâm của bài này là cho HS luyện tập với lệnh gán và thực hiện việc tráo đổi giá trị của
hai biến x, y Đây là một công việc hay gặp trong lập trình và qua ví dụ này HS có thể hiểu rõ hơn về biến,
cách sử dụng biến Bài này cũng giới thiệu cách viết câu lệnh nhập nhiều dữ liệu từ bàn phím bằng mộtcâu lệnh writeln hoặc write
Để thực hành bài này, có thể tiến hành nh sau:
Cho HS gõ chơng trình trong SGK, tiến hành dịch, chỉnh sửa và cho chạy chơng trình
Do không có thông báo cho ngời dùng về yêu cầu nhập giá trị tơng ứng của các biến x, y nên HS có thể
gặp khó khăn không biết nhập thế nào GV cần hớng dẫn HS cú pháp của câu lệnh và cách nhập hai số
nguyên (cách nhau bởi dấu cách) rồi nhấn Enter và quan sát kết quả.
Nên gợi ý cho HS cải tiến chơng trình trên để hớng dẫn ngời sử dụng nhập giá trị cho x, y từ bàn phím In ra màn hình giá trị của x, y vừa đợc ngời sử dụng nhập vào và in ra màn hình giá trị x, y sau khi đã tráo đổi giá trị Có thể tham khảo chơng trình Tinhtien.pas để thực hiện việc này.
Về việc tráo đổi giá trị giữa hai biến x và biến y, có thể lấy ví dụ minh hoạ nh việc muốn tráo đổi giữa
hai cốc nớc Giả sử có hai cốc nớc, một cốc nớc chứa nớc màu đỏ, một cốc nớc chứa nớc màu xanh Làm thếnào để tráo đổi nớc giữa hai cốc nớc này Đơng nhiên là phải dùng cốc thứ ba làm trung gian để thực hiện
điều này, cụ thể: Giả sử cốc X chứa nớc màu đỏ, cốc Y chứa nớc màu xanh và cốc Z là cốc trung gian,không chứa gì cả Cách tráo đổi nớc chứa trong cốc X và cốc Y nh sau:;
Đổ nớc đỏ trong cốc X sang cốc Z;
Đổ nớc xanh trong cốc Y sang cốc X;
Đổ nớc đỏ trong cốc Z sang cốc Y
Sau khi thực hiện nh trên nớc trong hai cốc đã đợc tráo sang nhau
Việc tráo đổi giá trị của biến cũng tơng tự, trong chơng trình đã phải sử dụng biến z làm biến trung gian để lu giữ giá trị ban đầu của biến x Cụ thể:
z:=x; {Lu giá trị của biến x vào biết z}
x:=y; {Giá trị của biến x đợc thay bằng giá trị của biến y}
y:=z; { Giá trị của biến y đợc thay bằng giá trị của biến z, giá trịcủa biến z lúc này chính bằng giá trị của biết x ban đầu}
* Có một khác biệt cần đợc lu ý ở đây Khi đổ xong nớc ở cốc Y sang nớc ở cốc X thì cốc Y có nớccòn cốc X hết nớc Khác với khi gán X:= Y; thì giá trị biến X bằng giá trị biến Y, nhng giá trị biến Y khôngmất Nếu học sinh thắc mắc thì GV có thể giải thích điều này, nếu học sinh không thắc mắc GV không nêngiải thích để tránh làm phức tạp vấn đề
Chơng trình sau khi chỉnh sửa có thể nh sau:
Program hoan_doi;
var x,y,z:integer;
begin
write('Nhap gia tri bien x = '); readln(x);
write('Nhap gia tri bien y = '); readln(y);
Writeln('Truoc trao doi, gia tri cua bien x: ', x);
Write('Truoc trao doi, gia tri cua bien y: ', y);
{Bat dau thuc hien trao doi}
z:=x;
x:=y;
y:=z;
{Ket thuc trao doi}
Writeln('Sau trao doi, gia tri cua bien x = ', x);
Write('Sau trao doi, gia tri cua bien y = ', y);
Trang 27end.
Lu ý, để HS dễ tiếp thu, trong chơng trình trên đã lựa chọn cách viết nhiều lệnh đơn giản, mặc dù cóthể ghép một số lệnh thành một lệnh để chơng trình ngắn gọn hơn ví dụ, có thể thay hai lệnh:
Writeln('Truoc trao doi, gia tri cua bien x = ', x);
Write('Truoc trao doi, gia tri cua bien y = ', y);
bằng một lệnh nh sau:
Writeln('Truoc trao doi, gia tri cua bien x = ', x, ' y = ', y);
Bài 5 Từ bài toán đến chơng trình
1 Mục đích, yêu cầu
Biết khái niệm bài toán, thuật toán;
Biết các bớc giải bài toán trên máy tính;
Xác định đợc Input, Output của một bài toán đơn giản;
Biết chơng trình là thể hiện của thuật toán trên một ngôn ngữ cụ thể
Biết mô tả thuật toán bằng phơng pháp liệt kê các bớc
Hiểu thuật toán tính tổng của N số tự nhiên đầu tiên, tìm số lớn nhất của một dãy số
2 Những điểm cần lu ý và gợi ý dạy học
Bài toán và thuật toán để giải quyết bài toán là những nội dung rất quan trọng, nếu không nói là quantrọng nhất trong lập trình Nếu học sinh nắm vững đợc những kiến thức này thì sẽ dễ dàng hơn rất nhiềutrong việc tiếp thu kiến thức trong các bài sau Vì lẽ đó các tác giả đề xuất dành thời lợng cho Bài 5 là 04 tiết
lí thuyết và 02 tiết bài tập Giáo viên cần tận dụng hết thời gian dành cho bài này để truyền đạt cho học sinhmột cách kỹ lỡng
Khái niệm bài toán và giải bài toán đã trở thành quen thộc với học sinh trong các môn học khác nhToán, Vật lí, Bài toán trong tin học không chỉ là những bài toán trong lĩnh vực toán học mà còn có thể làmột nhiệm vụ, một công việc cần giải quyết trong cuộc sống thực tiễn (nhiều khi chẳng liên quan gì đến
toán học) nh: tính điểm trung bình một môn học, một học kì, nấu món ăn hay điều khiển rô-bốt nhặt rác
chẳng hạn
Để cho HS mở rộng nhận thức về khái niệm bài toán mà các em đợc biết ở môn học khác, có thể sửdụng lại ví dụ về bài toán điều khiển rô-bốt nhặt rác HS đã học ở bài 1 Ví dụ này cho thấy bài toán có thểcòn là một công việc, một nhiệm vụ gắn liền với cuộc sống hàng ngày Do đã đợc tiếp cận với ví dụ này ởbài học đầu tiên nên việc tìm ra điều kiện cho trớc và kết quả thu đợc của bài toán này sẽ dễ dàng hơn vớiHS
Để dẫn dắt đến khái niệm xác định bài toán, GV viên có thể dựa vào giả thiết và kết luận của một bàitoán trong môn Toán để dẫn dắt học sinh xác định Input, Output của bài toán trong Tin học Trong môntoán, thờng trớc khi bắt đầu giải một bài toán các em đã quen với việc tìm giả thiết và kết luận của bài toán.Trong tin học, phần giả thiết là các điều kiện cho trớc (Input), phần kết luận là kết quả cần thu đợc (Output)
Có thể sử dụng một bài toán đơn giản, quen thuộc với HS để HS dễ dàng tìm ra đợc điều kiện cho trớc(giả thiết) và kết quả cần thu đợc (kết luận) của bài toán này (không nhất thiết cứ phải lấy ví dụ trong SGK)
Để máy tính có thể "giải" đợc bài toán thì con ngời cũng phải chỉ dẫn cho máy tính Tuy nhiên, sự chỉdẫn của con ngời để máy tính thực hiện phải rất cụ thể, chi tiết và đặc biệt là máy tính phải "hiểu" đợc nhữngchỉ dẫn này (Lặp lại trong đoạn sau!) Có thể đặt câu hỏi với HS: Máy tính có "giải" đợc bài toánkhông? Có thể sử dụng ví dụ về rô-bốt nhặt rác để HS thảo luận tìm ra câu trả lời Việc viết ch ơng trình điềukhiển máy tính rẽ phải, tiến, rẽ trái, nhặt rác là do con ngời nghĩ ra, máy tính chỉ thực hiện những thao táctheo chỉ dẫn của con ngời
Nh vậy, con ngời tìm ra cách thức, chỉ ra các thao tác và trình tự thực hiện các thao tác để giải quyếtcông việc, máy tính chỉ biết thực hiện các thao tác theo chỉ dẫn Máy tính không tự giải đợc bài toán
Tập hợp các bớc để điều khiển rô-bốt nhặt rác chính là một thuật toán
Có thể mô tả thuật toán bằng cách liệt kê các bớc nh giới thiệu trong SGK hoặc bằng sơ đồ khối Tuynhiên, GV không cần giới thiệu thêm về cách mô tả bằng sơ đồ khối
HS đã biết máy tính chỉ có thể hiểu đợc ngôn ngữ máy Ngôn ngữ lập trình là ngôn ngữ con ngời sửdụng để viết chơng trình Vì vậy, có thể gợi ý để HS suy luận dẫn đến phải thể hiện thuật toán bằng ngônngữ lập trình, cụ thể: Cách mô tả thuật toán với ngôn ngữ tự nhiên thì chỉ có con ng ời mới hiểu, máy tínhkhông hiểu đợc Để máy tính có thể hiểu và có thể thực hiện đợc thuật toán thì cần thể hiện thuật toán bằng
Trang 28ngôn ngữ lập trình Việc thể hiện thuật toán bằng một ngôn ngữ lập trình để máy tính có thể hiểu, thực hiện
đợc chính là viết chơng trình
Để đi từ bài toán đến chơng trình SGK nêu ba bớc: Xác định bài toán, xây dựng thuật toán, viết
ch-ơng trình Đây là phch-ơng án chia bớc đơn giản, HS dễ hiểu, dễ tiếp thu Mặc dù có một số cách chia bớc khác,tuy vậy để tránh làm phức tạp hoá vấn đề, GV không cần giới thiệu thêm hay phân tích sâu về các bớc ở đây
Nội dung mục 4 là quan trọng và tơng đối khó với HS Cần dành thời gian thích đáng cho mục này.Nên sử dụng tiết bài tập để bổ sung thêm thời lợng dạy học cho nội dung này Mục tiêu của các ví dụ ở mục
4 là rèn luyện kĩ năng xác định Input, Ouput và mô tả thuật toán bằng cách liệt kê các bớc cùng với việc giớithiệu thuật toán Các thuật toán giới thiệu ở mục này là những thuật toán cơ bản học sinh cần tiếp thu Trong
đó, thuật toán tìm số lớn nhất của dãy số là thuật toán đợc yêu cầu cụ thể trong chuẩn kiến thức kĩ năng Hơnnữa, các ví dụ trong mục này còn đề cập đến những thuật toán liên quan đến các cấu trúc rẽ nhánh, cấu trúclặp và một số bài toán ở các bài sau
Lu ý rằng tất cả các thuật toán nêu trong mục này và trong phần câu hỏi và bài tập của Bài 5 đều đ ợc
sử dụng làm ví dụ minh họa hoặc để giải các câu hỏi và bài tập trong các bài sau Do vậy việc việc rèn luyện
kĩ với các ví dụ này và giải một số bài tập sẽ sẽ tạo điều kiện thuận lợi để HS tiếp thu các nội dung sau
Để giúp HS hiểu rõ về thuật toán, GV có thể mô phỏng thuật toán với một bộ dữ liệu cụ thể Ví dụ:+ Mô phỏng thuật toán tính tổng N số tự nhiên đầu tiên, với N = 10 (trong SGK, N= 100)
Đúng Đúng Đúng Đún
g
Đúng Đúng Đú
ngSai
OUTPUT: Số các số có giá trị nhỏ nhất (có thể một hay nhiều số)
Bài 2 Sau ba bớc, x có giá trị ban đầu của y và y có giá trị ban đầu của x, tức giá trị của hai biến x và y đợc
hoán đổi cho nhau
Bài 3 Mô tả thuật toán:
INPUT: Ba số dơng a > 0, b > 0 và c > 0.
OUTPUT: Thông báo "a, b và c có thể là ba cạnh của một tam giác" hoặc thông báo "a, b và c không
thể là ba cạnh của một tam giác"
Bớc 1 Tính a + b Nếu a + b c, chuyển tới bớc 5.
Bớc 2 Tính b + c Nếu b + c c, chuyển tới bớc 5.
Bớc 3 Tính a + c Nếu a + c b, chuyển tới bớc 5.
Bớc 4 Thông báo "a, b và c có thể là ba cạnh của một tam giác" và kết thúc thuật toán.
Bớc 5 Thông báo "a, b và c không thể là ba cạnh của một tam giác" và kết thúc thuật toán.