§èi víi ®a sè HS líp 8, thuËt to¸n kiÓm tra tÝnh nguyªn tè cña mét sè tù nhiªn lµ kh«ng khã. Tuy nhiªn, nÕu thÊy HS cña m×nh cã thÓ gÆp khã kh¨n khi t×m hiÓu thuËt to¸n nµy, GV cã thÓ th[r]
(1)PhÇn 1
A vấn đề chung
I Nội dung chơng trình chuẩn kiến thức, kĩ môn Tin học cấp trung học sở
1 Mục tiêu
KiÕn thøc:
o Trang bÞ cho häc sinh mét số hiểu biết nhập môn thuật toán ngôn ngữ lập trình, cấu trúc chơng trình bản: tuần tự, rẽ nhánh lặp mức phổ thông
o Biết đợc lợi ích việc viết chơng trình máy tính để giải toán khác lĩnh vực đời sống
o Biết cách sử dụng đợc phần mềm học tập trình bày SGK
o Hiểu đợc ý nghĩa phần mềm máy tính ứng dụng lĩnh vực khác sống
Kĩ năng:
o Gii c mt s bi tốn đơn giản máy tính cách vận dụng thuật tốn đơn giản, liệu chuẩn ngơn ngữ lập trình bậc cao cụ thể
o Sử dụng khai thác thành thạo phần mềm học tập đợc giới thiệu
o Rèn luyện khả thao tác nhanh với bàn phím 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 tinh thần làm viÖc theo nhãm
o Nghiêm túc học làm việc máy tính khơng phân biệt phần mềm học tập hay phần mềm trị chơi Có ý thức sử dụng máy tính mục đích
o N©ng cao ý thức lòng say mê học tập môn học
2 Nội dung chơng trình
Lp trỡnh n gin
- Thuật toán ngôn ngữ lập trình;
- Chng trỡnh Turbo Pascal (TP) đơn giản; - Tổ chức rẽ nhánh;
- Tæ chức lặp;
- Kiểu mảng biến có số; - Một số thuật toán tiêu biểu Khai thác phần mềm học tập
3) Chuẩn kiến thức, kĩ năng
CHủ Đề MứC Độ CầN ĐạT GHI CHó
Lập trình đơn giản
1 Thuật toán ngôn ngữ lập trình
Kiến thức
(2)CHủ Đề MứC Độ CầN ĐạT GHI CHó
Biết mơ tả thuật toán cách liệt kê bớc sơ đồ khối
Biết đợc chơng trình mơ tả thuật tốn ngơn ngữ c th
Kĩ năng
Mụ t c thuật toán đơn giản liệt kê bớc
- Nên chọn thuật toán toán gần gũi, quen thc víi häc sinh
2 Chơng trình TP đơn giản
KiÕn thøc
BiÕt s¬ bé ngôn ngữ lập trình Pascal
Biết cấu trúc chơng trình TP: cấu trúc chung thành phần
Biết thành phần sở ngôn ngữ Pascal
Hiu c mt số kiểu liệu chuẩn
Hiểu đợc cách khai báo biến
Biết đợ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âu lệnh vào/ra đơn giản để nhập thơng tin từ bàn phím đa thơng tin hình Kĩ năng
Viết đợc chơng trình TP đơn giản, khai báo biến, câu lệnh vào/ra để nhập thơng tin từ bàn phím đa thơng tin hình
- Cã thĨ sư dụng ngôn ngữ lập trình khác theo hớng dẫn thực ch-ơng trình
- Minh ho cỏc khỏi nim chơng trình TP đơn giản
- Cần xây dựng thực hành tổ chức thực phòng máy để học sinh đạt đ-ợc kỹ theo yêu cầu
3 Tæ chøc rÏ nh¸nh
KiÕn thøc
Hiểu đợc câu lệnh rẽ nhánh (dạng thiếu dạng đủ)
Hiểu đợc câu lệnh ghép Kĩ năng
Viết lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ
Biết sử dụng có hiệu câu lệnh rẽ nhánh
- NhÊn m¹nh cÊu tróc điều khiển tuần tự, rẽ nhánh lặp
- Trình bày đợc thuật tốn số tốn rẽ nhánh thờng gặp, chẳng hạn giải ph-ơng trình bậc
4 Tỉ chøc lỈp
KiÕn thøc
Hiểu đợc 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 tình sử dụng loại lnh lp
Kĩ năng
Vit ỳng lnh lặp với số lần định trớc
- Kĩ yêu cầu sử dụng lệnh lặp với số lần nh trc
5 Kiểu mảng biến có chØ sè
KiÕn thøc
Biết đợc khái niệm mảng chiều
BiÕt c¸ch khai b¸o mảng, truy cập phần tử mảng
Kĩ năng
Thc hin c khai bỏo mng, truy cập phần tử mảng, sử dụng phần tử mảng biểu thức tính tốn
- u cầu học sinh viết đợc chơng trình số toán sau: nhập giá trị phần tử mảng, in, tính tổng phần tử
6 Mét sè thuật toán tiêu biểu
Kiến thức
Hiu thuật toán số toán thờng gặp nh: tìm số lớn nhất, số nhỏ nhất; kiểm tra số cho trớc có phải độ dài cạnh tam giác không Khai thác phần
mềm học tập Kiến thức Biết cách sử dụng phần mềm học ó la chn
Kĩ năng
Thc đợc công việc khởi động/ra khỏi, sử dụng bảng chọn, thao tác tơng tác với phần mềm
- Lùa chän phÇn mỊm häc tËp theo híng dẫn thực chơng trình
II Giới thiệu sách giáo khoa tin học dành cho trung học sở - qun 3
1 CÊu tróc, néi dung phân bổ thời lợng
(3)Thể nội dung, yêu cầu chơng trình đợc Bộ Giáo dục Đào tạo phê duyệt cung cấp cho học sinh kiến thức, kĩ bản, thiết thực có hệ thống ban đầu thuật tốn kĩ thuật lập trình
Tiếp cận đợc trình độ giáo dục phổ thông nớc tiên tiến khu vực giới Nội dung sách giáo khoa tập trung vào kiến thức định hớng để từ hc sinh cú th
phát huy yếu tố tích cực thành tựu công nghệ thông tin tăng cờng khả tự học
Ni dung, cách trình bày diễn đạt ngắn gọn, dễ hiểu thơng qua mơ tả ví dụ minh hoạ cụ thể
CÊu tróc
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:
Phn 1- Lp trình đơn giản: gồm lí thuyết, thực hành; Phần - Phần mềm học tập: gồm lí thuyết kết hợp với thực hành Nội dung
TIN häc dµnh cho THCS - qun
Phần 1- Lập trình đơn giản Bài Máy tính chơng trình máy tính
Bµi Làm quen với Chơng trình Ngôn ngữ lập trình Bµi thùc hµnh Lµm quen víi Turbo Pascal
Bài Chơng trình máy tính liệu
Bài thực hành Viết chơng trình để tính tốn Bài Sử dụng biến chơng trình
Bài thực hành Khai báo sử dụng biến Bài Từ tốn đến chơng trình
Bµi Câu lệnh điều kiện
Bài thực hành Sử dụng lệnh điều kiện if then Bài Câu lệnh lặp
Bài thực hành Sử dụng lệnh lặp for do Bài Lặp với số lần cha biÕt tríc
Bµi thùc hµnh Sư dơng lệnh lặp while do Bài Làm việc với dÃy sè
Bµi thùc hµnh Xư lÝ d·y sè chơng trình
Phần - Phần mềm học tËp Lun gâ phÝm nhanh víi Finger Break Out
Tìm hiểu thời gian với phần mềm Sun Times Học vẽ hình với phần mềm Geogebra
Quan sát hình không gian với phần mềm Yenka Đề xuất phân bổ thời lợng:
Nội dung Bài lí thuyết lí thuyết kết hợp thực hành
Bài thực hành
Tỉng sè tiÕt
Phần Lập trình đơn giản 34
PhÇn PhÇn mỊm häc tập 16
Bài tập
Ôn tập
KiĨm tra
Tỉng céng 13 70
(4)
-2 Mét sè gi¶i thÝch
a) Sách giáo khoa Tin học dành cho THCS - Quyển đợc biên soạn bám sát theo nội dung, yêu cầu Chơ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 Bộ trởng Bộ Giáo dục Đào tạo
b) Phần gồm lí thuyết, dạy 02 tiết lí thuyết 01 tiết tập, riêng dạy 04 tiết lí thuyết và 02 tiết tập; Bài khơng có tiết tập riêng Có thực hành, dạy 02 tiết Phần gồm lí thuyết kết hợp thực hành Mỗi đợc dạy trọn vẹn 04 tiết Về tiết tập dành cho việc làm tập phần (Lập trình đơn giản), phần (Phần mềm học tập) không cần tiết tập
c) Thời lợng dành cho ơn tập cuối kì 04 tiết, học kì 02 tiết Thời lợng dành cho kiểm tra định kì tiết, học kì 04 tiết
Việc phân bổ thời lợng tơng đối, trình dạy học giáo viên (GV) đ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 tập nhiều (8 tiết) Điều thể câu hỏi, tập phần quan trọng việc giúp HS tiếp thu kiến thức, rèn luyện kĩ
e) Các nội dung đọc thêm cuối không bắt buộc, tránh yêu cầu tất HS phải đọc, hiểu, gây tải GV chọn lựa, giới thiệu, giải thích đơi chút để gây hứng thú cho em ham thích, đọc thêm
3 Gỵi ý cách tiến hành giảng dạy
a) V SGK lựa chọn phơng án trình bày kiến thức, kĩ chung lập trình sử dụng ngôn ngữ Pascal để minh hoạ Cách tiếp cận thể rõ việc dạy lập trình nói chung mà khơng phải dạy ngơn ngữ lập trình cụ thể Pascal Tuy nhiên, giảng dạy GV không thiết phải trình bày theo cách tiếp cận Có thể tiếp cận cách từ ngơn ngữ lập trình cụ thể Pascal khái quát thành kiến thức, kĩ lập trình nói chung Cách tiếp cận từ cụ thể đến khái quát phù hợp với phần lớn HS THCS Trong SGV, nội dung cụ thể đợc gợi ý cách dạ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âu lệnh, chơng trình, phần mềm TP nhiều nên dễ cảm nhận học ngơn ngữ Pascal Vì vậy, trình dạy học GV cần lu ý tiến hành khái quát lúc, chỗ để HS vợt khỏi ngôn ngữ cụ thể, rút đợc kiến thức, kĩ năng, nguyên lí lập trình nói chung Trong SGV có hớng dẫn thời điểm khái quát hoá kiến thức, kĩ số học cụ thể
c) Các chơng trình đợc viết học tiết lí thuyết, tiết tập cần để HS chạy thử thực hành sau Làm nh giúp HS củng cố, hiểu rõ nội dung lí thuyết vừa học Hơn nữa, việc giúp tạo hứng thú, củng cố niềm tin cho HS, gắn kết tốt học với hành Để tránh HS nhiều thời gian vào việc gõ chơng trình, GV nên gõ sẵn chơng trình đợc viết lí thuyết, tập để HS chỉnh sửa, chạy thử, tìm hiểu thực hành, không nên yêu cầu HS gõ chơng trình tiết thực hành
d) Trong phân bổ thời lợng dành tiết để làm tập, tiết để ôn tập Các tiết cha đợc định nội dung cụ thể, GV hoàn toàn chủ động đa nội dung cho tiết tập, ôn tập Tuy nhiên, tiết tập nên dành thời gian để hớng dẫn học sinh làm số tập SGK (nếu tiết lí thuyết cha làm hết), chuẩn bị cho thực hành sau Tuỳ mức độ tiếp thu HS, GV thêm tập, bổ sung thực hành máy tính để HS ơn luyện kiến thức, kĩ Các tiết ơn tập nên đợc bố trí vào cuối kì (ngay trớc sau kiểm tra cuối học kì), tiết ơn tập cần tổng kết, khái quát kiến thức, kĩ trọng tâm chơng trình để HS khắc sâu, ghi nhớ Đặc biệt tiết ôn tập cần khái quát hoá để thể đợc t tởng dạy lập trình mà khơng dạy ngơn ngữ lập trình cụ thể
e) Trong SGV có gợi ý mơ tả số thuật tốn theo cách biểu diễn gần với câu lệnh mà học sinh cần viết cần tìm hiểu chơng trình tơng ứng GV tham khảo, lựa chọn cách mơ tả để giảng dạy phù hợp với đối tợng HS
(5)trình Tuy nhiên, qua toán HS cần hiểu thực đợc bớc giải tốn máy tính: Xác định toán, xây dựng (lựa chọn) thuật toán viết chơng trình Do vậy, cần thực đầy đủ bớc từ tốn đến chơng trình: Xác định input, output tốn, xây dựng, mơ tả thuật tốn cách liệt kê viết chơng trình
g) Có thực tế số câu lệnh (nhất câu lệnh có cấu trúc) hay đợc giới thiệu gắn liền với số toán, thuật toán điển hình Cách làm có thuận lợi HS vừa học đợc câu lệnh vừa học đợc toán, thuật toán Tuy nhiên, số HS việc lúc phải học hai nội dung lúc dễ dàng Để giảm bớt khó khăn cho HS, nên tách việc dạy câu lệnh với việc dạy thuật toán mới, nghĩa dạy xong câu lệnh đến thuật toán ngợc lại Trong SGV có giới thiệu số cách làm nh vậy, toán sử dụng để giới thiệu áp dụng câu lệnh thờng dễ HS biết toán, thuật toán từ trớc Khi đó, HS cịn nhiệm vụ tìm hiểu câu lệnh, thời gian để hiểu tốn, thuật tốn HS cần tập trung tìm hiểu câu lệnh Ngợc lại, giới thiệu thuật toán cần sử dụng câu lệnh HS biết sử dụng, lúc HS tập trung vào tìm hiểu thuật tốn Hi vọng cách làm nh tạo thuận lợi để học sinh tiếp thu kiến thức nhẹ nhàng
h) SGK tài liệu mà HS có SGK đợc in màu, hình thức đẹp, tranh, ảnh cách trình bày 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 trình dạy học Một việc thực lớp học hớng dẫn HS dành thời gian cho HS tự nghiên cứu nội dung SGK Ban đầu việc giao cho HS đọc thời gian, nhng kĩ đọc hiểu HS đợc cải thiện việc dành thời gian để em tự đọc khơng không thời gian mà ngợc lại tiết kiệm thời gian i) Việc dạy học phần mềm dạy học hiệu tiến hành phòng máy tính Nhng
khi dạ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 để HS chạy thử chơng trình, rèn luyện kĩ 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 HS biết tốn viết chơng trình 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 cung cấp kiến thức, rèn luyện kĩ khai 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 thay đổi, gây thêm hứng thú học tập Do vậy, SGK trình bày hai phần tách biệt nhng khơng có nghĩa phải dạy theo trình bày SGK Nội dung Phần (Phần mềm học tập) cần đợc dạy xen kẽ với Phần (Lập trình đơn giản) Cũng lí mà SGK không đánh số thứ tự phn Phn mm hc
4 Ôn tập vµ kiĨm tra
a) Thời lợng dành cho ơn tập 04 tiết (02 tiết/học kì) Căn vào tình hình thực tế lớp học, giáo viên tự xác định nội dung tiết ôn tập Tuy nhiên, nên dành tiết ôn tập để ôn luyện, tổng kết kiến thức, kĩ trọng tâm chơng trình Trong tiết ôn tập GV cần khái quát kiến thức, kĩ lập trình nói chung thể rõ mục tiêu, trọng tâm chơng trình
b) Thời lợng để kiểm tra, đánh giá tiết, học kì 04 tiết Có thể dành tiết cho kiểm tra cuối học kì, tiết cịn lại dành cho kiểm tra định kì học kì Nếu tiến hành hai kiểm tra định kì (mỗi tiết) học kì, nên có kiểm tra giấy, kiểm tra thực hành máy Hớng dẫn cụ thể kiểm tra, đánh giá có Hớng dẫn thực chơng trình, sách giáo khoa mơn Tin học lớp phân phối chơng trình mơn học
c) Nội dung kiểm tra phải đảm bảo lí thuyết thực hành Cần lựa chọn nội dung kiểm tra để đảm bảo bao quát hết kiến thức, kĩ trọng tâm chơng trình
d) Một số nội dung 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ệm khách quan kiểm tra, đánh giá Vì vậy, cần lu ý tăng cờng sử dụng trắc nghiệm khách quan kiểm tra, đánh giá nội dung
e) Việc kiểm tra, đánh giá có tác động đến q trình dạy học Để định hớng học tập cho HS, bên cạnh việc kiểm tra kiến thức, kĩ gắn liền với ngơn ngữ lập trình cụ thể, cần dành tỉ lệ thích đáng cho câu hỏi, tập kiến thức, kĩ lập trình nói chung Những câu hỏi, tập giúp HS có ý thức trọng đến kiến thức, kĩ lập trình nói chung, tránh HS trọng đến đến chi tiết cụ thể ngơn ngữ lập trình Pascal
(6)giờ kiểm tra Kiểm tra thực hành để 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 theo Quy chế Đánh giá, xếp loại học sinh trung học sở 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 Bộ trởng Bộ Giáo dục Đào tạo) 5 Thiết bị dạy học
a) Bộ Giáo dục Đào tạo 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ơn Tin học cấp THCS Theo đó, trờng THCS phải đáp ứng đợc danh mục thiết bị dạy học tối thiểu 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 trờng THCS phải có tối thiểu phịng máy với 25 máy vi tính nối mạng kết nối Internet Ngồi máy tính, danh mục cịn có tranh, ảnh đợc phóng to để dạy học
b) Phần lớn nội dung dạy học Tin học THCS hiệu sử dụng thiết bị trình chiếu, máy chiếu projector, máy chiếu overhead, máy chiếu vật thể, thiết bị đ-ợc khuyến khích trang 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 máy tính có tốc độ cao bị lỗi Division by zero (khi sử dụng th viện crt - uses crt) GV tải phần mềm TP đợc chỉnh sửa lỗi website www.vnschool.net Với nội dung dạy học SGK hồn tồn thay TP (for Dos) Pascal for Windows Free Pascal Các phần mềm phục vụ dạy học theo SGK (kể phần mềm học tập) đợc tải từ website nêu có sẵn đĩa CD GV tham dự lớp bồi dỡng GV cốt cán
d) Những trờng đợc trang bị hệ thống Hishare (một CPU kết nối với nhiều hình) gặp khó khăn sử dụng TP (for DOS), tốc độ chậm Trong trờng hợp nên thay TP (for DOS) Pascal for Windows Free Pascal
e) Hiện số trờng THCS cịn có máy tính cấu hình thấp đợc trang bị từ trớc Những máy tính hồn tồn đợc sử dụng để thực hành với phần mềm TP (for DOS) Do vậy, cần rà soát, tận dụng máy tính cũ để phục vụ cho tiết thực hành với TP f) Hiện có số phần mềm hỗ trợ cho việc quản lí dạy học phịng máy tính Hơn
nữa phần mềm cịn giúp khai thác phịng thực hành mơn Tin học nh phịng đa ph-ơng tiện để dạy học mơn học khác Dới giới thiệu 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)
(7)B vấn đề cụ thể
phần lập trình đơn giản I Giới thiệu
1 Mơc tiªu
Mục tiêu phần cung cấp cho HS số kiến thức, kĩ bản, phổ thông lập trình thông qua ngôn ngữ lập trình bậc cao Pascal
KiÕn thøc
Biết đợc khái niệm tốn, thuật tốn, mơ tả thuật tốn cách liệt kê; Biết đợc chơng trình mơ tả thuật tốn ngơn ngữ cụ thể;
Hiểu thuật toán số tố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 độ dài ba cạnh tam giác không);
Biết cấu trúc chơng trình, số thành phần sở ngôn ngữ; Hiểu số kiểu liệu chuẩn, đơn giản, cách khai báo biến;
Biết 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âu lệnh vào/ra đơn giản để nhập thông tin từ bàn phím đa thơng tin 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 tình sử dụng loại lệnh lặp;
Biết đợc khái niệm mảng chiều, cách khai báo mảng, truy cập phần tử mảng Kĩ năng
Mơ tả đợc thuật tốn đơn giản liệt kê bớc;
Viết đợc chơng trình đơn giản, khai báo biến, câu lệnh vào/ra để nhập thơng tin từ bàn phím đa thơng tin hình;
Viết lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ; Biết sử dụng có hiệu câu lệnh điều kiện; Viết lệnh lặp với số lần định trớc;
Thực đợc khai báo mảng, truy cập phần tử mảng, sử dụng phần tử mảng biểu thức tính tốn
Thái độ
Nghiêm túc học tập, ham thích lập trình máy tính để giải tập
2 Néi dung
Bài Máy tính chơng trình máy tính (2 tiết)
Bài Làm quen với chơng trình ngôn ngữ lập trình (2 tiết) Bài thực hành Lµm quen víi Turbo Pascal (2 tiÕt)
Bµi Chơng trình máy tính liệu (2 tiết)
Bài thực hành Viết chơng trình để tính toán (2 tiết) Bài Sử dụng biến chơng trình (2 tiết)
Bài thực hành Khai báo sử dụng biến (2 tiết) Bài Từ toỏn n chng trỡnh (4 tit)
Bài Câu lệnh điều kiện (2 tiết)
Bài thực hành Sư dơng lƯnh ®iỊu kiƯn if then (2 tiÕt) Bài Câu lệnh lặp (2 tiết)
(8)Bài thực hành Sử dụng lệnh lặp while (2 tiÕt) Bµi Lµm viƯc víi d·y sè (2 tiÕt)
Bài thực hành Xử lí dãy số chơng trình (2 tiết)Nh nói trên, việc phân bố thời lợng nh tơng đối, trình giảng dạy, nhà trờng, giáo viên phân bố thời lợng cho cho phù hợp với tình hình cụ thể nhà trờng trình độ nhận thức học sinh
3 Những điểm cần lu ý gợi ý d¹y häc
a Nội dung phần cung cấp cho học sinh số kiến thức kĩ ban đầu lập trình. Sau phần này, học sinh có số hiểu biết lập trình, viết đợc số chơng trình đơn giản ngơn ngữ lập trình cụ thể ngơn ngữ Pascal Các chơng trình đơn giản mặt gây hứng thú cho học sinh việc tìm hiểu tốn phức tạp viết chơng trình để giải tốn đó, mặt khác chúng phục vụ cho việc học tập tìm hiểu sâu mơn học khác, mơn Tốn
Phần đợc chia thành lí thuyết thực hành, nội dung đợc biên soạn để trình bày trọn vẹn 02 tiết 01 tiết tập Riêng với Bài thời lợng đợc tăng gấp đôi, tức 04 tiết lí thuyết 02 tiết câu hỏi tập Mỗi thực hành đợc trình bày sau lý thyết nhằm mục đích để học sinh ghi nhớ rèn luyện kiến thức kĩ học sinh học lí thuyết trớc
b Về SGK trình bày theo cách tiếp cận kiến thức, khái niệm lập trình từ khái quát đến cụ thể Mục tiêu SGK trình bày khái niệm ban đầu lập trình nói chung, với cố gắng khơng gắn với ngơn ngữ lập trình cụ thể Cách tiếp cận thể rõ mục tiêu chơng trình dạy kiến thức, kĩ lập trình, ngơn ngữ lập trình nói chung, khơng phải dạy ngơn ngữ lập trình định
Đối với HS THCS, để HS dễ tiếp thu, việc trình bày ngơn ngữ lập trình cần thơng qua ngơn ngữ lập trình cụ thể để minh hoạ, giải thích Hơn nữa, kĩ lập trình nh viết, chỉnh sửa, dịch, chạy kiểm thử chơng trình địi hỏi phải sử dụng ngơn ngữ lập trình bậc cao cụ thể Khó lựa chọn ngơn ngữ lập trình cụ thể đáp ứng lúc đợc tiêu chí nh: đại, cập nhật, dễ hiểu, dễ dùng, giá thành rẻ (hoặc miễn phí) tính s phạm cao Cho nên cách sử dụng Pascal để minh hoạ SGK phơng án Giáo viên thay ngơn ngữ Pascal ngơn ngữ lập trình khác phù hợp với thực tế lớp học miễn truyền đạt đợc kiến thức, kĩ theo yêu cầu chơng trình
Việc lựa chọn ngôn ngữ Pascal để minh hoạ SGK đợc cân nhắc kĩ lỡng số lí sau đây: (1) Ngơn ngữ Pascal ngơn ngữ lập trình cấu trúc, sáng, có tính s phạm cao; (2) Phần lớn GV Tin học cấp THCS đợc học thực hành ngơn ngữ lập trình Pascal chính; (3) Ngơn ngữ Pascal có nhiều phiên chạy đợc hệ điều hành khác có trờng THCS; (4) Ngơn ngữ lập trình Pascal chạy đợc hầu hết tất máy đợc trang bị trờng THCS từ trớc đến nay; (5) Việc cài đặt Pascal dễ dàng ngơn ngữ Pascal đợc sử dụng miễn phí
Cũng có ý kiến cho chọn ngơn ngữ lập trình khác để minh họa, chẳng hạn nh Logo, Basic, VB, C Java, VB, C Java chúng ngôn ngữ đại đợc sử dụng để phát triển hầu hết ứng dụng Hai ngôn ngữ đầu ngôn ngữ đợc phổ biến, khơng cịn đợc sử dụng rộng rãi Những ngôn ngữ sau lại ngôn ngữ nặng nề phức tạp việc cài đặt sử dụng, điều kiện sở vật chất tr ờng phổ thơng Do tác giả thấy Pascal lựa chọn hợp lí khả thi
Tuy sử dụng Pascal để minh họa, giảng dạy giáo viên cần lu ý truyền đạt kiến thức lập trình chính, tránh việc sa đà trình bày nhiều chi tiết thủ thuật với ngôn ngữ Pascal
c Do ngơn ngữ đóng vai trị minh họa cho kiến thức bắt đầu lập trình nên nội dung cụ thể gắn liền với Pascal SGK đợc cố gắng trình bày cách đọng, tăng tính trực quan giảm tối đa tính hình thức theo nguyên tắc cần đến đâu giới thiệu đến SGK khơng nhằm mục đích giới thiệu thành phần, kiểu liệu, cú pháp, ngữ nghĩa câu lệnh đặc trng khác Pascal cách đầy đủ nh cẩm nang lập trình Chẳng hạn, nhiều kiểu liệu, câu lệnh điều kiện case, câu lệnh lặp khác, không đợc giới thiệu SGK, nhiều câu lệnh đợc giới thiệu ngắn gọn mà không sâu vào giải thích cú pháp ngữ nghĩa, v.v
(9)d Về thứ tự trình bày nội dung Phần 1, giáo viên cần lu ý vài điểm sau Trớc hết, cần nhấn mạnh việc xác định toán xây dựng thuật toán bớc quan trọng việc viết chơng trình Chơng trình thể thuật tốn cụ thể ngơn ngữ lập trình Ch-ơng trình hoạt động có hiệu có thuật tốn tối u viết đợc ch-ơng trình sau xây dựng mơ tả thuật toán Xét theo thứ tự thời gian t logic nội dung giới thiệu tốn thuật toán cần đợc giới thiệu từ Bài
Tuy nhiên, tác giả cho nội dung thuật tốn mơ tả thuật tốn vấn đề khó tồn nội dung SGK Trớc hết, thuật tốn ln ln gắn liền với t tốn học, việc mơ tả thuật tốn lại gắn liền với t 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 biến, đặc biệt dới dạng X = X + Nếu trình bày thuật toán Bài 1, học sinh bắt đầu năm học mới, gây cảm giác tải cho học sinh, phần lớn học sinh khơng có nhiều khiếu toán Hơn nữa, việc giới thiệu nh làm cho học sinh hiểu nhầm lập trình giải tốn (mặc dù việc giải toán nhỏ nh thế)
Mặt khác, với tâm sinh lí học sinh THCS, trớc giới thiệu nội dung khó cần bắt đầu dẫn dắt từ nội dung nhẹ nhàng dễ gây hứng thú cho học sinh Nội dung từ đến phục vụ mục đích
Có lý khác cha đợc giới thiệu cha hiểu đợc chất phép gán, học sinh khó hiểu nội dung thuật tốn Trong đó, để học sinh có đợc khái niệm phép gán cách tốt giới thiệu nội dung liên quan đến biến lập trình
Cuối cùng, để học sinh hiểu đợc nội dung từ đến không cần thiết phải có kiến thức thuật tốn Các vấn đề giới thiệu thực hành giải đợc với “thuật toán hiển nhiên”, hầu nh học sinh nhận biết áp dụng Tuy nhiên, trớc đề cập tới cấu trúc điều khiển chơng trình lại cần thiết phải giới thiệu trớc khái niệm thuật tốn mơ tả thuật tốn
Đó lí nội dung tốn thuật tốn đợc trình bày Bài
e Mỗi phần nội dung SGK đợc trình bày lí thuyết thực hành Bài lí thuyết giới thiệu kiến thức ban đầu nội dung tơng ứng Ngay sau lí thuyết (trừ 5) thực hành kiến thức lí thuyết học Mục đích thực hành cung cấp kĩ cho HS, qua hiểu sâu nội dung vừa học lí thuyết Các thực hành để HS thực hành, sử dụng nội dung vừa học phần lí thuyết Tuy nhiên, sau thực hành không phục vụ cho việc củng cố, thực hành nội dung lí thuyết học tơng ứng mà cịn giúp ơn luyện kiến thức, kĩ đợc học trớc
f Cấu trúc lí thuyết đợc xây dựng cách quán nh sau:
Mỗi lí thuyết đêu cố gắng bắt đầu ví dụ sống hàng ngày, từ dẫn dắt đến cách thức giải vấn đề đời thờng cách viết chơng trình Quan điểm tác giả chơng trình máy tính đợc viết để giải tốn đời thờng nh Bằng cách học sinh dễ thấy mối liên hệ chặt chẽ việc lập trình sống, lợi ích việc lập trình để giải tốn máy tính
Phần nội dung trình bày thành phần cấu trúc tơng ứng ngôn ngữ lập trình nói chung Các nội dung đợc cố gắng trình bày mức tổng qt có thể, nhng đảm bảo học sinh hiểu đợc Do đó, sử dụng Pascal để minh họa mục tiếp theo, SGK khơng cố gắng trình bày cú pháp ngữ nghĩa câu lệnh Pascal cách đầy đủ chi tiết Giáo viên cần lu ý điều để bổ sung cho học sinh thực hành tiếp sau
Cuối số ví dụ chơng trình để minh họa tình sử dụng Về ví dụ, tác giả cố gắng hạn chế đến mức tối đa việc lập trình giải tốn có nội dung tốn học, tránh gây q tải cho học sinh dẫn đến hiểu nhầm lập trình gắn liền với tốn học Tuy nhiên, hạn chế nội dung chơng trình, minh họa gây hứng thú nh thiết kế giao diện, màu sắc, phông chữ mô chuyển động đối tợng hình khơng đợc đa vào Do ví dụ tốn học chiếm tỷ lệ đáng kể
Cuối lí thuyết có mục Ghi nhớ liệt kê số điểm học để HS dễ dàng ghi nhớ Mục ghi nhớ để GV xác định nội dung kiến thức, kĩ trọng tâm
(10)Trong phân bổ thời lợng, số tiết tập nhiều (8 tiết) Điều thể câu hỏi, tập phần quan trọng việc giúp HS tiếp thu kiến thức, rèn luyện kĩ Hệ thống câu hỏi, tập đa dạng, phù hợp với HS THCS, phù hợp với đổi dạy học đổi kiểm tra, đánh giá Tốt nên tổ chức tiết tập sau học sinh thực tiết thực hành
Số lợng câu hỏi tập tơng đối nhiều Tuy nhiên, đa số câu hỏi tập dễ, học sinh cần hiểu kiến thức lý thuyết trớc trả lời giải đợc Một số tập khác, khơng vợt q kiến thức trình bày phần lí thuyết, nhng địi hỏi học sinh vận dụng kiến thức cách linh hoạt Việc đa nhiều câu hỏi tập mặt giúp cho việc sử dụng SGK cách hiệu linh hoạt điều kiện học sinh khác trình độ, mặt khác giúp cho học sinh có điều kiện đào sâu suy nghĩ kiến thức lí thuyết giúp giáo viên phân biệt trình độ học sinh rõ Cũng có thể, trờng, số tập học sinh lớp khó, nhng học sinh lớp khác lại tự giải tất tập cách khơng khó khăn Do vậy, tuỳ tình hình tiếp thu kiến thức HS, giáo viên lựa chọn làm số chủ động thêm câu hỏi, tập phù hợp với trình độ học sinh, không thiết phải làm hết câu hỏi, tập SGK
g Các thực hành đợc xây dựng cách quán với việc đề mục tiêu, bớc cần thực hiện, thông thờng mức chi tiết Ngồi cịn có ví dụ để học sinh tìm hiểu tác dụng câu lệnh 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 chạy chơng trình tự học nhà
Khác với thực hành Quyển 2, SGK nội dung thực hành không ôn luyện, củng cố, thực hành kiến thức học mà giới thiệu kiến thức mới, cụ thể 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 khơng đợc trình bày lí thuyết với chủ đích tránh làm dàn trải nội dung lí thuyết 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 thực hành Kiến thức câu lệnh đợc đúc rút sau HS đợc thực hành câu lệnh Giáo viên cần nhận rõ khác biệt này, dành thời gian giới thiệu, hớng dẫn cho học sinh để tăng hiệu thực hành
Mục Tổng kết cuối thực hành tóm tắt kiến thức, kĩ học sinh cần tiếp thu đ-ợc thực hành, chủ yếu bớc thực hiện, cú pháp, ngữ nghĩa nh cách sử dụng Pascal Phần giúp HS hệ thống lại kiến thức, kĩ thực hành nội dung giúp HS tra cứu nhanh trình học tập Tuy nhiên, khơng nên u cầu học sinh học thuộc lịng phần nội dung Trong trình thực hành, học sinh bớc ghi nhớ cú pháp ngữ nghĩa câu lệnh
h Nội dung toán thuật toán (Bài 5) đợc phân bố thời lợng gấp đơi (04 tiết lí thuyết 02 tiết tập) Theo đánh giá tác giả, phần nội dung quan trọng, khơng nói quan trọng Nếu nắm vững cách thức mô tả thuật toán để giải toán, học sinh dễ dàng tiếp thu đợc kiến thức trình bày
Có thể biểu diễn thuật toán sơ đồ khối cách liệt kê Tuy nhiên, SGK lựa chọn giới thiệu cách biểu diễn thuật toán cách liệt kê Về cách liệt kê gần gũi với cách t HS THCS đặc biệt mô tả cách liệt kê thuận lợi cho viết chơng trình vài chỗ, SGK sử dụng sơ đồ khối để biểu diễn hoạt động cấu trúc điều khiển (rẽ nhánh, lặp) GV không giới thiệu thêm cách biểu diễn thuật toán sơ đồ khối u cầu học sinh mơ tả thuật tốn cách vẽ sơ đồ khối
Bên cạnh kiến thức, kĩ theo yêu cầu Chơng trình, SGK cịn giới thiệu thêm số nội dung, ví dụ 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; số tốn, thuật tốn phổ thơng, đơn giản để HS mở rộng thêm kiến thức, kĩ năng; số câu hỏi, tập, thực hành có yêu cầu cao 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 liệu, đợc giới thiệu Do cách giới thiệu nh nên ban đầu 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 không bắt buộc, tránh yêu cầu tất HS phải đọc, hiểu, gây tải GV chọn lựa, giới thiệu, giải thích đơi chút để gây hứng thú cho em ham thích, đọc thêm
(11)II Hớng dẫn chi tiết
Bài Máy tính chơng trình máy tính
1 Mc ớch, yờu cu
BiÕt 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 cách để ngời dẫn cho máy tính thực nhiều cơng việc liên tiếp cách tự động
Biết viết chơng trình viết lệnh để dẫn máy tính thực cơng việc hay giải tốn cụ thể
Biết ngôn ngữ dùng để viết chơng trình máy tính gọi ngơn ngữ lập trình Biết vai trị chơng trình dịch
2 Nh÷ng điểm cần lu ý gợi ý dạy học
Khái niệm lệnh, nút lệnh HS đợc biết đến lớp lớp Dựa hiểu biết có sẵn HS lệnh, GV cần nhắc để HS nhớ lại hình dung lệnh cách đơn giản, phổ thông
HS thực thao tác khởi động/thoát khỏi phần mềm, chép, cắt, dán thực bớc để tắt máy tính (theo quy cách) Đặc biệt HS thờng xuyên sử dụng nút lệnh công cụ lệnh 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 Khi thực thao tác HS lệnh cho máy tính thực cơng việc Ví dụ, thực thao tác nháy vào nút lệnh Cut công cụ Word lệnh cho máy tính thực cơng việc cắt văn
Thực khái niệm “lệnh” máy tính phức tạp, hiểu mô tả lệnh với mức độ chi tiết khác Xét đến kiến trúc máy tính có tập hợp (khơng nhiều) lệnh hay vi lệnh lệnh (micro-instruction), lệnh dùng để dẫn máy tính dãy lệnh (với thứ tự định) Từ thờng nảy sinh câu hỏi phải lệnh cha tập hợp lệnh Tuy nhiên ngời ta thờng hiểu lệnh máy tính dẫn ngời để máy tính thực cơng việc cụ thể Giáo viên nên giới thiệu lệnh cho HS mức độ
Kết thúc mục 1, học sinh cần biết đợc ngời điều khiển máy tính thơng qua lệnh
Cần cho HS nhận thấy khác biệt việc lệnh cho máy tính với lệnh cho 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 công việc đơn giản với ngời, nhng muốn máy tính thực cần phải chia thành nhiều thao tác nhỏ, đơn giản, cụ thể mà rơ-bốt thực đợc Có khác biệt vì, khác với ngời, máy tính vật vơ tri, vơ giác
Có hai cách để điều khiển rơ-bốt thực công việc trên: Cách thứ lệnh rô-bốt thực thao tác một; Cách thứ hai dẫn để rô-bốt tự động thực lần lợt thao tác Việc viết lệnh để điều khiển, dẫn rô-bốt (hay máy tính) thực tự động loạt thao tác liên tiếp viết Chơng trình máy tính, hay cịn gọi tắt Chơng trình
Kết thúc mục mục học sinh cần biết chơng trình cách để ngời dẫn cho máy tính thực nhiều công việc liên tiếp cách tự động viết chơng trình viết lệnh để dẫn máy tính thực cơng việc hay giải tố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à ngời viết phải đảm bảo máy tính "hiểu" đợc HS biết máy tính hiểu đợc ngơn ngữ nhị phân, tức dãy số Vì vậy, nguyên tắc để máy tính "hiểu" đợc phải viết chơng trình ngơn ngữ máy
Vấn đề ngơn ngữ máy lại khó sử dụng, khó nhớ ngời Vì vậy, khó cho ngời sử dụng ngôn ngữ để viết chơng trình
Do cần phải tìm ngôn ngữ trung gian ngời ngôn ngữ máy để ngời dễ dàng sử dụng viết chơng trình sau chuyển đổi sang dạng ngơn ngữ máy cho máy tính hiểu đợc Ngơn ngữ lập trình bậc cao giải pháp nh Có thể liệt kê số ngơn ngữ lập trình bậc cao nh Pascal, Free Pascal, C, Java Để tránh tải cho học sinh mặt thuật ngữ, SGK tác giả 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
(12)nớc ngồi 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 "chơng trình dịch"
Nh vậy, để có đợc chơng trình mà máy tính thực đợ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, bớc nêu hai số nhiều bớc (giai đoạn) để tạo chơng trình cụ thể “chạy” máy tính Để có chơng trình hoạt động hiệu máy tính phục vụ mục tiêu, ngời ta cịn phải thực nhiều cơng việc khác, việc khảo sát nhu cầu ngời sử dụng (xác định mục tiêu, yêu cầu; khảo sát 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 phần cơng việc lập trình, sau thuật toán đợc xây dựng Tuy nhiên, học sinh bắt đầu làm quen với lập trình ngơn ngữ lập trình, cách giới thiệu nh SGK đủ nhằm để học sinh phân biệt đợc hai cơng việc viết chơng trình dịch chơng trình Trong thực hành với Pascal, học sinh phân biệt rõ hai bớc
Ngôn ngữ lập trình đối tợng đợc định nghĩa cách trừu tợng hình thức, cịn nhiệm vụ chơng trình dịch dịch chơng trình đợc soạn thảo 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 ngơn ngữ lập trình cụ thể kèm theo 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 thông báo lỗi; công cụ theo dõi, gỡ rối chơng trình; th viện chơng trình chuẩn dịch vụ khác Tất tạo nên mơi trờng lập trình ngơn ngữ lập trình GV khơng cần giải thích kĩ mơi trờng lập trình với HS
Qua mục học sinh cần ghi nhớ đợc ngôn ngữ lập trình cơng cụ để viết chơng trình máy tính chơng trình dịch đóng vai trị dịch chơng trình viết ngơn ngữ lập trình sang ngơn ngữ máy
Nội dung đợc xem nh 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 học sinh cần biết phía sau thao tác nh nháy nút lệnh Cut, Copy mà em quen sử dụng đoạn chơng trình máy tính tơng ứng Khi nháy nút lệnh em yêu cầu máy tính thực đ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 tập
Bài 1. Khi soạn thảo văn máy tính, ta u cầu chơng trình tìm kiếm cụm từ thay cụm từ khác, thực chất ta yêu cầu máy tính thực nhiều lệnh Có thể mơ tả lệnh với mc chi tit khỏc
Dới mô tả lệnh theo trật tự thực hiện: Sao chép cụm từ cần tìm vào bé nhí (gäi lµ cơm tõ 1) Sao chÐp cơm tõ sÏ thay thÕ vµo bé nhí (cơm tõ 2) T×m cơm tõ
4 Xóa cụm từ tìm đợc
5 D¸n cơm tõ từ nhớ vào vị trí cũ cụm từ
Với lệnh đợc liệt kê theo thứ tự nh trên, ta thấy thay đổi thứ tự vài lệnh (ví dụ nh lệnh 2), nhng nói chung việc thay đổi thứ tự phần lớn lệnh không cho kết nh mong muốn, chẳng hạn nh thay đổi thứ tự lệnh nghĩa
Lu ý giáo viên Việc mơ tả lệnh thực với nhiều mức chi tiết khác nhau. Tuy cha đầy đủ mức lập trình đợc (cha tính đến điều kiện kết thúc, tức trỏ đợc di chuyển đến cuối văn bản), nhng dới mô tả chi tiết hơn:
1 Sao chÐp d·y kÝ tự cần tìm vào nhớ (dÃy 1) Sao chÐp d·y kÝ tù sÏ thay thÕ vµo bé nhí (dÃy 2) Đặt trỏ trớc kí tự văn
4 Sao chộp dóy kớ tự (tính từ vị trí trỏ sang phải) có độ dài dãy vào nhớ (dãy 3) So sánh dãy dãy Nếu dãy không trùng với dãy 1, chuyển đến lệnh
6 Xóa dÃy văn
7 Dán dãy vào vị trí cũ dãy chuyển trỏ đến cuối dãy Di chuyển trỏ sang phải kí tự quay lại lệnh
(13)Bài 2. Nếu thay đổi thứ tự hai lệnh chơng trình điều khiển rơ-bốt, rơ-bốt khơng thực đợc cơng việc nhặt rác khơng hớng khơng tới đợc vị trí có rác dẫn đến khơng nhặt đợc rác, Ví dụ, thay đổi thứ tự lệnh "Tiến bớc" lệnh "Quay trái, tiến bớc" Khi đó, sau hai lệnh rơ-bốt "Quay trái tiến bớc" tới vị trí khơng có rác Nói chung, lệnh chơng trình cần đợc đa theo thứ tự xác định cho ta đạt kết mong muốn
Vị trí rơ-bốt sau thực xong lệnh "Hãy nhặt rác" vị trí có thùng rác (ở góc đối diện)
Có nhiều cách khác để đa hai lệnh để rô-bốt trở lại vị trí ban đầu mình, cách hai lệnh "Quay trái, tiến bớc" "Quay trái, tiến bớc"
Lu ý giáo viên Trong nhiều trờng hợp, ta đa lệnh khác nhau, nhng vẫn đạt kết Chẳng hạn, ví dụ rơ-bốt, thay cho hai câu lệnh đầu tiên, ta điều khiển rơ-bốt đến vị trí có rác lệnh sau: "Quay trái, tiến bớc" "Quay phải, tiến bớc" "Quay phải, tiến bớc", "Quay trái, tiến bớc" "Quay trái, tiến bớc" Trong số trờng hợp khác, việc thay đổi thứ tự vài câu lệnh cho kết nh yêu cầu Tuy nhiên, nh nguyên tắc chung, việc thay đổi thứ tự câu lệnh khơng cho kết Có thể liên hệ với thứ tự bớc thuật toán Bài
Bài 3. Lí do: Điều khiển máy tính tự động thực cơng việc đa dạng phức tạp mà lệnh đơn giản không đủ để 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 yếu điểm ngơn ngữ máy: khó sử dụng, khó nhớ Ngơn ngữ lập trình sử dụng cụm từ tự nhiên nên dễ nhớ, dễ học
Lu ý giáo viên Tuy ngôn ngữ máy là loại ngơn ngữ lập trình, nhng hiểu ngơn ngữ lập trình ngơn ngữ lập trình bậc cao Trong ngơn ngữ máy, thị đợc biểu diễn số nhị phân Ngơn ngữ máy khó đọc khó sử dụng, nhng ngơn ngữ mà vi xử lí nhận biết thực lệnh cách trực tiếp Ngoài yếu điểm chơng trình viết ngơn ngữ máy phụ thuộc vào phần cứng máy tính
Bài 5. Chơng trình dịch chơng trình có chức chuyển đổi chơng trình đợc viết ngơn ngữ lập trình thành chơng trình thực đợc máy tính Nh vậy, chơng trình dịch chuyển đổi dịng lệnh đợc soạn thảo thành tệp chạy máy tính
Bài 6. Hai bớc để tạo 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 tệp tin thực đợc máy tính
Lu ý giáo viên Đây hai bớc lập trình phần cơng việc giải tốn máy tính
Bµi Lµm quen với chơng trình ngôn ngữ lập trình
1 Mục đích, u cầu
Biết ngơn ngữ lập trình gồm thành phần bảng chữ quy tắc để viết chơng trình, câu lệnh
Biết ngơn ngữ lập trình có tập hợp từ khóa dành riêng cho mục đích sử dụng định
Biết tên ngôn ngữ lập trình ngời lập trình đặt ra, đặt tên phải tuân thủ quy tắc ngơn ngữ lập trình Tên khơng đợc trùng với t khoỏ
Biết cấu trúc chơng trình bao gồm phần khai báo phần thân chơng trình
2 Những điểm cần lu ý gợi ý dạy häc
Mục tiêu giới thiệu cho học sinh số thành phần ngơn ngữ lập trình nói chung, làm quen với chơng trình đơn giản, làm quen với TP để chuẩn bị cho thực hành
(14)Cần đến thành phần, câu lệnh tập trung vào đó, phân tích, giải thích vừa đủ, biết điểm dừng để hớng đến mục tiêu mục,
HS biết viết chơng trình cần sử dụng ngơn ngữ lập trình cụ thể Do vậy, GV đặt câu hỏi lại phải viết chơng trình theo ngơn ngữ lập trình cụ thể để HS thảo luận, trả lời nhằm ôn lại cũ
Cần cho HS quan sát hình để thấy trực quan chơng trình cụ thể Cách làm nhằm gây hứng thú cho học sinh vào học Từ việc quan sát ví dụ GV khái quát lên thành kiến thức chung ngôn ngữ lập trình
Ngơn ngữ lập trình Pascal đợc nhắc đến 1, giáo viên giới thiệu cho em biết ví dụ hình chơng trình viết ngơn ngữ lập trình Pascal
Để dạy mục 2, SGK dựa học sinh quan sát đợc nh chữ cái, kí hiệu để khái quát nên thành phần thứ nhất: bảng chữ cái, kí hiệu Dựa ví dụ câu lệnh writeln('Chao Cac Ban'); để khái quát thành phần thứ hai: quy tắc viết
Với mục 2, xuất phát từ ngơn ngữ tiếng Việt, HS đợc học ngoại ngữ dùng ngơn ngữ tự nhiên ngoại ngữ em học để lấy ví dụ thuận tiện HS biết ngôn ngữ bao gồm chữ cái, từ quy tắc ngữ pháp Muốn ngời khác hiểu đợc hiểu cần dùng chữ cái, từ cho phép phải đợc ghép theo quy tắc ngữ pháp
Ngơn ngữ lập trình (quan sát hình 6), có bảng chữ quy tắc viết Khi viết ch -ơng trình phải sử dụng chữ cái, từ tuân thủ quy tắc tắc viết mà ngơn ngữ lập trình đặt Có nh chơng trình đợc dịch sang ngơn ngữ máy mà máy tính hiểu thực đợc Cụ thể, để lệnh cho máy tính hiển thị dịng chữ chào bạn ch ơng trình phải viết là: writeln('Chao cac ban');.
Giáo viên 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 dung Chẳng hạn, tiếng Việt, ghép chữ đợc từ có nghĩa, ghép từ (có nghĩa) có câu có nghĩa Nh xem quy tắc viết câu lệnh ngơn ngữ lập trình (cú pháp ngữ nghĩa) quy tắc “chính tả” “ngữ pháp” ngơn ngữ lập trình
Trên thực tế, chơng trình đợc viết khơng phải ngơn ngữ lập trình cụ thể mà hai nhiều ngơn ngữ lập trình đợc sử dụng chơng trình Ví dụ, nh chơng trình đợc soạn thảo dịch với TP có số lệnh đợc viết ngôn ngữ Assembly (hợp ngữ) Tuy nhiên, ta không đề cập đến vấn đề mà mặc định chơng trình mà ta đề cập đến sử dụng 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 thành phần ngôn ngữ lập trình
Các từ nh program, uses, begin, end đợc gọi từ khoá (nhiều tài liệu chuyên mơn gọi từ dành riêng), từ mà ngơn ngữ lập trình quy định dùng với ý nghĩa, chức cố định Từ khoá khái niệm với HS, để HS hiểu quy định từ khố ngơn ngữ lập trình, lấy ví dụ cụm từ Lớp trởng Lớp trởng cụm từ dành riêng để gọi HS lớp đảm nhiệm chức vụ lớp trởng lớp, khơng thể có HS khác lớp đợc gọi lớp trởng (trong thời điểm)
Tên ngời lập trình tự đặt sử dụng kí tự mà ngơn ngữ lập trình cho phép, tất nhiên tên khơng đợc trùng vi t khoỏ
Câu lệnh writeln('Chao cac ban') câu lệnh dẫn máy tính hiển thị dòng chữ "Chao cac ban" hình.
GV không cần giải thích sâu chơng trình này, không nên giải thích kĩ từ khoá, tên, câu lệnh HS tiếp cận dần với kiến thức học sau
GV giới thiệu thêm việc thay cụm từ Chao cac ban thành cụm từ khác để HS thực thực hành tới, tạo hứng thú cho HS tiết thực hành
Mục 4, dựa vào hình (CT_Dau_Tien), 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 số khai báo khác (các em học sau).
Phần thân: Bắt đầu từ khoá Begin kết thúc từ khoá End dấu chấm (End.) Giữa từ khoá Begin End câu lệnh
(15)Đến cho HS phát từ khoá chức từ khoá qua chơng trình hình SGK: Program từ khố dùng để khai báo tên chơng trình; Từ khố Begin dùng để khai báo bắt đầu chơng trình, từ khố 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 phù hợp với lứa tuổi học sinh THCS Tuy nhiên, hạn chế cách tiếp cận HS dễ bị dẫn đến nhận thức học ngôn ngữ Pascal Nh biết, mục tiêu dạy học lập trình, ngơn ngữ Pascal minh hoạ cụ thể Do vậy, GV cần lu ý trớc chuyển sang mục 5, cần nhấn mạnh để học sinh ghi nhớ, với tất ngơn ngữ lập trình có tập hợp kí hiệu (bảng chữ cái) quy tắc riêng để viết chơng trình
Có thể giới thiệu nội dung Mục lớp yêu cầu em đọc nội dung nhà chuẩn bị cho thực hành Mục tiêu để HS nhận biết giao diện phần mềm Turbo Pascal biết bớc soạn thảo, dịch chơng trình phục vụ trực tiếp cho thực hành Nếu giới thiệu lớp, giáo viên nên chuẩn bị sẵn số hình ảnh giao diện Turbo Pascal giấy khổ rộng tận dung kênh hình SGK Trong hai trờng hợp, tiến hành Bài thực hành giáo viên cần tổng kết lại nội dung trớc học sinh bắt đầu sử dụng máy tính để thực hành
Cần nhấn mạnh cho HS việc tạo chơng trình chạy đợc máy tính gồm hai bớc: bớc một, soạn thảo chơng trình máy tính theo ngơn ngữ lập trình cụ thể; bớc hai, dịch chơng trình vừa soạn thảo sang ngơn ngữ máy
Việc soạn thảo chơng trình giống với soạn thảo văn mà em học Việc dịch chơng trình đơn giản, ví dụ với ngơn ngữ lập trình Turbo Pascal, sau soạn thảo xong cần nhấn Alt+F9 máy tính tự động dịch chơng trình Để dịch chạy chơng trình, nhấn Ctrl + F9
Trong phÇn cần cho HS biết có nhiều ngôn ngữ lập trình, chơng trình học em làm việc với ngôn ngữ lập trình Pascal
3 Hớng dẫn trả lời câu hỏi tập
Bi 1. Các thành phần ngơn ngữ lập trình gồm bảng chữ quy tắc để viết câu lệnh (cú pháp) có ý nghĩa xác định, cách bố trí câu lệnh, cho tạo thành ch -ơng trình hồn chỉnh chạy đợc máy tính
Lu ý giáo viên Các quy tắc nhắc đến bao gồm thuật ngữ chuyên môn cú pháp ngữ nghĩa Xem SGK, mục 2, 2.
Bài 2. Khơng Các cụm từ sử dụng chơng trình (từ khoá, tên) phải đợc viết chữ bảng chữ ngơn ngữ lập trình Các ngơn ngữ lập trình phổ biến có bảng chữ bảng chữ tiếng Anh kí hiệu khác, khơng có chữ có dấu tiếng Việt
Lu ý giáo viên Câu hỏi "viết chơng trình có câu lệnh tiếng Việt". Điều khơng có nghĩa chơng trình khơng thể có chữ có dấu tiếng Việt (hay ngôn ngữ khác) nh liệu dạng văn cần xử lí Các chữ có dấu đợc ngơn ngữ lập trình xử lí mã kí tự tơng ứng bảng mã ASCII mở rộng Ví dụ chơng trình Pascal sau hồn tồn hợp lệ:
begin
program CT_thu;
writeln(' Chào bạn');
end.
Bài 3. Tên chơng trình dãy chữ hợp lệ đợc lấy từ bảng chữ ngơn ngữ lập trình Từ khố ngơn ngữ lập trình (cịn đợc gọi từ dành riêng) tên đợc dùng cho mục đích định ngơn ngữ lập trình quy định, khơng đợc dùng cho mục đích khác Ngời lập trình đặt tên cách tuỳ ý nhng phải tuân thủ quy tắc ngôn ngữ lập trình nh chơng trình dịch, (1) Hai đại lợng khác phải có tên khác nhau; (2) Tên khơng đợc trùng với từ khố
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 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
Bài 6. Chơng trình chơng trình Pascal đầy đủ hồn tồn hợp lệ, chơng trình chẳng thực điều Phần thiết phải có chơng trình phần thân đợc xác định hai từ khố begin end (có dấu chấm)
(16)Bµi thùc hµnh Lµm quen víi Turbo Pascal
1 Mục đích, yêu cầu
Thực đợc thao tác khởi động/kết thúc TP, làm quen với hình soạn thảo TP Thực đợc thao tác mở bảng chọn chọn lệnh
Soạn thảo đợc chơng trình Pascal đơn giản
Biết cách dịch, sửa lỗi chơng trình, chạy chơng trình xem kết Biết cần thiết phải tuân thủ quy nh ca ngụn ng lp trỡnh
2 Những điểm cần lu ý 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 TURBO.TPL Lu ý sử dụng Turbo Pascal for DOS, chơng trình có sử dụng th viện crt (khai báo uses crt) dịch chơng trình gặp thơng báo lỗi Error 200: Division by zero nh hình dới
Lỗi khơng phải chơng trình đợc viết có lỗi mà phần mềm Turbo Pascal sử dụng khơng phù hợp với máy tính có tốc độ cao Để khắc phục lỗi này, GV tải phần mềm Turbo Pascal đợc sửa lỗi website www.vnschool.net sử dụng phần mềm Pascal for Windows Free Pascal Tất phần mềm có sẵn đĩa CD phát cho GV tham gia tập huấn cốt cán
Vì HS đợc học, thực hành khởi động chơng trình năm học trớc nên việc khởi động TP dễ dàng với em Mặc dù vậy, GV nên tạo biểu tợng chơng trình TP hình (Shortcut) để thuận tiện cho HS khởi động tiết thực hành
Khi khởi động TP, hình lên nh hình dới Rất HS bỡ ngỡ, lúng túng có thơng báo hình điều khơng đợc nhắc đến SGK GV lu ý nhắc HS nháy nút OK để bắt đầu làm việc với TP
(17)Để HS tiện theo dõi nên mở rộng cửa sổ TP toàn hình Cách làm nh sau:
- Chọn biểu tợng tắt TP hình nền;
- Nhỏy nỳt phi chut để 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
- Nháy OK để kết thúc
(18)Trong 1, cần cho HS nhận biết biểu tợng TP hình nền, khởi động/thốt khỏi TP; biết cách mở bảng chọn; nhận biết đợc dòng trợ giúp nằm dới hình để tra cứu nhanh phím chức cần Khơng nên nhiều thời gian cho kĩ học sinh phải làm quen, sử dụng sau SGK trình bày nội dung theo bớc cụ thể (cầm tay việc), giáo viên cần yêu cầu học sinh làm theo bớc
Víi 2, cần nhắc HS gõ xác chơng trình vào máy tính
Mc dự vic son tho mt chơng trình ngắn nh ví dụ đa cha cần sử dụng nhiều đến công cụ soạn thảo Tuy nhiên, GV cần lu ý cho HS số điểm: Soạn thảo TP có số điểm khác với soạn thảo văn mà em đợc học, cần hớng dẫn học sinh sử dụng phím Delete, Backspace soạn thảo TP Các công cụ soạn thảo nh: chép, cắt, dán TP khác, cần hớng dẫn HS cách tra cứu lệnh bảng chọn cần thiết Có thể HS muốn gõ tiếng Việt có dấu câu tiếng Việt (do quen với gõ tiếng Việt có dấu làm việc với phần mềm bảng tính, phần mềm soạn thảo văn lớp trớc), cần lu ý em 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 HS thực đợc việc soạn thảo, lu, dịch chạy đợc chơng trình Khi dịch chơng trình máy tính báo lỗi HS soạn thảo chơng trình cịn lỗi tả, khơng hồn tồn xác GV u cầu HS tự đối chiếu chơng trình vừa gõ với chơng trình SGK để chỉnh sửa theo chơng trình mẫu Việc làm cần thiết để HS thấy đợc tính nghiêm ngặt ngơn ngữ lập trình rèn luyện thái độ nghiêm túc học tập, làm việc với ngơn ngữ lập trình
Khi nhấn Ctrl+F9 để dịch chạy chơng trình, HS khơng xem đợc kết hiển thị hình Để dừng hình lại cho HS quan sát kết cần thêm lệnh Readln trớc từ khố End Khi đó, hình dừng lại để HS quan sát kết quả, quan sát kết xong nhấn phím Enter để trở hình soạn thảo TP
GV hớng dẫn em thay cụm từ Chao cac ban Minh la Turbo Pascal cụm từ khác để tạo hứng thú học tập
Bài nhằm mục đích để HS làm quen với việc sử dụng TP sửa lỗi cú pháp ch ơng trình Có thể vào thơng báo lỗi TP để sửa chơng trình
Cïng với việc cung cấp chơng trình soạn thảo, việc dịch, phát thông báo lỗi yếu tố quan trọng môi trờng lập trình Một môi trờng lập trình tốt môi trờng có nhiều công cụ hỗ trợ cho ngời lập trình việc soạn thảo, dịch, phát sửa lỗi Hiện nay, có nhiều môi tr-ờng lập trình cung cấp tiện tích hỗ trợ tốt cho ngời lập trình nh Java, Visual C, Visual Basic
Nếu thời gian, GV yêu cầu HS thay đổi cách viết thờng cách viết hoa từ khoá để thấy đợc PASCAL không phân biệt chữ hoa chữ thờng Cho HS thay lệnh write() writeln() (hoặc ngợc lại) quan sát để nhận thấy khác biệt lệnh write() writeln() Ví dụ, ban đầu chơng trình có hai dịng lệnh writeln('Chao cac ban'); writeln('Minh la Turbo Pascal'); kết đa hình hai dịng Sau sửa lệnh thành write('Chao cac ban') giữ nguyên lệnh thứ hai kết in dịng So sánh hai kết để rút khác lệnh write writeln Cách làm phơng pháp hớng dẫn HS tự khám phá, tìm hiểu câu lệnh ngơn ngữ lập trình
Bµi Chơng trình máy tính liệu
1 Mc ớch, yờu cu
Biết khái niệm kiểu liệu;
Biết số phép toán với liệu số;
Biết khái niệm điều khiển tơng tác ngời với máy tính
2 Những điểm cần lu ý gợi ý dạy học
HS đợc làm quen với khái niệm liệu lớp trớc, không cần thiết phải giải thích sâu thêm khái niệm liệu
Kiểu liệu khái niệm tơng đối khó với HS Vì vậy, khơng u cầu truyền đạt hết kiến thức kiểu liệu HS đợc tiếp cận dần kiểu liệu sau
(19)Cũng bắt đầu học với ví dụ khác lớp trớc học sinh bớc đầu làm quen với kiểu liệu số liệu văn học sử dụng chơng trình bảng tính Giáo viên nhắc lại hai kiểu liệu quen thuộc Excel đặt câu hỏi nêu ví dụ kết nhập cơng thức tính tổng giá trị lu hai tính chứa liệu số văn bản, yêu cầu học sinh dự đốn kết nhận đ ợc (hình dới)
Từ kết luận: Đối với kiểu liệu khác nhau, ngời ta thờng thực phép xử lí liệu khác
Tơng tự nh vậy, ngơn ngữ lập trình thờng phân chia liệu thành kiểu định nghĩa phép xử lí tơng ứng kiểu liệu
SGK hạn chế giới thiệu kiểu liệu đơn giản thờng đợc sử dụng nhất: liệu kiểu số nguyên, kiểu số thực, kiểu kí tự kiểu xâu kí tự Thậm chí, kiểu số ngun ngơn ngữ minh họa Pascal, SGK bớc đầu giới thiệu kiểu integer Trong thực hành tiếp theo, học sinh đợc giới thiệu thêm vài kiểu liệu khác Một học sinh làm quen hiểu khái niệm vài kiểu liệu, việc giới thiệu kiểu liệu khác nhẹ nhàng Học sinh dần biết tầm quan trọng kiểu liệu học đến tiếp theo, sử dụng biến chơng trình
Tơng ứng với kiểu liệu cụ thể có phép tốn xử lí tơng ứng, ví dụ với liệu số tiến hành phép toán cộng, trừ, nhân, chia với số Phép tốn nh div, mod lại thực với kiểu ngun mà khơng thực đợc với kiểu thực
Về thao tác xử lí liệu kiểu xâu, GV cho HS thấy ví dụ thực thao tác hiển thị liệu kiểu xâu hình mà em học thực hành
writeln('Chao Cac Ban');
write('Minh la Turbo Pascal');
Lu ý liệu kiểu xâu Pascal đợc đặt cặp dấu nháy đơn GV cha nên giới thiệu thao tác xử lí liệu kiểu xâu kí tự gây q tải với HS
Mơc nêu phép toán với liệu kiểu nguyên kiểu thực Cần lu ý số điểm sau:
- Sự khác kí hiệu phép tốn tốn học Pascal Có thể cho HS tự xem bảng mục để phát khác
- Trong Pascal (và hầu hết ngơn ngữ lập trình nói chung) đợc phép sử dụng cặp dấu ngoặc tròn () để gộp phép tốn Khơng dùng cặp dấu ngoặc vuông [] hay cặp dấu ngoặc nhọn {} nh tốn học GV hỏi HS, giả sử viết chơng trình bạn qn quy định Pascal mà dùng dấu ngoặc vuông hay dấu ngoặc trịn để viết biểu thức có đợc không? Mục tiêu câu hỏi để em nhớ phải tuân thủ nguyên tắc, quy định mà ngơn ngữ lập trình đặt ra, khơng ch ơng trình dịch khơng hiểu khơng thể dịch cho máy tính thực đợc
- Các phép toán đợc thực theo thứ tự u tiên:
Các phép toán ngoặc đợc thực trớc tiên;
Trong dãy phép tốn khơng có dấu ngoặc, phép nhân, phép chia, phép chia lấy phần nguyên (div) phép chia lấy phần d (mod) đợc thực trớc;
Ci 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) giới thiệu cho HS biết, không nên dành nhiều thời gian vào giới thiệu hai phép toán
Trong s quy tắc có quy tắc quan trọng mà học sinh thờng bỏ qua có ảnh hởng tới kết tính tốn: Trong biểu thức có phép cộng phép trừ, có phép nhân phép chia, phép tính đợc thực theo thứ tự từ trái sang phải Cần đặc biệt lu ý đến điều chuyển đổi biểu thức toán học sang dạng biểu thức Pascal Giáo viên nhiều ví dụ khác để nhắc nhở học sinh lu ý sử dụng cặp dấu ngoặc đơn để nhóm phép tính, ví dụ:
10 + = 7, nhng thực phép cộng trớc ta đợc kết
(20)Chẳng hạn, học sinh thờng chun nhÇm biĨu thøc
2
(2 )
a
b c sang d¹ng biĨu thøc Pascal nh sau: a*a/(2*b+c)*(2*b+c)
Mục - phép so sánh, giống với mục 2, cần cho HS nhận thấy khác biệt kí hiệu sử dụng toán học Pascal Điểm cần nhấn mạnh mục kết phép so sánh sai HS hiểu rõ ý nghĩa phép so sánh học đến câu lệnh điều kiện, cấu trúc điều khiển sau
Cần lu ý kí hiệu phép toán, phép so sánh Pascal Có khác kí hiệu ngơn ngữ lập trình khác Khi làm việc với ngơn ngữ lập trình phải tn thủ quy định kí hiệu phép tốn ngơn ngữ lập trình Tuy nhiên, ngơn ngữ lập trình cho phép biểu diễn 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 nên đợc GV minh hoạ máy tính Có thể viết sẵn cho chạy chơng trình nh sau (GV sử dụng chơng trình khác):
Chơng trình cho phép nhập tên ngời sử dụng tiến hành in 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 lặp đến ngời sử dụng nhấn phím khác với phím C Có thể mời lần lợt số em lên nhập tên em để thấy đợc thay đổi tơng ứng với liệu nhập vào Từ 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 ý cần cho HS thấy tơng tác ngời máy có đợc ngời lập trình tạo Có thể mở chơng trình giải thích sơ cho em số câu lệnh đơn giản để nhập tên, in dòng chào với tên tơng ứng Lu ý, lúc khơng phải thời điểm thích hợp để giải thích tất câu lệnh chơng trình Những tơng tác ngời-máy tính mà em thực soạn thảo văn bản, sử dụng hệ điều hành ngời lập trình tạo kiến thức quan trọng mà em cần rút Điều thể khác biệt học tin học đơn để sử dụng học tin học với t cách ngành khoa học HS dần hiểu rõ việc ny nhng bi hc sau
Để chuẩn bị cho bµi thùc hµnh 2, GV cã thĨ cho HS làm câu a, thực hành lớp
3 Hớng dẫn trả lời câu hái vµ bµi tËp
Bài 1. Vì liệu thao tác xử lí liệu đa dạng, lí dễ nhận thấy việc phân chia liệu thành kiểu giúp xác định phép xử lí (phép tốn) thực kiểu liệu Ngoài ra, việc phân chia kiểu liệu cịn cho biết giá trị (phạm vi) liệu, giúp cho việc quản lí tài nguyên máy tính (đặc biệt nhớ trong) cách hiệu
Bµi 2. Cã thĨ nêu ví dụ sau đây:
a) D liu kiểu số liệu kiểu xâu kí tự Phép cộng đợc định nghĩa liệu số, nhng nghĩa liệu kiểu xâu
b) D÷ liệu kiểu số nguyên liệu kiểu số thực Phép chia lấy phần nguyên phép chia lấy phần d có nghĩa liệu kiểu số nguyên, nhng nghĩa liệu kiểu số thực
Bài 3. Dãy chữ số 2010 liệu kiểu liệu số nguyên, số thực kiểu xâu kí tự Tuy nhiên, để chơng trình dịch Turbo Pascal hiểu 2010 liệu kiểu xâu, phải viết dãy số cặp dấu nháy đơn (')
(21)begin
writeln('2010'); writeln(2010); a:=2010;
b:=2010; c:=’2010’
end
Bài 4. Cho hai xâu kí tự "Lớp" "8A" Có thể định nghĩa nhiều "phép toán" tập hợp liệu kiểu xâu Chẳng hạn phép ghép: Lớp + 8A = Lớp8A
Bµi 5. LƯnh Writeln('5+20=','20+5') in mµn hình hai xâu kí tự '5+20' '20+5' liền nhau: 5+20 = 20+5, lệnh Writeln('5+20=',20+5) in hình xâu kí tự '5+20' tổng 20 + nh sau: 5+20=25
Bài 6. Các biểu thức Pascal:
a) a/b+c/d; b) a*x*x+b*x+c ;
c) 1/x-a/5*(b+2); d) (a*a+b)*(1+c)*(1+c)*(1+c)
Bài 7. Các biểu thức toán tơng ứng: a) (a b)2 x
y
; b) 2b
a c;
c)
2
(2 )
a
b c ; d)
1 1
1
2 2.3 3.4 4.5
Bµi 8. Kết phép so sánh:
a) §óng; b) Sai; c) §óng;
d) §óng x > 2.5; ngợc lại, phép so sánh có kết sai
Bµi 9. a) 15-8>=3; b) (20-15)*(20-15)<>25; c) 11*11=121; d) x>10-3*x
Bài 10. Một số ví dụ tơng tác ngời máy tính chơng trình hoạt động: thơng báo kết tính tốn hay trạng thái hoạt động chơng trình, nhập liệu, tạm ngừng chơng trình Xem SGK, mục 4,
Bài thực hành Viết chơng trình để tính tố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 Pascal; Biết đợc kiểu liệu khác đợc xử lý khác Hiểu phép toán div, mod
Hiểu thêm lệnh in liệu hình tạm ngừng chơng trình
2 Những điểm cần lu ý gợi ý dạy học
Câu a 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 Pascal Chỉ cần tập trung vào bốn phép tính đơn giản cộng, trừ, nhân, chia Mặc dù Pascal có hàm sqr, nhng để biểu diễn bình phơng số dùng phép nhân số với Ví dụ, 32 = 3*3.
Lu ý, khác với toán học, Pascal sử dụng kí hiệu * / tơng ứng với phép nhân phép chia Đây HS tập viết biểu thức Pascal Do vậy, cần đa ví dụ đơn giản với phép tính đơn giản, dễ dàng tính kết Tránh đa ví dụ phức tạp, số lợng phép tính nhiều, khó tính tốn kết Làm nh để HS tập trung vào mục tiêu phần chuyển biểu thức tốn học sang mô tả Pascal mà không thời gian vào tính tốn phức tạp
(22)Trong phần b phần c, HS luyện tập soạn thảo, chỉnh sửa, biên dịch, chạy xem kết chơng trình Cần lu ý HS gõ chuẩn xác, dựa vào thông báo lỗi TP biên dịch, đối chiếu với nội dung in SGK để chỉnh sửa chơng trình có (do HS gõ nhầm)
Các biểu thức câu b biểu diễn biểu thức toán học câu a
Khi quan sát kết hình cần cho HS thấy đợc với lệnh write(), TP hiển thị hình xâu kí tự nằm cặp dấu nháy đơn hiển thị kết biểu thức đ ợc đặt sau dấu phẩy
Cần giải thích để HS thấy đợc hai dãy giống gồm số kí hiệu phép tốn, đặt cặp dấu nháy đơn Pascal hiểu xâu kí tự lệnh write hiển thị y ngun xâu kí tự hình Nhng khơng đặt cặp dấu nháy đơn Pascal coi biểu thức tính tốn biểu thức lệnh write() hiển thị kết biểu thức Đây ví dụ minh hoạ cho việc kiểu liệu khác cách xử lí liệu khác Sự kết hợp hiển thị liệu xâu kết biểu thức tạo thuận lợi cho ngời theo dõi kết tính tốn
Để HS dễ dàng kiểm chứng kết tính tốn biểu thức, tạo niềm tin, hứng thú học tập, GV dành thời gian để HS tự tính tốn đối chiếu với kết hình TP Nếu cần thiết, GV thay ví dụ SGK ví dụ khác, đơn giản hơn, dễ kiểm chứng kết HS, tránh thời gian tính tốn khơng cần thiết
Qua bµi nµy HS nhận chơng trình Pascal phần khai báo Nói cách khác 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 bắt buộc phải có
Yờu cu HS lu lại để sử dụng tiến hành
Qua HS cần hiểu đợc lệnh div, mod tiếp tục rèn luyện số thao tác nh soạn thảo, dịch, hiệu chỉnh, chạy quan sát kết chơng trình Cần lu ý số điểm sau:
- HS làm quen với phép tính div, mod; thấy đợc khác phép div, phép mod phép chia
- Biết lệnh clrscr đợc dùng để xóa tất có hình thời điểm Lệnh có th viện crt nên muốn sử dụng lệnh phải khai báo sử dụng th viện đầu chơng trình GV gợi ý HS bỏ lệnh uses crt để kiểm chứng điều (nếu nh cha thực thao tác 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 thờng đợc dùng vị trí thích hợp chơng trình để ngời quan sát kết quả, theo dõi chơng trình Việc sử dụng lệnh ví dụ việc điều khiển giao tiếp ngời-máy tính Khi làm HS phải mở chơng trình đợc ghi vào đĩa Mặc dù việc mở tệp có sẵn HS đợc thực hành nhiều lớp dới, nhiên thao tác mở tệp TP khác, HS lúng túng Do vậy, cần lu ý hớng dẫn HS thao tác mở tệp bắt đầu
ViƯc ®iỊu khiĨn ghi số thực hình TP cần giới thiệu qua, kiến thức trọng tâm cđa bµi thùc hµnh
Bµi Sư dơng biÕn chơng trình
1 Mc ớch, yờu cu
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ò biến lập trình; Hiểu lệnh gán
2 Những điểm cần lu ý gợi ý dạy häc
Đây tơng đối khó HS Cần lu ý nhấn mạnh số điểm sau:
Biến đại lợng để lu trữ liệu, thay đổi giá trị biến vị trí chơng trình Muốn sử dụng biến phải khai báo, khai báo biến phải khai báo kiểu liệu mà biến lu trữ Biến lu trữ đợc liệu có kiểu thuộc kiểu biến Ngời lập trình tự đặt tên cho biến theo quy tắc ngôn ngữ lập trình sử dụng Có thể gán giá trị cho biến tính tốn với biến
(23)Bài hồn tồn đợc tiến hành dạy học theo trình tự nh SGK Tuy nhiên, dới xin giới thiệu cách tiến hành dạy học khác để GV tham khảo
Vào đầu học GV yêu cầu HS viết chơng trình tính diện tích hình trịn có bán kính r = Do HS đợc thực hành viết biểu thức Pascal nên HS dễ dàng làm đợc
Begin
Write('Dien tich hinh troncoban kinh r=2 la: ', 3.14*2*2); readln;
end
Với cách viết nh trên, muốn tính diện tích hình trịn khác lại phải vào chơng trình để sửa lại Nh thời gian, cha kể ngời sử dụng phải biết lập trình, hiểu chơng trình vào sửa chơng trình đợc Việc đòi hỏi ngời sử dụng phải biết lập trình, sửa đợc chơng trình khơng thực tế
GV đa yêu cầu cần viết chơng trình cho phép ngời sử dụng nhập từ bàn phím bán kính hình trịn, sau tính tốn diện tích hiển thị kết hình
Nói chung HS cha đa đợc phơng án để giải vấn đề GV cần đa chơng trình thực điều để 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 cho chạy thử chơng trình để HS quan sát hiệu Dựa chơng trình GV giới thiệu biến nhớ, cách khai báo biến sử dụng lệnh read() readln() để nhập giá trị biến từ bàn phím, cụ thể giới thiệu nh sau:
Trong chơng trình sử dụng cơng cụ hỗ trợ lập trình PASCAL 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 PASCAL dành phần nhớ đặt tên cho phần nhớ R - gọi tắt nhớ R Có thể hình dung ban đầu nhớ R cha chứa giá trị (nói chứa giá trị - tuỳ thuộc vào ngơn ngữ lập trình, nhng cha phải thời điểm phù hợp để nói chi tiết với HS) Về cú pháp khai báo biến cần lu ý tên biến ngời lập trình đặt (tuân thủ theo qui tắc đặt têncủa ngơn ngữ lập trình) kiểu liệu biến Chi tiết khai báo tên đợc đề cập thực hành
Readln(R);
là lệnh dùng để nhập giá trị cho biến R từ bàn phím Gặp lệnh chơng trình dừng lại 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 số, ví dụ số 3, nhấn Enter, chơng trình "mang" số "đặt" vào nhớ R Trong lập trình việc đợc gọi gán giá trị cho biến R Đến đây, biến R có giá trị
Víi c©u lƯnh Write('Dien tich hinh tron la: ', 3.14*R*R);
điểm cần giải thích câu lệnh HS biểu thức 3.14*R*R Vì R đợc khai báo biến đợc gán giá trị nên tính tốn biểu thức này, Pascal thay tên biến R giá trị đang đợc lu ô nhớ R, nghĩa tính 3.14*3*3 Biểu thức tính diện tích hình trịn với bán kính vừa đợc nhập từ bàn phím
Khi thực chơng trình, ngời sử dụng nhập giá trị bán kính (chính xác phải số ngun bất kì, nhng GV cha cần giải thích xác, đầy đủ đây) Điều có nghĩa nhớ R nhận giá trị khác phụ thuộc vào ngời sử dụng Đây đặc điểm quan trọng biến: Giá trị biến thay đổi.
(24)ở đâu nhớ Nhiều thao tác xử lí liệu khơng thể thực đợc không sử dụng biến SGK trình bày rõ ý
Đến nhấn mạnh cho HS cần khai báo biến, kiểu biến trớc Có thể gán giá trị cho biến sử dụng biến tính tốn Giá trị biến thay đổi
Sau GV đa chơng trình dới đây:
Var
R: Integer; S: Real;
Const
So_PI = 3.14;
Begin
Write('Nhap ban kinh hinh tron R=: '); Readln(R); S:= So_PI*R*R;
Write('Dien tich hinh tron la: ', S); readln
end
So với chơng trình trớc, điểm khác biệt chơng trình khai báo số So_PI, sử dụng số So_PI để tính diện tích hình trịn biểu thức So_PI*R*R Cần nhấn mạnh cho HS cách khai báo đặc điểm số giá trị đợc xác định từ khai báo không thay đổi giá trị Thực đến lệnh PASCAL dành ô nhớ với tên So_PI gán giá trị cho ô nhớ 3.14 Tơng tự nh với biến R, biểu thức So_PI*R*R, tính tốn Pascal thay số So_PI giá trị 3.14 đợc lu ô nhớ So_PI
Câu lệnh S:= So_PI*R*R đợc sử dụng để giải thích cho HS 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 là dùng lệnh gán, kí hiệu := Gặp lệnh này, Pascal tính giá trị biểu thức bên phải phép gán gán giá trị cho biến bên trái dấu gán Cụ thể, Pascal tính tố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 khơng có nghĩa nh dấu toán học
Lu ý, TP đinh nghĩa sẵn hàm Pi giá trị số π, thực chất chơng trình khơng cần khai số So_PI Tuy nhiên, thời điểm giáo viên không đề cập đến điều để tránh gây phức tạp vấn đề
Có thể dựa vào khác hai khai báo biến chơng trình để giới thiệu cho HS cần thiết phải có phù hợp kiểu biến với kiểu liệu Cụ thể, biến R đợc khai báo với kiểu integer nhập bán kính ngời dùng đợc phép nhập giá trị nguyên Nếu dạy với máy tính, máy chiếu GV cho HS quan sát trực quan tình báo lỗi nhập bán kính số thực Có thể yêu cầu HS giải thích lại khai báo S kiểu thực, khai báo kiểu ngun có đợc khơng? Qua câu hỏi HS cần nhận thấy đợc S phải có kiểu số thực So_PI số thực, nên kết biểu thức So_PI*R*R số thực
Về vấn đề hợp kiểu biến với giá trị gán cho biến, cần HS biết đợc biến kiểu ngun đợc gán giá trị ngun, biến có kiểu thực đợc gán giá trị thực Khơng nên giới thiệu, phân tích sâu, chi tiết tình ngoại lệ biến đổi kiểu liệu
Các chơng trình ví dụ cịn đợc sử dụng để giới thiệu cho HS việc kết hợp lệnh write(), writeln() read(), readln() để tạo giao diện nhập, xuất liệu
Để chuẩn bị cho thực hành 3, GV tập để học sinh tập khai báo biến Pascal, cụ thể nh: khai báo biến để lu giữ tuổi ngời; khai báo biến để lu giữ tên ngời, khai báo biến để lu cân nặng, chiều cao ngời HS cần giải thích đợc việc lựa chọn kiểu liệu phù hợp
Cuối học này, cần khái quát cho HS biết biến, đại lợng có ngơn ngữ lập trình Trên ví dụ đợc viết ngơn ngữ Pascal
Lu ý: Việc sử dụng biến giúp cải tiến chơng trình ban đầu phép ngời sử dụng 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 biến chơng trình Tuy nhiên, ví dụ lại cha làm rõ ý nghĩa chơng trình
(25)sử dụng tất biểu thức cần dùng số Pi phải viết giá trị số 3.14 Giả sử sau muốn tính tốn với độ xác cao hơn, chẳng hạn với số Pi 3.1416, ngời lập trình phải tìm tất chỗ mà số Pi đợc viết 3.14 để thay 3.1416 Nh thời gian dễ nhầm lẫn
Nhng chơng trình sử dụng So_PI, đợc khai báo ban đầu Const So_PI = 3.14; sau cơng thức có sử dụng đến số Pi, thay phải viết 3.14 ngời lập trình dùng So_PI thay vào Vì vậy, muốn thay đổi giá trị số Pi tồn chơng trình từ 3.14 sang 3.14.16 ngời lập trình cần tiến hành chỉnh sửa câu lệnh khai báo đầu chơng trình thành So_PI = 3.1416;, khơng cần phải chỉnh sửa biểu thức chơng trình Khi tất biểu thức dùng So_PI chơng trình đợc tính tốn với số Pi có giá tr mi l 3.1416
Tình ví dụ làm rõ lợi ích ý nghÜa cđa h»ng lËp tr×nh
Nếu khả tiếp thu HS tốt thời gian, sau hoàn thành học, vào giải thích ý nghĩa trên, giáo viên lấy chơng trình minh hoạ ý nghĩa, lợi ích cho HS Phần giải thích ý nghĩa, lợi ích khơng bắt buộc phải giới thiu cho HS
3 Hớng dẫn trả lời câu hái vµ bµi tËp
Bài 1. Xét mặt lập trình, biến đại lợng đợc dùng để lu trữ liệu liệu đợc biến lu trữ thay đổi thực chơng trình Xét mặt lu trữ liệu, xem biến "tên" vùng nhớ đợc dành sẵn để lu liệu suốt trình thực chơng trình
Gán giá trị cho biến thực chất lu liệu tơng ứng vào vùng nhớ đợc đặt tên dành riêng cho biến Việc thực tính tốn xử lí với biến có nghĩa thực tính tốn xử lí với liệu đợc gán
Giả sử X đợc khai báo biến với kiểu liệu số nguyên X đợc gán liệu số Sau khai báo, chơng trình dành riêng vùng nhớ cho biến X, gán cho X vùng nhớ lu liệu Lệnh ghi X hình có nghĩa ghi số hình
Lu ý giáo viên Khi vùng nhớ đợc khai báo để lu liệu làm giá trị một biến, vùng nhớ khơng đợc phép sử dụng vào mục đích khác Do vậy, kĩ lập trình sử dụng biến tốt, trờng hợp việc sử dụng nhớ bị hạn chế Nhng với công nghệ nay, nhớ máy tính có dung lợng lớn nên vấn đề hạn chế sử dụng biến chơng trình khơng cịn 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 khai báo kiểu liệu biến
Khi khai báo biến, việc tên biến đợc đa vào danh sách đối tợng quản lí, máy tính (thơng qua chơng trình dịch) xác định kiểu biến dành vùng nhớ có độ lớn thích hợp với phạm vi kiểu biến để lu giá trị biến Ví dụ, để lu giá trị số nguyên, khai báo biến kiểu byte, máy tính dành vùng nhớ có độ lớn byte, nhng khai báo biến kiểu nguyên, máy tính dành vùng nhớ có độ lớn byte, vùng nhớ byte đợc dành cho biến đợc khai báo với kiểu số thực, Nhờ việc sử dụng nhớ hiệu Ngồi máy tính biết áp dụng phép tốn thích hợp đối vi giỏ tr ca bin
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ệ
Bi 4. Mc dự u phải khai báo trớc sử dụng chơng trình, khác biến chỗ giá trị không thay đổi suốt q trình thực chơng trình, cịn giá trị biến thay đổi đợc thời điểm thực chơng trình
Bài 5. Không thể gán lại giá trị 3.1415 cho Pi phần thân chơng trình giá trị khơng thay đổi suốt trình thực chơng trình
Bài 6. a) Hợp lệ; b) Không hợp lệ tên biến khơng hợp lệ; c) Khơng hợp lệ phải đợc cho giá trị khai báo; c) Khơng hợp lệ phải đợc cho giá trị khai báo; d) Khơng hợp lệ khơng đợc gán giá trị cho biến khai báo (cách gán giá trị cho biến không cú pháp)
Bài 7. Các lỗi chơng trình: (1) Thừa dấu dòng (chỉ cần dấu hai chấm); (2) Thừa dấu hai chấm dòng (với cần dấu bằng); (3) Thiếu dấu chấm phẩy dòng 4; (4) Khai báo kiểu liệu biến b không phù hợp: Khi chia hai số nguyên, kết ln ln số thực, cho dù có chia hết hay khơng Do cần phải khai báo biến b biến có kiểu liệu số thực
Bài 8. Cách khai báo hợp lí:
(26)Bài 9. Cần sử dụng biến sau với học sinh: biến kiểu xâu để lu tên, ví dụ Hoa, Mai, , biến kiểu số ngun để lu điểm, ví dụ Diem_Hoa, Diem_Mai; ngồi cần một biến Trungbinh biến kiểu số thực để ghi điểm trung bình lớp
Bµi 10. Chơng trình Pascal nh sau đây:
uses crt;
var r: integer; C,S: real;
begin
clrscr;
write('Nhap ban kinh r = '); readln(r); C:=2*Pi*r;
S:=Pi*r*r;
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 Khai báo sử dụng biến
1 Mục đích, yêu cầu
Thực đợc khai báo cú pháp, lựa chọn đợc kiểu liệu phù hợp cho biến
Kết hợp đợc lệnh write(), writeln() với read() readln() để thực việc nhập liệu cho biến từ bàn phím
Hiểu kiểu 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 bin
Hiểu cách khai báo sư dơng h»ng
Hiểu thực đợc việc tráo đổi giá trị hai biến
2 Những điểm cần lu ý gợi ý dạy học
Chơng trình câu a, 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) số tiền cớc phí vận chuyển (cố định 10000) Tổng số tiền phải trả số tiền mua hàng cộng với cớc phí
Với HS tập khai báo biến Pascal, cần cho HS tìm hiểu cú pháp khai báo biến, đặt tên theo quy định Pascal, chọn kiểu liệu bin
Rèn luyện soạn thảo, dịch, hiệu chỉnh, chạy kiểm tra kết mục tiêu cđa bµi nµy
Cần hớng dẫn để HS tìm hiểu chức lệnh Readln(tên biến); để nhập giá trị biến; Sự kết hợp write() readln() việc nhập giá trị biến từ bàn phím; Việc sử dụng biến biểu thức thanhtien:= soluong*dongia+cuocphi
Các thích đặt cặp dấu ngoặc {} (* *) đợc dùng để giải thích câu lệnh, ý đồ ngời viết chơng trình Gặp cặp dấu ngoặc Pascal bỏ qua, không dịch nội dung bên Việc viết thích chơng trình đơi cần thiết để giúp ngời khác nhanh chóng hiểu đợc chơng trình, chí để ngời viết chơng trình dễ dàng xem lại chỉnh sửa chơng trình
Có thể gợi ý HS nhập số lợng số thực, ví dụ 6.5 chẳng hạn giải thích tợng xảy Nguyên nhân kiểu liệu nhập vào số thực không phù hợp với kiểu biến Soluong khai báo chơng trình số nguyên Có thể gợi ý để HS thay đổi kiểu biến số l ợng khai báo để nhập số lợng số thực
Khi nhập số liệu (1, 35000), kết không nữa, nguyên nhân t ợng tràn số Biến Soluong có kiểu integer nên cho phép chứa giá trị khoảng từ 32768 đến 32767, giá trị 35000 khoảng giá trị gây lỗi, kết đ a khơng xác Có thể gợi ý cho HS chỉnh sửa khai báo kiểu liệu để khắc phục hạn chế
(27)không cần thiết phải khai báo biến kiểu số nguyên, mà cần kiểu byte), mặt khác giúp tránh lỗi tràn liệu dẫn đến kết sai Trong thực hành sau, giáo viên nên lu ý học sinh đến điểm
Với 2, trọng tâm cho HS luyện tập với lệnh gán thực việc tráo đổi giá trị hai biến x, y Đây công việc hay gặp lập trình qua ví dụ HS hiểu rõ biến, cách sử dụng biến Bài giới thiệu cách viết câu lệnh nhập nhiều liệu từ bàn phím câu lnh writeln hoc write
Để thực hành này, cã thĨ tiÕn hµnh nh sau:
Cho HS gâ chơng trình SGK, tiến hành dịch, chỉnh sửa cho chạy chơng trình
Do thông báo cho ngời dùng yêu cầu nhập giá trị tơng ứng biến x, y nên HS gặp khó khăn nhập GV cần hớng dẫn HS cú pháp câu lệnh cách nhập hai số nguyên (cách dấu cách) nhấn Enter quan sát kết
Nờn gi ý cho HS cải tiến chơng trình để hớng dẫn ngời sử dụng nhập giá trị cho x, y từ bàn phím In hình giá trị x, y vừa đợc ngời sử dụng nhập vào in hình giá trị x, y sau tráo đổi giá trị Có thể tham khảo chơng trình Tinhtien.pas để thực việc
Về việc tráo đổi giá trị hai biến x biến y, lấy ví dụ minh hoạ nh việc muốn tráo đổi hai cốc nớc Giả sử có hai cốc nớc, cốc nớc chứa nớc màu đỏ, cốc nớc chứa nớc màu xanh Làm để tráo đổi nớc hai cốc nớc Đơng nhiên phải dùng cốc thứ ba làm trung gian để thực đ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 cốc Z cốc trung gian, không chứa Cách tráo đổi nớc chứa cốc X cốc Y nh sau:;
Đổ nớc đỏ cốc X sang cốc Z; Đổ nớc xanh cốc Y sang cốc X; Đổ nớc đỏ cốc Z sang cốc Y
Sau thực nh nớc hai cốc đợc tráo sang
Việc tráo đổi giá trị biến tơng tự, chơng trình phải sử dụng biến z làm biến trung gian để lu giữ giá trị ban đầu biến x Cụ thể:
z:=x; {Lu gi¸ trị biến x vào biết z}
x:=y; {Giỏ trị biến x đợc thay giá trị biến y}
y:=z; { Giá trị biến y đợc thay giá trị biến z, giá trị biến z lúc giá trị biết x ban đầu}
* Có khác biệt cần đợc lu ý Khi đổ xong nớc cốc Y sang nớc cốc X cốc Y có nớc cịn cốc X hết nớc Khác với gán X:= Y; giá trị biến X giá trị biến Y, nhng giá trị biến Y không Nếu học sinh thắc mắc GV giải thích điều này, học sinh khơng thắc mắc GV khơng nên giải thích để tránh làm phức tạp
Chơng trình sau 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); readln
end.
Lu ý, để HS dễ tiếp thu, chơng trình lựa chọn cách viết nhiều lệnh đơn giản, ghép số lệnh thành lệnh để chơng trình ngắn gọn ví dụ, 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:
(28)Bài Từ tốn đến chơng trình
1 Mục đích, u cầu
Biết khái niệm toán, thuật toán; Biết bớc giải toán máy tính;
Xác định đợc Input, Output toán n gin;
Biết chơng trình thể thuật toán ngôn ngữ cụ thể Biết mô tả thuật toán phơng pháp liệt kê c¸c bíc
HiĨu tht to¸n tÝnh tỉng cđa N số tự nhiên đầu tiên, tìm số lớn dÃy số
2 Những điểm cần lu ý gợi ý dạy học
Bi toỏn v thuật toán để giải toán nội dung quan trọng, khơng nói quan trọng lập trình Nếu học sinh nắm vững đợc kiến thức dễ dàng nhiều việc tiếp thu kiến thức sau Vì lẽ tác giả đề xuất dành thời l ợng cho Bài 04 tiết lí thuyết 02 tiết tập Giáo viên cần tận dụng hết thời gian dành cho để truyền đạt cho học sinh cách kỹ lỡng
Khái niệm toán giải toán trở thành quen với học sinh môn học khác nh Tốn, Vật lí, Bài tốn tin học khơng tốn lĩnh vực tốn học mà cịn nhiệm vụ, công việc cần giải sống thực tiễn (nhiều chẳng liên quan đến tốn học) nh: tính điểm trung bình mơn học, học kì, nấu ă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 khái niệm toán mà em đợc biết mơn học khác, sử dụng lại ví dụ tốn điều khiển rơ-bốt nhặt rác HS học Ví dụ cho thấy tốn cịn cơng việc, nhiệm vụ gắn liền với sống hàng ngày Do đợc tiếp cận với ví dụ học nên việc tìm điều kiện cho trớc kết thu đợc toán dễ dàng với HS
Để dẫn dắt đến khái niệm xác định tốn, GV viên dựa vào giả thiết kết luận tốn mơn Tốn để dẫn dắt học sinh xác định Input, Output toán Tin học Trong mơn tốn, thờng trớc bắt đầu giải tốn em quen với việc tìm giả thiết kết luận toán Trong tin học, phần giả thiết điều kiện cho trớc (Input), phần kết luận kết cần thu đợc (Output)
Có thể sử dụng tốn đơn giản, quen thuộc với HS để HS dễ dàng tìm đợc điều kiện cho trớc (giả thiết) kết cần thu đợc (kết luận) tốn (khơng thiết phải lấy ví dụ SGK)
Để máy tính "giải" đợc tốn ngời phải dẫn cho máy tính Tuy nhiên, dẫn ngời để máy tính thực phải cụ thể, chi tiết đặc biệt máy tính phải "hiểu" đợc dẫn Có thể đặt câu hỏi với HS: Máy tính có "giải" đợc tốn khơng? Có thể sử dụng ví dụ rơ-bốt nhặt rác để HS thảo luận tìm câu trả lời Việc viết ch ơng trình điều khiển máy tính rẽ phải, tiến, rẽ trái, nhặt rác ngời nghĩ ra, máy tính thực thao tác theo dẫn ngời
Nh vậy, ngời tìm cách thức, thao tác trình tự thực thao tác để giải cơng việc, máy tính biết thực thao tác theo dẫn Máy tính khơng tự giải đợc tốn
Tập hợp bớc để điều khiển rơ-bốt nhặt rác thuật tốn
Có thể mơ tả thuật toán cách liệt kê bớc nh giới thiệu SGK sơ đồ khối Tuy nhiên, GV không cần giới thiệu thêm cách mô tả sơ đồ khối
HS biết máy tính hiểu đợc ngơn ngữ máy Ngơn ngữ lập trình ngơn ngữ ng-ời sử dụng để viết chơng trình Vì vậy, gợi ý để HS suy luận dẫn đến phải thể thuật toán ngơn ngữ lập trình, cụ thể: Cách mơ tả thuật tốn với ngơn ngữ tự nhiên có ng ời hiểu, máy tính khơng hiểu đợc Để máy tính hiểu thực đợc thuật tốn cần thể thuật tốn ngơn ngữ lập trình Việc thể thuật tốn ngơn ngữ lập trình để máy tính hiểu, thực đợc viết chơng trình
(29)Nội dung mục quan trọng tơng đối khó với HS Cần dành thời gian thích đáng cho mục Nên sử dụng tiết tập để bổ sung thêm thời lợng dạy học cho nội dung Mục tiêu ví dụ mục rèn luyện kĩ xác định Input, Ouput mơ tả thuật tốn cách liệt kê b-ớc với việc giới thiệu thuật toán Các thuật toán giới thiệu mục thuật tốn học sinh cần tiếp thu Trong đó, thuật tốn tìm số lớn dãy số thuật toán đợc yêu cầu cụ thể chuẩn kiến thức kĩ Hơn nữa, ví dụ mục cịn đề cập đến thuật tốn liên quan đến cấu trúc rẽ nhánh, cấu trúc lặp số toán sau
Lu ý tất thuật toán nêu mục phần câu hỏi tập Bài đợc sử dụng làm ví dụ minh họa để giải câu hỏi tập sau Do việc việc rèn luyện kĩ với ví dụ giải số tập sẽ tạo điều kiện thuận lợi để HS tiếp thu nội dung sau
§Ĩ gióp HS hiĨu râ vỊ tht to¸n, GV cã thĨ mô thuật toán với liệu cụ thể Ví dụ:
+ Mô thuật toán tính tổng N số tự nhiên đầu tiên, với N = 10 (trong SGK, N= 100)
Bíc 10
i 10 11
i≤ N §óng §óng §óng §óng §óng §óng §ón g
§óng §óng §ó ng
Sai
SUM 10 15 21 28 36 45 55 Kết
thúc
+ Mô thuật toán t×m sè lín nhÊt d·y sè cho tríc:
D·y sè 5 3 4 7 6 3 15 9 11
i 1 2 3 4 5 6 7 8 9 10
i>n Sai Sai Sai Sai Sai Sai Sai Sai Sai §óng
ai > SMAX
Sai Sai §óng Sai Sai §óng §óng §óng KÕt thóc
SMAX 5 7 15 15 15
3 Hớng dẫn trả lời câu hỏi tập Bài 1. Đáp án:
a) INPUT: Danh s¸ch hä cđa c¸c häc sinh líp OUTPUT: Sè häc sinh cã hä TrÇn
b) INPUT: D·y n số
OUTPUT: Tổng phần tử lớn h¬n c) INPUT: D·y n sè
OUTPUT: Sè số có giá trị nhỏ (có thể hay nhiÒu sè)
Bài 2. Sau ba bớc, x có giá trị ban đầu y y có giá trị ban đầu x, tức giá trị hai biến x y đợc hoán đổi cho nhau.
Bài 3. Mô tả thuật toán:
INPUT: Ba số dơng a > 0, b > c >
OUTPUT: Thông báo "a, b c ba cạnh tam giác" thông báo "a, b c ba cạnh tam giác"
Bớc Tính a + b NÕu a + b c, chun tíi bíc 5. Bíc TÝnh b + c NÕu b + c c, chun tíi bíc 5. Bíc TÝnh a + c NÕu a + c b, chuyển tới bớc 5.
Bớc Thông báo "a, b c ba cạnh tam giác" kết thúc thuật toán. Bớc Thông báo "a, b c ba cạnh tam giác" kết thúc thuật toán.
Bài 4. Có thể giải toán cách sử dụng biến phụ không dùng biến phụ Tht to¸n Sư dơng biÕn phơ z.
(30)OUTPUT: Hai biến x y có giá trị tăng dần Bớc Nếu x y, chuyển tíi bíc 5.
Bíc z x Bíc x y. Bíc y z.
Bíc KÕt thóc tht to¸n.
Tht to¸n Không sử dụng biến phụ (xem tập trên). INPUT: Hai biến x y
OUTPUT: Hai biến x y có giá trị tăng dần Bíc NÕu x y, chun tíi bíc 5.
Bíc x x + y Bíc y x y. Bíc x x y.
Bíc KÕt thóc tht to¸n.
Bài 5. Trớc hết, cần, ta hoán đổi giá trị hai biến x y để chúng có giá trị tăng dần Sau lần lợt so sánh z với x z với y, sau thực bớc hoán đổi giá trị cần thiết (xem lại ví dụ 5, SGK)
INPUT: Ba biÕn x, y vµ z
OUTPUT: Ba biÕn x, y z có giá trị tăng dần Bớc NÕu x y, chun tíi bíc 3.
Bíc t x, x y, y t (t lµ biÕn trung gian Sau bíc nµy x y có giá trị tăng dần.) Bớc Nếu y z, chun tíi bíc 6.
Bớc Nếu z < x, t x, x z z t, (với t biến trung gian) chuyển đến bớc 6. Bớc t y, y z z t.
Bíc Kết thúc thuật toán.
Bài 6. a) Tính tổng phần tử dÃy số A = {a1, a2, , an} chotríc
INPUT: n vµ d·y n sè a1, a2, , an
OUTPUT: Tæng S = a1 + a2 + + an
Bíc S 0; i 0. Bíc i i + 1.
Bíc NÕu i n, S S + ai quay lại bớc
Bớc Thông báo S kết thúc thuật toán.
b) T×m sè nhá nhÊt d·y n sè a1, a2, , an cho trớc Thuật toán tơng tù nh tht to¸n
tìm giá trị lớn dãy n số cho (xem ví dụ 6, 5) Điều khác biệt thêm bớc nhập số n dãy n số a1, a2, , an
INPUT: n vµ d·y n sè a1, a2, , an
OUTPUT: Min = Min{ a1, a2, , an}
Bíc NhËp n vµ d·y n sè a1, a2, , an
Bíc G¸n Min a1; i Bíc i i + 1.
Bớc Nếu i > n, chuyển đến bớc 6.
Bíc NÕu ai≥ Min, quay l¹i bíc Trong trờng hợp ngợc lại, gán Min ai quay lại bớc
Bớc Ghi giá trị Min hình kết thúc thuật toán.
Bài 7. a) Đếm số số dơng d·y sè A = {a1, a2, , an} cho tríc
INPUT: n vµ d·y n sè a1, a2, , an
OUTPUT: Soduong = Sè c¸c sè ai >
Bíc G¸n Soduong 0, i 0. Bíc i i + 1.
(31)Bíc NÕu ai > 0, g¸n Soduong Soduong +1 råi quay l¹i bíc Trong trêng hợp ngợc lại,
cũng quay lại bớc
Bớc Thông báo giá trị Soduong kết thúc thuật toán.
b) Tìm vị trí số dơng dÃy số A = {a1, a2, , an} cho trớc, tính từ phải sang
trái.
INPUT: n vµ d·y n sè a1, a2, , an
OUTPUT: Vitri = Vị trí số dơng đầu tiªn d·y sè a1, a2, , an, tÝnh tõ phải sang trái
Bớc Gán i n
Bíc NÕu > 0, chun tíi bíc 5.
Bíc G¸n i i
Bíc NÕu i < 1, chun tới bớc 5; ngợc lại, quay lại bớc 2. Bớc Thông báo giá trị Vitri = i kết thúc thuật toán
Bài 8. Tính tổng sè d¬ng d·y sè A = {a1, a2, , an} chotríc
INPUT: n vµ d·y n sè a1, a2, , an
OUTPUT: S = Tỉng c¸c sè ai > d·y a1, a2, , an
Bíc S 0; i 0. Bíc i i + 1.
Bíc NÕu ai > 0, S S + ai; ngợc lại, giữ nguyên S
Bớc Nếu i n, quay lại bớc 2. Bớc Thông báo S kết thúc thuật toán.
Bài Câu lệnh điều kiƯn
1 Mục đích, u cầu
BiÕt cần thiết cấu trúc rẽ nhánh lập tr×nh
Biết cấu trúc rẽ nhánh đợc sử dụng để dẫn cho máy tính thực thao tác phụ thuộc vào điều kiện
Hiểu cấu trúc rẽ nhánh có hai dạng: Dạng thiếu dạng đủ
Biết ngơn ngữ lập trình có câu lệnh để thể cấu trúc rẽ nhánh
Hiểu cú pháp, hoạt động câu lệnh điều kiện dạng thiếu dạng đủ Pascal Bớc đầu viết đợc câu lệnh điều kiện Pascal
2 Những điểm cần lu ý gợi ý dạy học
Trc bt u bi học mới, GV kiểm tra cũ yêu cầu học sinh nhận xét thứ tự thực câu lệnh chơng trình học GV cần nhấn mạnh cho HS biết rằng: lệnh chơng trình đợc thực theo thứ tự từ xuống dới Thực lệnh từ xuống dới thứ tự thực ngầm định (và cấu trúc điều khiển) ngôn ngữ lập trình
Bắt đầu học mới, GV xuất phát từ hoạt động phụ thuộc vào điều kiện đời sống để dẫn dắt HS đến cần thiết cần có cấu trúc rẽ nhánh ngơn ngữ lập trình Nhiều tốn mà máy tính giúp ngời giải vấn đề đời sống thực tiễn Trong thực tiễn, cơng việc đợc thực nh điều kiện đợc thoả mãn Vì vậy, ngơn ngữ lập trình phải có cấu trúc điều khiển cho phép giải tình Nghĩa là, chơng trình số câu lệnh đợc thực không đợc thực phụ thuộc vào điều kiện cụ thể Theo nghĩa cấu trúc rẽ nhánh cho phép “phá vỡ” tính trình thực lệnh chơng trình
Cũng từ ví dụ hoạt động phụ thuộc vào điều kiện, GV khái quát lên hai cấu trúc rẽ nhánh dạng thiếu dạng đủ ngôn ngữ tự nhiên nh sau:
Nếu
Nếu không th×
Tơng ứng với hai cấu trúc rẽ nhánh dạng thiếu dạng đủ, Pascal có hai câu lệnh điều kiện dạng thiếu dạng đủ nh sau:
Dạng thiếu: if <điều kiện> then <câu lệnh>;
(32)Sau giới thiệu cho HS sơ đồ hoạt động câu lệnh điều kiện dạng thiếu dạng đủ
(Xuân sửa lu đồ nhé)
ở dạng thiếu: Nếu điều kiện thoả mãn câu lệnh đợc thực hiện, ngợc lại bỏ qua câu lệnh
(Xuân sửa lu đồ nhé)
ở dạng đủ: Nếu điều kiện thoả mãn câu lệnh đợc thực hiện, ngợc lại thực câu lệnh 2.
Trong đó, câu lệnh, câu lệnh 1, câu lệnh câu lệnh Pascal
Điều kiện thờng phép so sánh (lu ý, HS THCS cha học biểu thức quan hệ nên đây dùng cụm từ phép so sánh để nói điều kiện câu lệnh điều kiện) Phép so sánh cho kết tơng đơng điều kiện đợc thoả mãn, ngợc lại phép so sánh cho kết sai tơng đơng với điều kiện không thoả mãn
Trong SGK dành mục mục để nói điều kiện phép so sánh Trọng tâm hai mục cần cho HS biết lập trình điều kiện thờng đợc thể phép so sánh (biểu thức so sánh) khái niệm điều kiện đợc thoả mãn (hay không đợc thoả mãn) đời sống tơng đơng với khái niệm phép so sánh cho kết (hay sai) ngơn ngữ lập trình
Mặc dù phép so sánh, kí hiệu phép so sánh Pascal đợc giới thiệu học trớc Tuy nhiên, HS cha đợc luyện tập, GV cần lu ý hớng dẫn HS luyện tập phép so sánh với việc tìm hiểu, tập viết câu lệnh điều kiện học
Đến GV sử dụng ví dụ mục (SGK) để HS luyện tập nhằm hiểu rõ hoạt động câu lệnh điều kiện dạng thiếu, dạng đủ, biết ý nghĩa câu lệnh, câu lệnh 1, câu lệnh điều kiện Cần dành thời gian thích đáng cho HS luyện tập qua ví dụ minh hoạ (khoảng tiết học) Các ví dụ đơn giản, dễ hiểu để HS dễ dàng nắm bắt đ ợc hoạt động câu lệnh điều kiện, ý nghĩa biểu thức điều kiện, câu lệnh Giáo viên chủ động chọn ví dụ khác, nhng tránh ví dụ phức tạp điều kiện, nhiều phép so sánh
Cuối học GV cần khái quát hoá để HS biết cấu trúc rẽ nhánh, hoạt động cấu trúc rẽ nhánh giống ngơn ngữ lập trình Nhng ngơn ngữ lập trình lại có câu lệnh riêng để thể cu trỳc r nhỏnh
if <điều kiện> then <câu lƯnh>;
(33)Lu ý: Hồn tồn theo trình tự giới thiệu SGK để tiến hành dạy học học Tuy nhiên, tiến trình dạy học theo cách giới thiệu phơng án khả thi Phơng án từ câu lệnh cụ thể Pascal, sau khái quát thành kiến thức, nguyên tắc chung cho ngôn ngữ lập trình Căn vào điều kiện thực tế, GV chủ động lựa chọn cách tiến hành phù hợp
Việc dịch câu lệnh if then if then esle tiếng Việt tơng ứng thì khơng cần thiết cho HS dễ nhớ ý nghĩa câu lệnh, với HS cha đợc học tiếng Anh
3 Híng dÉn trả lời câu hỏi tập
Bi 1. Có thể nêu vài ví dụ hoạt động ngày phụ thuộc vào điều kiện Dới số ví dụ:
a) Nếu đạt điểm tổng kết năm cao 8.5, em đạt danh hiệu "Học sinh giỏi" b) Nếu không đợc cắm điện, máy tính để bàn em khơng hoạt động đợc c) Nếu bị bệnh, em (cần phải) đến phòng khám để bác sĩ khám bệnh
d) Nếu khơng đợc tới đủ nớc thời kì phát triển, lúa khơng cho thu hoạch cao
Bµi 2. §¸p ¸n: a) §óng; b) §óng; c) Sai; d) Sai; e) Sai, x
Bài 3. Giả sử Điểm_1 số điểm ngời thứ Điểm_2 số điểm ngời thứ hai, ngời thứ nghĩ đầu số tự nhiªn n < 10
Điều kiện trị chơi ngời thứ hai đốn số n Khi Điểm_2 đợc cộng thêm 1; ngợc lại, Điểm_2 đợc giữ nguyên Tơng tự, ngời thứ hai nghĩ số tự nhiên m, điều kiện thứ hai là ngời thứ đốn số m Khi Điểm_1 đợc cộng thêm 1; ngợc lại, Điểm_1 đợc giữ nguyên
Điều kiện trò chơi sau 10 lần, Điểm_1 > Điểm_2 ngời thứ đợc tuyên bố thắng cuộc; ngợc lại, ngời thứ hai thắng Trờng hợp Điểm_1 = Điểm_2 khơng có ngời thắng ng-ời thua
Bài 4. Các điều kiện để điều khiển khay trị chơi ngời chơi nhấn phím mũi tên phím Nếu ngời chơi nhấn phím , biểu tợng khay di chuyển sang phải đơn vị khoảng cách; phím đợc nhấn, biểu tợng khay di chuyển sang trái Nếu phím khác ngồi hai phím mũi tên đợc nhấn, khay giữ nguyên vị trí
Bµi 5. a) Sai (thõa dÊu hai chÊm);
b) Sai (thõa dÊu chÊm phÈy thø nhÊt);
c) Đúng, nhng câu lệnh điều kiện khơng có tác dụng Tuy nhiên, với mục đích gán giá trị của biến b cho biến a giá trị x lớn câu lệnh sai (thừa dấu chấm phy sau t then);
d) Đúng, phép gán m:=n không phụ thuộc điều kiện x>5; ngợc lại, sai cần đa hai câu lệnh a:=b; m:=n; vào cặp từ khoá begin end;
e) Sai (thừa dÊu chÊm phÈy thø nhÊt); f) §óng.
Bài 6. a) Vì 45 chia hết cho 3, điều kiện đợc thoả mãn nên giá trị X đợc tăng lên 1, tức 6; b) Điều kiện không đợc thoả mãn nên câu lệnh không đợc thực hiện, tức X giữ nguyên giá trị
Bµi 7. ThuËt to¸n: Bíc NhËp sè n
Bíc Nếu n chia hết cho 2, ghi hình "n số chẵn"; ngợc lại, ghi hình "n số lẻ"
Bớc Kết thúc thuật toán.
Bài 8. Chơng trình Pascal:
uses crt;
var X,Y,Z: real;
begin
clrscr;
write('Nhap so X = '); readln(X); write('Nhap so Y = '); readln(Y);
(34)readln
end Bµi 9. Tht to¸n:
Bíc NhËp ba sè A, B vµ C
Bíc NÕu A > B, X A, A B, B X Bíc NÕu C < A, X A, A C, C X Bíc NÕu C < B, X B, B C, C X
Bớc Ghi giá trị biến theo thø tù A, B vµ C vµ kÕt thóc thuật toán. Chơng trình Pascal:
uses crt;
var A, B, C, X: integer;
begin
clrscr;
write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C);
if A>B then begin X:=A; A:=B; B:=X end; if C<A then begin X:=A; A:=C; C:=X end; if C<B then begin X:=B; B:=C; C:=X end; writeln(A,' ',B,' ',C);
readln;
end
Bµi 10. Tht to¸n:
Bíc NhËp ba sè A, B vµ C
Bíc NÕu A + B C hc B + C A hc C + A B, thông báo A, B C ba cạnh tam giác chun tíi bíc
Bíc NÕu A2 + B2 = C hc B2 + C2 = A2 hc C2 + A2 = B, thông báo A, B C ba cạnh của tam giác vuông chun tíi bíc
Bớc Nếu A = B B = C, thông báo A, B C ba cạnh tam giác đều; ngợc lại, nếu A = B B = C A = C, thông báo A, B C ba cạnh tam giác cân. Bớc Kết thỳc thut toỏn
Chơng trình Pascal:
program Tam_giac;
uses crt;
var A, B, C, X: integer;
begin
clrscr;
write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C);
if (A+B<=C) or (B+C<=A) or (A+C<=B)then
writeln('Day khong la ba canh cua mot tam giac')
elseif (A*A=B*B+C*C)or(B*B=A*A+C*C) or (C*C=A*A+B*B) then
writeln('Day la ba canh cua tam giac vuong')
else if (A=B) and(B=C) and (A=C) then
writeln('Day la ba canh cua tam giac deu')
(35)writeln('Day la ba canh cua tam giac can')
else
writeln('Day chi la ba canh cua tam giac thuong'); readln;
end
Bài thực hành Sử dụng lệnh rẽ nhánh
1 Mục đích, yêu cầu
Viết đợc đợc câu lệnh điều kiện if then chơng trình;
Rèn luyện kĩ ban đầu đọc chơng trình đơn giản hiểu đợc ý nghĩa thuật tốn sử dụng chơng trình
2 Những điểm cần lu ý gợi ý dạy học
Bài HS thực hành sử dụng lệnh if then Do vậy, ví dụ cần đơn giản, dễ hiểu để HS dễ dàng nhận ý nghĩa, hoạt động câu lệnh điều kiện, biểu thức điều kiện, câu lệnh cấu trúc rẽ nhánh
HS đợc làm quen với thuật tốn ví dụ 4, Do vậy, nói chung HS khơng gặp khó khăn thuật tốn tìm hiểu chơng trình Sap_xep tập thực hành Hồn tồn sử dụng chơng trình Sap_xep để đạt mục tiêu thực hành sử dụng câu lệnh if then else
Tuy nhiên, dới xin giới thiệu phơng án dựa yêu cầu nhng có chỉnh sửa đơi chút để GV tham khảo tiến hành dạy học
Giữ nguyên yêu cầu đề Đối với câu a, yêu cầu HS mô tả bớc để giải toán Các bớc để giải toán (Nội dung nên đợc dạy tiết lý thuyết tiết tập trớc thực hành):
Bíc NhËp hai sè nguyªn a, b tõ bµn phÝm;
Bớc Nếu a ≤ b hiển thị hình giá trị biến a trớc đến giá trị biến b; Bớc Nếu b < a hiển thị hình giá trị biến b trớc đến giá trị biến a; Bớc Kết thúc.
Trên sở phần mơ tả thuật tốn, GV hớng dẫnđể HS viết đợc chơng trình tơng ứng Chơng trình nh sau:
program Sap_xep;
uses crt;
var A, B, T: integer;
begin
clrscr;
{Buoc 1: Nhap hai so nguyen a, b tu ban phim} write('Nhap so A:'); readln(A);
write('Nhap so B:'); readln(B);
{Buoc 2: Neu a < b thi hien thi man hinh gia tri bien a truoc roi den gia tri bien b}
if A<=B then write(A,' ',B);
{Neu b < a thi hien thi man hinh gia tri bien b truoc roi den gia tri bien a}
if B<A then write(B,' ',A); readln;
End
(36)Tuy nhiên, cách tiếp cận có nhợc điểm sử dụng hay câu lệnh if then thay cho câu lệnh
Yêu cầu HS chạy chơng trình thử với số liệu có câu c), (SGK) Có số điểm chÝnh GV cÇn lu ý cho HS tiÕn hµnh bµi nh sau:
- Với câu lệnh điều kiện dạng đủ if then else, lu ý không đặt dấu chấm phảy sau câu lệnh trớc từ khoá else Pascal dùng dấu chấm phảy để phân cách câu lệnh (không phải kết thúc cõu lnh)
- Đoạn chơng trình:
If Long>Trang then writeln('Ban Long cao hon');
If Long<Trang then writeln('Ban Trang cao hon')
else writeln('Hai ban cao bang nhau');
Thoạt nhìn, theo cách suy luận nhiều HS kết hợp hai câu lệnh điều kiện đảm bảo đầy đủ trờng hợp, đặc biệt câu lệnh thứ xét đến trờng hợp Long>Trang nên câu lệnh thứ hai khơng cịn xét đến trờng hợp mà xét đến hai trờng hợp lại Long<Trang Long=Trang Cách suy luận nh khơng phải khơng có lí xét trờng hợp ngời xử lí tình Tuy nhiên, máy tính xử lí "máy móc"
Khi máy tính thực đến câu lệnh thứ hai
If Long<Trang then writeln('Ban Trang cao hon')
else writeln('Hai ban cao bang nhau');
thì máy tính "khơng cịn nhớ" thực câu lệnh điều kiện thứ trớc
If Long>Trang then writeln('Ban Long cao hon');
Chính vậy, thực đến lệnh thứ hai máy tính lại xét tất trờng hợp Vì vậy, dẫn đến lỗi thực chơng trình trờng hợp Long cao Tang
Dới xin phân tích rõ đoạn chơng trình này, GV xem xét, tham khảo để giảng dạy cho HS GV không cần dành nhiều thời gian giải thích chi tiết, tỉ mỉ nh trình bày dới
Khi thực đến câu lệnh thứ hai, máy tính thử kiểm tra điều kiện Long<Trang có tr-ờng hợp xảy nh sau:
- Nếu Long<Trang cho kết đúng, tức Trang cao Long máy hiển thi hình dịng chữ 'Ban Trang cao hon' Trong trờng hợp câu lệnh trớc
If Long>Trang then writeln('Ban Long cao hon');
đã không thực việc hiển thị hình dịng chữ "Ban Long cao hon" biểu thức điều kiện Long>Trang câu lệnh điều kiện thiếu cho kết sai Kết màn hình hiển thị dòng chữ 'Ban Trang cao hon'.
- Nếu Long<Trang cho kết sai, Pascal thực câu lệnh in hình dịng chữ 'Hai ban cao bang nhau' Tuy nhiên, có hai trờng hợp dẫn đến biểu thức Long<Trang cho kết sai:
- Long Trang cao nhau, biểu thức điều kiện Long>Trang cho kết sai câu lệnh điều kiện thứ không thực việc hiển thị hình dịng chữ Kết hình có dịng chữ 'Hai ban cao bang nhau'
- Long cao Trang, biểu thức điều kiện Long>Trang câu lệnh điều kiện thứ cho kết Vì vậy, câu lệnh điều kiện thứ thực hiển thị hình dịng chữ 'Ban Long cao hon' Nh vậy, hình hiển thị hai dịng thơng báo khác 'Ban Long cao hon' va 'Hai ban cao bang nhau' Đây lỗi chơng trình cần đợc chỉnh sửa
(37)Về cách dạy phần này, nên cho HS gõ chơng trình vào máy chạy thử với liệu kiểm tra Các số liệu cần phủ kín trờng hợp: Trang cao Long, hai bạn cao Long cao Trang Yêu cầu HS quan sát kết để phát vấn đề tìm hiểu chơng trình, phát lỗi
Thực ra, việc thử chơng trình với số liệu mẫu công đoạn phát triển phần mềm, gọi bớc kiểm thử Sau lập trình xong, phần mềm cần đợc thử nghiệm với số liệu mẫu (hay gọi test) mà ngời ta dễ dàng biết đợc kết để kiểm chứng với kết mà chơng trình đa
Việc thử chơng trình với liệu test chứng minh đợc chơng trình sai mà khơng chứng minh đợc chơng trình Nghĩa thử với liệu test chơng trình cho kết sai khác với kết đợc biết trớc kết luận chơng trình sai, nhng thử với số liệu test mà chơng trình cho kết với kết đợc biết trớc khơng thể kết luận chơng trình hồn tồn đắn đợc mà nói cha phát sai sót chơng trình mà thơi
Tuy nhiên, ngời ta số cách khác chứng minh tính đắn chơng trình mà khơng sử dụng đến liệu test
Có hai cách để chỉnh sửa chơng trình để đảm bảo đa thông báo Cách đơn giản sử dụng ba câu lệnh điều kiện dạng thiếu nh sau:
If Long>Trang then writeln('Ban Long cao hon');
If Long=Trang then writeln('Hai ban cao bang nhau');
If Long<Trang then writeln('Ban Trang cao hon');
Cách thứ hai sử dụng câu lệnh điều kiện lồng nh SGK, mục đích cách giới thiệu cho HS sử dụng câu lệnh điều kiện lồng nhau:
If Long>Trang then writeln('Ban Long cao hon') else
If Long<Trang then writeln('Ban Trang cao hon')
else writeln('Hai ban cao bang nhau');
Có thể sử dụng sơ đồ dới để giải thích hoạt động hai câu lệnh điều kiện lồng để HS hiểu đợc lí câu lệnh hiển thị hình thơng báo
Long>Trang?
writeln('BanLong
cao hon');
§óng
Sai
Long<Trang?
writeln('Ban Trang cao hon')
§óng
Sai
(38)Với tập 3, HS cần biết điều kiện để ba số dơng a, b, c ba cạnh tam giác tổng hai cạnh phải lớn lớn cạnh lại, nghĩa phải đồng thời thoả mãn ba điều kiện a + b > c, b + c > a c + a > b GV hớng dẫn HS cách biểu diễn ba điều kiện Pascal:
(a+b>c) and (b+c>a) and (c+a>b)
Điểm khó học sinh biết chuyển biểu thức điều kiện toán học sang biểu diễn Pascal Cần giải thích để HS hiểu dùng phép quan hệ and để đảm bảo ba điều kiện a + b > c, b + c > a c + a > b đồng thời thoả mãn; Việc phải sử dụng dấu ngoặc tròn phép so sánh để đảm bảo thứ tự u tiên thực phép toán để đảm bảo tham số phép and (và or) giá trị sai (không số)
Cần cho HS đọc, thảo luận kĩ để hiểu chơng trình Bài tốn toán yêu cầu chuẩn kiến thức, kĩ Sau học này, HS phải hiểu phải tự viết chơng trình giải tốn tơng tự (ví dụ kiểm tra tính chất tam giác dựa số đo cạnh: cân, đều, vuông)
Để HS luyện tập thêm câu lệnh điều kiện, phép so sánh, u cầu HS viết chơng trình cho phép nhập điểm kiểm tra bạn đó, sau thực hiện:
- NÕu ®iĨm nhá 5, in dòng chữ "Ban can co gang hon";
- Nếu điểm lớn nhỏ 6.5, in dòng chữ "Ban dat diem trung binh";
- Nếu điểm lớn 6.5 nhỏ 8, in dòng chữ "Ban dat diem Kha";
- Nếu điểm lớn 8, in dòng chữ "Hoan ho ban dat diem Gioi"
Hoặc ví dụ khác yêu cầu HS viết chơng trình giải phơng trình bậc ax + b = 0, với a 0, a, b nhập từ bàn phím Lu ý, phơng trình bậc ẩn số đợc giới thiệu chơng trình mơn Tốn lớp (học kì II) Do vậy, HS cha đợc học phơng trình mơn Toán, GV nên dành vài phút để HS làm quen với khái niệm
§óng
writeln('Ban Long cao hon') Long>Trang
writeln('Hai ban cao bang nhau')
writeln('Ban Trang cao hon' §óng
Long<Trang Sai
(39)Bài Lặp với số lần biết trớc
1 Mục đích, yêu cầu
BiÕt nhu cầu cần có cấu trúc lặp ngôn ngữ lập tr×nh
Biết ngơn ngữ lập trình dùng cấu trúc lặp để dẫn máy tính thực lặp lặp lại cơng việc số lần
Hiểu hoạt động câu lệnh lặp với số lần biết trớc for trong Pascal Viết đợc lệnh for số tình đơn giản
HiĨu lƯnh ghÐp Pascal
2 Những điểm cần lu ý gợi ý dạy häc
Giống với cấu trúc rẽ nhánh, cần xuất phát từ hoạt động đời sống thực tiễn có tính chất lặp lặp lại để HS hiểu khái niệm lặp Ví dụ, tiếng gà trống gáy, tiếng chim hót, tiếng chng đồng hồ báo thức gọi em dạy buổi sáng; Các ngày tuần em lặp lặp lại hoạt động buổi sáng đến trờng buổi chiều trở nhà; Hoặc lớp, trả kiểm tra cô giáo lặp lặp lại việc gọi tên HS ghi điểm HS vào sổ điểm, cô giáo ngừng lại vào điểm cho tất HS lớp
Giả sử giáo đề nghị em viết chơng trình Pascal để chào bạn lớp em (hoặc nhóm em), cụ thể chơng trình cho phép bạn nhập tên từ bàn phím in lời chào tơng ứng, ví dụ bạn nhập tên Mai, chơng trình in 'Chao ban Mai', bạn khác nhập tên Trung in 'Chao ban Trung' Nh em cần viết chơng trình Pascal cho phép lặp lặp lại việc nhập tên hiển thị hình lời chào Làm để chơng trình Pascal em thực việc lặp này?
Giả sử lớp em có 40 bạn, em hồn tồn viết 40 lần lệnh để nhập tên lệnh hiển thị dịng chào Các lệnh hồn tồn giống Tuy nhiên, chơng trình nh vừa dài, vừa nhàm chán, dễ sai sót
Trong Pascal cung cấp câu lệnh lặp nh sau:
for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
trong đó:
- biến đếm biến đơn có kiểu nguyên;
- giá trị đầu giá trị cuối biểu thức có kiểu với biến đếm giá trị cuối phải lớn giá trị đầu;
- câu lệnh câu lệnh đơn giản hay câu lệnh ghép.
Hoạt động câu lệnh lặp nh sau: Ban đầu biến đếm đợc gán giá trị đầu, lần câu lệnh viết sau từ khoá đợc thực biến đếm đợc tăng lên đơn vị, câu lệnh đợc thực biến đếm lớn giá trị cuối
Lu ý:
+ Để tránh phức tạp, gây khó hiểu với HS, mô tả hoạt động lệnh for dựa mặc định biến đếm, giá trị đầu, giá trị cuối số nguyên Một cách tổng quát, biến đếm, giá trị đầu, giá trị cuối kiểu kí tự, kiểu đoạn Tuy nhiên, không đề cập đến những vấn đề với mục đích để giản lợc nội dung, giúp HS dễ tiếp thu kiến thức mà đảm bảo kiến thức, kĩ cần thiết theo yêu cầu
+ Trong Pascal cÊu tróc for cã hai d¹ng tiến lùi: Dạng tiến:
for <bin m> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
D¹ng lïi:
for <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;
Trong SGK giới thiệu dạng tiến Về dạng tiến gần gũi với cách suy nghĩ tự nhiên HS THCS cần dạng tiến đủ, không yêu cầu phải giới thiệu thêm dạng lùi
Khi thực câu lệnh lặp for giá trị đầu giá trị cuối phải đợc xác định trớc Chính mà ta biết trớc đợc số lần thực câu lệnh sau từ khóa (số lần lặp giá trị cuối - giá trị đầu + 1) Chính vậy, câu lệnh for cịn đợc gọi câu lệnh lặp với số lần biết trớc.
(40)program Lap;
var i: Integer;
begin
for i := 1 to 10 do
writeln('Day la lan lap thu ',i);
end
Cã thĨ híng dÉn häc sinh lËp bảng trình thực chơng trình nh dới đây: Lần lặp thứ i Kết viết h×nh
1 Day la lan lap thu
2 Day la lan lap thu
3 Day la lan lap thu
4 Day la lan lap thu
5 Day la lan lap thu
6 Day la lan lap thu
7 Day la lan lap thu
8 Day la lan lap thu
9 Day la lan lap thu
10 10 Day la lan lap thu 10
Sau với HS phân tích chơng trình Lap, GV HS sử dụng câu lệnh for để viết đoạn câu lệnh nhập tên hiển thị hình dịng chào hỏi Giả sử lớp có 40 bạn đoạn câu lệnh nh sau:
For i:= 1 to 40 Begin
write('Nhap ten cua ban'); Readln(Ten); write('Chao ban ', Ten);
end;
Lu ý: Cần dành thời để giới thiệu câu lệnh ghép Khác với chơng trình Lap, sau từ khố có câu lệnh cần thực hiện, chơng trình Chao_hoi, sau từ khố có hai câu lệnh cần thực Muốn vậy, hai câu lệnh cần phải đợc "gói" từ khố begin end Một cách đơn giản hiểu cấu trúc begin end câu lệnh Pascal, câu lệnh chứa nhiều câu lệnh khác Pascal Lu ý HS cấu trúc câu lệnh ghép sau end dấu chấm phẩy (;), dấu chấm (.)
Cần lấy thêm số ví dụ khác để HS biết tập làm quen với tình sử dụng câu lệnh for lệnh ghép Có thể yêu cầu HS đọc hiểu ví dụ có SGK (nh chơng trình Tinh_tong, Tinh_giai_thua) đa toán đơn giản cần sử dụng đến câu lệnh for hớng dẫn HS viết chơng trình
GV cần khái quát cho HS cấu trúc lặp với số lần biết trớc có ngơn ngữ lập trình, ngơn ngữ lập trình có câu lệnh riêng để mơ tả cấu trúc Trên em đợc tìm hiểu câu lệnh lặp với số lần biết trớc Pascal (for do)
Cuối này, giao nhiệm vụ cho HS hồn thiện chơng trình thực chào hỏi bạn lớp (hoặc nhóm) để chuẩn bị cho bui thc hnh ti
Căn vào tình hình tiếp thu HS, GV cần lựa chọn giao số tập cho HS luyện tập, không thiết phải làm hết tất tập cuối
3 Hớng dẫn trả lời câu hỏi vµ bµi tËp
Bài 1. Có thể nêu nhiều vài ví dụ hoạt động lặp Dới số ví dụ: a) Hàng ngày em đặt đồng hồ báo thức lúc để dậy sớm tập thể dục
(41)c) Mỗi lần đợc khởi động, máy tính em thực hoạt động tự kiểm tra thành phần máy tính, sau khởi động hệ điều hành theo trình tự đợc quy định tr-ớc
Bài 2. a) Có thể thấy, để vẽ đợc hình a, thao tác cần thực vẽ nửa đờng trịn có bán kính đơn vị từ điểm A tới điểm B theo bốn hớng: lên trên, xuống dới, sang trái, sang phải (chẳng hạn, hình b nửa đờng trịn đợc vẽ từ điểm A tới điểm B theo hớng lên trên).
a) b)
H×nh 1
Có thể mơ tả bớc thuật tốn để vẽ hình a) nh sau: Bớc Xác định điểm bắt đầu vẽ X
Bớc Vẽ nửa đờng tròn theo hớng lên Bớc Vẽ nửa đờng tròn theo hớng sang trái Bớc Vẽ nửa đờng tròn theo hớng xuống dới. Bớc Vẽ nửa đờng tròn theo hớng sang phải Bớc Tơ màu kết thúc thuật tốn
Lu ý giáo viên Có thể trình bày thuật tốn vẽ hình dới dạng cách hình thức nh sau
Ta gọi thao tác vẽ nửa đờng trịn theo hớng x vẽ nửa đờng trịn có bán kính đơn vị điểm xác định, đờng kính nối điểm đầu điểm cuối nửa đờng trịn vng góc với hớng x nửa đờng tròn "cong hớng x" Ta xét x bốn hớng: lên trên, xuống dới, sang trái, sang phải.
Với hớng, ta định nghĩa phép toán sau: lên + = sang trái, sang trái +1 = xuống dới, xuống dới +1 = sang phải, sang phải +1 = lên Khi mơ tả bớc thuật tốn để vẽ hình 1a nh sau:
Có thể mơ tả bớc thuật tốn để vẽ hình a) nh sau: Bớc Xác định điểm bắt đầu vẽ X
Bớc Đặt i = đặt hớng = lên trên. Bớc Vẽ nửa đờng tròn theo hớng đặt Bớc i = i +
Bớc Nếu i > 4, chuyển bớc 6; ngợc lại, đặt hớng = hớng + quay lại bớc 3. Bớc Tơ màu kết thúc thuật tốn
b) Thuật tốn tơng tự nh Thao tác cần lặp lại vẽ hình vng Tại bớc, giữ ngun tâm hình vng thay đổi hớng vẽ góc 30o.
Lu ý giáo viên Bài không yêu cầu học sinh mô tả cách xác bớc của thuật tốn Điều quan trọng học sinh nhận biết đợc: muốn vẽ đợc hình cho cần lặp thao tác vẽ nửa đờng tròn bốn lần lặp thao tác vẽ hình vng ba lần
Bài 3. Câu lệnh lặp có tác dụng dẫn cho máy tính thực lặp lại câu lệnh hay nhóm câu lệnh với số lần định Câu lệnh lặp làm đơn giản giảm nhẹ công sức ngời viết chơng trình
Bài 4. Chúng ta nói thực hoạt động lặp, chơng trình kiểm tra điều kiện Với lệnh lặp
(42)của Pascal, điều kiện cần phải kiểm tra giá trị biến đếm lớn giá trị cuối Nếu điều kiện không đợc thoả mãn, câu lệnh đợc tiếp tục thực hiện; ngợc lại, chuyển sang câu lệnh chơng trình
Bài 5. Tuy có vịng lặp 1000 lần, nhng chơng trình Pascal nêu câu hỏi khơng thực hoạt động Tuy nhiên câu lệnh hợp lệ
Bài 6. Thuật toán tính tổng A =
) (
1
1
1
1
n n Bíc G¸n A 0, i
Bíc A ( 2)
i i
Bíc i i +
Bíc NÕu i n, quay lại bớc
Bớc Ghi kết A kết thúc thuật toán.
Bi 7. Tr d), tất câu lệnh không hợp lệ:
a) Giá trị đầu biến đếm phải nhỏ giá trị cuối biến đếm; b) Các giá trị đầu giá trị cuối biến đếm phải số nguyên; c) Thiếu dấu hai chấm gán giá trị đầu;
d) Thõa dÊu chấm phẩy thứ nhất, nh ta muốn lặp lại câu lệnh writeln('A') mời lần, ngợc lại câu lệnh hỵp lƯ;
e) Biến x đợc khai báo nh biến có liệu kiểu số thực khơng thể dùng để xác định giá trị đầu giá trị cuối câu lệnh lặp
Bài 8. Thuật toán:
Bớc Nhập số n vµ x
Bíc A 1, i (A lµ biÕn lu luü thõa bËc n cđa x) Bíc ii + 1, A A.x
Bíc NÕu i < n, quay lại bớc
Bớc Thông báo kết A luỹ thừa bậc n x kết thúc thuật toán. Chơng trình Pascal nh sau:
var n,i,x: integer; a: longint;
begin
write('Nhap x='); readln(x); write('Nhap n='); readln(n); A:=1;
for i:=1 to n do A:=A*X;
writeln(x,' mu ',n,' bang ',A);
end Bài 9. Thuật toán:
Bớc Nhập sè n
Bớc A 32768 (gán số nhỏ số kiểu nguyên cho A), i 1 Bớc Nhập số thứ i gán giá trị vào biến A.
Bíc NÕu Max < A, Max A Bíc i i + 1.
Bíc NÕu i ≤ n, quay lại bớc
Bớc Thông báo kết Max số lớn kết thúc thuật toán. Chơng trình Pascal nh sau:
uses crt;
(43)begin
clrscr;
write('Nhap N='); readln(n); Max:=-32768;
for i:=1 to n do
begin write('Nhap so thu ',i,':'); readln(A); if Max<A then Max:=A end;
writeln('So lon nhat: ',Max);
end
Lu ý. Trong chơng trình sử dụng hai biến A Max để giải toán Một cách tự nhiên, để nhập n số cần tới n biến Tuy nhiên, việc xử lí giá trị dãy số thực cách cần so sánh giá trị đợc nhập vào, cần biến để lu lần lợt giá trị nhập vào đủ Một cách giải khác sử dụng biến mảng (xem tập 6, 9)
Bài 10. Lời giải tơng tự nh lời giải (xem thuật toán lời giải tập 5a, 5) Chơng tr×nh Pascal cã thĨ nh sau:
uses crt;
var n,i,SoDuong,A: integer;
begin
clrscr;
write('Nhap N='); readln(n);
if n>0 then
begin
SoDuong:=0; for i:=1 to n do
begin write('Nhap so thu ',i,':'); readln(A); if A>0 then SoDuong:=SoDuong+1 end;
writeln('So cac so duong = ',SoDuong) end
else writeln('n phai > 0!');
end
Bµi thùc hµnh Sư dơng lƯnh lỈp For do
1 Mục đích, u cầu
Viết đợc chơng trình có sử dụng vịng lặp for do; Sử dụng đợc câu lệnh ghép;
Rèn luyện kĩ đọc hiểu chơng trình có s dng vũng lp for
2 Những điểm cần lu ý gợi ý dạy học
Trc tiến hành thực hành 5, để tạo hứng thú cho HS, GV dành thời gian để HS gõ chạy hai chơng trình em viết học lí thuyết Nh nói, việc thực hành đợc quan sát trực quan kết chạy chơng trình học tiết lí thuyết cần thiết, hữu ích để HS ơn lại lí thuyết, gắn kết lí thuyết-thực hành tạo niềm tin học tập Chơng trình thực chào hỏi bạn lớp (hoặc nhóm) nh sau:
Program Chao_hoi;
uses crt;
var Ten: string;
Begin
(44)Begin
write('Nhap ten cua ban'); Readln(Ten); write('Chao ban ', Ten);
end; readln;
End
Lu ý: để tránh thời gian thử chơng trình, yêu cầu HS cho giá trị cuối nhỏ Nếu HS lỡ để giá trị cuối lớn, chơng trình lặp lại nhiều lần gây thời gian, GV nhấn tổ hợp phím Ctrl+Break để ngắt chơng trình
u cầu HS thay đổi giá trị cuối nhận xét số lần nhập tên hiển thị lời chào hỏi HS cần giải thích đợc thay đổi để hiểu hoạt động câu lệnh for Số lần lặp Giá trị cuối - Giá trị đầu + 1.
Sau ví dụ này, HS hiểu rõ, giải thích đợc hoạt động câu lệnh for do, hiểu sử dụng đợc câu lệnh ghép
Víi bµi cđa bµi thùc hµnh này, HS cần tập trung tìm hiểu câu lệnh:
for i:=1 to 10 writeln(N,' x ',i:2,' = ',N*i:3);
Đặc biệt HS cần phải nhận thấy đợc thay đổi biến đếm i tham số câu lệnh write để viết bảng cửu chơng Các tham số :2, :3 có ý nghĩa việc quy định quy cách trình bày bảng cửu chơng hình, lu ý học sinh khơng cần quan tâm đến quy cách trình bày, cần quan tâm đến thay đổi biến đếm i, thông tin đợc lệnh writeln() viết hình
Có thể cho HS thảo luận theo nhóm để hồn thành bảng tiến trình thực câu lệnh nh sau:
Gi¶ sư víi N=3
Bíc i i 10 ? writeln(N,'.',i,' = ',N*i)
1 §óng 3.1 =
2 §óng 3.2 =
3 §óng 3.3 =
4 §óng 3.4 = 12
5 §óng 3.5 = 15
6 §óng 3.6 = 18
7 §óng 3.7 = 21
8 §óng 3.8 = 24
9 §óng 3.9 = 27
10 10 §óng 3.10 = 30
11 11 Sai Không thực lệnh writeln() Kết thúc vòng lặp
Bài 2, cung cấp cho HS câu lệnh thủ tục đa trỏ tới ví trị mong muốn hình (màn hình soạn thảo văn bản) GotoXY() Giới thiệu với thủ tục GotoXY hàm lấy vị trí cột WhereX, vị trí dòng WhereY thời trỏ Việc giới thiệu thủ tục nhằm cung cấp cho HS công cụ để trình bày hình Hơn nữa, việc giới thiệu hàm, thủ tục nhằm mục đích hớng dẫn HS tìm hiểu th viện chơng trình, sử dụng, khai thác hàm, thủ tục có sẵn Pascal Tuy nhiên, yêu cầu bắt buộc Chuẩn kiến thức, kĩ GV cho thực hành lớp giao cho học sinh tự nghiên cứu Không cần sâu vào việc sử dụng thủ tục để trình bày hình
Bài 3, giới thiệu việc sử dụng hai vòng for lồng GV sử dụng lấy ví dụ khác để giới thiệu vịng for lồng Có ví dụ vui, hay đợc sử dụng để minh hoạ cho việc sử dụng vòng lặp for lồng tốn cổ:
(45)Bài tốn dân gian làm HS hứng thú Lu ý, HS lớp cha đợc học giải phơng trình bậc hai n s
Chơng trình giải toán cã thÓ nh sau:
Var ga, cho : byte;
Begin
for ga:=1 to 35 do
for cho:=1 to 35 do
if (ga*2 + cho*4 = 100) and (ga + cho = 36) then
writeln('So ga la: ', ga, '; So cho la: ', cho); Readln;
End
GV giới thiệu chơng trình trớc u cầu HS tìm hiểu, giải thích chơng trình cho phép giải tốn đặt
Thuật toán đơn giản, ý tởng xét tất trờng hợp kiểm tra xem trờng hợp thảo mãn: ga + cho= 36 ga*2 + cho*4 = 100 đáp số tốn
Qua tốn nêu cho HS thấy u điểm bật máy tính việc tính toán nhờ tốc độ xử lý cao Với cách giải nh máy tính tìm kết nháy mắt, nhng để ngời thực lâu nhiều
Nhng nhợc điểm máy tính lại biết làm việc theo điều khiển ngời mà khơng có t sáng tạo Trong q trình tính tốn tìm kết quả, ngời cịn có khả phán đốn, dự đốn xu hớng để bỏ qua số cơng đoạn tính tốn nhằm đến kết nhanh Do đó, ngời cần lựa chọn, xây dựng thuật tốn cho nâng cao hiệu làm việc máy tính
GV u cầu học sinh cải tiến để có chơng trình hiệu
var ga, cho:byte; Begin
For cho:= to 24 Begin
ga:= 36 - cho;
if (2*ga + 4*cho = 100) then
writeln('Ga: ', ga, ', Cho: ',cho); end;
readln; End
GV phân tích, hớng dẫn để HS nhận thấy số lợng phép tính chơng trình sau với chơng trình ban đầu Điều có nghĩa thuật tốn chơng trình sau hiệu Việc xây dựng, lựa chọn thuật tốn hiệu có vai trị quan trọng lập trình, với tốn có khối tợng tính tốn lớn Ln cần có ý thức xây dựng, lựa chọn thuật tốn hiệu giải tốn máy tính
Việc phân tích số lợng phép tốn gây tải HS Do vậy, GV vào mức độ tiếp thu HS để tiến hành giới thiệu không giới thiệu nội dung số lợng phép tốn, so sánh tính hiệu qu gia cỏc thut toỏn
Bài Lặp với sè lÇn cha biÕt tríc
1 Mục đích, u cầu
BiÕt nhu cÇu cÇn cã cÊu tróc lặp với số lần cha biết trớc ngôn ngữ lËp tr×nh;
Biết ngơn ngữ lập trình dùng cấu trúc lặp với số lần cha biết trớc để dẫn máy tính thực lặp lặp lại cơng việc đến điều kiện đợc thoả mãn;
Hiểu hoạt động câu lệnh lặp với số lần cha biết trớc while do Pascal
2 Những điểm cần lu ý gợi ý d¹y häc
(46)Trong ví dụ 2, sau giới thiệu thuật toán, SGK khái quát, đa sơ đồ hoạt động cấu trúc lặp với số lần cha biết trớc Sau đó, SGK giới thiệu câu lệnh while Pascal nh ví dụ minh hoạ HS đợc làm quen với ví dụ sử dụng lệnh while qua ví dụ
Dới gợi ý cách tiến hành khác để GV tham khảo Cách tiếp cận đợc thực theo phơng án từ câu lệnh lặp cụ thể while Pascal, sau khái quát thành kiến thức chung ngơn ngữ lập trình
Sau giới thiệu ví dụ SGK, giới thiệu ví dụ viết chơng trình chào hỏi trớc, GV đặt tình cha biết trớc số bạn nhóm phải viết chơng trình nh nào? Điểm thuận lợi sử dụng ví dụ HS hiểu yêu cầu toán từ tiết học trớc Do vậy, khơng phải nhiều thời gian vào tìm hiểu ý nghĩa tốn Điều tạo điều kiện thuận lợi cho việc làm bật vấn đề, tình cần giải Hơn nữa, sử dụng toán gắn liền với thực tế cách tốt để HS nhận thức rõ khái niệm toán Tin học khơng tốn lĩnh vực tốn học
Nói chung HS cha đa đợc phơng án giải cho vấn đề GV nên chủ động đa chơng trình Pascal nh sau:
Program Chao_hoi;
uses crt;
var Tieptuc: char; Ten: string;
Begin
Tieptuc:='c';
while tieptuc = 'c' do Begin
write('Nhap ten cua ban'); Readln(Ten); writeln('Chao ban ', Ten);
write('Tiep tuc ? c/k'); readln(Tieptuc);
end; readln;
End
Dựa chơng trình này, GV giới thiệu cú pháp, sơ đồ hoạt động câu lệnh while Trong Pascal, cú pháp câu lệnh lặp với số lần cha xác định trc cú dng:
while <điều kiện> do <câu lệnh>;
trong ú:
- điều kiện thờng phÐp so s¸nh;
- câu lệnh câu lệnh đơn giản hay câu lệnh ghép. Câu lệnh lặp đợc thực nh sau:
1 KiÓm tra ®iỊu kiƯn
2 Nếu điều kiện SAI, câu lệnh bị bỏ qua chuyển sang câu lệnh chơng trình Nếu điều kiện đúNG, thực câu lệnh quay lại bớc
Sơ đồ hoạt động câu lệnh câu lệnh lặp với số lần cha biết trớc
(Xuân sửa lu đồ nhé)
Việc dịch nghĩa hay diễn giải ý nghĩa từ tiếng Anh câu lệnh while cần thiết HS cha đợc học tiếng Anh để HS dễ nhớ (Trong thì)
(47)trình giống Điểm khác ngơn ngữ lập trình cú pháp câu lệnh để thể cấu trúc mà
Phần cuối GV sử dụng ví dụ SGK lấy ví dụ khác để HS hiểu đợc hoạt động, viết cú pháp biết số trờng hợp sử dụng hiệu câu lệnh while
Lu ý:
+ Đối với vòng lặp while do, câu lệnh vòng lặp cần có câu lệnh làm thay đổi biểu thức điều kiện, có nghĩa phải có câu lệnh để đến lúc điều kiện khơng đợc thoả mãn, vịng lặp kết thúc Do câu lệnh sau từ khóa do câu lệnh lặp while thờng phải câu lệnh ghép.
Trong ví dụ đây, điều kiện không đợc thoả mãn vòng lặp kết thúc điều kiện tieptuc = 'c' cho kết sai, tức tieptuc <> 'c' Câu lệnh readln(Tieptuc) để gán giá trị cho biến Tieptuc từ bàn phím, giá trị biểu thức điều kiện thay đổi phụ thuộc vào câu trả lời ngời sử dụng Khi ng-ời sử dụng nhấn "c" vịng lặp tiếp tục, ngợc lại, ngng-ời sử dụng nhấn chữ (hoặc chữ số) khác vịng lặp kết thúc
+ Trong chơng trình trên, có câu lệnh Tieptuc:='c' sau từ khoá Begin GV đặt câu hỏi để HS tìm hiểu phải có câu lệnh Khi giải thích đợc ngun nhân phải có câu lệnh này, HS hiểu rõ thêm biến, điều kiện thực vòng lặp while Việc cần có câu lệnh Tieptuc:='c' đợc giải thích nh sau: gặp lệnh khai báo biến Tieptuc: char Pascal dành ô nhớ đặt tên ô nhớ Tieptuc Ban đầu ô nhớ cha đợc gán giá trị nên chứa giá trị ngẫu nhiên (có số ngơn ngữ lập trình khai báo biến gán ln cho biến giá trị mặc định ngơn ngữ lập trình quy định) Nếu giá trị ngẫu nhiên mà khác 'c' điều kiện tieptuc = 'c' khơng đợc thoả mãn từ đầu vịng lặp while không đợc thực lần Nh vậy, câu lệnh lặp while xảy tình vịng lặp khơng đợc thực lần
Trong trờng hợp điều kiện đợc thoả mãn, nghĩa ngời sử dụng ln ln gõ phím c, chơng trình tiếp tục lặp lặp lại GV sử dụng chơng trình dới (có trong SGK) để giải thích việc lặp vơ hạn xảy lỗi ngời lập trình:
var a:integer;
begin
a:=5;
while a<6 do writeln('A');
end
+ Các câu lệnh vòng lặp khơng đợc thực lần đặc điểm quan trọng câu lệnh while Trong Pascal, để mô tả cấu trúc lặp với số lần cha biết trớc, cịn có câu lệnh khác Repeat until Với câu lệnh Repeat until có đặc điểm câu lệnh vịng lặp ln đợc thực lần SGK giới thiệu cho câu lệnh while Ngời ta chứng minh đợc cần câu lệnh while đủ, có nghĩa tình lặp sử dụng câu lệnh Repeat until, sử dụng while để thay GV không giới thiệu câu lệnh Repeat until, không so sánh câu lệnh Repeat until với while để tránh tải với HS.
+ Trong ví dụ có sử dụng kiểu liệu char mà học sinh cha biết Do mục đích ví dụ để giới thiệu câu lệnh while do, nên GV chỉnh sửa chơng trình để sử dụng với kiểu liệu khác mà em biết (ví dụ nh integer) sử dụng chơng trình nhng khơng giải thích kiểu char Tuy nhiên, học sinh tiếp thu tốt, GV nên giới thiệu thêm cho HS kiểu liệu char trớc kết thúc
3 Hớng dẫn trả lời câu hỏi tËp
Bài 1. Có thể nêu nhiều vài ví dụ hoạt động lặp với số lần lặp cha biết trớc Dới số ví dụ:
a) Tìm từ định bị gõ sai tả văn sửa lại cho Số từ cần phải sửa cha đợc biết trớc
(48)c) Trong xởng may, cô công nhân may chi tiết áo, hay quần với đờng may đợc thiết kế trớc May xong sản phẩm, cô công nhân may sản phẩm hết gi lm vic
Bài 2. Sự khác biệt câu lệnh lặp với số lần lặp cho trớc câu lệnh lặp với số lần lặp cha biết tr-ớc điểm sau đây:
a) Nh tờn gọi nó, câu lệnh lặp với số lần lặp cho trớc thị cho máy tính thực lệnh nhóm lệnh với số lần đợc xác định từ trớc, với câu lệnh lặp với số lần lặp cha biết trớc số lần lặp cha đợc xác định trớc Điều kiện đợc thay đổi lần lặp dựa vào điều kiện chơng trình định thực tiếp câu lệnh lặp hay không
b) Trong câu lệnh lặp với số lần cho trớc, điều kiện giá trị biến đếm có giá trị nguyên đạt đợc giá trị cuối hay cha, câu lệnh lặp với số lần lặp cha biết trớc, điều kiện tổng quát nhiều, kiểm tra giá trị số thực, điều kiện tổng quát khác, ví dụ nh số có chia hết cho hay khơng,
c) Trong câu lệnh lặp với số lần cho trớc, câu lệnh đợc thực lần, sau kiểm tra điều kiện Trong câu lệnh lặp với số lần cha xác định trớc, trớc hết điều kiện đợc kiểm tra Nếu điều kiện đợc thoả mãn, câu lệnh đợc thực Do có trờng hợp câu lệnh hồn tồn khơng đợc thực hiện.
Bài 3. Mô tả thuật toán:
Bc Đặt i = R (i bán kính đờng trịn vẽ)
Bớc Nếu i > 1.2, vẽ đờng trịn bán kính i; ngợc lại, chuyển đến bớc 4. Bớc i i 1/2 quay lại bớc
Bíc KÕt thóc tht to¸n.
Bài 4. a) Thuật tốn 1: 10 vịng lặp đợc thực Khi kết thúc thuật tốn S = 5.0 Đoạn chơng trình Pascal tơng ứng:
S:=10; x:=0.5;
while S>5.2 S:=S-x; writeln(S);
b) Thuật tốn 2: Khơng vịng lặp đợc thực từ đầu điều kiện đợc thỏa mãn nên chuyển tới bớc kết thúc thuật toán; bớc bị bỏ qua S = 10 kết thúc thuật tốn Đoạn chơng trình Pascal tơng ứng:
S:=10; n:=0; while S<10 do
begin n:=n+3; S:=S-n end; writeln(S);
Nhận xét: Trong thuật toán chơng trình trên, điều kiện đợc kiểm tra trớc bớc lặp đợc thực Do điều kiện không đợc thỏa mãn từ đầu, bớc lặp bị bỏ qua Điều đặc biệt câu lệnh lặp while do
Bài 5. a) Chơng trình thực vịng lặp b) Vịng lặp chơng trình đợc thực vơ tận sau câu lệnh n:=n+1; câu lệnh lặp kết thúc nên điều kiện S=0 luôn đợc thỏa mãn
Nhận xét: Trong câu lệnh thực hiện, điều kiện cần phải đợc thay đổi để sớm hay muộn chuyển sang trạng thái khơng thỏa mãn Khi vịng lặp đợc kết thúc sau hữu hạn bớc Để làm đ-ợc điều này, câu lệnh câu lệnh lặp while thờng câu lệnh ghép
Bài 6. a) Thừa dấu hai chấm điều kiện; b) Thiếu dấu hai chấm câu lệnh gán; c) Thiếu các từ khóa begin và end trớc sau lệnh n:=n+1; S:=S+n, vịng lặp trở thành vơ tận
Bài 7. Viết thuật tốn chơng trình Pascal có câu lệnh lặp với số lần khơng xác định để tính luỹ thừa bậc n x (tức xn), với n số tự nhiên x số thực đợc nhập vào từ bàn phím Hãy so
s¸nh víi thuật toán tập 8, Thuật toán:
Bớc Đọc giá trị x n Bíc A 1, k
(49)Bớc Thông báo kết A kết thúc thuật toán. Chơng trình Pascal:
var n,k: integer; A, LT: real; begin
write(‘Nhap so A= ‘); readln(A); write(‘Nhap so n= ‘); readln(n); LT:=1; k:=1;
while k<=n begin LT:=LT*A, k:=k+1 end end.
Bài 8. Tính tích N số tự nhiên với số lần lặp không xác định (với N số tự nhiên đợc nhập vào từ bn phớm)
Bớc Đọc giá trị N Bíc T 1, k
Bíc NÕu k N, T = T.k; ngỵc l¹i, chun xng bíc 5. Bíc k k + quay lại bớc
Bớc Kết thúc thuật toán.
Bài 9. Thuật toán:
Bớc Đọc giá trị n Bớc S 0, i
Bíc NÕu i > n 1, chun xng bíc
Bíc NÕu n chia hÕt cho i, S S + i, i i + vµ quay lại bớc 3. Bớc Ghi giá trị S kết thúc thuật toán.
Chơng trình nh sau:
var n,i,S: integer;
begin
write('Cho so tu nhien n= '); readln(n); i:=2; S:=0;
while i<=n-1 do
begin
if (n mod i)=0 then S:=S+i; i:=i+1;
end;
write('Tong cac uoc so thuc su cua ',n,' la: ',S); readln;
end
Bài 10. Chơng trình nh sau:
Uses CRT;
Var A, sum: real; i: integer;
Begin
Write('cho so A: '); readln(A); i:=1; sum:= 0;
While (sum<=A) do Begin
(50)end;
Write('Gia tri N bang ', i:6); Readln;
End
Bµi thùc hµnh Sư dơng lƯnh lỈp while do
1 Mục đích, u cầu
Hiểu câu lệnh lặp while chơng trình TP có sẵn
Biết lựa chọn câu lệnh lặp while do for phù hợp với tình cụ thể Rèn luyện kĩ khai b¸o, sư dơng biÕn
Rèn luyện khả đọc chơng trình
BiÕt vai trß cđa việc kết hợp cấu trúc điều khiển
2 Những điểm cần lu ý gợi ý dạy học
Trớc hết cần lu ý Chuẩn kiến thức, kĩ không yêu cầu HS phải viết đợc chơng trình có sử dụng câu lệnh lặp với số lần cha biết trớc Do vậy, thực hành khơng u cầu HS phải viết chơng trình có câu lệnh while để giải tốn GV cho HS đọc, hiểu chơng trình đặc biệt cần hiểu đợc hoạt động lệnh while chơng trình
Trớc cho HS thực hành SGK, cho HS gõ chơng trình Chao_hoi mà em đợc học lí thuyết Việc thử nghiệm chơng trình viết học lí thuyết giúp HS dễ hiểu hơn, đặc biệt tính thuyết phục cao thể đợc việc gắn kết lí thuyết với thực hành
Với 1, trớc hết cần xác định Input Ouput toán: Input: Dãy số thực x1, x2 xn
Output: Giá trị trung bình (x1 + x2+ +xn)/n ThuËt to¸n
Bớc - Nhập N số lợng số thực đợc nhập từ bàn phím: - Gán biến đếm Dem 0;
- G¸n tỉng Sum Bíc Trong Dem < N
2.1 Nhập giá trị sè thùc x tõ bµn phÝm;
2.2 Cộng thêm x vào tổng Sum: Sum Sum + x; 2.3 Tăng biến dem thêm đơn vị: Dem Dem + 1; Bớc Tính trung bình dãy số vừa nhập TB Sum/N.
Bíc §a TB hình, kết thúc.
Cú nhiu cỏch mơ tả thuật tốn này, nhiên cách mơ tả đợc sử dụng với mục đích HS thuận lợi đọc, hiểu, đối chiếu thuật toán với chơng trình Tinh_Trung_binh câu b
Căn vào mơ tả thuật tốn, HS tìm hiểu để xác định biến kiểu t ơng ứng cần khai báo chơng trình
Câu c) yêu cầu HS thử dịch, chỉnh sửa, chạy kiểm thử chơng trình Những kĩ HS đợc rèn luyện thực hành trớc HS hồn tồn thực đợc GV đa hớng dẫn HS tạo liệu test
GV cần yêu cầu HS đọc, thảo luận đối chiếu thuật tốn câu lệnh mơ tả thuật tốn chơng trình Cần làm cho HS hiểu rõ hoạt động vòng lặp while chơng trình, cho học sinh làm việc nhóm để mơ chơng trình (Việc nên đợc làm lớp học, tiết tập trớc thực hành máy)
Ví dụ dới mơ hoạt động chơng trình với n=3 Trớc bắt đầu vòng lặp while do: dem=0, TB=0, n = 3;
2 Bắt đầu vòng lặp while
(51)Đúng 10 10
§óng 15 25
§óng 20 45
Sai
3 Kết thúc vòng lặp while do: TB = 45/3 = 15
Câu d) yêu cầu HS chuyển từ sử dụng câu lệnh while sang sử dụng câu lệnh for Qua việc làm HS đợc rèn luyện thêm sử dụng lệnh for
Tuy nhiên, tình sử dụng while for khác While thích hợp với trờng hợp lặp với số lần cha biết trớc, for thích hợp với trờng hợp lặp với số lần biết trớc Ví dụ, khơng thể sử dụng lệnh for để thay lệnh while chơng trình Chao_hoi đợc (cha biết trớc số bạn nhóm).
Nh vậy, câu d, bên cạnh mục đích cho HS có ý thức việc lựa chọn cấu trúc lặp phù hợp với tình huống, cịn có mục đích tiếp tục rèn luyện viết chơng trình với câu lệnh for đảm bảo đạt yêu cầu đề chuẩn kiến thức, kĩ
Với 2, cách tiến hành giống nh với Trớc hết cần xác định Input Output toán:
Input: Sè tù nhiên N
Output: Trả lời N số nguyên tố N không số nguyên tố Thuật toán
HS lớp biết tính chất số nguyên tố, số nguyên tố số tự nhiên chia hết cho
Để kiểm tra N có phải số ngun tố hay khơng ta kiểm tra xem N có chia hết số từ đến N hay không Nếu N không chia hết cho số khoảng từ đến N N số nguyên tố, ngợc lại N chia hết cho số khoảng từ đến N N khơng phải số ngun tố
Sử dụng phép chia lấy phần d mod để kiểm tra tính chia hết Bớc 1: Nhập số tự nhiên N từ bàn phím
Bớc 2: Nếu N thơng báo N số tự nhiên, chuyển đến bớc 4. Bớc 3: Nếu N > 0:
3.1 i2;
3.2 Trong N mod i <> 0, ii+1;
3.3 Nếu i = N thơng báo N số nguyên tố, chuyển đến bớc 4, khơng thơng báo N khơng phải số ngun tố;
Bíc 4: KÕt thóc.
Sau GV cho HS đọc chơng trình SGK, đối chiếu việc sử dụng câu lệnh để mơ tả thuật tốn
Lu ý, chơng trình sử dụng câu lệnh điều kiện, câu lệnh lặp while Mục đích để HS thấy đợc cần thiết phải kết hợp cấu trúc điều khiển để giải toán Hơn nữa, ví dụ cịn sử dụng phép chia lấy phần d mod Điều thể cần thiết tính hiệu lựa chọn cơng cụ phù hợp lp trỡnh
Đối với đa số HS lớp 8, thuật toán kiểm tra tính nguyên tố số tự nhiên không khó Tuy nhiên, thấy HS gặp khó khăn tìm hiểu thuật toán này, GV thay ví dụ khác Ví dụ mà GV đa cần thể kết hợp câu lệnh điều kiện câu lệnh lặp với số lần cha biết trớc, không thiết phải có tình sư dơng phÐp chia lÊy phÇn d mod
(52)Nh nêu chuẩn kiến thức, kĩ khơng u cầu HS phải viết đợc chơng trình có sử dụng câu lệnh lặp với số lần biết trớc Tuy nhiên, HS tiếp thu tốt, GV yêu cầu HS tập viết chơng trình đơn giản có sử dụng câu while
Bµi Lµm viƯc víi d·y sè
1 Mục đích, u cầu
Biết đợc khái niệm mảng chiều
Biết cách khai báo mảng, nhập, in, truy cập phần tử mảng Hiểu thuật toán tìm sè lín nhÊt, sè nhá nhÊt cđa mét d·y sè
2 Những điểm cần lu ý gợi ý d¹y häc
Tơng tự với câu lệnh điều kiện, câu lệnh lặp, vào đầu cần giới thiệu số ví dụ nhằm đa đến nhu cầu cần có biến mảng ngơn ngữ lập trình
Ví dụ 1, SGK dẫn đến nhu cầu biến mảng, sau phân tích bất tiện sử dụng cách khai báo biến biết (khai báo biến đơn) Pascal cung cấp công cụ hiệu để hỗ trợ ngời lập trình biến mảng
Mục có hai nội dung quan trọng nhu cầu biến mảng ngôn ngữ lập trình thuật tốn tìm số lớn dãy số Thuật tốn tìm số lớn dãy số (học sinh đợc tìm hiểu 5) Trong mục giới thiệu việc tìm số lớn dãy số nh nhiệm vụ cần thực mà không đề cập đến việc giải nhiệm vụ nh Mục tiêu ví dụ mục dẫn đến nhu cầu cần có biến mảng
Trong phÇn cÇn cho HS biết cách khai báo, truy cập, nhập (gán) giá trị, viết giá trị biến mảng hình
a) Khai báo biến mảng:
Có hai cách khai báo biến mảng
Cách 1: Khai báo trực tiếp biến mảng chiều:
var <tên biến mảng> : array [kiểu số] of [kiểu phần tử];
Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng chiều:
type <tên kiểu mảng> = array [kiểu số] of <kiểu phần tử>;
var <tên biến mảng>:<tên kiểu mảng>;
trong ú:
- kiu ch số dãy số nguyên liên tục n1 n2 với n1, n2 (hoặc biểu thức cho kết số nguyên) xác định số số cuối (n1n2)
- kiÓu phần tử kiểu phần tử mảng.
Tuy nhiên, GV cần giới thiệu với HS cách Kiểu số cần giới thiệu thật đơn giản dãy số nguyên dơng n1=1 (không thiết phải giới thiệu trờng hợp cịn lại) Kiểu phần tử số ngun, thực
GV cần sử dụng số ví dụ để luyện tập khai báo mảng chiều giải thích số lợng phần tử, kiểu phần tử biến mảng tơng ứng với ví dụ
b) Truy cËp m¶ng:
Sau cho HS luyện tập với khai báo biến mảng, sử dụng khai báo vừa thực để giới thiệu truy cập vào biến mảng Ví dụ, với khai báo
var Diem: array[1 50] of real;
khai báo tạo biến mảng có 50 phần tử từ phần tử đến phần tử 50 Các phần tử đ ợc "đặt tên" nh nào? Để "gọi đích danh" phần tử cụ thể Pascal sử dụng cách: Tên biến mảng[chỉ số phần tử] Ví dụ, Diem[1] phần tử thứ nhất; Diem[5] phần tử thứ Có thể thực thao tác nh gán giá trị, so sánh, viết giá trị hình với Diem[1], Diem[2] Diem[50] nh với biến học (biến đơn)
c) NhËp gi¸ trị cho biến mảng:
nhp giỏ tr cho biến mảng cần nhập giá trị cho phần tử mảng Giống nh với việc gán giá trị cho biến đơn, có hai cách để gán giá trị cho phần tử mảng:
(53)G¸n giá trị cách nhập từ bàn phím, sử dụng lƯnh read(), readln()
Có thể viết đoạn chơng trình với 50 lệnh readln() để thực việc nhập giá trị cho 50 phần từ mảng từ bàn phím:
readln(Diem[1];readln(Diem[2]); readln(Diem[50]);
Tuy nhiên, việc kết hợp vòng lặp for với câu lệnh readln() cách lập trình hiệu quả, hay đợc sử dụng để nhập liệu cho mảng
For i:=1 to 50 readln(Diem[i]);
Tơng tự nh vậy, để viết giá trị phần tử mảng hình ngời ta kết hợp for với lệnh writeln() write().
For i:=1 to 50 writeln(Diem[i]);
Giả sử muốn viết hình điểm số lớn chẳng hạn, câu lÖnh nh sau:
For i:=1 to 50
if Diem[i] >= 9 then writeln(Diem[i]);
Việc đa u cầu có hai mục đích: thứ để HS làm quen trớc với so sánh phần tử biến mảng đợc sử dụng phần sau Làm nh HS không bị bỡ ngỡ gặp phép so sánh chơng trình Thứ hai, HS thấy đợc kết hợp câu lệnh mà cụ thể câu lệnh for câu lệnh if-then chơng trình
Trong c¸c ví dụ trên, duyệt phần tử biến mảng hoàn toàn sử dụng cấu trúc while do, nhiên cấu trúc for phù hợp trờng hợp biết trớc số lần lặp Mặt khác, sử dụng cấu trúc for nói chung dễ hiểu hơn, gần với cách nghĩ tự nhiên HS GV nhắc lại tầm quan trọng việc lựa chọn cấu trúc điều khiển phù hợp lập trình
Mục ví dụ chơng trình cụ thể sử dụng biến mảng thuật tốn tìm giá trị lớn nhất, nhỏ dãy số nguyên Trớc giới thiệu chơng trình cụ thể GV nên hớng dẫn HS tìm hiểu lại thuật tốn (đã học Bi 5)
Giải thích thuật toán tìm giá trị lớn dÃy số nguyên:
+ Đầu tiên gán giá trị số thứ dÃy số cho Max (Ban đầu tạm thời coi số thứ số lớn -số lớn tạm thời)
+ So sánh số lớn tạm thời với số thứ 2, số thứ lớn số lớn tạm thời-Max gán giá trị số thứ cho Max Nh đến thời điểm Max số lớn số thứ số thứ
+ Cứ tiếp tục nh vậy, đem so sánh Max với tất số cịn lại, găp số lớn Max gán giá trị số cho Max Sau so sánh đến số cuối dãy số Max giá trị lớn dãy số
Do học sinh đợc tìm hiểu thuật tốn 5, giáo viên yêu cầu học sinh trình bày lại thuật tốn tìm số lớn dãy số thực lại việc mơ thuật tốn dãy số cụ thể để em nhớ lại thuật tốn Ví dụ mơ thuật tốn có
Sau yêu cầu học sinh thảo luận chỉnh sửa thuật tốn để tìm số nhỏ dãy số Ví dụ, mơ thuật tốn tìm giá trị nhỏ dãy số nh bảng dới đây:
D·y sè 4 15
i 1 2 3 4 5 6 7 8 9
ai < SMIN §óng Sai Sai Sai §óng Sai Sai Sai
SMIN 4 4 3 3
Thuật tốn tìm giá trị lớn nhất, nhỏ dãy số ngun đơn giản, khơng khó hiểu với HS Nhng HS lại khó hiểu em cha biết máy tính lại phải sử dụng thuật tốn tìm đợc số lớn Thực tế, GV viết dãy số nguyên lên bảng (ví dụ, 1, 4, 23, 6, 8, 9) HS thấy đợc 23 giá trị lớn mà không nhận thấy cần thiết phải thực thuật toán nêu
(54)dấu hiệu bổ trợ khác, ví dụ nh: độ dài số (có số có hai chữ số) chẳng hạn Với dấu hiệu bổ trợ, khả quan sát t duy, ngời nhanh chóng "khoanh vùng" đợc đáp án nhanh chóng tìm đáp án Tức phơng án giải ngời khơng mà bỏ qua số bớc cần thiết Do vậy, trong nhiều tình ngời giải tốn hiệu nhiều máy tính
Tuy nhiên, khả ngời lại bị hạn chế tình dãy số lớn (hàng ngàn, hàng triệu, hàng tỉ số chẳng hạn) Khi máy tính lại thể đợc sức mạnh u tốc độ xử lí
Để HS hiểu đợc máy tính làm việc nh nào, GV yêu cầu em thực nh sau: Viết 10 số nguyên, số vào mảnh giấy Gấp 10 mảnh giấy lại bỏ vào hộp A Đặt hộp B rỗng bên cạnh Yêu cầu HS chuyển lần lợt đến hết mảnh giấy hộp A sang hộp B Sau chuyển xong HS cho biết số số lớn số đợc ghi mảnh giấy HS đợc phép xem số mảnh giấy chuyển mảnh giấy từ hộp A sang hộp B u cầu HS khơng ghi chép giấy Mục đích việc không cho học sinh ghi chép để HS mơ hoạt động máy tính: Chỉ cần nhớ số lớn thời điểm tại, so sánh với số vừa lấy từ hộp A (đang cầm tay) nhớ lấy số lớn tiếp tục nh đến hết số hộp, số đợc nhớ cuối số lớn
Để thực công việc cần hớng dẫn HS thực mơ theo giải thuật tìm dãy số lớn dãy số nguyên Nhặt mảnh giấy hộp A, mở nhớ giá trị mảnh giấy (coi số lớn tạm thời), gấp lại bỏ vào hộp B Nhặt mảnh giấy thứ hai, mở so sánh với giá trị lớn tạm thời, nhớ giá trị lớn thấy lớn Lặp lại công việc đến hết mảnh giấy hộp A
GV thêm, bớt mảnh giấy để HS làm lại Sau HS làm đề nghị em mô tả lại cách em thực để tìm số lớn Cách mà HS làm giống với cách máy tính tính thực theo thuật tốn Máy tính tham chiếu đến số dãy số, máy tính khơng có khả quan sát dãy số máy tính phải thực theo thuật tốn nh Máy tính thực theo dẫn ngời, máy tính khơng có trí thơng minh Tất nhiên, ngợc lại máy tính lại có u điểm vợt trội tốc độ xử lí
Có thể cải biến nội dung dạy học thành nhiều trị chơi khác Ví dụ, u cầu em không sử dụng giấy, bút, GV lần lợt viết số lên bảng, xố ln, HS quan sát để tìm số lớn (hoặc nhỏ nhất) Hoặc mời nhóm HS đứng lên phía lớp Mời em qua bạn một, em đến bên bạn bạn phải đa số (có thể nói thầm viết mảnh giấy) Đi hết lợt HS phải nói đợc bạn đa số lớn (hoặc nhỏ nhất) Kết đợc kiểm chứng công khai bạn đa s
Thuật toán tìm Max dÃy số nguyên nhËp tõ bµn phÝm nh sau: Bíc NhËp N vµ d·y A1, , An
Bíc Max A1
Bớc Lần lợt gán giá trị từ đến N cho i Với giá trị i thực hiện: Nếu Max <Ai MaxAi
Bớc Đa hình giá trị Max kÕt thóc.
Sau giới thiệu xong thuật tốn tìm Max giáo viên hớng dẫn HS xác định biến, kiểu biến viết khai báo biến; viết câu lệnh thực bớc nhập N, nhập phần tử mảng, tìm Max, in Max hình Chơng trình đợc xây dựng dần phần cuối có đợc chơng trình nh dới
program P_Max;
Var
i, N, Max : integer;
A: array[1 100] of integer;
Begin
{Nhap N}
write('Hay nhap dai cua day so, N = '); readln(N); {Nhap day so}
writeln('Nhap cac phan tu cua day so:'); For i:=1 to N do
Begin
write('a[',i,']='); readln(a[i]); End;
(55)Max:=a[1];
for i:=2 to n do if Max<a[i] then Max:=a[i]; {Hien thi Max man hinh}
write('So lon nhat la Max = ',Max); readln;
End
Yêu cầu HS chỉnh sửa chơng trình để tìm giá trị nhỏ dãy số nguyên, tính tổng dãy số Sau hiểu -rõ thuật tốn chơng trình tìm Max, Min u cầu HS kết hợp tìm Max, Min chơng trình nh SGK
3 Hớng dẫn trả lời câu hỏi tập Bài 1. Đúng
Bi 2. Li ớch việc sử dụng biến mảng rút gọn việc viết chơng trình, sử dụng câu lệnh lặp để thay nhiều câu lệnh Ngoài cịn lu trữ xử lí nhiều liệu có nội dung liên quan đến cách hiu qu
Bài 3. Đáp án a) Sai Phải thay dÊu phÈy b»ng hai dÊu chÊm; b) vµ c) Sai, giá trị nhỏ lớn số mảng phải số nguyên; d) Sai, giá trị đầu số mảng phải nhỏ số cuối; e) Đúng
Bi 4. Không Giá trị nhỏ lớn số mảng phải đợc xác định khai báo bin mng
Bài 5. Chơng trình nh sau:
var N, i: integer;
A: array[1 100] of real;
begin
write('Nhap so phan tu cua mang, n= '); read(n);
for i:=1 to n do
begin
write('Nhap gia tri ',i,'cua mang, a[',i,']= ');
readln(a[i]) end;
end Bài 6. Đúng
Bài 7. a) Nếu không sử dụng biến mảng, chơng trình dài nh sau:
uses crt;
var So_1, So_2, So_3, So_4, So_5, Max: integer;
begin
clrscr;
write('Nhap so thu nhat: '); readln(So_1); write('Nhap so thu hai: '); readln(So_2); write('Nhap so thu ba: '); readln(So_3); write('Nhap so thu tu: '); readln(So_4); write('Nhap so thu nam: '); readln(So_5); Max:=So_1;
If Max<So_2 then Max:=So_2;
If Max<So_3 then Max:=So_3;
If Max<So_4 then Max:=So_4;
If Max<So_5 then Max:=So_5; writeln('So lon nhat: ',Max);
end
(56)uses crt;
var i, Max: integer;
A: array[1 5] of integer;
begin
clrscr;
for i:=1 to do
begin write('Nhap so thu ',i,':'); readln(A[i]) end; Max:=a[1];
for i:=2 to do If Max<a[i] then Max:=a[i]; writeln('So lon nhat: ',Max);
end
Lu ý Xem cách viết chơng trình ngắn gọn khơng sử dụng biến mảng tập 9, Tuy nhiên, cách viết khơng cho kết mong muốn sau nhập giá trị biến cần thực thao tác liệu khác với giá trị
Bài 8. Viết chơng trình sử dụng biến mảng để tính giá trị trung bình tổng N số nguyên đợc nhập vào từ bàn phím
uses crt;
var N, i: integer; TB: real;
A: array[1 100] of real;
begin
clrscr;
write('Nhap so phan tu cua mang, n= '); read(n);
for i:=1 to n do
begin
write('Nhap gia tri ',i,'cua mang, a[',i,']= '); readln(a[i])
end; TB:=0;
for i:=1 to n do TB:=TB+a[i]; TB:=TB/n;
write('Trung binh bang ',TB);
end
Bài 9. Chơng trình nhập n số nguyên từ bàn phím tính tổng số dơng:
uses crt;
var n,k,S: integer;
X: array[1 1000] of integer;
begin
clrscr;
write('Nhap so tu nhien n: '); readln(n);
for k:=1 to n do
begin write('Nhap X[',k,']='); readln(X[k]) end; S:=0;
for k:=1 to n do
if X[k]>0 then S:=S+X[k]; writeln('Tong cac duong S=',S); readln;
end
(57)sự số nguyên, nhng cha liệt kê đợc ớc số Để liệt kê, chơng trình cần phải ghi lại chúng ý tởng sử dụng biến mảng phục vụ cho điều Chơng trình tơng tự nh tập 9, Bài 8:
uses crt;
var n,i,k,S: integer;
X: array[1 10000] of integer;
begin
clrscr; i:=2; S:=0;
for k:=1 to (n-1) do X[k]:=0; {Dat lai = 0} write('Cho so tu nhien n>2: n= '); readln(n);
while i<=(n-1) do {Ghi lai uoc so vao X[i]}
begin if (n mod i)=0 then begin X[i]:=i; S:=S+X[i] end; i:=i+1;
end;
writeln('Tong cac uoc so thuc su cua ',n,' la: ',S);
if S<>0 then begin write('Cac uoc so cua ',n,' la: ');
for i:=1 to (n-1) if X[i]<>0 then write(X[i],' ') end else writeln(n,' la so nguyen to.');
readln;
end
Bµi thùc hành Xử lí dÃy số chơng trình
1 Mục đích, u cầu
Thùc hµnh khai báo sử dụng biến mảng ;
Ôn luyện cách sử dụng câu lệnh lặp if then, for do; Củng cố kĩ đọc, hiểu chỉnh sửa chơng trình
Hiểu viết đợc chơng trình với thuật tốn tìm giá trị lớn nhất, nhỏ dãy số, tính tổng dãy số
2 Những điểm cần lu ý gợi ý d¹y häc
Để gây hứng thú cho HS, cần dành thời gian để HS gõ, chạy thử chơng trình tìm Max, Min, Tính tổng dãy số Hơn nữa, việc thực học cần thiết yêu cầu Ch ơng trình HS cần viết đợc chơng trình Chơng trình tìm Max đợc tiến hành lí thuyết, GV cần h-ớng dẫn HS tham khảo chơng trình P_Max để tự viết đợc chơng trình P_Min chơng trình tính tổng P_Sum.
Chơng trình tìm Max đợc giới thiệu trên, dới chơng trình P_Min chơng trình P_Sum.
Chơng trình tìm giá trị nhỏ dÃy sè nguyªn P_Min:
Program P_Min;
Var
i, n, Min : integer;
A: array[1 100] of integer;
Begin
write('Hay nhap dai cua day so, N = '); readln(n); writeln('Nhap cac phan tu cua day so:');
For i:=1 to n do
Begin
write('a[',i,']='); readln(a[i]); End;
(58)for i:=2 to n do if Min>a[i] then Min:=a[i]; write('So nho nhat la Min = ',Min);
readln;
End
Chơng trình tính tổng dãy số, chơng trình có thêm câu lệnh in hình dãy số vừa nhập để ngời sử dụng thuận tiện kiểm chứng kết chơng trình Nhng nhằm mục đích luyện tập với việc in phần tử mảng hình
Program P_Sum;
Var
i, n, Sum : integer;
A: array[1 100] of integer;
Begin
write('Hay nhap dai cua day so, N = '); readln(n); writeln('Nhap cac phan tu cua day so:');
For i:=1 to n do
Begin
write('a[',i,']='); readln(a[i]); End;
Sum:=0;
for i:=1 to n do Sum:= Sum + a[i]; write('Day so vua nhap la: '); for i:=1 to n do write(a[i], ' '); writeln;
write('Tong day so la = ',Sum); readln;
End
Thời gian lại dành để HS thực hành với sử dụng kết hợp nhiều câu lệnh, biểu thức điều kiện SGK