Phần 1

A. những vấn đề chung
I. Nội dung chương trình và chuẩn kiến thức, kĩ năng môn Tin học cấp trung học 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 về thuật toán và ngôn ngữ lập trình, các cấu trúc chương trình cơ bản: tuần tự, rẽ nhánh và lặp ở mức phổ thông. o Biết được các lợi ích của việc viết các chương trình máy tính để giải quyết những bài toán khác nhau trong các lĩnh vực của đời sống. o Biết cách sử dụng được các phần mềm học tập trình bày trong SGK. o Hiểu được ý nghĩa của các phần mềm máy tính ứng dụng trong các lĩnh vực khác nhau của cuộc sống.

Kĩ năng: o Giải được một số bài toán đơn giản trên máy tính bằng cách vận dụng thuật toán đơn giản, dữ liệu chuẩn trên ngôn ngữ lập trình bậc cao cụ thể. o Sử dụng và khai thác thành thạo các phần mềm học tập được giới thiệu. o Rèn luyện khả năng thao tác nhanh với bàn phím và chuột máy tính.

Thái độ: o Ham thích môn học, tác phong làm việc nghiêm túc, cẩn thận và tinh thần làm việc theo nhóm. o Nghiêm túc khi học và làm việc trên máy tính không phân biệt phần mềm học tập hay phần mềm trò chơi. Có ý thức sử dụng máy tính đúng mục đích. o Nâng cao ý thức và lòng say mê học tập các môn học.

2. Nội dung chương trình • Lập trình đơn giản - Thuật toán và ngôn ngữ lập trình; - Chương trình Turbo Pascal (TP) đơn giản; 3

- Tổ chức rẽ nhánh; - Tổ chức lặp; - Kiểu mảng và biến có chỉ 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ủ Đề Lập trình đơn giản Kiến thức MứC Độ CầN ĐạT GHI CHú

1. Thuật toán và ngôn ngữ lập trình

• Biết được khái niệm bài toán, thuật toán. • Biết rằng có thể mô tả thuật toán bằng cách liệt

kê các bước hoặc sơ đồ khối. • Biết được một chương trình là mô tả của một thuật toán trên một ngôn ngữ cụ thể. Kĩ năng

• Mô tả được thuật toán đơn giản bằng liệt kê các
bước Kiến thức

- Nên chọn thuật toán của bài toán gần gũi, quen thuộc với học sinh

• Biết sơ bộ về ngôn ngữ lập trình Pascal • Biết cấu trúc của một chương trình TP: cấu trúc - Có thể sử dụng ngôn
chung và các thành phần. • Biết các thành phần cơ sở của ngôn ngữ Pascal. • Hiểu được một số kiểu dữ liệu chuẩn. • Hiểu được cách khai báo biến. • Biết được các khái niệm: phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan hệ. • Hiểu được lệnh gán. • Biết các câu lệnh vào/ra đơn giản để nhập thông tin từ bàn phím và đưa thông tin ra màn hình. Kĩ năng ngữ lập trình khác theo hướng dẫn thực hiện chương trình. - Minh hoạ các khái niệm bằng một chương trình TP đơn giản. - Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để học sinh đạt được những kỹ năng theo yêu cầu

2. Chương trình TP đơn giản

• Viết được chương trình TP đơn giản, khai báo
3. Tổ chức rẽ nhánh Kiến thức

đúng biến, câu lệnh vào/ra để nhập thông tin từ bàn phím hoặc đưa thông tin ra màn hình.

• Hiểu được câu lệnh rẽ nhánh (dạng thiếu và
dạng đủ). • Hiểu được câu lệnh ghép. Kĩ năng

- Nhấn mạnh 3 cấu trúc điều khiển là tuần tự, rẽ nhánh và lặp. - Trình bày được thuật toán của một số bài toán rẽ nhánh thường gặp, chẳng hạn giải

• Viết đúng các lệnh rẽ nhánh khuyết, rẽ nhánh
đầy đủ.

4

CHủ Đề nhánh.

MứC Độ CầN ĐạT

GHI CHú

• Biết sử dụng đúng và có hiệu quả câu lệnh rẽ phương trình bậc nhất.
Kiến thức

• Hiểu được câu lệnh lặp kiểm tra điều kiện - Kĩ năng chỉ yêu cầu
4. Tổ chức lặp trước, vòng lặp với số lần định trước. • Biết được các tình huống sử dụng từng loại lệnh lặp. Kĩ năng

sử dụng lệnh lặp với số lần định trước.

• Viết đúng lệnh lặp với số lần định trước.
Kiến thức

5. Kiểu mảng và biến có chỉ số

• Biết được khái niệm mảng một chiều • Biết cách khai báo mảng, truy cập các phần tử
của mảng Kĩ năng

• Thực hiện được khai báo mảng, truy cập phần
tử mảng, sử dụng các phần tử của mảng trong biểu thức tính toán Kiến thức 6. Một số thuật toán tiêu biểu

- Yêu cầu học sinh viết được chương trình của một số bài toán sau: nhập giá trị phần tử của mảng, in, tính tổng các phần tử

• Hiểu thuật toán của một số bài toán thường gặp

như: tìm số lớn nhất, số nhỏ nhất; kiểm tra 3 số cho trước có phải là độ dài 3 cạnh của tam giác không. Kiến thức

Khai thác phần mềm học tập

• Biết cách sử dụng phần mềm học tập đã lựa - Lựa chọn phần mềm
chọn Kĩ năng học tập theo hướng dẫn thực hiện chương trình.

• Thực hiện được các công việc khởi động/ra

khỏi, sử dụng bảng chọn, các thao tác tương tác với phần mềm.

II. Giới thiệu sách giáo khoa tin học dành cho trung học cơ sở - quyển 3 1. Cấu trúc, nội dung và phân bổ thời lượng Sách giáo khoa Tin học dành cho THCS Q3 được biên soạn theo một số định hướng cụ thể sau:  Thể hiện đúng các nội dung, yêu cầu của chương trình đã được Bộ Giáo dục và Đào tạo phê duyệt là cung cấp cho học sinh những kiến thức, kĩ năng cơ bản, thiết thực và có hệ thống ban đầu về thuật toán và kĩ thuật lập trình. Tiếp cận được trình độ giáo dục phổ thông của các nước tiên tiến trong khu vực và trên thế giới.

5

Nội dung sách giáo khoa tập trung vào những kiến thức định hướng để từ đó học sinh có thể phát huy những yếu tố tích cực của các thành tựu công nghệ thông tin và tăng cường khả năng tự học. Nội dung, cách trình bày và diễn đạt ngắn gọn, dễ hiểu thông qua mô tả và các ví dụ minh hoạ cụ thể. 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: Phần 1- Lập trình đơn giản: gồm 9 bài lí thuyết, 7 bài thực hành; Phần 2 - Phần mềm học tập: gồm 4 bài lí thuyết kết hợp với thực hành.

Nội dung TIN học dành cho THCS - quyển 3 Phần 1- Lập trình đơn giản Bài 1. Máy tính và chương trình máy tính Bài 2. Làm quen với Chương trình và Ngôn ngữ lập trình Bài thực hành 1. Làm quen với Turbo Pascal Bài 3. Chương trình máy tính và dữ liệu Bài thực hành 2. Viết chương trình để tính toán Bài 4. Sử dụng biến trong chương trình Bài thực hành 3. Khai báo và sử dụng biến Bài 5. Từ bài toán đến chương trình Bài 6. Câu lệnh điều kiện Bài thực hành 4. Sử dụng lệnh điều kiện if ... then Bài 7. Câu lệnh lặp Bài thực hành 5. Sử dụng lệnh lặp for ... do Bài 8. Lặp với số lần chưa biết trước Bài thực hành 6. Sử dụng lệnh lặp while...do Bài 9. Làm việc với dãy số Bài thực hành 7 Xử lí dãy số trong chương trình Phần 2 - Phần mềm học tập Luyện gõ phím nhanh với Finger Break Out Tìm hiểu thời gian với phần mềm Sun Times 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:

6

Thời lượng dành cho các bài kiểm tra định kì là 8 tiết. GV có thể chọn lựa. riêng bài 5 dạy trong 04 tiết lí thuyết và và 02 tiết bài tập. hiểu. phần 2 (Phần mềm học tập) không cần tiết bài tập. Điều này thể hiện câu hỏi. bài tập là một phần quan trọng trong việc giúp HS tiếp thu kiến thức. Một số giải thích a) Sách giáo khoa Tin học dành cho THCS . Phần mềm học tập Bài tập Ôn tập Kiểm tra Tổng cộng Bài lí thuyết hoặc lí thuyết kết hợp thực hành 9 4 Bài thực hành 7 Tổng số tiết 34 16 8 4 8 13 7 70 - 2. d) Trong phân bổ thời lượng. Mỗi bài được dạy trong trọn vẹn 04 tiết. 3. b) Phần 1 gồm 9 bài lí thuyết. Có 7 bài thực hành. mỗi bài dạy trong 02 tiết lí thuyết và 01 tiết bài tập. rèn luyện kĩ năng. gây quá tải.Nội dung Phần 1. đọc thêm. Cách tiếp cận này thể hiện rõ việc dạy lập trình 7 . Phần 2 gồm 4 bài lí thuyết kết hợp thực hành. e) Các nội dung đọc thêm ở cuối bài là không bắt buộc. giải thích đôi chút để gây hứng thú cho các em ham thích. mỗi học kì 02 tiết. Lập trình đơn giản Phần 2.Quyển 3 được biên soạn bám sát theo nội dung. cấp THCS. các Bài 1 và 2 không có tiết bài tập riêng. c) Thời lượng dành cho ôn tập cuối kì là 04 tiết. Về cơ bản 8 tiết bài tập dành cho việc làm bài tập phần 1 (Lập trình đơn giản). yêu cầu của Chương trình giáo dục phổ thông môn Tin học. Việc phân bổ thời lượng trên đây chỉ là tương đối. số tiết bài tập là khá nhiều (8 tiết). kĩ năng chung về lập trình và sử dụng ngôn ngữ Pascal để minh hoạ. giới thiệu. mỗi học kì 04 tiết. trong quá trình dạy học giáo viên (GV) có thể điều chỉnh để phù hợp với tình hình thực tiễn. tránh yêu cầu tất cả HS phải đọc. mỗi bài dạy trong 02 tiết. phần III đã được ban hành kèm theo Quyết định số 16/2006/QĐ-BGDĐT ngày 05/5/2006 của Bộ trưởng Bộ Giáo dục và Đào tạo. Gợi ý về cách tiến hành giảng dạy a) Về cơ bản SGK lựa chọn phương án trình bày kiến thức.

tiết bài tập nên dành thời gian để hướng dẫn học sinh làm một số bài tập trong SGK (nếu trong tiết lí thuyết chưa làm hết). Có thể tiếp cận bằng cách đi từ ngôn ngữ lập trình cụ thể Pascal rồi khái quát thành những kiến thức. Hơn nữa. lựa chọn cách mô tả này để giảng dạy phù hợp với đối tượng HS của mình. giờ bài tập để HS chỉnh sửa. Cách tiếp cận từ cụ thể đến khái quát có thể sẽ phù hợp hơn với phần lớn HS THCS. Tuy nhiên. GV nên gõ sẵn các chương trình được viết trong giờ lí thuyết. Đối với một bài toán cụ thể. ôn tập. trong tiết ôn tập cần tổng kết. hiểu rõ hơn về nội dung lí thuyết vừa học. f) Các bài toán được giới thiệu trong SGK nói chung là đơn giản. nhiệm vụ của HS là viết được chương trình. Cách làm này có thuận lợi là 8 . kĩ năng. kĩ năng của lập trình nói chung. Các tiết này chưa được định nội dung cụ thể. 4 tiết để ôn tập. GV hoàn toàn chủ động đưa ra nội dung cho tiết bài tập. d) Trong phân bổ thời lượng dành 8 tiết để làm bài tập. bổ sung bài thực hành trên máy tính để HS ôn luyện kiến thức. ghi nhớ. khái quát những kiến thức. qua các bài toán HS cần hiểu và thực hiện được các bước giải bài toán trên máy tính: Xác định bài toán. output của bài toán. rút ra được những kiến thức. việc này sẽ giúp tạo hứng thú. Tuỳ mức độ tiếp thu của HS. Vì vậy. kĩ năng ở một số bài học cụ thể. nguyên lí của lập trình nói chung. ở nội dung của từng bài cụ thể được gợi ý về cách dạy học theo hướng từ cụ thể để khái quát. Do vậy. chạy thử. Làm như vậy sẽ giúp HS củng cố. không nên yêu cầu HS gõ các chương trình này trong tiết thực hành. chuẩn bị cho những bài thực hành sau đó. mô tả thuật toán bằng cách liệt kê và viết chương trình. Đặc biệt tiết ôn tập cần khái quát hoá để thể hiện được tư tưởng dạy lập trình mà không dạy ngôn ngữ lập trình cụ thể. Trong SGV có hướng dẫn thời điểm khái quát hoá kiến thức. Các tiết ôn tập nên được bố trí vào cuối kì (ngay trước hoặc ngay sau bài kiểm tra cuối học kì). kĩ năng trọng tâm của chương trình để HS khắc sâu. gắn kết tốt hơn giữa học với hành. tiết bài tập cần để HS chạy thử ở bài thực hành ngay sau đó. có thể viết chương trình mà không gặp nhiều khó khăn. thuật toán điển hình nào đó. e) Trong SGV có gợi ý mô tả một số thuật toán theo cách biểu diễn gần với câu lệnh mà học sinh cần viết hoặc cần tìm hiểu trong chương trình tương ứng. phần mềm TP là khá nhiều nên dễ cảm nhận là đang học ngôn ngữ Pascal. GV có thể tham khảo. xây dựng (lựa chọn) thuật toán và viết chương trình. chương trình. tìm hiểu trong giờ thực hành. c) Các chương trình được viết khi học ở tiết lí thuyết. GV có thể ra thêm các bài tập. trong quá trình dạy học GV cần lưu ý tiến hành khái quát đúng lúc. Tuy nhiên. Trong SGV. củng cố niềm tin cho HS.nói chung mà không phải là dạy ngôn ngữ lập trình cụ thể Pascal. Để tránh HS mất nhiều thời gian vào việc gõ chương trình. g) Có một thực tế là một số câu lệnh (nhất là câu lệnh có cấu trúc) thì hay được giới thiệu gắn liền với một số bài toán. b) Do sử dụng ngôn ngữ Pascal để minh hoạ. đúng chỗ để HS vượt ra khỏi một ngôn ngữ cụ thể. cần thực hiện đầy đủ các bước đi từ bài toán đến chương trình: Xác định input. Tuy nhiên. khi giảng dạy GV không nhất thiết phải trình bày theo cách tiếp cận này. thời lượng làm việc với các câu lệnh. xây dựng. kĩ năng.

Trong SGV có giới thiệu một số cách làm như vậy. cân nhắc kĩ lưỡng. ảnh cách trình bày trong SGK đã được chọn lọc. mặc dù SGK trình bày hai phần tách biệt nhưng không có nghĩa là phải dạy theo đúng tuần tự trình bày các bài trong SGK. j) Việc giới thiệu phần mềm học tập nhằm mục đích chính là cung cấp kiến thức. Nếu tiến hành hai bài kiểm tra định kì (mỗi bài 1 tiết) trong một học kì. h) SGK là tài liệu mà HS nào cũng có. gây thêm hứng thú học tập. thì nên có một bài kiểm tra trên giấy. Khi đó. trọng tâm của chương trình. nhưng khi kĩ năng đọc hiểu của HS được cải thiện thì việc dành thời gian để các em tự đọc có thể sẽ không những không mất thời gian mà ngược lại sẽ tiết kiệm thời gian.HS vừa học được câu lệnh mới vừa học được bài toán. Ban đầu việc giao bài cho HS đọc có thể mất thời gian. nghĩa là dạy xong câu lệnh rồi đến thuật toán hoặc ngược lại. SGK được in màu. 1 bài kiểm tra thực hành trên máy. HS chỉ cần tập trung tìm hiểu câu lệnh mới. Trong các tiết ôn tập GV cần khái quát kiến thức. 2 tiết còn lại dành cho các bài kiểm tra định kì trong học kì. 4. b) Thời lượng để kiểm tra. Căn cứ vào tình hình thực tế của lớp học. bài toán sử dụng để giới thiệu hoặc áp dụng câu lệnh mới thường dễ hoặc HS đã biết bài toán. Vì vậy. rèn luyện kĩ năng làm việc với môi trường lập trình. Để giảm bớt khó khăn cho HS. các tranh. khi giới thiệu thuật toán mới thì cần sử dụng câu lệnh HS đã biết sử dụng. cần khai thác tối đa SGK trong quá trình dạy học. kĩ năng lập trình nói chung thể hiện rõ mục tiêu. Không để tình trạng vào tiết thực hành HS mới biết bài toán và viết chương trình ngay trên máy tính mà chưa chuẩn bị trước. Cũng chính vì lí do này mà trong SGK không đánh số thứ tự bài ở phần Phần mềm học tập. kĩ năng trọng tâm của chương trình. thuật toán. đối với một số HS việc cùng lúc phải học cả hai nội dung mới không phải lúc nào cũng dễ dàng. Có thể dành 2 tiết cho bài kiểm tra cuối học kì. không phải mất thời gian để hiểu bài toán. thuật toán từ trước. Tiết thực hành cơ bản là để HS chạy thử chương trình. hình thức đẹp. Ngược lại. mỗi học kì 04 tiết. lúc đó HS cũng chỉ tập trung vào tìm hiểu thuật toán mới. Hi vọng cách làm như vậy sẽ tạo thuận lợi để học sinh tiếp thu kiến thức nhẹ nhàng hơn. việc khai thác phần mềm học tập còn nhằm mục đích tạo sự thay đổi. Tuy nhiên. rèn luyện kĩ năng khai thác phần mềm cho HS. Do vậy. tổng kết kiến thức. HS chỉ còn duy nhất nhiệm vụ tìm hiểu câu lệnh. Ôn tập và kiểm tra a) Thời lượng dành cho ôn tập là 04 tiết (02 tiết/học kì). thuật toán mới. nên dành các tiết ôn tập để ôn luyện. đánh giá là 8 tiết. i) Việc dạy học các phần mềm dạy học sẽ hiệu quả hơn nếu tiến hành tại phòng máy tính. Nội dung của Phần 2 (Phần mềm học tập) cần được dạy xen kẽ với Phần 1 (Lập trình đơn giản). Bên cạnh đó. nên tách việc dạy câu lệnh mới với việc dạy thuật toán mới. Một trong những việc có thể thực hiện ngay trong lớp học đó là hướng dẫn HS và dành thời gian cho HS tự nghiên cứu nội dung SGK. Hướng dẫn cụ thể hơn về kiểm 9 . Nhưng khi dạy lập trình không nên lạm dụng phòng máy tính. giáo viên tự xác định nội dung các tiết ôn tập. Tuy nhiên.

máy chiếu vật thể. bài tập về kiến thức. sách giáo khoa môn Tin học lớp 8 và phân phối chương trình môn học. 10 . Những câu hỏi. danh mục còn có các tranh. Tuy nhiên. tránh HS chỉ chú trọng đến đến chi tiết cụ thể của ngôn ngữ lập trình Pascal. kĩ năng trọng tâm của chương trình.. e) Việc kiểm tra. ảnh được phóng to để dạy học. đánh giá. Các phần mềm phục vụ dạy học theo SGK (kể cả các phần mềm học tập) đều có thể được tải về từ website nêu trên và có sẵn trong đĩa CD của GV tham dự lớp bồi dưỡng GV cốt cán. Vì vậy. đánh giá có tác động đến quá trình dạy học. Thiết bị dạy học a) Bộ Giáo dục và Đào tạo đang tiến hành xây dựng. c) Nội dung kiểm tra phải đảm bảo cả lí thuyết và thực hành. kĩ năng lập trình nói chung. cần lưu ý mục tiêu của giờ thực hành là để học sinh thực hành. g) Việc kiểm tra. xếp loại học sinh trung học cơ sở và học sinh trung học phổ thông (Ban hành kèm theo Quyết định số: 40/2006/QĐ-BGDĐT ngày 05 tháng 10 năm 2006 của Bộ trưởng Bộ Giáo dục và Đào tạo). chăm chỉ. 5. Với các nội dung dạy học trong SGK thì hoàn toàn có thể thay thế TP (for Dos) bằng Pascal for Windows hoặc Free Pascal. b) Phần lớn các nội dung dạy học Tin học THCS sẽ rất hiệu quả khi sử dụng các thiết bị trình chiếu. là các thiết bị được khuyến khích trang bị để dạy học cho môn Tin học. đánh giá có trong cuốn Hướng dẫn thực hiện chương trình. f) Cần tiến hành đánh giá học sinh trong giờ thực hành. Trong tiết thực hành có thể đánh giá. Theo đó. đánh giá nội dung này. điểm này là điểm kiểm tra thường xuyên (hệ số 1).net . d) Một số nội dung trong phần lập trình đơn giản thuận lợi cho việc áp dụng phương pháp trắc nghiệm khách quan trong kiểm tra. máy chiếu overhead. bên cạnh việc kiểm tra những kiến thức. Kiểm tra trong giờ thực hành là để học sinh tập trung.tra. bài tập này sẽ giúp HS có ý thức chú trọng đến kiến thức. kĩ năng lập trình nói chung. cho điểm cả lớp một nhóm hoặc một vài học sinh. 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.. nghiêm túc học tập. GV có thể tải phần mềm TP đã được chỉnh sửa lỗi này trên website www. Dự kiến danh mục thiết bị dạy học tối thiểu quy định mỗi trường THCS phải có tối thiểu một phòng máy với ít nhất 25 máy vi tính nối mạng và kết nối Internet. kĩ năng gắn liền với ngôn ngữ lập trình cụ thể. do vậy máy chiếu projector. Phần mềm TP chạy trên các máy tính có tốc độ cao hiện nay có thể bị lỗi Division by zero (khi sử dụng thư viện crt uses crt). Cần lựa chọn nội dung kiểm tra để đảm bảo bao quát hết kiến thức. c) Trong SGK sử dụng phần mềm Turbo Pascal để minh hoạ. cần dành một tỉ lệ thích đáng cho câu hỏi. đánh giá môn Tin học cấp THCS được thực hiện theo Quy chế Đánh giá. cần lưu ý tăng cường sử dụng trắc nghiệm khách quan trong kiểm tra.vnschool. không phải là giờ kiểm tra. các trường THCS phải đáp ứng được danh mục thiết bị dạy học tối thiểu này thì mới có thể tổ chức dạy học môn Tin học.. Để định hướng học tập đúng cho HS. Ngoài máy tính.

e) Hiện nay ở một số trường THCS có thể còn có những máy tính cấu hình thấp đã được trang bị từ trước. tận dụng các máy tính cũ để phục vụ cho các tiết thực hành với TP. Dưới đây giới thiệu một số phần mềm để giáo viên tham khảo: o XClass: www. Do vậy.com để tìm kiếm).com. cần rà soát.com.com để tìm kiếm). f) Hiện nay có một số phần mềm hỗ trợ cho việc quản lí dạy học trên phòng máy tính. Trong trường hợp đó nên thay thế TP (for DOS) bằng Pascal for Windows hoặc Free Pascal.google. 11 .d) Những trường được trang bị hệ thống Hishare (một CPU kết nối với nhiều màn hình) có thể gặp khó khăn khi sử dụng TP (for DOS).google.vn.hungphat.anhkiet. o Magic Class: www. Hơn thế nữa các phần mềm này còn giúp khai thác phòng thực hành môn Tin học như một phòng đa phương tiện để dạy học môn học khác. Những máy tính này hoàn toàn có thể được sử dụng để thực hành với phần mềm TP (for DOS). o E-Learning Class (Đề nghị sử dụng www. o NetOPSchool (Đề nghị sử dụng www.vn. do tốc độ rất chậm.

vòng lặp với số lần định trước. truy cập phần tử mảng. kĩ năng cơ bản. Hiểu thuật toán của một số bài toán đơn giản (tìm số lớn nhất. số nhỏ nhất. Viết được chương trình đơn giản. câu lệnh ghép. những vấn đề cụ thể phần 1. hàm số học chuẩn.B. thuật toán. rẽ nhánh đầy đủ. đơn giản. cách khai báo biến. Biết cấu trúc của một chương trình. một số thành phần cơ sở của ngôn ngữ. khai báo đúng biến. Kĩ năng • • • • • • Thái độ • 12 . Thực hiện được khai báo mảng. Giới thiệu 1. Viết đúng các lệnh rẽ nhánh khuyết. Kiến thức • • • • • • • • • • • Biết được khái niệm bài toán. biểu thức số học. ham thích lập trình trên máy tính để giải các bài tập. kiểm tra ba số cho trước có phải là độ dài ba cạnh của một tam giác không). sử dụng các phần tử của mảng trong biểu thức tính toán. câu lệnh vào/ra để nhập thông tin từ bàn phím hoặc đưa thông tin ra màn hình. Hiểu được lệnh gán. Mô tả được thuật toán đơn giản bằng liệt kê các bước. câu lệnh lặp kiểm tra điều kiện trước. mô tả thuật toán bằng cách liệt kê. Biết được các tình huống sử dụng từng loại lệnh lặp. Mục tiêu Mục tiêu của phần này là cung cấp cho HS một số kiến thức. truy cập các phần tử của mảng. Biết các khái niệm: phép toán. Biết được một chương trình là mô tả của một thuật toán trên một ngôn ngữ cụ thể. lập trình đơn giản I. Biết sử dụng đúng và có hiệu quả câu lệnh điều kiện. Biết các câu lệnh vào/ra đơn giản để nhập thông tin từ bàn phím và đưa thông tin ra màn hình. Viết đúng lệnh lặp với số lần định trước. Nghiêm túc trong học tập. biểu thức quan hệ. Biết được khái niệm mảng một chiều. Hiểu được câu lệnh điều kiện. cách khai báo mảng. Hiểu một số kiểu dữ liệu chuẩn. phổ thông về lập trình thông qua ngôn ngữ lập trình bậc cao Pascal.

Khai báo và sử dụng biến (2 tiết) Bài 5.. 3. Nội dung của phần này là cung cấp cho học sinh một số kiến thức và kĩ năng ban đầu về lập trình. giáo viên có thể phân bố thời lượng cho các bài sao cho phù hợp hơn với tình hình cụ thể của nhà trường và trình độ nhận thức của học sinh. Viết chương trình để tính toán (2 tiết) Bài 4. Mỗi bài thực hành được trình bày ngay sau bài lý thyết nhằm mục đích để học sinh ghi nhớ và rèn luyện những kiến thức và kĩ năng học sinh đã học trong bài lí thuyết trước đó. Mục tiêu của SGK là trình bày các khái niệm ban đầu về lập trình nói chung. Phần này được chia thành 9 bài lí thuyết và 7 bài thực hành. Những điểm cần lưu ý và gợi ý dạy học a. nhà trường. Làm việc với dãy số (2 tiết) Bài thực hành 7.. Riêng với Bài 5 thời lượng được tăng gấp đôi. nội dung mỗi bài được biên soạn để trình bày trọn vẹn trong 02 tiết và 01 tiết bài tập. do (2 tiết) Bài 8. nhất là môn Toán. Câu lệnh lặp (2 tiết) Bài thực hành 5. Lặp với số lần chưa biết trước (2 tiết) Bài thực hành 6. Về cơ bản SGK trình bày theo cách tiếp cận các kiến thức. 13 . mặt khác chúng có thể phục vụ cho việc học tập và tìm hiểu sâu hơn các môn học khác. việc phân bố thời lượng như trên chỉ là tương đối. trong quá trình giảng dạy. không phải dạy một ngôn ngữ lập trình nhất định. viết được một số chương trình đơn giản bằng một ngôn ngữ lập trình cụ thể là ngôn ngữ Pascal. Sử dụng lệnh lặp for . ngôn ngữ lập trình nói chung. b.. với cố gắng không gắn với một ngôn ngữ lập trình cụ thể. Nội dung Bài 1. Các chương trình đơn giản này một mặt gây sự hứng thú cho học sinh trong việc tìm hiểu các bài toán phức tạp hơn và viết chương trình để giải quyết các bài toán đó. Sau phần này.2... kĩ năng về lập trình. Câu lệnh điều kiện (2 tiết) Bài thực hành 4. Làm quen với chương trình và ngôn ngữ lập trình (2 tiết) Bài thực hành 1. then (2 tiết) Bài 7. khái niệm cơ bản về lập trình từ khái quát đến cụ thể. Cách tiếp cận này thể hiện rõ mục tiêu chính của chương trình là dạy kiến thức. Từ bài toán đến chương trình (4 tiết) Bài 6. Xử lí dãy số trong chương trình (2 tiết)Như đã nói ở trên. Sử dụng biến trong chương trình (2 tiết) Bài thực hành 3.do (2 tiết) Bài 9. Sử dụng lệnh điều kiện if .. Máy tính và chương trình máy tính (2 tiết) Bài 2. Làm quen với Turbo Pascal (2 tiết) Bài 3. học sinh sẽ có một số hiểu biết cơ bản về lập trình. tức 04 tiết lí thuyết và 02 tiết câu hỏi và bài tập. Chương trình máy tính và dữ liệu (2 tiết) Bài thực hành 2. Sử dụng lệnh lặp while.

d. rất nhiều kiểu dữ liệu. chẳng hạn như Logo. có tính sư phạm cao. (4) Ngôn ngữ lập trình Pascal chạy được trên hầu hết tất cả các máy đã được trang bị ở các trường THCS từ trước đến nay. chỉnh sửa. kĩ năng theo yêu cầu của chương trình. học sinh có thể chỉnh sửa để có các chương trình tốt hơn.Đối với HS THCS. để HS dễ tiếp thu. giải thích. c. chúng có thể chưa phải là những chương trình đã được viết một cách gọn nhất hoặc tối ưu nhất. tránh việc sa đà trình bày quá nhiều chi tiết về các thủ thuật với ngôn ngữ Pascal. Khó có thể lựa chọn một ngôn ngữ lập trình cụ thể nào đó đáp ứng cùng lúc được các tiêu chí như: hiện đại. Trước hết. dễ dùng. nhất là trong điều kiện hiện nay về cơ sở vật chất của các trường phổ thông. C và Java do chúng là những ngôn ngữ hiện đại và hiện được sử dụng để phát triển hầu hết các ứng dụng.. khi giảng dạy giáo viên cần lưu ý truyền đạt kiến thức về lập trình là chính. Trong quá trình học tập.v. Các ví dụ và chương trình Pascal cũng được lựa chọn và trình bày theo nguyên tắc trên. các câu lệnh lặp khác. C hoặc Java. Việc lựa chọn ngôn ngữ Pascal để minh hoạ trong SGK cũng được cân nhắc kĩ lưỡng bởi một số lí do chính sau đây: (1) Ngôn ngữ Pascal là ngôn ngữ lập trình cấu trúc. Cũng có thể có ý kiến cho rằng có thể chọn một ngôn ngữ lập trình khác để minh họa. câu lệnh điều kiện case. giá thành rẻ (hoặc miễn phí) và tính sư phạm cao. cần nhấn mạnh rằng việc xác định bài toán và xây dựng thuật toán là bước quan 14 . Về thứ tự trình bày các nội dung trong Phần 1. ngữ nghĩa của các câu lệnh và các đặc trưng khác của Pascal một cách đầy đủ như là cẩm nang về lập trình. nhiều câu lệnh chỉ được giới thiệu ngắn gọn mà không đi sâu vào giải thích cú pháp và ngữ nghĩa. hoặc đã không còn được sử dụng rộng rãi. nhất là VB. dễ hiểu. Giáo viên có thể thay thế ngôn ngữ Pascal bằng một ngôn ngữ lập trình khác phù hợp hơn với thực tế của lớp học miễn là truyền đạt được kiến thức. các kĩ năng lập trình như viết. Tuy nhiên chúng được mô tả và trình bày một cách phù hợp với sự phát triển tư duy của học sinh sau khi đã được giới thiệu phần kiến thức tương ứng về ngôn ngữ lập trình. SGK không nhằm mục đích giới thiệu các thành phần. chạy và kiểm thử chương trình đòi hỏi phải sử dụng một ngôn ngữ lập trình bậc cao cụ thể. giáo viên cần lưu ý một vài điểm sau đây. Cho nên cách sử dụng Pascal để minh hoạ trong SGK chỉ là một phương án. v. Do chỉ là một ngôn ngữ đóng vai trò minh họa cho các kiến thức bắt đầu về lập trình nên các nội dung cụ thể gắn liền với Pascal trong SGK đã được cố gắng trình bày một cách cô đọng. Xét về mặt nào đấy. Những ngôn ngữ sau lại là những ngôn ngữ khá nặng nề và phức tạp trong việc cài đặt và sử dụng. tăng tính trực quan và giảm tối đa tính hình thức theo nguyên tắc cần đến đâu thì giới thiệu đến đó. (3) Ngôn ngữ Pascal có nhiều phiên bản chạy được trên hệ điều hành khác nhau hiện có trong trường THCS. (2) Phần lớn GV Tin học ở cấp THCS hiện nay đã được học và thực hành ngôn ngữ lập trình Pascal là chính. việc trình bày về ngôn ngữ lập trình cần thông qua một ngôn ngữ lập trình cụ thể để minh hoạ. cú pháp.. dịch. Do đó các tác giả thấy rằng hiện tại Pascal vẫn là lựa chọn hợp lí và khả thi nhất. Tuy sử dụng Pascal để minh họa.. với sự hướng dẫn của giáo viên. Hơn nữa. (5) Việc cài đặt Pascal là dễ dàng và ngôn ngữ Pascal có thể được sử dụng miễn phí. Hai ngôn ngữ đầu là những ngôn ngữ ít được phổ biến. Basic. không được giới thiệu trong SGK. Chẳng hạn. trong sáng. kiểu dữ liệu. cập nhật. qua đó phát triển tốt hơn các kĩ năng lập trình. VB.

các tác giả cho rằng nội dung về thuật toán và mô tả thuật toán là vấn đề khó nhất trong toàn bộ nội dung của SGK. hầu như học sinh nào cũng có thể nhận biết và áp dụng. để học sinh hiểu được nội dung của các bài từ 1 đến 4 không cần thiết phải có những kiến thức về thuật toán. Có một lý do khác là nếu chưa được giới thiệu và chưa hiểu được bản chất của phép gán. Nếu trình bày về thuật toán ngay trong Bài 1. Bằng cách đó học sinh sẽ dễ thấy hơn mối liên hệ chặt chẽ giữa việc lập trình và cuộc sống. Hơn thế nữa. cũng lợi ích của việc lập trình để giải quyết các bài toán bằng máy tính. Các vấn đề giới thiệu trong các bài đó và trong các bài thực hành có thể giải quyết được với những “thuật toán hiển nhiên”. kĩ năng đã được học ở các bài trước đó. Tuy nhiên. sử dụng những nội dung vừa học ở phần lí thuyết. học sinh sẽ rất khó hiểu các nội dung về thuật toán. nhất là đối với phần lớn học sinh không có nhiều năng khiếu về toán. việc mô tả thuật toán lại gắn liền với tư duy công nghệ. Ngay sau bài lí thuyết (trừ bài 1 và bài 5) là bài thực hành những kiến thức lí thuyết đã học. việc giới thiệu như thế sẽ làm cho học sinh hiểu nhầm rằng lập trình chính là giải toán (mặc dù việc giải quyết các bài toán nhỏ đúng là như thế). Các bài thực hành này về cơ bản là để HS thực hành. Đó chính là lí do nội dung về bài toán và thuật toán được trình bày trong Bài 5. Tuy nhiên. từ đó dẫn dắt đến cách thức giải quyết các vấn đề đời thường đó bằng cách viết chương trình. Bài lí thuyết giới thiệu các kiến thức ban đầu về nội dung tương ứng. 15 . Trước hết. f. Tuy nhiên. Chương trình chỉ hoạt động có hiệu quả khi có thuật toán đúng và tối ưu và do vậy chỉ có thể viết được chương trình sau khi đã xây dựng và mô tả thuật toán. trước khi đề cập tới các cấu trúc điều khiển trong chương trình thì lại cần thiết phải giới thiệu trước về khái niệm thuật toán và mô tả thuật toán. Mặt khác. Mục đích chính của các bài thực hành là cung cấp kĩ năng cho HS. Xét theo thứ tự thời gian và tư duy logic thì nội dung giới thiệu về bài toán và thuật toán cần được giới thiệu ngay từ Bài 1. e. trước khi giới thiệu những nội dung khó cần bắt đầu dẫn dắt từ những nội dung nhẹ nhàng hơn và dễ gây hứng thú cho học sinh. thực hành nội dung lí thuyết của bài học tương ứng mà còn giúp ôn luyện những kiến thức. đặc biệt là dưới dạng X = X + 1. Cuối cùng. qua đó hiểu sâu hơn về các nội dung vừa học ở bài lí thuyết. Quan điểm của các tác giả là chương trình máy tính được viết chính là để giải quyết các bài toán đời thường như thế. Nội dung của các bài từ 1 đến 4 phục vụ mục đích này. với tâm sinh lí học sinh THCS. Không phải ngẫu nhiên mà đa phần học sinh thường khó hiểu nội dung phép gán giá trị cho một biến. Chương trình chỉ là thể hiện một thuật toán cụ thể bằng ngôn ngữ lập trình. Trong khi đó. Cấu trúc của mỗi bài lí thuyết được xây dựng một cách nhất quán như sau: Mỗi bài lí thuyết đêu cố gắng bắt đầu bằng những ví dụ trong cuộc sống hàng ngày. Mỗi phần nội dung trong SGK được trình bày trong một bài lí thuyết và một bài thực hành. thuật toán luôn luôn gắn liền với tư duy toán học.trọng nhất trong việc viết chương trình. sẽ gây cảm giác quá tải cho học sinh. khi học sinh mới bắt đầu một năm học mới. càng về sau các bài thực hành không chỉ phục vụ cho việc củng cố. để học sinh có được khái niệm về phép gán thì cách tốt nhất là giới thiệu các nội dung liên quan đến biến trong lập trình.

giáo viên có thể lựa chọn chỉ làm một số bài hoặc chủ động ra thêm các câu hỏi. Số lượng các câu hỏi và bài tập tương đối nhiều. bài tập này chỉ là nhắc lại các kiến thức của bài học lí thuyết. Tuy nhiên. Các bài thực hành cũng được xây dựng một cách nhất quán với việc đề ra mục tiêu. học sinh chỉ cần hiểu các kiến thức trong bài lý thuyết trước đó là có thể trả lời và giải được. Việc đưa ra nhiều câu hỏi và bài tập một mặt giúp cho việc sử dụng SGK một cách hiệu quả và linh hoạt hơn trong những điều kiện học sinh khác nhau về trình độ. Tốt nhất là nên tổ chức tiết bài tập sau khi học sinh đã thực hiện các tiết thực hành. mặc dù không vượt quá kiến thức đã trình bày trong phần lí thuyết. Cuối cùng là một số ví dụ về chương trình để minh họa tình huống sử dụng.Phần nội dung tiếp theo trình bày các thành phần cơ bản hoặc cấu trúc tương ứng của ngôn ngữ lập trình nói chung. Giáo viên cần lưu ý điều này để bổ sung cho học sinh trong các bài thực hành tiếp ngay sau đó. kĩ năng trọng tâm của mỗi bài. các tác giả đã cố gắng hạn chế đến mức tối đa việc lập trình giải quyết các bài toán có nội dung toán học. các bước cần thực hiện. ngay tại một trường. kĩ năng của bài học lí thuyết và chuẩn bị cho bài thực hành ngay sau đó. Mục ghi nhớ là căn cứ để GV xác định nội dung kiến thức. Điều này thể hiện câu hỏi. một số bài tập đối với học sinh trong một lớp là hơi khó. phông chữ hoặc mô phỏng chuyển động của các đối tượng trên màn hình đã không được đưa vào. màu sắc. bài tập trong SGK. Do vậy. phù hợp với HS THCS. Tuy nhiên. bài tập phù hợp với trình độ học sinh. Do đó. Cũng có thể. Một phần khác dành để giúp học sinh nắm vững hơn cú pháp và ngữ nghĩa của các câu lệnh Pascal. phù hợp với đổi mới dạy học và đổi mới kiểm tra. nhưng đòi hỏi học sinh vận dụng kiến thức một cách linh hoạt hơn. tránh gây quá tải cho học sinh hoặc dẫn đến sự hiểu nhầm là lập trình gắn liền với toán học. thông thường ở mức khá chi tiết. tuỳ tình hình tiếp thu kiến thức của HS. Mỗi bài lí thuyết đều có phần Câu hỏi và bài tập nhằm mục đích cho học sinh ôn luyện các kiến thức. Cuối mỗi bài lí thuyết đều có mục Ghi nhớ liệt kê một số điểm chính của bài học để HS dễ dàng ghi nhớ. Trong phân bổ thời lượng. Do vậy các ví dụ về toán học vẫn chiếm một tỷ lệ đáng kể. rèn luyện kĩ năng. bài tập đa dạng. SGK không cố gắng trình bày cú pháp và ngữ nghĩa của các câu lệnh Pascal một cách đầy đủ và chi tiết. Với những câu hỏi và bài tập này giáo viên nên hướng dẫn học sinh giải và trả lời trong tiết bài tập. mặt khác giúp cho học sinh có thể có điều kiện đào sâu suy nghĩ hơn kiến thức lí thuyết và giúp giáo viên phân biệt trình độ của học sinh rõ hơn. nhưng các học sinh trong một lớp khác lại có thể tự giải tất cả các bài tập đó một cách không khó khăn lắm. khi sử dụng Pascal để minh họa trong các mục tiếp theo. Các nội dung này được cố gắng trình bày ở mức tổng quát nhất có thể. Một số bài tập khác. Hệ thống câu hỏi. vì vậy cần hướng dẫn HS làm ngay trên lớp. do hạn chế về nội dung của chương trình. số tiết bài tập là khá nhiều (8 tiết). nhưng vẫn đảm bảo học sinh có thể hiểu được. những minh họa gây hứng thú hơn như thiết kế giao diện. Về các ví dụ. Một phần của các câu hỏi. đa số các bài đó chỉ là các câu hỏi và bài tập dễ. đánh giá. không nhất thiết phải làm hết các câu hỏi. g. Ngoài ra còn có các ví dụ để học sinh tìm 16 . bài tập là một phần quan trọng trong việc giúp HS tiếp thu kiến thức.

GV có thể chọn lựa. Nếu đã nắm vững cách thức mô tả thuật toán để giải quyết bài toán. hướng dẫn cho học sinh để tăng hiệu quả của các giờ thực hành. trong SGK quyển 3 nội dung các bài thực hành không chỉ ôn luyện. giải thích đôi chút để gây hứng thú cho các em ham thích. thực hành các kiến thức đã học mà còn giới thiệu kiến thức mới. một số bài toán. được đúc rút. kĩ năng. nhưng gắn liền với ngôn ngữ lập trình Pascal. học sinh sẽ từng bước ghi nhớ cú pháp và ngữ nghĩa các câu lệnh. Một số kiến thức như cú pháp câu lệnh. Trong quá trình thực hành.. giỏi. Các nội dung đọc thêm ở cuối bài là không bắt buộc. ôn tập để tự cân đối thời lượng cho phù hợp với tình hình giảng dạy thực tiễn. Việc phân bổ thời lượng cho các bài lí thuyết. củng cố. Tuy nhiên. GV không giới thiệu thêm về cách biểu diễn thuật toán bằng sơ đồ khối hoặc yêu cầu học sinh mô tả thuật toán bằng cách vẽ sơ đồ khối. Do thời lượng có hạn. Nội dung về bài toán và thuật toán (Bài 5) được phân bố thời lượng gấp đôi (04 tiết lí thuyết và 02 tiết bài tập). SGK lựa chọn giới thiệu cách biểu diễn thuật toán bằng cách liệt kê.. hiểu. i. SGK còn giới thiệu thêm một số nội dung. hàm Pascal được giới thiệu trong bài thực hành. thực hành là tương đối. câu lệnh lặp. dành thời gian giới thiệu. không nên yêu cầu học sinh học thuộc lòng phần nội dung này. Điều quan trọng là đảm bảo truyền đạt đúng. ví dụ một số công cụ lập trình (câu lệnh. đây là một phần nội dung quan trọng. tránh yêu cầu tất cả HS phải đọc. thuật toán phổ thông. Giáo viên cần nhận rõ sự khác biệt này. Theo đánh giá của các tác giả. ở một vài chỗ. Bên cạnh các kiến thức. Về cơ bản cách liệt kê gần gũi với cách tư duy của HS THCS hơn và đặc biệt là mô tả bằng cách liệt kê thuận lợi hơn cho viết chương trình... ngữ nghĩa cũng như cách sử dụng của Pascal. Kiến thức về câu lệnh được đúc rút sau khi HS đã được thực hành về câu lệnh. 17 .. bài thực hành có yêu cầu cao hơn dành cho HS khá. một số câu hỏi. cú pháp câu lệnh rẽ nhánh. chủ yếu là các bước đã thực hiện. Có thể biểu diễn thuật toán bằng sơ đồ khối hoặc bằng cách liệt kê. kiểu dữ liệu. h. Do cách giới thiệu như vậy nên ban đầu có thể chưa đủ. giới thiệu. GV có thể phối hợp với các tiết bài tập. lặp). đủ kiến thức. Một số kiến thức này không được trình bày trong bài lí thuyết với chủ đích tránh làm dàn trải các nội dung lí thuyết về lập trình nói chung. hàm chuẩn.hiểu tác dụng của các câu lệnh trong chương trình. SGK chỉ sử dụng sơ đồ khối để biểu diễn hoạt động của cấu trúc điều khiển (rẽ nhánh. Mục Tổng kết cuối mỗi bài thực hành tóm tắt các kiến thức. kĩ năng theo yêu cầu của Chương trình. bài tập. đơn giản để HS mở rộng thêm kiến thức. thủ tục chuẩn) nhằm tạo thêm hứng thú cho HS. Khai báo biến. khái quát hoá sau tiết thực hành. kĩ năng theo yêu cầu của Chương trình. Khác với các bài thực hành trong các Quyển 1 và 2. gây quá tải. giáo viên nên khuyến khích học sinh viết và chạy các chương trình đó khi tự học ở nhà. Một số câu lệnh. kĩ năng cơ bản học sinh cần tiếp thu được của bài thực hành. kĩ năng của bài thực hành và là nội dung giúp HS tra cứu nhanh trong quá trình học tập. Tuy nhiên. học sinh sẽ dễ dàng tiếp thu được các kiến thức trình bày trong những bài tiếp theo. đọc thêm. chưa bao quát hết nhưng đảm bảo không sai. nếu không nói là quan trọng nhất. thủ tục. được giới thiệu dần dần. Phần này giúp HS hệ thống lại những kiến thức. cụ thể là những kiến thức lí thuyết. cú pháp khai báo biến. cú pháp.

2. nút lệnh HS đã được biết đến ở lớp 6 và lớp 7. vô giác. Từ đó thường nảy sinh câu hỏi đây đã phải là lệnh chưa hay là một tập hợp các lệnh. Xét đến cùng thì mỗi kiến trúc máy tính đều có một tập hợp (không nhiều) các lệnh cơ bản hay vi lệnh hoặc chỉ lệnh (micro-instruction). • • • • Biết chương trình là cách để con người chỉ dẫn cho máy tính thực hiện nhiều công việc liên tiếp một cách tự động. GV cần nhắc để HS nhớ lại và hình dung về lệnh một cách đơn giản. các lệnh dùng để chỉ dẫn máy tính đều là một dãy các lệnh cơ bản này (với một thứ tự nhất định). Cần cho HS nhận thấy sự khác biệt giữa việc ra lệnh cho máy tính với ra lệnh cho con người. Giáo viên cũng chỉ nên giới thiệu về lệnh cho HS ở mức độ này. Những điểm cần lưu ý và gợi ý dạy học Khái niệm về lệnh. học sinh cần biết được rằng con người điều khiển máy tính thông qua lệnh. Mục đích. Đặc biệt HS vẫn thường xuyên sử dụng các nút lệnh trên thanh công cụ hoặc các lệnh trong bảng chọn để làm việc với chương trình soạn thảo văn bản. Có sự khác biệt đó chính là bởi vì. chương trình bảng tính. Hướng dẫn chi tiết Bài 1. đơn giản. có thể hiểu và mô tả lệnh với các mức độ chi tiết khác nhau. Biết ngôn ngữ dùng để viết chương trình máy tính gọi là ngôn ngữ lập trình. HS đã thực hiện các thao tác khởi động/thoát khỏi phần mềm. Máy tính và chương trình máy tính 1. Cách thứ hai là chỉ dẫn để rô-bốt tự động thực hiện lần lượt các thao tác trên. máy tính là vật vô tri. Việc viết các lệnh để điều khiển. nhưng khi muốn máy tính thực hiện thì cần phải chia thành nhiều thao tác nhỏ. Kết thúc mục 1.II. yêu cầu • Biết con người chỉ dẫn cho máy tính thực hiện công việc thông qua lệnh. chỉ dẫn rô-bốt (hay máy tính) 18 . sao chép. dán và thực hiện các bước để tắt máy tính (theo đúng quy cách). Qua ví dụ điều khiển rô-bốt nhặt rác. Biết rằng viết chương trình là viết các lệnh để chỉ dẫn máy tính thực hiện các công việc hay giải một bài toán cụ thể. cụ thể mà rô-bốt có thể thực hiện được. khi thực hiện thao tác nháy vào nút lệnh Cut trên thanh công cụ của Word là đã ra lệnh cho máy tính thực hiện công việc cắt văn bản. Thực ra khái niệm về “lệnh” đối với máy tính khá phức tạp. Biết vai trò của chương trình dịch. Dựa trên hiểu biết có sẵn của HS về lệnh. phổ thông. GV cần cho HS nhận thấy một công việc rất đơn giản với con người. Có hai cách có thể để điều khiển rô-bốt thực hiện công việc trên: Cách thứ nhất là ra từng lệnh một và rô-bốt thực hiện từng thao tác một. Tuy nhiên người ta thường hiểu lệnh máy tính là một chỉ dẫn của con người để máy tính thực hiện một công việc cụ thể nào đó. cắt. khác với con người. Khi thực hiện các thao tác này chính là HS ra lệnh cho máy tính thực hiện một công việc nào đó. Ví dụ.

thực hiện tự động một loạt các thao tác liên tiếp chính là viết Chương trình máy tính.v. Cần lưu ý rằng. Vì vậy. Để tránh quá tải cho học sinh về mặt thuật ngữ. đối với học sinh mới bắt đầu làm quen với lập trình và ngôn ngữ lập trình.). người ta còn phải thực hiện nhiều công việc khác. còn nhiệm vụ chính của chương trình dịch là dịch chương trình đã được soạn thảo bằng ngôn ngữ lập trình sang ngôn ngữ máy. kiểm thử.. Free Pascal. Điều này cũng giống như việc phiên dịch khi trao đổi với người nước ngoài vậy. Tuy nhiên.. Chương trình đóng vai trò dịch từ ngôn ngữ lập trình bậc cao sang ngôn ngữ máy gọi là "chương trình dịch". về nguyên tắc để máy tính "hiểu" được phải viết chương trình bằng ngôn ngữ máy. Tuy nhiên. Ngôn ngữ lập trình là các đối tượng được định nghĩa một cách trừu tượng và hình thức.. khảo sát các qui trình nghiệp vụ. yêu cầu. các bước nêu trên chỉ là hai trong số rất nhiều bước (giai đoạn) để tạo ra một chương trình cụ thể có thể “chạy” trên máy tính. khó nhớ đối với con người. (2) Dịch chương trình thành ngôn ngữ máy để máy tính hiểu được. như đã nêu ở trên.. cách giới thiệu như trong SGK là đủ và nhằm để học sinh phân biệt được hai công việc viết chương trình và dịch chương trình. công cụ theo dõi. phân tích. hỗ trợ. Để có một chương trình hoạt động hiệu quả trên máy tính và phục vụ đúng mục tiêu. HS đã biết máy tính chỉ có thể hiểu được ngôn ngữ nhị phân. Như vậy. tức là dãy số 0 và 1. rất khó cho con người nếu sử dụng ngôn ngữ này để viết chương trình. Có thể dẫn dắt HS tiếp cận khái niệm ngôn ngữ lập trình như sau: Chương trình mà con người viết ra phải đảm bảo máy tính có thể "hiểu" được. Java. Vấn đề là ngôn ngữ máy lại rất khó sử dụng. để có được một chương trình mà máy tính có thể thực hiện được cần qua hai bước: (1) Viết chương trình theo ngôn ngữ lập trình. Kết thúc mục 2 và mục 3 học sinh cần biết chương trình là cách để con người chỉ dẫn cho máy tính thực hiện nhiều công việc liên tiếp một cách tự động và viết chương trình là viết các lệnh để chỉ dẫn máy tính thực hiện các công việc hay giải một bài toán cụ thể.. C. v. người ta thường cung cấp chương trình dịch cho một ngôn ngữ lập trình cụ thể kèm theo một số công cụ hỗ trợ người lập trình như: phần mềm soạn thảo. Trong các bài thực hành với Pascal. Có thể liệt kê ra một số ngôn ngữ lập trình bậc cao như Pascal. hay còn gọi tắt là Chương trình. đào tạo. bắt đầu từ việc khảo sát nhu cầu của người sử dụng (xác định mục tiêu. Tuy nhiên. Ngôn ngữ lập trình bậc cao là giải pháp như vậy. sau khi thuật toán đã được xây dựng. các thư 19 . Do đó cần phải tìm ra một ngôn ngữ trung gian giữa con người và ngôn ngữ máy để con người dễ dàng sử dụng khi viết chương trình và sau đó chuyển đổi sang dạng ngôn ngữ máy sao cho máy tính có thể hiểu được. Vì vậy. triển khai cài đặt. lập trình. công cụ phát hiện và thông báo lỗi. trong SGK các tác giả chỉ sử dụng thuật ngữ ngôn ngữ lập trình nói chung với hàm ý ngôn ngữ lập trình bậc cao. gỡ rối chương trình. chương trình viết bằng ngôn ngữ lập trình phải được chuyển sang thành chương trình ở ngôn ngữ nhị phân. Hai bước nói trên chỉ là một phần của công việc lập trình. học sinh sẽ phân biệt rõ hơn hai bước này. thiết kế.

Nội dung của bài 1 được xem như là một cầu nối cho học sinh từ người sử dụng sang người xây dựng chương trình máy tính.viện chương trình chuẩn và các dịch vụ khác. 8. Tất cả tạo nên môi trường lập trình của ngôn ngữ lập trình đó. So sánh dãy 1 và dãy 3. 8. mà các em đã quen sử dụng là những đoạn chương trình máy tính tương ứng. Dán cụm từ 2 từ bộ nhớ vào vị trí cũ của cụm từ 1. Khi soạn thảo văn bản trên máy tính. Tuy chưa đầy đủ ở mức có thể lập trình được (chưa tính đến điều kiện kết thúc. Nếu dãy 3 không trùng với dãy 1. Tìm cụm từ 1. Đặt con trỏ trước kí tự đầu tiên của văn bản. 2. 5. chẳng hạn như thay đổi thứ tự của các lệnh 3 và 4 là không có nghĩa. Sao chép dãy kí tự sẽ thay thế vào bộ nhớ (dãy 2). thực chất ta đã yêu cầu máy tính thực hiện rất nhiều lệnh. Sao chép cụm từ sẽ thay thế vào bộ nhớ (cụm từ 2). tức khi con trỏ được di chuyển đến cuối văn bản). Với các lệnh được liệt kê theo thứ tự như trên. Di chuyển con trỏ sang phải một kí tự và quay lại lệnh 4. Qua mục 4 học sinh cần ghi nhớ được ngôn ngữ lập trình là công cụ để viết chương trình máy tính và chương trình dịch đóng vai trò dịch chương trình viết bằng ngôn ngữ lập trình sang ngôn ngữ máy. 3. 5. Dưới đây chỉ mô tả những lệnh cơ bản nhất theo trật tự thực hiện: 1.. Sao chép dãy kí tự cần tìm vào bộ nhớ (dãy 1). nhưng dưới đây là một mô tả chi tiết hơn: 1. 7. 3. Có thể mô tả các lệnh với những mức độ chi tiết khác nhau. 3.. 20 Xóa dãy 3 trong văn bản. Xóa cụm từ 1 tìm được. 6. Qua bài này học sinh cần biết phía sau những thao tác như nháy nút lệnh Cut. Lưu ý đối với giáo viên. Việc mô tả các lệnh có thể thực hiện với nhiều mức chi tiết khác nhau. Sao chép cụm từ cần tìm vào bộ nhớ (gọi là cụm từ 1). chuyển đến lệnh . ta thấy chỉ có thể thay đổi thứ tự của một vài lệnh (ví dụ như các lệnh 1 và 2). nhưng nói chung việc thay đổi thứ tự của phần lớn các lệnh sẽ không cho kết quả như mong muốn. Copy. Khi nháy một nút lệnh là các em đã yêu cầu máy tính thực hiện đoạn chương trình tương ứng đã được viết sẵn. 4. ta yêu cầu chương trình tìm kiếm một cụm từ và thay thế bằng một cụm từ khác. Dán dãy 2 vào vị trí cũ của dãy 3 và chuyển con trỏ đến cuối dãy 2 này. Sao chép dãy kí tự (tính từ vị trí con trỏ sang phải) có độ dài bằng dãy 1 vào bộ nhớ (dãy 3). Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. GV không cần giải thích kĩ về môi trường lập trình với HS. 2. 4.

tiến 1 bước". Ngôn ngữ lập trình sử dụng các cụm từ tự nhiên nên dễ nhớ. "Quay trái. nhưng vẫn đạt kết quả. Lí do: Điều khiển máy tính tự động thực hiện các công việc đa dạng và phức tạp mà một lệnh đơn giản không đủ để chỉ dẫn. Bµi 3. tiến 2 bước" và "Quay trái. tiến 4 bước". Bµi 2. Các ngôn ngữ lập trình bậc cao được phát triển để khắc phục các yếu điểm trên của ngôn ngữ máy: khó sử dụng. thay cho hai câu lệnh đầu tiên. Chẳng hạn. chương trình dịch chuyển đổi các dòng lệnh được soạn thảo thành tệp có thể chạy trên máy tính. trong ví dụ về rô-bốt. có thể rô-bốt sẽ không thực hiện được công việc nhặt rác vì nó sẽ đi không đúng hướng và có thể không tới được vị trí có rác dẫn đến không nhặt được rác. việc thay đổi thứ tự các câu lệnh sẽ không cho kết quả đúng. Chương trình dịch là chương trình có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình thành chương trình thực hiện được trên máy tính. tiến 1 bước" và "Quay phải. Vị trí mới của rô-bốt sau khi thực hiện xong lệnh "Hãy nhặt rác" là vị trí có thùng rác (ở góc đối diện). Ngôn ngữ máy tuy khó đọc và khó sử dụng. các lệnh trong chương trình cần được đưa ra theo một thứ tự xác định sao cho ta đạt kết quả mong muốn. ta có thể đưa ra các lệnh khác nhau. Nói chung. nhưng ở đây chúng ta hiểu ngôn ngữ lập trình là ngôn ngữ lập trình bậc cao. ta có thể điều khiển rô-bốt đến đúng vị trí có rác bằng các lệnh sau: "Quay trái. sau hai lệnh trên rôbốt sẽ "Quay trái và tiến 3 bước" và nó sẽ đi tới vị trí không có rác. Nếu thay đổi thứ tự của hai lệnh nào đó trong chương trình điều khiển rô-bốt. Ngoài ra yếu điểm của các chương trình viết bằng ngôn ngữ máy là phụ thuộc vào phần cứng máy tính. Có nhiều cách khác nhau để đưa ra hai lệnh để rô-bốt trở lại vị trí ban đầu của mình. nếu thay đổi thứ tự của lệnh 1 "Tiến 2 bước" và lệnh 2 "Quay trái. tiến 2 bước". Trong ngôn ngữ máy. việc thay đổi thứ tự của một vài câu lệnh vẫn cho kết quả đúng như yêu cầu. 21 . Khi đó. Bµi 4.. Lưu ý đối với giáo viên. tiến 2 bước" hoặc "Quay phải. như là một nguyên tắc chung.. Có thể liên hệ với thứ tự các bước của thuật toán trong Bài 5. Lưu ý đối với giáo viên. tiến 5 bước" và "Quay trái. Hai bước cơ bản để tạo ra các chương trình máy tính là: (1) Viết chương trình theo ngôn ngữ lập trình. Tuy ngôn ngữ máy cũng là một loại ngôn ngữ lập trình. Ví dụ. dễ học. mọi chỉ thị đều được biểu diễn bằng các con số nhị phân 0 và 1. Bµi 6.Học sinh chỉ cần có đáp án mô tả những lệnh cơ bản nhất là đạt yêu cầu. Bµi 5.. nhưng là ngôn ngữ duy nhất mà bộ vi xử lí có thể nhận biết và thực hiện các lệnh một cách trực tiếp. Giáo viên chỉ nên giới thiệu mô tả chi tiết như trên khi học sinh có yêu cầu. (2) Dịch chương trình thành ngôn ngữ máy để máy tính hiểu được. Tuy nhiên. tiến 3 bước". khó nhớ. Trong một nhiều trường hợp. Như vậy. Trong một số trường hợp khác. Kết quả là tệp tin có thể thực hiện được trên máy tính. một trong các cách đó là hai lệnh "Quay trái.

Làm quen với chương trình và ngôn ngữ lập trình 1. 22 . nếu HS được học ngoại ngữ thì dùng ngôn ngữ tự nhiên là chính ngoại ngữ các em đang học để lấy ví dụ sẽ thuận tiện hơn. các kí hiệu. Đây chỉ là hai bước cơ bản trong lập trình và chỉ là một phần của công việc giải quyết bài toán bằng máy tính. Cần lưu ý không giải thích ngay tất cả những gì có trong chương trình ví dụ. SGK sử dụng cách tiếp cận xuất phát từ một chương trình Pascal cụ thể. phân tích. SGK dựa trên những gì học sinh quan sát được như chữ cái. Ngôn ngữ lập trình Pascal đã được nhắc đến ở bài 1. Dựa trên ví dụ về câu lệnh writeln('Chao Cac Ban'). Biết tên trong ngôn ngữ lập trình là do người lập trình đặt ra. có thể xuất phát từ ngôn ngữ tiếng Việt. Do vậy. tránh sa đà giới thiệu chi tiết cú pháp và ngữ nghĩa của các câu lệnh Pascal mà chỉ nên tập trung khai thác những điểm cần thiết phục vụ cho mục tiêu của bài học. câu lệnh. HS đã biết viết chương trình cần sử dụng một ngôn ngữ lập trình cụ thể ở bài 1. Bài 2. Biết ngôn ngữ lập trình có tập hợp các từ khóa dành riêng cho mục đích sử dụng nhất định. câu lệnh nào thì tập trung vào đó. làm quen với TP để chuẩn bị cho bài thực hành 1. Để dạy mục 2. yêu cầu • • • • Biết ngôn ngữ lập trình gồm các thành phần cơ bản là bảng chữ cái và các quy tắc để viết chương trình. GV có thể đặt câu hỏi tại sao lại phải viết chương trình theo một ngôn ngữ lập trình cụ thể nào đó để HS thảo luận. kí hiệu để khái quát nên thành phần thứ nhất: bảng chữ cái. Mục đích.Lưu ý đối với giáo viên. Cần đến thành phần. Với mục 2. để khái quát thành phần thứ hai: quy tắc viết. những từ cho phép và phải được ghép theo đúng quy tắc ngữ pháp. 2. Để giới thiệu các thành phần của ngôn ngữ lập trình. Muốn người khác hiểu được và hiểu đúng thì cần dùng các chữ cái. do vậy giáo viên có thể giới thiệu cho các em biết ví dụ trong hình 6 là một chương trình viết bằng ngôn ngữ lập trình Pascal. của bài. các từ và quy tắc ngữ pháp. sau đó khái quát hóa và tổng kết. Cần cho HS quan sát hình 6 để thấy trực quan một chương trình cụ thể. biết điểm dừng để luôn hướng đến mục tiêu của mục. Những điểm cần lưu ý và gợi ý dạy học Mục tiêu của bài 2 là giới thiệu cho học sinh về một số thành phần cơ bản của ngôn ngữ lập trình nói chung. HS biết một ngôn ngữ bao gồm các chữ cái. Từ việc quan sát ví dụ này GV khái quát lên thành những kiến thức chung về ngôn ngữ lập trình. làm quen với một chương trình đơn giản. Tên không được trùng với các từ khoá. giải thích vừa đủ. Cách làm này nhằm gây hứng thú cho học sinh ngay khi vào bài học. trả lời nhằm ôn lại bài cũ. Biết cấu trúc chương trình bao gồm phần khai báo và phần thân chương trình. khi đặt tên phải tuân thủ các quy tắc của ngôn ngữ lập trình.

Lưu ý: phần thân là phần quan trọng. HS sẽ còn tiếp cận dần với những kiến thức này ở các bài học sau. trong tiếng Việt. vì vậy để HS hiểu về quy định từ khoá trong ngôn ngữ lập trình. Ví dụ. một chương trình có thể được viết không phải chỉ bằng một ngôn ngữ lập trình cụ thể mà có thể là hai hoặc nhiều ngôn ngữ lập trình cùng được sử dụng trong một chương trình. Có như vậy chương trình mới có thể được dịch sang ngôn ngữ máy mà máy tính có thể hiểu và thực hiện được. như trong một chương trình được soạn thảo và dịch với TP có thể có một số lệnh được viết bằng ngôn ngữ Assembly (hợp ngữ). Tuy nhiên. SGK (CT_Dau_Tien) để minh hoạ cho HS về các thành phần của ngôn ngữ lập trình. Mục 4. không thể có một HS nào khác trong lớp cũng được gọi là lớp trưởng (trong cùng thời điểm). Trên thực tế. còn phần khai báo có thể có hoặc không. Tên là do người lập trình tự đặt ra và sử dụng những kí tự mà ngôn ngữ lập trình cho phép. là các câu lệnh. tên. Khi viết chương trình phải sử dụng các chữ cái. hoặc cứ ghép các từ (có nghĩa) là có một câu có nghĩa.). cũng không nên giải thích quá kĩ về từ khoá.. 23 . Giáo viên có thể sử dụng cách so sánh với ngôn ngữ tự nhiên để học sinh dễ dàng hiểu được nội dung này. Như vậy có thể xem quy tắc viết các câu lệnh trong một ngôn ngữ lập trình (cú pháp và ngữ nghĩa) là quy tắc “chính tả” và “ngữ pháp” của ngôn ngữ lập trình đó. Phần thân: Bắt đầu bằng từ khoá Begin và kết thúc bằng từ khoá End và dấu chấm (End. Cụ thể.Ngôn ngữ lập trình cũng vậy (quan sát hình 6). GV không cần giải thích sâu về chương trình này. chỉ cần cho HS nhận biết được chương trình gồm hai phần: Phần khai báo: Khai báo tên và một số khai báo khác (các em sẽ học sau). tạo hứng thú cho HS trong tiết thực hành. Giữa từ khoá Begin và End. không phải chúng ta cứ ghép các chữ cái bất kì là được một từ có nghĩa. end được gọi là từ khoá (nhiều tài liệu chuyên môn gọi là từ dành riêng). có bảng chữ cái và các quy tắc viết. dựa vào hình 7 (CT_Dau_Tien). Mục 3. chức năng cố định. Lớp trưởng là một cụm từ dành riêng để gọi một HS trong lớp đảm nhiệm chức vụ lớp trưởng của lớp. bắt buộc phải có ở mọi chương trình. để ra lệnh cho máy tính hiển thị dòng chữ chào các bạn thì trong chương trình trên phải viết là: writeln('Chao cac ban'). ở đây ta không đề cập đến vấn đề này mà mặc định những chương trình mà ta đề cập đến chỉ sử dụng một ngôn ngữ lập trình. có thể lấy ví dụ về cụm từ Lớp trưởng. tất nhiên là tên không được trùng với từ khoá. GV sử dụng ví dụ ở hình 6. GV có thể giới thiệu thêm về việc thay cụm từ Chao cac ban thành cụm từ khác để HS có thể thực hiện ở bài thực hành sắp tới. Các từ như program. đó là các từ mà ngôn ngữ lập trình đã quy định dùng với ý nghĩa. Câu lệnh writeln('Chao cac ban') là một câu lệnh chỉ dẫn máy tính hiển thị dòng chữ "Chao cac ban" trên màn hình. begin. các từ và tuân thủ quy tắc tắc viết mà ngôn ngữ lập trình đặt ra. Chẳng hạn. uses. câu lệnh ở đây. Từ khoá là khái niệm mới với HS.

. Cần nhấn mạnh cho HS về việc tạo chương trình chạy được trên máy tính gồm hai bước: bước một. tên) phải được viết bằng các chữ cái trong bảng chữ cái của ngôn ngữ lập trình. Điều này không có nghĩa là trong chương trình không thể có các chữ cái có dấu của tiếng Việt (hay của một ngôn ngữ khác) như là dữ liệu dạng văn bản cần xử lí. Các thành phần cơ bản ngôn ngữ lập trình gồm bảng chữ cái và các quy tắc để viết các câu lệnh (cú pháp) có ý nghĩa xác định. cách bố trí các câu lệnh. trong chương trình học các em sẽ làm việc với một ngôn ngữ lập trình Pascal.Đến đây có thể cho HS phát hiện về từ khoá và chức năng của từ khoá qua chương trình trong hình 7 SGK: Program là từ khoá dùng để khai báo tên chương trình. Do vậy. Bµi 2. Các chữ có dấu đó sẽ được ngôn ngữ lập trình xử lí mã kí tự tương ứng trong các bảng mã ASCII mở rộng. Có thể giới thiệu nội dung Mục 5 trên lớp hoặc yêu cầu các em đọc nội dung này ở nhà chuẩn bị cho bài thực hành 1. Việc dịch chương trình cũng rất đơn giản. Như đã biết. khi tiến hành Bài thực hành 1 giáo viên cần tổng kết lại nội dung này ngay trước khi học sinh bắt đầu sử dụng máy tính để thực hành. Tuy nhiên. hạn chế của cách tiếp cận này là HS dễ bị dẫn đến nhận thức rằng đang học ngôn ngữ Pascal. giáo viên nên chuẩn bị sẵn một số hình ảnh về giao diện của Turbo Pascal trên giấy khổ rộng và tận dung kênh hình trong SGK.. nhấn Ctrl + F9. trong đó không có các chữ có dấu của tiếng Việt. Các cụm từ sử dụng trong chương trình (từ khoá. mục 2. Các quy tắc nhắc đến ở đây bao gồm các thuật ngữ chuyên môn là cú pháp và ngữ nghĩa. bước hai. Các ngôn ngữ lập trình phổ biến hiện nay đều có bảng chữ cái là bảng chữ cái tiếng Anh và các kí hiệu khác. ngôn ngữ Pascal là một minh hoạ cụ thể. bài 2. Việc soạn thảo chương trình về cơ bản giống với soạn thảo văn bản mà các em đã học. Để dịch và chạy chương trình. dịch chương trình vừa soạn thảo sang ngôn ngữ máy. Nếu giới thiệu trên lớp. Lưu ý đối với giáo viên. soạn thảo chương trình trên máy tính theo một ngôn ngữ lập trình cụ thể. Xem SGK. dùng để khai báo kết thúc chương trình. Trong cả hai trường hợp. từ khoá End. ví dụ với ngôn ngữ lập trình Turbo Pascal. Trong phần này cần cho HS biết có nhiều ngôn ngữ lập trình. Không. 3. Từ khoá Begin dùng để khai báo bắt đầu chương trình. Câu hỏi trong bài là "viết chương trình có các câu lệnh bằng tiếng Việt". dịch chương trình phục vụ trực tiếp cho bài thực hành 1. mục tiêu là dạy học lập trình.. Cách tiếp cận từ cụ thể đến khái quát có ưu điểm là phù hợp với lứa tuổi học sinh THCS. sau khi soạn thảo xong chỉ cần nhấn Alt+F9 là máy tính tự động dịch chương trình. sao cho có thể tạo thành một chương trình hoàn chỉnh và chạy được trên máy tính. GV cần lưu ý trước khi chuyển sang mục 5. cần nhấn mạnh để học sinh ghi nhớ. Lưu ý đối với giáo viên. với tất cả ngôn ngữ lập trình đều có tập hợp các kí hiệu (bảng chữ cái) và quy tắc riêng để viết chương trình. Mục tiêu là để HS nhận biết giao diện của phần mềm Turbo Pascal và biết các bước soạn thảo. Ví dụ chương trình Pascal sau đây hoàn toàn hợp lệ: 24 . Hướng dẫn trả lời câu hỏi và bài tập Bµi 1.

Các tên hợp lệ: a. Làm quen với Turbo Pascal 1. Tamgiac. Chương trình 2 là chương trình Pascal không hợp lệ vì câu lệnh khai báo tên chương trình program CT_thu nằm ở phần thân chương trình. làm quen với màn hình soạn thảo TP Thực hiện được các thao tác mở các bảng chọn và chọn lệnh. Bµi 6. Tam giac (có dấu cách).begin program CT_thu. beginprogram. abc. Chương trình 1 là chương trình Pascal đầy đủ và hoàn toàn hợp lệ. Biết cách dịch. trong chương trình có sử dụng thư viện crt (khai báo uses crt) thì khi dịch chương trình có thể sẽ có thể gặp thông báo lỗi Error 200: Division by zero như hình dưới đây.TPL. Bµi 3. Biết sự cần thiết phải tuân thủ quy định của ngôn ngữ lập trình 2. Bµi 4. Những điểm cần lưu ý và gợi ý dạy học Để chạy được chương trình Turbo Pascal cần có tối thiểu hai tệp: TURBO. Xem SGK. Soạn thảo được một chương trình Pascal đơn giản. writeln(' Chào các bạn'). mặc dù chương trình này chẳng thực hiện điều gì cả. sửa lỗi trong chương trình. b1. tên không hợp lệ: 8a (bắt đầu bằng số). Từ khoá của một ngôn ngữ lập trình (còn được gọi là từ dành riêng) là tên được dùng cho các mục đích nhất định do ngôn ngữ lập trình quy định.exe và TURBO. (2) Tên không được trùng với các từ khoá. Mục đích. chạy chương trình và xem kết quả. end. trong đó (1) Hai đại lượng khác nhau phải có tên khác nhau. end (trùng với từ khoá). 25 . Bài thực hành 1. yêu cầu • • • • • Thực hiện được thao tác khởi động/kết thúc TP. không được dùng cho bất kì mục đích nào khác. Tên trong chương trình là dãy các chữ cái hợp lệ được lấy từ bảng chữ cái của ngôn ngữ lập trình. Phần nhất thiết phải có trong chương trình là phần thân được xác định bởi hai từ khoá begin và end. mục 4. (có dấu chấm). Bµi 5. Người lập trình có thể đặt tên một cách tuỳ ý nhưng phải tuân thủ các quy tắc của ngôn ngữ lập trình cũng như của chương trình dịch. Lưu ý rằng nếu sử dụng Turbo Pascal for DOS. bài 2.

thực hành về khởi động chương trình ở các năm học trước nên việc khởi động TP là dễ dàng với các em. Rất có thể HS bỡ ngỡ. lúng túng vì có một thông báo giữa màn hình vì điều này không được nhắc đến trong SGK. Để khắc phục lỗi này.Lỗi này không phải chương trình được viết có lỗi mà do phần mềm Turbo Pascal đang sử dụng không phù hợp với máy tính hiện tại có tốc độ cao. Tất cả các phần mềm này có sẵn trong đĩa CD phát cho GV tham gia tập huấn cốt cán. Vì HS đã được học. GV nên tạo biểu tượng của chương trình TP trên màn hình nền (Shortcut) để thuận tiện cho HS khởi động trong tiết thực hành. Khi khởi động TP. 26 .vnschool. màn hình hiện lên như hình dưới đây. GV lưu ý nhắc HS nháy nút OK để bắt đầu làm việc với TP. Mặc dù vậy. GV có thể tải phần mềm Turbo Pascal đã được sửa lỗi này ở website www. không chiếm hết toàn bộ màn hình như minh hoạ dưới đây. Một lưu ý nữa. có thể màn hình làm việc của TP chỉ là một cửa sổ nhỏ.net hoặc có thể sử dụng phần mềm Pascal for Windows hoặc Free Pascal.

sau đó nháy chuột chọn Full-screen như hình dưới đây. 27 . Trong cửa sổ Shortcut to Turbo Pascal Properties. cửa sổ Shortcut to Turbo Pascal Properties hiện lên. chọn mục Properties. Nháy nút phải chuột để mở bảng chọn tắt như hình dưới đây: - Trong bảng chọn tắt. Cách làm như sau: - Chọn biểu tượng tắt của TP trên màn hình nền.Để HS tiện theo dõi thì nên mở rộng cửa sổ TP ra toàn bộ màn hình. chọn mục Screen.

phần mềm soạn thảo văn bản ở các lớp trước).. Trong bài 1. cắt. GV cần lưu ý cho HS một số điểm: Soạn thảo trong TP có một số điểm khác với soạn thảo văn bản mà các em đã được học. Với bài 2. dán. nhận biết được dòng trợ giúp nằm dưới cùng của màn hình để tra cứu nhanh phím chức năng khi cần. vì vậy giáo viên chỉ cần yêu cầu học sinh làm theo các bước đó. SGK đã trình bày các nội dung này theo từng bước rất cụ thể (cầm tay chỉ việc). khởi động/thoát khỏi TP. Từ lần khởi động TP tiếp theo màn hình làm việc của TP sẽ mở rộng toàn bộ màn hình máy tính.. cần hướng dẫn học sinh sử dụng phím Delete. cần cho HS nhận biết biểu tượng của TP trên màn hình nền. Backspace khi soạn thảo trong TP. Trọng tâm của bài 2 này là HS thực hiện được việc soạn thảo. cần lưu ý các em chỉ gõ tiếng Việt không dấu. dịch và chạy được chương trình. TP không hỗ trợ gõ tiếng Việt có dấu. cần nhắc HS gõ chính xác chương trình vào máy tính. cần hướng dẫn HS cách tra cứu các lệnh này trong bảng chọn khi cần thiết. trong TP cũng khác. không hoàn toàn chính xác. Mặc dù việc soạn thảo một chương trình ngắn như ví dụ đưa ra chưa cần sử dụng nhiều đến các công cụ soạn thảo. GV yêu cầu HS tự đối chiếu chương trình vừa gõ với 28 . Không nên mất nhiều thời gian cho bài 1 bởi vì những kĩ năng này học sinh sẽ còn phải làm quen. Khi dịch chương trình rất có thể máy tính sẽ báo lỗi do HS soạn thảo chương trình còn lỗi chính tả. lưu.- Nháy OK để kết thúc. Các công cụ soạn thảo như: sao chép. sử dụng ở những bài sau. biết cách mở bảng chọn. Tuy nhiên. Có thể HS muốn gõ tiếng Việt có dấu ở những câu tiếng Việt (do đã quen với gõ tiếng Việt có dấu khi làm việc với phần mềm bảng tính.

không yêu cầu truyền đạt hết kiến thức về kiểu dữ liệu ở bài này. Cách làm này là một phương pháp hướng dẫn HS tự khám phá. Một môi trường lập trình tốt là một môi trường có nhiều công cụ hỗ trợ cho người lập trình trong việc soạn thảo. 2. GV có thể hướng dẫn các em thay các cụm từ Chao cac ban và Minh la Turbo Pascal bằng các cụm từ khác để tạo hứng thú trong học tập. Khi đó. Chương trình máy tính và dữ liệu 1. Visual C. Biết khái niệm điều khiển tương tác giữa người với máy tính. Hiện nay. . làm việc với ngôn ngữ lập trình. phát hiện và thông báo lỗi là các yếu tố quan trọng của một môi trường lập trình. Bài 3. Kiểu dữ liệu là một khái niệm mới và tương đối khó với HS. Để dừng màn hình lại cho HS quan sát kết quả cần thêm lệnh Readln ngay trước từ khoá End. màn hình sẽ dừng lại để HS quan sát kết quả. phát hiện và sửa lỗi. có nhiều môi trường lập trình cung cấp các tiện tích hỗ trợ tốt cho người lập trình như Java. không cần thiết phải giải thích sâu thêm về khái niệm dữ liệu ở đây. tìm hiểu câu lệnh của ngôn ngữ lập trình. Bài 3 nhằm mục đích để HS làm quen với việc sử dụng TP và sửa lỗi cú pháp trong chương trình. 29 . thì kết quả đưa ra màn hình trên hai dòng. GV có thể yêu cầu HS thay đổi giữa cách viết thường và cách viết hoa của từ khoá để thấy được PASCAL không phân biệt chữ hoa và chữ thường. Việc làm này là cần thiết để HS thấy được tính nghiêm ngặt của ngôn ngữ lập trình và rèn luyện thái độ nghiêm túc trong học tập. Biết một số phép toán cơ bản với dữ liệu số. Sau đó sửa lệnh đầu tiên thành write('Chao cac ban') và giữ nguyên lệnh thứ hai thì kết quả in ra trên một dòng. Khi nhấn Ctrl+F9 để dịch và chạy chương trình..chương trình trong SGK để chỉnh sửa theo đúng chương trình mẫu. và writeln('Minh la Turbo Pascal'). ban đầu trong chương trình có hai dòng lệnh writeln('Chao cac ban'). dịch. Có thể căn cứ vào thông báo lỗi của TP để sửa chương trình. có thể HS không xem được kết quả hiển thị trên màn hình. việc dịch. Nếu còn thời gian. Ví dụ. Những điểm cần lưu ý và gợi ý dạy học HS đã được làm quen với khái niệm dữ liệu ở các lớp trước. Vì vậy. HS còn được tiếp cận dần về kiểu dữ liệu ở các bài sau. Visual Basic. So sánh hai kết quả để rút ra sự khác nhau giữa lệnh write là writeln. Cùng với việc cung cấp chương trình soạn thảo.. yêu cầu • • • Biết khái niệm kiểu dữ liệu. quan sát kết quả xong nhấn phím Enter để trở về màn hình soạn thảo của TP. Mục đích. Cho HS thay lệnh write() bằng writeln() (hoặc ngược lại) và quan sát để nhận thấy sự khác biệt giữa lệnh write() và writeln().

Có thể nêu cho HS thấy, ở môn Văn-Tiếng Việt có thể tiến hành phân tích, phát biểu cảm nghĩ về bài văn, bài thơ nào đó. Nhưng ở môn Toán thì ta thường tính toán bằng các phép cộng trừ, nhân, chia... với các con số. Cũng có thể bắt đầu bài học với một ví dụ khác. ở lớp trước học sinh đã bước đầu làm quen với các kiểu dữ liệu số và dữ liệu văn bản khi học sử dụng chương trình bảng tính. Giáo viên có thể nhắc lại hai kiểu dữ liệu quen thuộc trong Excel và đặt câu hỏi hoặc nêu ví dụ về kết quả nhập công thức tính tổng giá trị lưu trong hai ô tính chứa các dữ liệu số hoặc văn bản, yêu cầu học sinh dự đoán kết quả nhận được (hình dưới).

Từ đó kết luận: Đối với các kiểu dữ liệu khác nhau, người ta thường thực hiện các phép xử lí dữ liệu khác nhau. Tương tự như vậy, ngôn ngữ lập trình thường phân chia dữ liệu thành các kiểu và định nghĩa các phép xử lí tương ứng trên mỗi kiểu dữ liệu. SGK chỉ hạn chế giới thiệu các kiểu dữ liệu đơn giản và thường được sử dụng nhất: dữ liệu kiểu số nguyên, kiểu số thực, kiểu kí tự và kiểu xâu kí tự. Thậm chí, kiểu số nguyên trong ngôn ngữ minh họa là Pascal, SGK cũng chỉ bước đầu giới thiệu kiểu integer. Trong các bài thực hành tiếp theo, học sinh sẽ dần dần được giới thiệu thêm một vài kiểu dữ liệu khác. Một khi học sinh đã làm quen và hiểu các khái niệm cơ bản về một vài kiểu dữ liệu, việc giới thiệu các kiểu dữ liệu khác sẽ rất nhẹ nhàng. Học sinh sẽ dần biết về tầm quan trọng của các kiểu dữ liệu khi học đến bài tiếp theo, sử dụng biến trong chương trình. Tương ứng với mỗi kiểu dữ liệu cụ thể đều có các phép toán xử lí tương ứng, ví dụ với dữ liệu là số thì có thể tiến hành các phép toán cộng, trừ, nhân, chia với các số đó. Phép toán như div, mod lại chỉ có thể thực hiện với kiểu nguyên mà không thực hiện được với kiểu thực. Về thao tác xử lí dữ liệu kiểu xâu, GV có thể cho HS thấy ví dụ về thực hiện thao tác hiển thị dữ liệu kiểu xâu ra màn hình mà các em đã học ở bài thực hành 1.
writeln('Chao Cac Ban'); write('Minh la Turbo Pascal');

Lưu ý rằng dữ liệu kiểu xâu trong Pascal được đặt trong cặp dấu nháy đơn. GV chưa nên giới thiệu về các thao tác xử lí đối với dữ liệu kiểu xâu kí tự gây quá tải với HS. Mục 2 chỉ nêu các phép toán với dữ liệu kiểu nguyên và kiểu thực. Cần lưu ý một số điểm sau:
-

Sự khác nhau giữa kí hiệu phép toán trong toán học và trong Pascal. Có thể cho HS tự xem các bảng ở mục 2 để phát hiện ra sự khác nhau này. Trong Pascal (và trong hầu hết các ngôn ngữ lập trình nói chung) chỉ được phép sử dụng cặp dấu ngoặc tròn () để gộp các phép toán. Không dùng cặp dấu ngoặc vuông [] hay cặp dấu ngoặc nhọn {} như trong toán học. GV có thể hỏi HS, giả sử khi viết chương trình một bạn nào đó đã quên quy định này của Pascal mà dùng dấu ngoặc vuông hay dấu ngoặc tròn để viết biểu thức thì có được không? Mục tiêu của câu hỏi

30

này là để các em nhớ rằng luôn phải tuân thủ những nguyên tắc, quy định mà ngôn ngữ lập trình đặt ra, nếu không chương trình dịch sẽ không hiểu và không thể dịch ra cho máy tính thực hiện được.
-

Các phép toán được thực hiện theo thứ tự ưu tiên: • • Các phép toán trong ngoặc được thực hiện trước tiên; Trong dãy các phép toán không có dấu ngoặc, các phép nhân, phép chia, phép chia lấy phần nguyên (div) và phép chia lấy phần dư (mod) được thực hiện trước; Cuối cùng thực hiện phép cộng và phép trừ theo thứ tự từ trái sang phải.

Các phép toán lấy phần nguyên (div), lấy phần dư (mod) chỉ giới thiệu cho HS biết, không nên dành nhiều thời gian vào giới thiệu hai phép toán này. Trong số các quy tắc trên có một quy tắc quan trọng mà học sinh thường bỏ qua và có ảnh hưởng tới kết quả tính toán: Trong một biểu thức chỉ có phép cộng và phép trừ, hoặc chỉ có phép nhân hoặc phép chia, các phép tính được thực hiện theo thứ tự từ trái sang phải. Cần đặc biệt lưu ý đến điều này khi chuyển đổi các biểu thức toán học sang dạng biểu thức trong Pascal. Giáo viên có thể nhiều ví dụ khác nhau để nhắc nhở học sinh lưu ý và sử dụng các cặp dấu ngoặc đơn để nhóm các phép tính, ví dụ: • • 10 −5 + 2 = 7, nhưng nếu thực hiện phép cộng trước ta được kết quả 3. 6× 6/2× 2 = 36, nhưng nếu thực hiện các phép nhân trước ta được kết quả là 9.

a2 Chẳng hạn, học sinh thường chuyển nhầm biểu thức sang dạng biểu thức (2b + c ) 2 Pascal như sau: a*a/(2*b+c)*(2*b+c). Mục 3 - các phép so sánh, cũng giống với mục 2, cần cho HS nhận thấy sự khác biệt về kí hiệu sử dụng trong toán học và trong Pascal. Điểm cần nhấn mạnh ở mục này là kết quả của một phép so sánh chỉ có thể là đúng hoặc sai. HS sẽ hiểu rõ hơn về ý nghĩa của phép so sánh khi học đến câu lệnh điều kiện, cấu trúc điều khiển ở bài sau. Cần lưu ý rằng các kí hiệu phép toán, phép so sánh ở trên là của Pascal. Có sự khác nhau về các kí hiệu này ở các ngôn ngữ lập trình khác nhau. Khi làm việc với ngôn ngữ lập trình nào thì phải tuân thủ các quy định về kí hiệu phép toán của ngôn ngữ lập trình đó. Tuy nhiên, các ngôn ngữ lập trình đều cho phép biểu diễn các phép tính số học, phép so sánh. Nội dung mục 4, Giao tiếp người-máy tính, tốt nhất nên được GV minh hoạ trên máy tính. Có thể viết sẵn và cho chạy một chương trình như sau (GV có thể sử dụng chương trình khác):

31

Chương trình này sẽ cho phép nhập tên của người sử dụng và tiến hành in ra màn hình dòng chữ chào với tên mà người sử dụng vừa nhập. Chương trình sẽ lặp đến khi người sử dụng nhấn phím khác với phím C. Có thể mời lần lượt một số em lên nhập tên của chính các em để thấy được sự thay đổi tương ứng với dữ liệu nhập vào. Từ đó các em thấy được khái niệm tương tác người-máy tính. Một điểm cần lưu ý ở đây là cần cho HS thấy sự tương tác giữa người và máy có được là do người lập trình tạo ra. Có thể mở chương trình và giải thích sơ bộ cho các em về một số câu lệnh đơn giản để nhập tên, in dòng chào với tên tương ứng. Lưu ý, lúc này không phải là thời điểm thích hợp để giải thích tất cả các câu lệnh trong chương trình. Những tương tác ngườimáy tính mà các em đã thực hiện khi soạn thảo văn bản, sử dụng hệ điều hành... do người lập trình tạo ra là một kiến thức quan trọng mà các em cần rút ra ở đây. Điều này thể hiện sự khác biệt giữa học tin học đơn thuần chỉ để sử dụng và học tin học với tư cách là một ngành khoa học. HS sẽ dần hiểu rõ hơn về việc này ở những bài học sau. Để chuẩn bị cho bài thực hành 2, GV có thể cho HS làm câu a, bài 1 của bài thực hành 2 ngay trên lớp. 3. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. Vì dữ liệu và các thao tác xử lí dữ liệu rất đa dạng, lí do dễ nhận thấy nhất là việc phân chia dữ liệu thành các kiểu giúp xác định các phép xử lí (phép toán) có thể thực hiện trên mỗi kiểu dữ liệu. Ngoài ra, việc phân chia kiểu dữ liệu còn cho biết các giá trị có thể (phạm vi) của dữ liệu, giúp cho việc quản lí tài nguyên của máy tính (đặc biệt là bộ nhớ trong) một cách hiệu quả. Bµi 2. Có thể nêu các ví dụ sau đây: a) Dữ liệu kiểu số và dữ liệu kiểu xâu kí tự. Phép cộng được định nghĩa trên dữ liệu số, nhưng không có nghĩa trên dữ liệu kiểu xâu. b) Dữ liệu kiểu số nguyên và dữ liệu kiểu số thực. Phép chia lấy phần nguyên và phép chia lấy phần dư có nghĩa trên dữ liệu kiểu số nguyên, nhưng không có nghĩa trên dữ liệu kiểu số thực. 32

Bµi 3. Dãy chữ số 2010 có thể là dữ liệu kiểu dữ liệu số nguyên, số thực hoặc kiểu xâu kí tự. Tuy nhiên, để chương trình dịch Turbo Pascal hiểu 2010 là dữ liệu kiểu xâu, chúng ta phải viết dãy số này trong cặp dấu nháy đơn (').
var a: real; b: integer; c: string; begin writeln('2010'); writeln(2010); a:=2010; b:=2010; c:=’2010’ end.

Bµi 4. Cho hai xâu kí tự "Lớp" và "8A". Có thể định nghĩa nhiều "phép toán" trên tập hợp các dữ 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 ra màn hình hai xâu kí tự '5+20' và '20+5' liền nhau: 5+20 = 20+5, còn lệnh Writeln('5+20=',20+5) in ra màn hình xâu kí tự '5+20' và tổng 20 + 5 như sau: 5+20=25. Bµi 6. Các biểu thức trong Pascal: a) a/b+c/d;
c) 1/x-a/5*(b+2);

b) a*x*x+b*x+c ; d) (a*a+b)*(1+c)*(1+c)*(1+c). b ; a +c
2

Bµi 7. Các biểu thức toán tương ứng:
2 a) (a + b) −

x ; y

b)

a2 c) ; (2b + c ) 2 a) Đúng; b) Sai;

d) 1 +

1 1 1 1 + + + . 2 2.3 3.4 4.5 c) Đúng;

Bµi 8. Kết quả của các phép so sánh: d) Đúng khi x > 2.5; ngược lại, phép so sánh có kết quả 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ụ về tương tác giữa người và máy tính khi chương trình hoạt động: thông báo kết quả tính toán hay trạng thái hoạt động của chương trình, nhập dữ liệu, tạm ngừng chương trình. Xem SGK, mục 4, bài 2.

Bài thực hành 2. Viết chương trình để tính toán
1. Mục đích, yêu cầu • Chuyển được biểu thức toán học sang biểu diễn trong Pascal; • Biết được kiểu dữ liệu khác nhau thì được xử lý khác nhau. 33

mod Hiểu thêm về các lệnh in dữ liệu ra màn hình và tạm ngừng chương trình. Cần giải thích để HS thấy được hai dãy giống nhau gồm số và kí hiệu phép toán. đối chiếu với nội dung in trong SGK để chỉnh sửa chương trình nếu có (do HS gõ nhầm). tạo niềm tin. 34 . không cần thiết phải sử dụng đến máy tính. Nếu cần thiết. tránh mất thời gian tính toán không cần thiết. nhân. nhưng trong bài này để biểu diễn bình phương của một số chỉ dùng phép nhân số đó với chính nó. Lưu ý. biên dịch. Đây là bài đầu tiên HS tập viết biểu thức trong Pascal. Sự kết hợp giữa hiển thị dữ liệu xâu và kết quả biểu thức ở đây tạo thuận lợi cho con người theo dõi kết quả tính toán. nếu đặt trong cặp dấu nháy đơn thì Pascal hiểu đó là xâu kí tự và lệnh write sẽ hiển thị y nguyên xâu kí tự ra màn hình. Nói cách khác là phần khai báo không bắt buộc phải có. nội dung này có thể được dạy trên lớp ngay sau bài 3. Làm như vậy để HS chỉ tập trung vào mục tiêu chính của phần này là chuyển biểu thức toán học sang mô tả trong Pascal mà không mất thời gian vào các tính toán phức tạp. cần đưa ra các ví dụ đơn giản với các phép tính đơn giản. Cần lưu ý HS gõ chuẩn xác. chỉnh sửa. dựa vào thông báo lỗi của TP khi biên dịch. Ví dụ. Để HS có thể dễ dàng kiểm chứng kết quả tính toán biểu thức. Tránh đưa ra các ví dụ quá phức tạp. Các biểu thức ở câu b chính là biểu diễn của các biểu thức toán học ở câu a. trừ. Những điểm cần lưu ý và gợi ý dạy học Câu a của bài 1 nhằm mục đích để HS tập chuyển biểu thức viết ở dạng toán học sang viết trong Pascal. trong Pascal sử dụng kí hiệu * và / tương ứng với phép nhân và phép chia. GV có thể dành thời gian để HS tự tính toán và đối chiếu với kết quả trên màn hình TP. GV có thể thay các ví dụ trong SGK bằng các ví dụ khác. dễ dàng tính ra kết quả. Yêu cầu HS lưu lại bài 1 để còn sử dụng khi tiến hành bài 3. dễ kiểm chứng kết quả hơn đối với HS. Trong phần b và phần c. Nhưng nếu không đặt trong cặp dấu nháy đơn thì Pascal coi đó là một biểu thức và sẽ tính toán biểu thức và lệnh write() sẽ hiển thị kết quả của biểu thức. Qua bài này HS còn nhận ra rằng chương trình Pascal có thể không có phần khai báo. 2. hứng thú trong học tập. chạy và xem kết quả của chương trình. số lượng phép tính nhiều. Nội dung của câu a là để HS làm trên lớp. Do vậy. TP hiển thị ra màn hình những xâu kí tự nằm trong cặp dấu nháy đơn và hiển thị kết quả của biểu thức được đặt ngay sau dấu phẩy. chia. Mặc dù trong Pascal có hàm sqr. Do vậy. Khi quan sát kết quả trên màn hình cần cho HS thấy được với mỗi lệnh write(). đơn giản hơn. ngược lại phần thân chương trình thì bắt buộc phải có. khác với trong toán học.• • Hiểu phép toán div. 32 = 3*3. Chỉ cần tập trung vào bốn phép tính đơn giản là cộng. Đây cũng chính là một ví dụ minh hoạ cho việc kiểu dữ liệu khác nhau thì cách xử lí dữ liệu khác nhau. khó tính toán ra kết quả. HS luyện tập soạn thảo.

Không được phép thay đổi giá trị của hằng trong chương trình. khi khai báo biến phải khai báo kiểu dữ liệu mà biến sẽ lưu trữ. Bài 4. phép mod và phép chia. Muốn sử dụng biến thì phải khai báo. Những điểm cần lưu ý và gợi ý dạy học Đây là bài tương đối khó đối với HS. cần lưu ý hướng dẫn HS các thao tác mở tệp khi bắt đầu bài 3. tuy nhiên thao tác mở tệp của TP hơi khác. dịch. yêu cầu • • • • Biết khái niệm biến. Tuy nhiên. mod và tiếp tục rèn luyện một số thao tác như soạn thảo. dưới đây xin giới thiệu một cách tiến hành dạy học khác để GV tham khảo. Biết lệnh clrscr được dùng để xóa tất cả những gì có trên màn hình cho đến thời điểm đó. thấy được sự khác nhau giữa phép div. Hằng có khai báo là đại lượng để lưu trữ dữ liệu cố định. hiệu chỉnh. 35 . hằng. Cần lưu ý nhấn mạnh một số điểm sau: Biến là đại lượng để lưu trữ dữ liệu. Sử dụng biến trong chương trình 1. Có thể gán giá trị cho biến và tính toán với biến. - Khi làm bài 3 HS phải mở chương trình đã được ghi vào đĩa ở bài 1. 2. mod. read. Lệnh này có trong thư viện crt nên muốn sử dụng lệnh này thì phải khai báo sử dụng thư viện này ở đầu chương trình. hằng. Mặc dù việc mở tệp có sẵn HS đã được thực hành nhiều ở các lớp dưới. có thể HS sẽ lúng túng. Hiểu lệnh gán. Việc điều khiển ghi số thực trên màn hình của TP chỉ cần giới thiệu qua. Do vậy. Các lệnh delay(). sử dụng biến. readln được dùng để tạm ngừng chương trình. theo dõi chương trình. Biết vai trò của biến trong lập trình. Mục đích.Qua bài 2 và bài 3 về cơ bản HS cần hiểu được lệnh div. Biến chỉ có thể lưu trữ được dữ liệu có kiểu thuộc kiểu của biến. Bài này hoàn toàn có thể được tiến hành dạy học theo đúng trình tự như trong SGK. Các lệnh này thường được dùng ở các vị trí thích hợp trong chương trình để con người quan sát kết quả. có thể thay đổi giá trị của biến tại bất kì vị trí nào trong chương trình. chạy và quan sát kết quả của chương trình. Việc sử dụng các lệnh này là một ví dụ về việc điều khiển giao tiếp người-máy tính. Cần lưu ý một số điểm sau: - HS làm quen với phép tính div. Người lập trình tự đặt tên cho biến theo quy tắc của ngôn ngữ lập trình đang sử dụng. đây không phải là kiến thức trọng tâm của bài thực hành. Hiểu cách khai báo. GV gợi ý HS bỏ lệnh uses crt để kiểm chứng điều này (nếu như chưa thực hiện thao tác này ở bài thực hành 1).

Với cách viết như trên. nếu muốn tính diện tích của một hình tròn khác thì lại phải vào chương trình để sửa lại. Var R: Integer. Write('Dien tich hinh tron la: '. Readln(R). Có thể hình dung ban đầu ô nhớ R này chưa chứa giá trị (nói đúng hơn là chứa một giá trị nào đó .gọi tắt là ô nhớ R. là lệnh khai báo biến nhớ. cách khai báo biến và sử dụng lệnh read() hoặc readln() để nhập giá trị biến từ bàn phím. Khi người sử dụng nhập một số. end. Khi chạy chương trình. ví dụ số 3. Về cú pháp khai báo biến chỉ cần lưu ý tên biến do 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) và kiểu dữ liệu của biến. là lệnh dùng để nhập giá trị cho biến R từ bàn phím. Begin Write('Nhap ban kinh hinh tron R=: '). end. GV cần đưa ra một chương trình thực hiện điều này để các em quan sát. GV đưa ra yêu cầu là cần viết một chương trình cho phép người sử dụng nhập từ bàn phím bán kính của hình tròn. Var R: Integer. readln.tuỳ thuộc vào ngôn ngữ lập trình. Như vậy sẽ rất mất thời gian. Việc đòi hỏi người sử dụng phải biết lập trình. 3. Nói chung HS chưa đưa ra được phương án để giải quyết vấn đề này. cụ thể có thể giới thiệu như sau: Trong chương trình đã sử dụng một công cụ hỗ trợ lập trình của PASCAL là biến nhớ R. Chi tiết hơn về khai báo tên sẽ được đề cập trong bài thực hành 3.14*2*2). hiểu chương trình thì mới vào sửa chương trình được. sau đó tính toán diện tích và hiển thị kết quả ra màn hình. Do HS đã được thực hành về viết biểu thức trong Pascal nên HS sẽ dễ dàng làm được bài này. readln. đến lệnh này PASCAL dành một phần bộ nhớ và đặt tên cho phần bộ nhớ này là R . GV có thể cho chạy thử chương trình này để HS quan sát sẽ hiệu quả hơn.14*R*R). Dựa trên chương trình này GV giới thiệu về biến nhớ. Nếu dạy với máy tính. sửa được chương trình là không thực tế.Vào đầu bài học GV có thể yêu cầu HS viết một chương trình tính diện tích hình tròn có bán kính r = 2. Gặp lệnh này chương trình sẽ dừng lại và yêu cầu người sử dụng nhập giá trị từ bàn phím. nhưng đây chưa phải là thời điểm phù hợp để nói về chi tiết này với HS). đó là chưa kể người sử dụng phải biết lập trình. 3. rồi 36 . Begin Write('Dien tich hinh tron co ban kinh r=2 la: '. Readln(R).

Có thể gán giá trị cho biến và sử dụng biến trong tính toán. khi tính toán Pascal sẽ thay hằng số So_PI bằng giá trị 3. Readln(R). SGK đã trình bày rất rõ ý này.14*3*3. trong biểu thức So_PI*R*R. điểm khác biệt của chương trình này là khai báo hằng số So_PI. 3. đầy đủ ở đây). điểm cần giải thích ở câu lệnh này đối với HS là biểu thức 3. Trong lập trình việc này được gọi là gán giá trị 3 cho biến R. Giá trị của biến có thể thay đổi. Sau này. Tương tự như với biến R. Vì R đã được khai báo là biến và đã được gán giá trị bằng 3 nên khi tính toán biểu thức này. 37 . Nhiều thao tác xử lí dữ liệu không thể thực hiện được nếu không sử dụng biến. Đến đây nhấn mạnh cho HS rằng cần khai báo biến. Khi thực hiện chương trình. Thực hiện đến lệnh này PASCAL dành một ô nhớ với tên là So_PI và gán giá trị cho ô nhớ này là 3. Const So_PI = 3. Biểu thức này tính diện tích hình tròn với bán kính là 3 vừa được nhập từ bàn phím. người sử dụng có thể nhập giá trị bán kính bất kì (chính xác thì phải là số nguyên bất kì.14. nhưng GV chưa cần giải thích chính xác. nghĩa là tính 3. Write('Dien tich hinh tron la: '. Begin Write('Nhap ban kinh hinh tron R=: '). Đây là đặc điểm quan trọng của biến: Giá trị của biến có thể thay đổi.14.14 được lưu trong ô nhớ So_PI. Đến đây. Cần nhấn mạnh cho HS về cách khai báo hằng và đặc điểm của hằng số là giá trị được xác định ngay từ khi khai báo và không thay đổi giá trị. S:= So_PI*R*R. Điều đó có nghĩa là ô nhớ R có thể nhận các giá trị khác nhau phụ thuộc vào người sử dụng. kiểu của biến trước. trong quá trình giới thiệu các nội dung tiếp theo và các bài thực hành.14*R*R).14*R*R. S). biến R có giá trị bằng 3. So với chương trình trước. Lưu ý rằng cách trình bày như trên chỉ giúp dẫn dắt học sinh đến khái niệm về biến. giáo viên cần nhấn mạnh để học sinh hiểu rõ: mục tiêu của việc sử dụng biến không phải là tránh hoặc giảm đơn giản công việc chỉnh sửa chương trình mà mục tiêu hàng đầu là lưu trữ các giá trị trung gian (được nhập vào hay được tính toán) cho các hoạt động xử lí dữ liệu về sau và tên biến giúp chương trình nhận biết chính xác dữ liệu được lưu ở đâu trong bộ nhớ. thì chương trình sẽ "mang" số 3 này "đặt" vào ô nhớ R. S: Real. Với câu lệnh Write('Dien tich hinh tron la: '. readln end.nhấn Enter. Pascal thay tên biến R bằng giá trị là 3 đang được lưu ở ô nhớ R. sử dụng hằng số So_PI để tính diện tích hình tròn trong biểu thức So_PI*R*R. Sau đó GV có thể đưa ra chương trình dưới đây: Var R: Integer.

38 .1416. cần khái quát cho HS biết biến. Tuy nhiên. Cuối bài học này. Như vậy sẽ mất thời gian và dễ nhầm lẫn. readln() để tạo giao diện nhập. cách gán giá trị cho biến R thông qua lệnh Readln().Câu lệnh S:= So_PI*R*R được sử dụng để giải thích cho HS về lệnh gán. khai báo biến để lưu cân nặng. Gặp lệnh này. ví dụ trên lại chưa làm rõ ý nghĩa của hằng trong chương trình. máy chiếu GV có thể cho HS quan sát trực quan tình huống báo lỗi khi nhập bán kính là số thực. Giả sử sau đó muốn tính toán với độ chính xác cao hơn.1416. writeln() và read(). tức là nếu có nhiều biểu thức dùng đến So_PI như tính diện tích. GV có thể ra bài tập để học sinh tập khai báo biến trong Pascal. chi tiết những tình huống ngoại lệ hoặc sự biến đổi kiểu dữ liệu ở đây. nếu trong chương trình trên sử dụng So_PI nhiều lần. trong TP đã đinh nghĩa sẵn hàm Pi để cho giá trị của số p. Tuy nhiên. HS cần giải thích được việc lựa chọn kiểu dữ liệu phù hợp. Thử hình dung. sau đó mang giá trị vừa tính được đặt vào ô nhớ S. Có thể dựa vào sự khác nhau giữa hai khai báo biến trong chương trình này để giới thiệu cho HS cần thiết phải có sự phù hợp giữa kiểu của biến với kiểu dữ liệu. Trong trường hợp không sử dụng hằng thì ở tất cả các biểu thức cần dùng số Pi đều phải viết giá trị số là 3. vì vậy thực chất chương trình trên có thể không cần khai hằng số So_PI. tính chu vi của nhiều hình tròn chẳng hạn. nên kết quả của biểu thức So_PI*R*R là số thực. Cách gán giá trị cho biến S ở đây là dùng lệnh gán. kí hiệu là :=. nếu biến có kiểu thực thì có thể được gán giá trị thực. Có thể yêu cầu HS giải thích tại sao lại khai báo S là kiểu thực. hằng là những đại lượng có trong mọi ngôn ngữ lập trình. biến R được khai báo với kiểu integer thì khi nhập bán kính người dùng chỉ được phép nhập các giá trị nguyên. Điều đó đã góp phần lí giải ý nghĩa. thì người lập trình phải tìm tất cả các chỗ mà số Pi đã được viết là 3. chiều cao người. Trên đây là những ví dụ được viết trong ngôn ngữ Pascal. Nếu dạy cùng với máy tính. Pascal sẽ tính toán biểu thức So_PI*R*R ở bên phải dấu :=.14 để thay bằng 3. xuất dữ liệu. Để chuẩn bị cho bài thực hành 3. Cụ thể. tại thời điểm này giáo viên không đề cập đến điều này để tránh gây phức tạp vấn đề. phân tích sâu. Không nên giới thiệu. Lưu ý. Lưu ý: Việc sử dụng biến đã giúp cải tiến chương trình ban đầu để cho phép người sử dụng có thể tính diện tích hình tròn với bán kính nhập từ bàn phím. lợi ích của biến trong chương trình. khai báo biến để lưu giữ tên người. nếu khai báo là kiểu nguyên có được không? Qua câu hỏi này HS cần nhận thấy được S phải có kiểu là số thực bởi vì So_PI là số thực. Các chương trình ví dụ trên đây còn có thể được sử dụng để giới thiệu cho HS về việc kết hợp giữa lệnh write(). Về vấn đề hợp kiểu của biến với giá trị gán cho biến.14. chẳng hạn với số Pi là 3. ở đây chỉ cần HS biết được nếu biến kiểu nguyên thì chỉ có thể được gán giá trị nguyên. Cụ thể. Pascal sẽ tính giá trị của biểu thức ở bên phải phép gán và gán giá trị này cho biến ở bên trái dấu gán. HS đã biết cách khai báo biến R. Cần lưu ý HS đây không có nghĩa như dấu bằng trong toán học. cụ thể như: khai báo biến để lưu giữ tuổi của một người.

máy tính sẽ dành vùng nhớ có độ lớn 2 byte.16 thì người lập trình chỉ cần tiến hành một chỉnh sửa duy nhất câu lệnh khai báo ở đầu chương trình thành So_PI = 3. được khai báo ban đầu là Const So_PI = 3. và khi gán 5 cho X thì vùng nhớ đó lưu dữ liệu 5. bộ nhớ máy tính đã có dung lượng rất lớn nên vấn đề hạn chế sử dụng biến trong chương trình đã không còn là vấn đề cấp thiết. Việc khai báo biến gồm: Khai báo tên biến và khai báo kiểu dữ liệu của biến. Bµi 3.14. Lệnh ghi X ra màn hình có nghĩa là ghi số 5 ra màn hình. Nếu khả năng tiếp thu của HS tốt và còn thời gian. Phần giải thích về ý nghĩa. Khi khai báo biến. lợi ích của hằng cho HS. không cần phải chỉnh sửa các biểu thức trong chương trình. máy tính (thông qua chương trình dịch) sẽ xác định kiểu của biến và dành một vùng nhớ có độ lớn thích hợp với phạm vi kiểu của biến để lưu giá trị của biến. Nhờ thế việc sử dụng bộ nhớ sẽ hiệu quả hơn. Lưu ý đối với giáo viên. Nhưng với công nghệ hiện nay. c) Hợp lệ. cũng để lưu các giá trị là số nguyên.14 người lập trình dùng hằng So_PI thay thế vào đó. biến đại lượng được dùng để lưu trữ dữ liệu và dữ liệu được biến lưu trữ có thể thay đổi trong khi thực hiện chương trình. Khi đó tất cả các biểu thức dùng hằng So_PI trong chương trình đều được tính toán với số Pi có giá trị mới là 3.14 sang 3. giáo viên có thể lấy một chương trình minh hoạ ý nghĩa. Gán giá trị cho một biến về thực chất là lưu dữ liệu tương ứng vào vùng nhớ được đặt tên và dành riêng cho biến. có thể xem biến là "tên" của một vùng nhớ được dành sẵn để lưu dữ liệu trong suốt quá trình thực hiện chương trình.1416. sau khi đã hoàn thành bài học. và sau đó trong các công thức có sử dụng đến số Pi.1416. thay vì phải viết là 3. khi khai báo biến kiểu byte. Xét về mặt lưu trữ dữ liệu.Nhưng nếu chương trình sử dụng hằng So_PI.14. căn cứ vào giải thích ý nghĩa của hằng ở trên. Bµi 2. Do vậy. Việc thực hiện các tính toán và xử lí với biến có nghĩa là thực hiện tính toán và xử lí với dữ liệu được gán đó.. máy tính chỉ dành vùng nhớ có độ lớn 1 byte. vùng nhớ đó sẽ không được phép sử dụng vào mục đích khác. hoặc vùng nhớ 6 byte được dành cho biến được khai báo với kiểu số thực. Tình huống này là ví dụ làm rõ một trong những lợi ích và ý nghĩa của hằng trong lập trình. Giả sử X được khai báo là biến với kiểu dữ liệu số nguyên và X được gán dữ liệu là số 5. b) Không hợp lệ. Đáp án: a) Hợp lệ. lợi ích của hằng không bắt buộc phải giới thiệu cho HS. Ngoài ra máy tính sẽ biết áp dụng các phép toán thích hợp đối với giá trị của biến. 3. nếu muốn thay đổi giá trị của số Pi trong toàn bộ chương trình từ 3. Ví dụ. ngoài việc tên biến được đưa vào danh sách các đối tượng quản lí. nhất là trong những trường hợp việc sử dụng bộ nhớ bị hạn chế. Khi một vùng nhớ được khai báo để lưu dữ liệu làm giá trị của một biến. nhưng khi khai báo biến kiểu nguyên. Vì vậy.. một trong những kĩ năng lập trình là sử dụng càng ít biến càng tốt. chương trình sẽ dành riêng một vùng nhớ nào đó cho biến X. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. Xét về mặt lập trình. 39 .. d) Không hợp lệ.. Sau khi khai báo.

writeln('Chu vi duong tron bang '. a) Hợp lệ. ngoài ra cần một biến Trungbinh là biến kiểu số thực để ghi điểm trung bình của cả lớp. kết quả luôn luôn là số thực. sự khác nhau giữa biến và hằng là ở chỗ giá trị của hằng không thay đổi trong suốt quá trình thực hiện chương trình. S:=Pi*r*r. Bµi 9. C:=2*Pi*r. Diem_Mai. writeln() với read()... lựa chọn được kiểu dữ liệu phù hợp cho biến. 40 . Bµi 7. c) Không hợp lệ vì hằng phải được cho giá trị khi khai báo. c và d là các kiểu số nguyên. readln(r). Khai báo và sử dụng biến 1. end.C:8:2). Bµi 8. biến S: kiểu số thực. (3) Thiếu dấu chấm phẩy ở dòng 4. Mặc dù đều cùng phải khai báo trước khi có thể sử dụng trong chương trình. d) Không hợp lệ vì không được gán giá trị cho biến khi khai báo (cách gán giá trị cho biến cũng không đúng cú pháp). Chương trình Pascal có thể như sau đây: uses crt. c) Không hợp lệ vì hằng phải được cho giá trị khi khai báo. writeln('Dien tich hinh tron bang '.S:8:2). write('Nhap ban kinh r = '). Các lỗi trong chương trình: (1) Thừa dấu bằng ở dòng 1 (chỉ cần dấu hai chấm). (2) Thừa dấu hai chấm ở dòng 2 (với hằng chỉ cần dấu bằng). Không thể gán lại giá trị 3. Cách khai báo hợp lí: a) b) Các biến a và h là kiểu số nguyên. Cần sử dụng các biến sau đây với mỗi học sinh: một biến kiểu xâu để lưu tên. C. (4) Khai báo kiểu dữ liệu của biến b không phù hợp: Khi chia hai số nguyên. ví dụ Diem_Hoa. begin clrscr. Mai. Do đó cần phải khai báo biến b là biến có kiểu dữ liệu số thực. Bài thực hành 3. yêu cầu • Thực hiện được khai báo đúng cú pháp. còn giá trị của biến thì có thể thay đổi được tại từng thời điểm thực hiện chương trình. var r: integer. b.S: real. b) Không hợp lệ vì tên biến không hợp lệ. Mục đích. Cả bốn biến a. một biến kiểu số nguyên để lưu điểm. ví dụ Hoa. Bµi 10.. Bµi 5. cho dù có chia hết hay không.1415 cho Pi trong phần thân chương trình vì giá trị của hằng không thay đổi trong suốt quá trình thực hiện chương trình.. readln() để thực hiện việc nhập dữ liệu cho biến từ bàn phím. • Kết hợp được giữa lệnh write().Bµi 4. Bµi 6.

giáo viên nên lưu ý học sinh đến điểm này. đặt tên đúng theo quy định của Pascal. Rèn luyện soạn thảo. Biến Soluong có kiểu là integer nên chỉ cho phép chứa các giá trị trong khoảng từ − 32768 đến 32767. Với bài này HS tập khai báo biến trong Pascal. chạy và kiểm tra kết quả cũng là một mục tiêu của bài này. để nhập giá trị của biến. Việc sử dụng biến trong biểu thức thanhtien:= soluong*dongia+cuocphi. Cần hướng dẫn để HS tìm hiểu chức năng của lệnh Readln(tên biến). kiểu số thực. giá trị 35000 ngoài khoảng giá trị trên cho nên đã gây ra lỗi. Có thể gợi ý HS nhập số lượng là một số thực. Khi nhập bộ số liệu (1. Những điểm cần lưu ý và gợi ý dạy học Chương trình trong câu a. Gặp cặp dấu ngoặc này Pascal bỏ qua. Đây là một công việc hay gặp trong lập trình và qua ví dụ này HS 41 . ví dụ 6. kết quả không còn đúng nữa. Có thể gợi ý cho HS chỉnh sửa khai báo kiểu dữ liệu để khắc phục hạn chế này. dịch. Một trong những nội dung quan trọng của bài này là giúp học sinh luyện tập việc nhận biết và khai báo kiểu dữ liệu hợp lí cho các biến. chọn đúng kiểu dữ liệu của biến. • Hiểu và thực hiện được việc tráo đổi giá trị của hai biến. Việc viết chú thích trong chương trình đôi khi rất cần thiết để giúp người khác có thể nhanh chóng hiểu được chương trình. nguyên nhân của hiện tượng này là do tràn số. Sự kết hợp của write() và readln() trong việc nhập giá trị biến từ bàn phím. mà chỉ cần kiểu byte). Khai báo kiểu dữ liệu hợp lí một mặt sẽ giúp cho việc sử dụng bộ nhớ một cách tối ưu (ví dụ. mặt khác giúp tránh lỗi tràn dữ liệu và dẫn đến kết quả sai. Có thể gợi ý để HS thay đổi kiểu của biến số lượng đã khai báo để có thể nhập số lượng là một số thực.• Hiểu về các kiểu dữ liệu chuẩn: kiểu số nguyên. • Hiểu cách khai báo và sử dụng hằng. • Sử dụng được lệnh gán giá trị cho biến. hiệu chỉnh.5 chẳng hạn và giải thích hiện tượng xảy ra. trọng tâm của bài này là cho HS luyện tập với lệnh gán và thực hiện việc tráo đổi giá trị của hai biến x. bài 1 là chương trình giả định số tiền phải trả bao gồm số tiền mua hàng (bằng đơn giá nhân với số lượng) và số tiền cước phí vận chuyển (cố định là 10000). Trong các bài thực hành sau. kết quả đưa ra không chính xác. không dịch những nội dung bên trong. Với bài 2. với đại lượng chỉ nhận giá trị số tự nhiên trong vượt quá 255 thì không cần thiết phải khai báo biến kiểu số nguyên. 35000). cần cho HS tìm hiểu cú pháp khai báo biến. thậm chí là để chính người đã viết ra chương trình dễ dàng hơn khi xem lại hoặc chỉnh sửa chương trình của mình. Nguyên nhân là do kiểu dữ liệu nhập vào là số thực không phù hợp với kiểu của biến Soluong đã khai báo trong chương trình là số nguyên. 2. ý đồ của người viết chương trình. Các chú thích đặt trong cặp dấu ngoặc {} hoặc (* *) được dùng để giải thích câu lệnh. y. Tổng số tiền phải trả bằng số tiền mua hàng cộng với cước phí.

một cốc nước chứa nước màu xanh. chỉnh sửa và cho chạy chương trình. {Bat dau thuc hien trao doi} 42 . y). Cụ thể: z:=x. gia tri cua bien x: '. nhưng giá trị biến Y không mất. y nên HS có thể gặp khó khăn không biết nhập thế nào. Về việc tráo đổi giá trị giữa hai biến x và biến y. var x. GV cần hướng dẫn HS cú pháp của câu lệnh và cách nhập hai số nguyên (cách nhau bởi dấu cách) rồi nhấn Enter và quan sát kết quả. Đổ nước đỏ trong cốc Z sang cốc Y. Để thực hành bài này. Write('Truoc trao doi. y từ bàn phím. Đương nhiên là phải dùng cốc thứ ba làm trung gian để thực hiện điều này. Có thể tham khảo chương trình Tinhtien. cụ thể: Giả sử cốc X chứa nước màu đỏ. readln(y). Nên gợi ý cho HS cải tiến chương trình trên để hướng dẫn người sử dụng nhập giá trị cho x. y sau khi đã tráo đổi giá trị. có thể lấy ví dụ minh hoạ như việc muốn tráo đổi giữa hai cốc nước. một cốc nước chứa nước màu đỏ. readln(x). Đổ nước xanh trong cốc Y sang cốc X. Chương trình sau khi chỉnh sửa có thể như sau: Program hoan_doi. Writeln('Truoc trao doi. Làm thế nào để tráo đổi nước giữa hai cốc nước này.pas để thực hiện việc này. Giả sử có hai cốc nước. Cách tráo đổi nước chứa trong cốc X và cốc Y như sau:. trong chương trình đã phải sử dụng biến z làm biến trung gian để lưu giữ giá trị ban đầu của biến x. cốc Y chứa nước màu xanh và cốc Z là cốc trung gian. có thể tiến hành như sau: Cho HS gõ chương trình trong SGK. { Giá trị của biến y được thay bằng giá trị của biến z. Khi đổ xong nước ở cốc Y sang nước ở cốc X thì cốc Y có nước còn cốc X hết nước. {Lưu giá trị của biến x vào biết z} x:=y. Khác với khi gán X:= Y. Sau khi thực hiện như trên nước trong hai cốc đã được tráo sang nhau. x). Nếu học sinh thắc mắc thì GV có thể giải thích điều này. Do không có thông báo cho người dùng về yêu cầu nhập giá trị tương ứng của các biến x. thì giá trị biến X bằng giá trị biến Y. giá trị của biến z lúc này chính bằng giá trị của biết x ban đầu} * Có một khác biệt cần được lưu ý ở đây. tiến hành dịch. begin write('Nhap gia tri bien x = '). không chứa gì cả.z:integer. Đổ nước đỏ trong cốc X sang cốc Z. cách sử dụng biến. y vừa được người sử dụng nhập vào và in ra màn hình giá trị x.y. gia tri cua bien y: '.có thể hiểu rõ hơn về biến. {Giá trị của biến x được thay bằng giá trị của biến y} y:=z. Việc tráo đổi giá trị của biến cũng tương tự. write('Nhap gia tri bien y = '). nếu 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 vấn đề. In ra màn hình giá trị của x. Bài này cũng giới thiệu cách viết câu lệnh nhập nhiều dữ liệu từ bàn phím bằng một câu lệnh writeln hoặc write.

tìm số lớn nhất của một dãy số.. ví dụ. Giáo viên cần tận dụng hết thời gian dành cho bài này để truyền đạt cho học sinh một cách kỹ lưỡng. Biết các bước giải bài toán trên máy tính. Hiểu thuật toán tính tổng của N số tự nhiên đầu tiên. Mục đích. Bài 5. 2. Khái niệm bài toán và giải bài toán đã trở thành quen thộc với học sinh trong các môn học khác như Toán. y:=z. thuật toán. nấu món ăn hay điều khiển rô-bốt nhặt rác chẳng hạn. ' y = '. y). mặc dù có thể ghép một số lệnh thành một lệnh để chương trình ngắn gọn hơn. Write('Sau trao doi. gia tri cua bien y = '. gia tri cua bien x = '. có thể thay hai lệnh: Writeln('Truoc trao doi. y). {Ket thuc trao doi} Writeln('Sau trao doi. Vật lí. Những điểm cần lưu ý và gợi ý dạy học Bài toán và thuật toán để giải quyết bài toán là những nội dung rất quan trọng. có thể sử dụng lại ví dụ về bài toán điều khiển rô-bốt nhặt rác HS đã học ở bài 1. Xác định được Input. x. gia tri cua bien y = '. x:=y.z:=x. Biết chương trình là thể hiện của thuật toán trên một ngôn ngữ cụ thể. để HS dễ tiếp thu. một nhiệm vụ gắn liền với cuộc sống hàng 43 . nếu không nói là quan trọng nhất trong lập trình. yêu cầu • • • • • • Biết khái niệm bài toán. Bài toán trong tin học không chỉ là những bài toán trong lĩnh vực toán học mà còn có thể là một nhiệm vụ. readln end. Từ bài toán đến chương trình 1. Ví dụ này cho thấy bài toán có thể còn là một công việc. gia tri cua bien x = '. Nếu học sinh nắm vững được những kiến thức này thì sẽ dễ dàng hơn rất nhiều trong việc tiếp thu kiến thức trong các bài sau.. gia tri cua bien x = '. Write('Truoc trao doi. x). Vì lẽ đó các tác giả đề xuất dành thời lượng cho Bài 5 là 04 tiết lí thuyết và 02 tiết bài tập. một công việc cần giải quyết trong cuộc sống thực tiễn (nhiều khi chẳng liên quan gì đến toán học) như: tính điểm trung bình một môn học. một học kì. Để cho HS mở rộng nhận thức về khái niệm bài toán mà các em được biết ở môn học khác. trong chương trình trên đã lựa chọn cách viết nhiều lệnh đơn giản. Biết mô tả thuật toán bằng phương pháp liệt kê các bước.. Output của một bài toán đơn giản. y). x). bằng một lệnh như sau: Writeln('Truoc trao doi. Lưu ý.

Để dẫn dắt đến khái niệm xác định bài toán. GV không cần giới thiệu thêm hay phân tích sâu về các bước ở đây. rẽ trái. Có thể mô tả thuật toán bằng cách liệt kê các bước như giới thiệu trong SGK hoặc bằng sơ đồ khối. xây dựng thuật toán. Để máy tính có thể hiểu và có thể thực hiện được thuật toán thì cần thể hiện thuật toán bằng ngôn ngữ lập trình. Do đã được tiếp cận với ví dụ này ở bài học đầu tiên nên việc tìm ra điều kiện cho trước và kết quả thu được của bài toán này sẽ dễ dàng hơn với HS. Trong tin học. phần giả thiết là các điều kiện cho trước (Input). Tập hợp các bước để điều khiển rô-bốt nhặt rác chính là một thuật toán. máy tính chỉ biết thực hiện các thao tác theo chỉ dẫn. Ouput và mô tả thuật toán bằng cách liệt kê các bước cùng với việc giới thiệu thuật toán. Để đi từ bài toán đến chương trình SGK nêu ba bước: Xác định bài toán. Việc thể hiện thuật toán bằng một ngôn ngữ lập trình để máy tính có thể hiểu. Tuy nhiên. thuật toán tìm số lớn nhất của dãy số là thuật toán được yêu cầu cụ thể trong chuẩn kiến thức kĩ năng. Ngôn ngữ lập trình là ngôn ngữ con người sử dụng để viết chương trình.. thường trước khi bắt đầu giải một bài toán các em đã quen với việc tìm giả thiết và kết luận của bài toán. chỉ ra các thao tác và trình tự thực hiện các thao tác để giải quyết công việc. dễ tiếp thu. HS dễ hiểu. Mục tiêu của các ví dụ ở mục 4 là rèn luyện kĩ năng xác định Input. tiến. máy tính chỉ thực hiện những thao tác theo chỉ dẫn của con người. GV viên có thể dựa vào giả thiết và kết luận của một bài toán trong môn Toán để dẫn dắt học sinh xác định Input. con người tìm ra cách thức.ngày.. Hơn nữa. cụ thể: Cách mô tả thuật toán với ngôn ngữ tự nhiên thì chỉ có con người mới hiểu. thực hiện được chính là viết chương trình. Cần dành thời gian thích đáng cho mục này. viết chương trình. các ví dụ 44 . nhặt rác. tuy vậy để tránh làm phức tạp hoá vấn đề. phần kết luận là kết quả cần thu được (Output). Máy tính không tự giải được bài toán. Việc viết chương trình điều khiển máy tính rẽ phải. HS đã biết máy tính chỉ có thể hiểu được ngôn ngữ máy. chi tiết và đặc biệt là máy tính phải "hiểu" được những chỉ dẫn này. Output của bài toán trong Tin học. GV không cần giới thiệu thêm về cách mô tả bằng sơ đồ khối. quen thuộc với HS để HS dễ dàng tìm ra được điều kiện cho trước (giả thiết) và kết quả cần thu được (kết luận) của bài toán này (không nhất thiết cứ phải lấy ví dụ trong SGK). Để máy tính có thể "giải" được bài toán thì con người cũng phải chỉ dẫn cho máy tính. Vì vậy. Có thể đặt câu hỏi với HS: Máy tính có "giải" được bài toán không? Có thể sử dụng ví dụ về rô-bốt nhặt rác để HS thảo luận tìm ra câu trả lời. máy tính không hiểu được. sự chỉ dẫn của con người để máy tính thực hiện phải rất cụ thể. Nên sử dụng tiết bài tập để bổ sung thêm thời lượng dạy học cho nội dung này. Mặc dù có một số cách chia bước khác. là do con người nghĩ ra. Trong đó. có thể gợi ý để HS suy luận dẫn đến phải thể hiện thuật toán bằng ngôn ngữ lập trình. Đây là phương án chia bước đơn giản. Trong môn toán. Tuy nhiên. Như vậy. Nội dung mục 4 là quan trọng và tương đối khó với HS. Có thể sử dụng một bài toán đơn giản. Các thuật toán giới thiệu ở mục này là những thuật toán cơ bản học sinh cần tiếp thu.

Bµi 2. Sau ba bước. GV có thể mô phỏng thuật toán với một bộ dữ liệu cụ thể. OUTPUT: Số học sinh có họ Trần. Do vậy việc việc rèn luyện kĩ với các ví dụ này và giải một số bài tập sẽ sẽ tạo điều kiện thuận lợi để HS tiếp thu các nội dung sau. Bµi 3. Mô tả thuật toán: 45 . Ví dụ: + Mô phỏng thuật toán tính tổng N số tự nhiên đầu tiên. . N= 100). OUTPUT: Số các số có giá trị nhỏ nhất (có thể một hay nhiều số). INPUT: Dãy n số. OUTPUT: Tổng của các phần tử lớn hơn 0. Bước i i≤ N SUM 1 1 Đúng 1 2 2 Đúng 3 3 3 Đúng 6 4 4 Đúng 10 5 5 Đúng 15 6 6 Đúng 21 7 7 Đún g 28 8 8 Đúng 36 9 9 Đúng 45 10 10 Đú ng 55 11 Sai Kết thúc + Mô phỏng thuật toán tìm số lớn nhất trong dãy số cho trước: Dãy số i i>n ai > SMAX SMAX 5 5 1 Sa i 3 2 Sai Sai 5 4 3 Sa i Sa i 5 7 4 Sai Đúng 7 6 5 Sai Sai 7 3 6 Sai Sai 7 15 7 Sai Đúng 15 9 8 Sai 11 9 Sai 10 Đúng Đúng Đúng Kết thúc 15 15 3. cấu trúc lặp và một số bài toán ở các bài sau.trong mục này còn đề cập đến những thuật toán liên quan đến các cấu trúc rẽ nhánh. Đáp án: a) b) c) INPUT: Danh sách họ của các học sinh trong lớp. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. với N = 10 (trong SGK. INPUT: Dãy n số. x có giá trị ban đầu của y và y có giá trị ban đầu của x. tức giá trị của hai biến x và y được hoán đổi cho nhau. Để giúp HS hiểu rõ về thuật toán. Lưu ý rằng tất cả các thuật toán nêu trong mục này và trong phần câu hỏi và bài tập của Bài 5 đều được sử dụng làm ví dụ minh họa hoặc để giải các câu hỏi và bài tập trong các bài sau.

Bước 5. ta hoán đổi giá trị hai biến x và y để chúng có giá trị tăng dần. Tính b + c. t ← x. Trước hết. Thông báo "a. chuyển tới bước 5. Thông báo "a. x ← y. Tính a + c. Có thể giải bài toán này bằng cách sử dụng một biến phụ hoặc không dùng biến phụ. OUTPUT: Hai biến x và y có giá trị tăng dần. Nếu a + b ≤ c. Bước 4. y ← t.) Bước 3. (t là biến trung gian. Thuật toán 2. x ← x + y. Bước 1. y ← x − y. INPUT: Ba biến x. Bước 3. INPUT: Hai biến x và y. y và z có giá trị tăng dần. Bước 1. Bước 3. Nếu a + c ≤ b. INPUT: Hai biến x và y. Tính a + b. Bước 5. Nếu b + c ≤ c. Bước 4. Bước 2. Sau đó lần lượt so sánh z với x và z với y. y và z. Bµi 5. OUTPUT: Hai biến x và y có giá trị tăng dần. SGK). Nếu x ≤ y. Bước 2. Nếu z < x. Kết thúc thuật toán. b và c có thể là ba cạnh của một tam giác" và kết thúc thuật toán. sau đó thực hiện các bước hoán đổi giá trị cần thiết (xem lại ví dụ 5 trong bài 5. Bước 1. Không sử dụng biến phụ (xem bài tập 2 ở trên). OUTPUT: Thông báo "a. Kết thúc thuật toán. chuyển tới bước 5. Sau bước này x và y có giá trị tăng dần. Bước 2. Bước 1. Nếu x ≤ y. Sử dụng biến phụ z. b > 0 và c > 0. nếu cần. Thuật toán 1. b và c có thể là ba cạnh của một tam giác" hoặc thông báo "a. chuyển tới bước 5. y ← z. z ← x. Bµi 4. chuyển tới bước 5. Bước 3. t ← x.INPUT: Ba số dương a > 0. Bước 2. Nếu x ≤ y. OUTPUT: Ba biến x. Bước 4. x ← x − y. (với t là biến trung gian) và chuyển đến bước 6. b và c không thể là ba cạnh của một tam giác". b và c không thể là ba cạnh của một tam giác" và kết thúc thuật toán. 46 . chuyển tới bước 3. x ← y. chuyển tới bước 6. chuyển tới bước 5. Bước 4. x ← z và z ← t. Nếu y ≤ z. Bước 5.

. INPUT: n và dãy n số a1. i ← i + 1. INPUT: n và dãy n số a1. S ← S + ai và quay lại bước 2.. i ← 0. Nhập n và dãy n số a1. Điều khác biệt là thêm các bước nhập số n và dãy n số a1. an.. an} cho trước. Thuật toán này tương tự như thuật toán tìm giá trị lớn nhất trong dãy n số đã cho (xem ví dụ 6. tính từ phải sang trái. gán Soduong ← Soduong +1 rồi quay lại bước 2. INPUT: n và dãy n số a1. a) Tính tổng các phần tử của dãy số A = {a1. a2.. Bµi 7... a2. Nếu i > n. Nếu i > n. a2. bài 5). 47 . i ← i + 1. a2. Bước 6. chuyển đến bước 5. Bước 3. Ghi giá trị Min ra màn hình và kết thúc thuật toán. an.. Thông báo S và kết thúc thuật toán.... b) Tìm vị trí của số dương đầu tiên trong dãy số A = {a1. Bước 4. Trong trường hợp ngược lại. Nếu ai ≥ Min. a2.. an} Bước 1. Bước 3.Bước 5.. + an.. Bước 5. Bước 2. Bước 1.. tính từ phải sang trái.. a2. i ← 1.. ....... a2. a2. an} cho trước. i ← i + 1. t ← y.. a) Đếm số các số dương trong dãy số A = {a1.. Bµi 6... an} cho trước. Nếu ai > 0. OUTPUT: Soduong = Số các số ai > 0. an. INPUT: n và dãy n số a1. OUTPUT: Min = Min{ a1.. an.. Bước 4. Bước 4. an. y ← z và z ← t. . Trong trường hợp ngược lại..... . gán Min ← ai rồi quay lại bước 3... Thông báo giá trị Soduong và kết thúc thuật toán. Kết thúc thuật toán... Bước 6. Gán i ← n. i ← 0. Bước 1. Bước 2. quay lại bước 3.. cũng quay lại bước 2.. a2.. Bước 3. S ← 0.. Bước 1.. Bước 2. an cho trước... b) Tìm số nhỏ nhất trong dãy n số a1. a2.. Nếu i ≤ n.. a2. an. chuyển đến bước 6. Gán Min ← a1. an. a2. Bước 5. OUTPUT: Tổng S = a1 + a2 +. OUTPUT: Vitri = Vị trí của số dương đầu tiên trong dãy số a1. Gán Soduong ← 0..

Mục đích. Nếu i < 1. Bước 5. Theo một nghĩa nào đó thì 48 . Gán i ← i −1. S ← S + ai. GV có thể xuất phát từ những hoạt động phụ thuộc vào điều kiện trong đời sống để dẫn dắt HS đến sự cần thiết cần có cấu trúc rẽ nhánh trong ngôn ngữ lập trình. Những điểm cần lưu ý và gợi ý dạy học Trước khi bắt đầu bài học mới.. Bài 6. Nếu ai > 0. GV có thể kiểm tra bài cũ và yêu cầu học sinh nhận xét về thứ tự thực hiện câu lệnh trong các chương trình đã học. an. Thông báo giá trị Vitri = i và kết thúc thuật toán... Nhiều bài toán mà máy tính giúp con người giải quyết là những vấn đề của đời sống thực tiễn. an. một công việc có thể được thực hiện nếu như một điều kiện nào đó được thoả mãn. Nếu ai > 0.. yêu cầu • Biết sự cần thiết của cấu trúc rẽ nhánh trong lập trình. Bước 4. Hiểu cú pháp. Nếu i ≤ n. Tính tổng các số dương trong dãy số A = {a1. Bµi 8. Câu lệnh điều kiện 1. Trong thực tiễn. Bước 3. i ← i + 1. quay lại bước 2. S ← 0. Bước 5. GV cần nhấn mạnh cho HS biết rằng: các lệnh trong chương trình được thực hiện theo thứ tự từ trên xuống dưới. 2. Thực hiện các lệnh tuần tự từ trên xuống dưới là thứ tự thực hiện ngầm định (và là cấu trúc điều khiển) của mọi ngôn ngữ lập trình. • • • • • Biết cấu trúc rẽ nhánh được sử dụng để chỉ dẫn cho máy tính thực hiện các thao tác phụ thuộc vào điều kiện. mọi ngôn ngữ lập trình đều phải có cấu trúc điều khiển cho phép giải quyết các tình huống này. Nghĩa là. a2.Bước 2... a2. Biết mọi ngôn ngữ lập trình đều có câu lệnh để thể hiện cấu trúc rẽ nhánh. ngược lại. Vì vậy... chuyển tới bước 5. hoạt động của các câu lệnh điều kiện dạng thiếu và dạng đủ trong Pascal.. trong chương trình một số câu lệnh có thể được thực hiện hoặc không được thực hiện phụ thuộc vào một điều kiện cụ thể nào đó.. Thông báo S và kết thúc thuật toán. i ← 0.. Bước 3. ngược lại. và quay lại bước 2. Bước đầu viết được câu lệnh điều kiện trong Pascal. giữ nguyên S. an} cho trước.. OUTPUT: S = Tổng các số ai > 0 trong dãy a1. chuyển tới bước 5. Bước 2. Hiểu cấu trúc rẽ nhánh có hai dạng: Dạng thiếu và dạng đủ. INPUT: n và dãy n số a1. Bước 1. Bắt đầu bài học mới. Bước 4. a2.

. không thì. GV có thể khái quát lên hai cấu trúc rẽ nhánh dạng thiếu và dạng đủ bằng ngôn ngữ tự nhiên như sau: Nếu. if <điều kiện> then <câu lệnh>.. (Xuân sửa lưu đồ này nhé) 49 . thì.cấu trúc rẽ nhánh cho phép “phá vỡ” tính tuần tự trong quá trình thực hiện các lệnh của một chương trình. Cũng từ những ví dụ về hoạt động phụ thuộc vào điều kiện. Tương ứng với hai cấu trúc rẽ nhánh dạng thiếu và dạng đủ. trong Pascal có hai câu lệnh điều kiện dạng thiếu và dạng đủ như sau: Dạng thiếu: Dạng đủ: đủ.... (Xuân sửa lưu đồ này nhé) ở dạng thiếu: Nếu điều kiện thoả mãn thì câu lệnh được thực hiện. Nếu... thì.. ngược lại thì bỏ qua câu lệnh... if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>. Sau đó giới thiệu cho HS về sơ đồ hoạt động của câu lệnh điều kiện dạng thiếu và dạng if <điều kiện> then <câu lệnh>.. if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>.

then.. Căn cứ vào điều kiện thực tế. Tuy nhiên... ngược lại phép so sánh cho kết quả sai tương đương với điều kiện không thoả mãn. Mặc dù các phép so sánh. hoạt động của cấu trúc rẽ nhánh là giống nhau ở mọi ngôn ngữ lập trình. Nhưng mỗi ngôn ngữ lập trình lại có những câu lệnh riêng để thể hiện cấu trúc rẽ nhánh. Trong SGK dành mục 2 và mục 3 để nói về điều kiện và phép so sánh. do HS THCS chưa học về biểu thức quan hệ nên ở đây dùng cụm từ phép so sánh để nói về điều kiện trong câu lệnh điều kiện). tiến trình dạy học theo cách giới thiệu ở trên là một phương án khả thi... 3. Nếu không được cắm điện. tập viết câu lệnh điều kiện trong bài học này.. Đến đây GV có thể sử dụng các ví dụ ở mục 5 (SGK) để HS luyện tập nhằm hiểu rõ về hoạt động của câu lệnh điều kiện dạng thiếu. Dưới đây là một số ví dụ: a) b) 50 Nếu đạt điểm tổng kết cả năm cao hơn 8. nhất là với HS chưa được học tiếng Anh. thì. em sẽ đạt danh hiệu "Học sinh giỏi". do vậy GV cần lưu ý hướng dẫn HS luyện tập về phép so sánh cùng với việc tìm hiểu. nhiều phép so sánh. esle. câu lệnh 1.. câu lệnh. Tuy nhiên. nguyên tắc chung cho mọi ngôn ngữ lập trình. thì.... biết ý nghĩa câu lệnh. then...ở dạng đủ: Nếu điều kiện thoả mãn thì câu lệnh 1 được thực hiện. Lưu ý: Hoàn toàn có thể theo các trình tự giới thiệu trong SGK để tiến hành dạy học bài học này. Cuối bài học GV cần khái quát hoá để HS biết cấu trúc rẽ nhánh. Có thể nêu vài ví dụ về các hoạt động hằng ngày phụ thuộc vào điều kiện.. ngược lại thì thực hiện câu lệnh 2. máy tính để bàn của em sẽ không hoạt động được. Cần dành thời gian thích đáng cho HS luyện tập qua các ví dụ minh hoạ (khoảng 1 tiết học). Việc dịch câu lệnh if. ra tiếng Việt tương ứng là nếu.5. Điều kiện thường là phép so sánh (lưu ý. có thể là cần thiết cho HS dễ nhớ ý nghĩa của câu lệnh. dạng đủ. và nếu.. không thì. câu lệnh 1. dễ hiểu để HS có thể dễ dàng nắm bắt được hoạt động của câu lệnh điều kiện. Phương án này đi từ câu lệnh cụ thể của Pascal... GV chủ động lựa chọn cách tiến hành phù hợp. Giáo viên có thể chủ động chọn các ví dụ khác. Trong đó. câu lệnh 2 và điều kiện. HS chưa được luyện tập. và if. câu lệnh 2 là câu lệnh của Pascal. kí hiệu các phép so sánh trong Pascal đã được giới thiệu ở bài học trước. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. ý nghĩa của biểu thức điều kiện... . sau đó khái quát thành những kiến thức. nhưng tránh những ví dụ quá phức tạp về điều kiện. câu lệnh. Các ví dụ ở đây đơn giản.. Phép so sánh cho kết quả là đúng tương đương điều kiện được thoả mãn. Trọng tâm của hai mục này là cần cho HS biết trong lập trình điều kiện thường được thể hiện bằng phép so sánh (biểu thức so sánh) và khái niệm điều kiện được thoả mãn (hay không được thoả mãn) trong đời sống tương đương với khái niệm phép so sánh cho kết quả là đúng (hay sai) trong ngôn ngữ lập trình...

và điều kiện thứ hai là người thứ nhất đoán đúng số m đó. Khi đó Điểm_1 được cộng thêm 1. f) Đúng. Nếu một phím khác ngoài hai phím mũi tên trên được nhấn. Điểm_1 được giữ nguyên. ngoài ra một người thứ nhất nghĩ trong đầu một số tự nhiên n < 10. m:=n. Điểm_2 được giữ nguyên. em (cần phải) đi đến phòng khám để bác sĩ khám bệnh. ngược lại. Tương tự. vào giữa cặp từ khoá begin và end. b) Điều kiện không được thoả mãn nên câu lệnh không được thực hiện. nếu người thứ hai nghĩ số tự nhiên m. nếu phép gán m:=n không phụ thuộc điều kiện x>5. Các điều kiện để điều khiển chiếc khay trong trò chơi là người chơi nhấn phím mũi tên → hoặc phím ←. lúa sẽ không cho thu hoạch cao. ngược lại. Bµi 5. nhưng câu lệnh điều kiện không có tác dụng. Bước 2. Điều kiện ở trò chơi là người thứ hai đoán đúng số n. ngược lại. nếu phím ← được nhấn. a) Sai (thừa dấu hai chấm). Giả sử Điểm_1 là số điểm của người thứ nhất và Điểm_2 là số điểm của người thứ hai. biểu tượng chiếc khay sẽ di chuyển sang trái. Nếu không được tưới đủ nước đúng thời kì phát triển. e) Sai. b) Sai (thừa dấu chấm phẩy thứ nhất). nếu x ≥ 1. Bµi 6. Nếu n chia hết cho 2.Z: real. Tuy nhiên. sai và cần đưa hai câu lệnh a:=b. nếu Điểm_1 > Điểm_2 thì người thứ nhất được tuyên bố thắng cuộc. Trường hợp Điểm_1 = Điểm_2 thì không có người thắng và người thua. d) Đúng. Bµi 8. Điều kiện ở trò chơi là sau 10 lần. Thuật toán: Bước 1. c) Đúng. Khi đó Điểm_2 được cộng thêm 1. người thứ hai thắng. e) Sai (thừa dấu chấm phẩy thứ nhất). d) Sai. với mục đích gán giá trị của biến b cho biến a khi giá trị của x lớn hơn 5 thì câu lệnh sai (thừa dấu chấm phẩy sau từ then). ngược lại. a) Vì 45 chia hết cho 3.Nếu bị bệnh. b) Đúng. Đáp án: a) Đúng. var X. Bước 3. Bµi 4. biểu tượng chiếc khay sẽ di chuyển sang phải một đơn vị khoảng cách. Nhập số n. Bµi 2. c) d) 51 . Kết thúc thuật toán. tức X giữ nguyên giá trị 5. chiếc khay vẫn giữ nguyên vị trí. ghi ra màn hình "n là số chẵn". Nếu người chơi nhấn phím →. c) Sai. Chương trình Pascal: uses crt. ghi ra màn hình "n là số lẻ". Bµi 7. ngược lại. điều kiện được thoả mãn nên giá trị của X được tăng lên 1. tức bằng 6.Y. Bµi 3.

nếu A = B hoặc B = C hoặc A = C. write('Nhap so C: '). Nếu A > B. Bước 4. B:=C. end. X ← B. B và C.' '. Nếu C < B. Chương trình Pascal: uses crt. write('Nhap so B: '). B. A:=B. B và C là ba cạnh của một tam giác cân. A. Thuật toán: Bước 1.' '. Nhập ba số A. C:=X end. B và C là ba cạnh của một tam giác vuông và chuyển tới bước 5. A ← C. readln(A). 52 . Bước 4. if A>B then begin X:=A. if C<A then begin X:=A. B và C. B và C không phải là ba cạnh của một tam giác và chuyển tới bước 5.Y). readln(X). C ← X. readln. B ← X. C:=X end. write('Nhap so X = '). B:=X end. write('Nhap so A: '). Nếu C < A. Bước 2. B và C là ba cạnh của một tam giác đều. A ← B.B. Bước 3. B và C và kết thúc thuật toán. Nếu A = B và B = C. thông báo A. readln end. Y:=Z. ngược lại.' '. Ghi giá trị các biến theo thứ tự A. readln(Y). Bµi 10. Bước 3. Bước 2. Bµi 9. thông báo A. if X>Y then begin Z:=X.begin clrscr. A:=C. Bước 5. Nếu A + B ≤ C hoặc B + C ≤ A hoặc C + A ≤ B. X:=Y. writeln(A. C. readln(C). write('Nhap so Y = '). Nếu A2 + B2 = C hoặc B2 + C2 = A2 hoặc C2 + A2 = B. var begin clrscr. if C<B then begin X:=B. thông báo A. writeln(X. Thuật toán: Bước 1.C). X ← A. C ← X. B ← C. thông báo A. Nhập ba số A. X ← A. X: integer. readln(B).

... readln(A). readln. dễ hiểu để HS dễ dàng nhận ra ý nghĩa. các ví dụ cần đơn giản. Hoàn toàn có thể 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.. HS đã được làm quen với thuật toán này ở ví dụ 4. Bài thực hành 4. Rèn luyện kĩ năng ban đầu về đọc các chương trình đơn giản và hiểu được ý nghĩa của thuật toán sử dụng trong chương trình. Do vậy. Mục đích. var begin clrscr. 2. write('Nhap so A: '). câu lệnh trong cấu trúc rẽ nhánh. Do vậy. 53 .else. Những điểm cần lưu ý và gợi ý dạy học Bài này là bài đầu tiên HS thực hành sử dụng lệnh if. if (A+B<=C) or (B+C<=A) or (A+C<=B)then writeln('Day khong la ba canh cua mot tam giac') else if (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 else else writeln('Day chi la ba canh cua tam giac thuong'). yêu cầu • • Viết được được câu lệnh điều kiện if. if (A=B) and(B=C) and (A=C) then writeln('Day la ba canh cua tam giac deu') if (A=B) or (B=C) or (C=A)then writeln('Day la ba canh cua tam giac can') A. write('Nhap so C: '). bài 5.. nói chung HS sẽ không gặp khó khăn về thuật toán này khi tìm hiểu chương trình Sap_xep ở bài tập 1 của bài thực hành này.Bước 5. then.then trong chương trình. Kết thúc thuật toán. Chương trình Pascal: program Tam_giac. readln(B). then.. biểu thức điều kiện. uses crt. B.. end.. readln(C). X: integer. write('Nhap so B: '). hoạt động của câu lệnh điều kiện. Sử dụng lệnh rẽ nhánh 1. C.

Kết thúc. var begin clrscr.. Bước 4. dưới đây xin giới thiệu một phương án về cơ bản vẫn dựa trên các yêu cầu của bài 1 nhưng có chỉnh sửa đôi chút để GV tham khảo khi tiến hành dạy học. cách sử dụng lệnh rẽ nhánh trong chương trình này.B). về mặt sư phạm nên giới thiệu câu lệnh điều kiện dạng thiếu trước vì câu lệnh này đơn giản hơn câu lệnh điều kiện dạng đủ. Có một số điểm chính GV cần lưu ý khi cho HS khi tiến hành bài 2 như sau: - Với câu lệnh điều kiện dạng đủ if. Bước 2.. {Neu b < a thi hien thi ra man hinh gia tri bien b truoc roi den gia tri bien a} if B<A then write(B. uses crt.. write('Nhap so B:'). then. b từ bàn phím. Do vậy. Nếu a ≤ b thì hiển thị ra màn hình giá trị biến a trước rồi đến giá trị biến b.' '.then thay cho một câu lệnh. lưu ý không đặt dấu chấm phảy sau câu lệnh trước từ khoá else.. GV hướng dẫn để HS viết được chương trình tương ứng. Nhập hai số nguyên a. Giữ nguyên yêu cầu đề bài của bài 1. {Buoc 2: Neu a < b thi hien thi ra man hinh gia tri bien a truoc roi den gia tri bien b} if A<=B then write(A.A). Sau khi giới thiệu câu lệnh dạng thiếu. End. B. Nếu b < a thì hiển thị ra màn hình giá trị biến b trước rồi đến giá trị biến a. hi vọng HS sẽ thấy gần gũi và dễ dàng hơn trong việc tìm hiểu chương trình này cũng như hiểu được hoạt động.. readln(A). cách tiếp cận này có nhược điểm là sử dụng hay câu lệnh if. Trên cơ sở phần mô tả thuật toán. bài 1 (SGK). Tuy nhiên.Tuy nhiên.' '. Đối với câu a.. Đoạn chương trình: - 54 . Yêu cầu HS chạy chương trình và thử với các bộ số liệu có trong câu c). Chương trình có thể như sau: program Sap_xep. A. Hơn nữa. else. Pascal dùng dấu chấm phảy để phân cách giữa các câu lệnh (không phải là kết thúc câu lệnh). b tu ban phim} write('Nhap so A:'). readln. Thuật toán thực hiện trong chương trình này có thể sẽ gần với cách nghĩ của HS hơn. việc giới thiệu câu lệnh dạng đủ sẽ thuận lợi hơn. yêu cầu HS mô tả các bước để giải quyết bài toán. Bước 3. Các bước cơ bản để giải bài toán này là (Nội dung này nên được dạy ở tiết lý thuyết hoặc tiết bài tập trước giờ thực hành): Bước 1. readln(B). T: integer. {Buoc 1: Nhap hai so nguyen a.

thì máy tính "không còn nhớ" đã thực hiện câu lệnh điều kiện thứ nhất ngay trước là If Long>Trang then writeln('Ban Long cao hon'). Như vậy. câu lệnh điều kiện thứ nhất đã thực hiện hiển thị ra màn hình dòng chữ 'Ban Long cao hon'. Đây chính là một lỗi của chương trình cần được chỉnh sửa. có hai trường hợp dẫn đến biểu thức Long<Trang cho kết quả sai: . Pascal thực hiện câu lệnh 2 in ra màn hình dòng chữ 'Hai ban cao bang nhau'. có thể theo cách suy luận của nhiều HS thì sự kết hợp của hai câu lệnh điều kiện là đảm bảo đầy đủ các trường hợp. Sơ đồ thực hiện hai lệnh trên được mô tả trong hình dưới đây. Dưới đây xin phân tích rõ hơn về đoạn chương trình này. Khi thực hiện đến câu lệnh thứ hai. 55 . đặc biệt câu lệnh thứ nhất đã xét đến trường hợp Long>Trang nên câu lệnh thứ hai sẽ không còn xét đến trường hợp này nữa mà chỉ xét đến hai trường hợp còn lại là Long<Trang và Long=Trang. Tuy nhiên. Kết quả là màn hình chỉ có một dòng chữ 'Hai ban cao bang nhau'. khi thực hiện đến lệnh thứ hai máy tính lại xét tất cả các trường hợp có thể. Khi máy tính thực hiện đến câu lệnh thứ hai là If Long<Trang then writeln('Ban Trang cao hon') else writeln('Hai ban cao bang nhau'). GV không cần dành quá nhiều thời gian giải thích quá chi tiết. khi đó biểu thức điều kiện Long>Trang cũng cho kết quả sai và câu lệnh điều kiện thứ nhất không thực hiện việc hiển thị ra màn hình dòng chữ nào cả. đã không thực hiện việc hiển thị ra màn hình dòng chữ "Ban Long cao hon" bởi vì biểu thức điều kiện Long>Trang trong câu lệnh điều kiện thiếu này cho kết quả sai. Kết quả là màn hình chỉ hiển thị một dòng chữ 'Ban Trang cao hon'. tức là Trang cao hơn Long thì máy hiển thi ra màn hình dòng chữ 'Ban Trang cao hon'. . Thoạt nhìn. Vì vậy. If Long<Trang then writeln('Ban Trang cao hon') else writeln('Hai ban cao bang nhau').Long cao hơn Trang. GV xem xét. tham khảo để giảng dạy cho HS. khi đó biểu thức điều kiện Long>Trang ở câu lệnh điều kiện thứ nhất cho kết quả đúng.Long và Trang cao bằng nhau. - Nếu Long<Trang cho kết quả sai. Cách suy luận như vậy không phải là không có lí khi xét trong trường hợp con người xử lí tình huống này. Vì vậy. máy tính thử kiểm tra điều kiện Long<Trang và có các trường hợp xảy ra như sau: - Nếu Long<Trang cho kết quả đúng. Chính vì vậy.If Long>Trang then writeln('Ban Long cao hon'). đã dẫn đến lỗi thực hiện chương trình trong trường hợp Long cao hơn Tang. màn hình sẽ hiển thị ra hai dòng thông báo khác nhau là 'Ban Long cao hon' va 'Hai ban cao bang nhau'. tỉ mỉ như trình bày dưới đây. máy tính xử lí rất "máy móc". Tuy nhiên. Trong trường hợp này thì câu lệnh trước là If Long>Trang then writeln('Ban Long cao hon').

hai bạn cao bằng nhau và Long cao hơn Trang. If Long=Trang then writeln('Hai ban cao bang nhau'). Cách đơn giản nhất là 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'). Yêu cầu HS quan sát kết quả để phát hiện vấn đề và tìm hiểu chương trình. còn gọi là bước kiểm thử. việc thử chương trình với một số bộ dữ liệu mẫu là một trong các công đoạn của phát triển phần mềm. Sau khi lập trình xong.Sai Long>Trang? Đúng writeln('Ban Long cao hon'). người ta có thể một số cách khác có thể chứng minh tính đúng đắn của chương trình mà không chỉ sử dụng đến các bộ dữ liệu test. Thực ra. Các bộ số liệu cần phủ kín các trường hợp: Trang cao hơn Long. phần mềm cần được thử nghiệm với một số bộ dữ liệu mẫu (hay còn gọi là bộ test) mà người ta dễ dàng biết được kết quả để kiểm chứng với kết quả mà chương trình đưa ra. Sai Long<Trang? writeln('Hai ban cao bang nhau') Đúng writeln('Ban Trang cao hon') Về cách dạy phần này. nhưng nếu thử với một số bộ dữ liệu test mà chương trình cho kết quả đúng với kết quả đã được biết trước thì không thể kết luận chương trình hoàn toàn đúng đắn được mà chỉ có thể nói chưa phát hiện ra sai sót của chương trình mà thôi. Có hai cách để chỉnh sửa chương trình trên để đảm bảo chỉ đưa ra một thông báo đúng. 56 . Tuy nhiên. Nghĩa là khi thử với bộ dữ liệu test nếu chương trình cho kết quả sai khác với kết quả đã được biết trước thì kết luận là chương trình sai. Việc thử chương trình với một bộ dữ liệu test chỉ chứng minh được chương trình sai mà không chứng minh được chương trình là đúng. nên cho HS gõ chương trình vào máy và chạy thử với các bộ dữ liệu kiểm tra. phát hiện lỗi.

Cách thứ hai là sử dụng câu lệnh điều kiện lồng nhau như trong SGK. đều. mục đích của cách này là giới thiệu cho HS có thể sử dụng các 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'). Đúng Long>Trang writeln('Ban Long cao hon') Sai Đúng Long<Trang writeln('Ban Trang cao hon' Sai writeln('Hai ban cao bang nhau') Với bài tập 3. HS cần biết điều kiện để ba số dương a. Điểm khó của bài này là học sinh biết chuyển biểu thức điều kiện toán học sang biểu diễn trong Pascal. thảo luận kĩ để hiểu chương trình này. nghĩa là phải đồng thời thoả mãn ba điều kiện a + b > c. b. vuông). 57 . HS phải hiểu và phải tự viết chương trình giải bài toán tương tự (ví dụ kiểm tra tính chất của tam giác dựa trên số đo của cạnh: cân. Sau khi học bài này. GV hướng dẫn HS về cách biểu diễn ba điều kiện này trong Pascal: (a+b>c) and (b+c>a) and (c+a>b). Có thể sử dụng sơ đồ dưới đây để giải thích về hoạt động của hai câu lệnh điều kiện lồng nhau để HS hiểu được lí do câu lệnh này chỉ hiển thị ra màn hình một thông báo. Việc phải sử dụng dấu ngoặc tròn trong phép so sánh trên là để đảm bảo thứ tự ưu tiên thực hiện phép toán và để đảm bảo tham số của phép and (và or) chỉ có thể là giá trị đúng hoặc sai (không là số). Bài toán này là một trong các bài toán yêu cầu trong chuẩn kiến thức. c là ba cạnh của một tam giác thì tổng hai cạnh phải lớn lớn cạnh còn lại. kĩ năng. b + c > a và c + a > b. Cần giải thích để HS hiểu dùng phép quan hệ and là để đảm bảo cả ba điều kiện a + b > c.If Long<Trang then writeln('Ban Trang cao hon'). Cần cho HS đọc. b + c > a và c + a > b đồng thời thoả mãn.

Những điểm cần lưu ý và gợi ý dạy học Giống với cấu trúc rẽ nhánh. Các ngày trong tuần các em đều lặp đi lặp lại hoạt động buổi sáng đến trường và buổi chiều trở về nhà. tiếng chuông đồng hồ báo thức gọi em dạy mỗi buổi sáng..5 và nhỏ hơn 8. một chương trình như vậy thì vừa dài. Hoặc trên lớp. Hiểu lệnh ghép trong Pascal 2.. Viết đúng được lệnh for. tiếng chim hót. tiếng gà trống gáy. một bạn khác nhập tên là Trung thì sẽ in ra 'Chao ban Trung'. b nhập từ bàn phím. Các lệnh này hoàn toàn giống nhau. sau đó thực hiện: - Nếu điểm nhỏ hơn 5.do trong một số tình huống đơn giản. Nếu điểm lớn hơn hoặc bằng 5 và nhỏ hơn 6. phương trình bậc nhất một ẩn số được giới thiệu trong chương trình môn Toán lớp 8 (học kì II). Nếu điểm lớn hơn hoặc bằng 6. cụ thể chương trình cho phép từng bạn nhập tên của mình từ bàn phím và in ra lời chào tương ứng. 58 . Hoặc một ví dụ khác là yêu cầu HS viết chương trình giải phương trình bậc nhất ax + b = 0.. có thể yêu cầu HS viết chương trình cho phép nhập điểm bài kiểm tra của một bạn nào đó. in ra dòng chữ "Hoan ho ban dat diem Gioi". với a ≠ 0. Nếu điểm lớn hơn hoặc bằng 8. in ra dòng chữ "Ban can co gang hon". Do vậy. Ví dụ. ví dụ khi một bạn nhập tên là Mai. em hoàn toàn có thể viết 40 lần lệnh để nhập tên và lệnh hiển thị dòng chào. in ra dòng chữ "Ban dat diem trung binh". Bài 7. a. nếu HS chưa được học phương trình này ở môn Toán. Lưu ý. Hiểu hoạt động của câu lệnh lặp với số lần biết trước for. cần xuất phát từ những hoạt động trong đời sống thực tiễn có tính chất lặp đi lặp lại để HS hiểu về khái niệm lặp. in ra dòng chữ "Ban dat diem Kha". dễ sai sót.5. thì chương trình sẽ in ra 'Chao ban Mai'. Như vậy em sẽ cần viết một chương trình Pascal cho phép lặp đi lặp lại việc nhập tên và hiển thị ra màn hình lời chào. cô giáo sẽ ngừng lại khi đã vào điểm cho tất cả HS trong lớp.do trong Pascal.Để HS luyện tập thêm về câu lệnh điều kiện. GV nên dành một vài phút để HS làm quen với khái niệm này. Lặp với số lần biết trước 1. yêu cầu • • • • • Biết nhu cầu cần có cấu trúc lặp trong ngôn ngữ lập trình. Giả sử cô giáo đề nghị em viết chương trình Pascal để chào từng bạn của lớp em (hoặc của nhóm em). phép so sánh. Tuy nhiên. giờ trả bài kiểm tra cô giáo lặp đi lặp lại việc gọi tên HS và ghi điểm của HS vào sổ điểm. Mục đích. vừa nhàm chán.. Làm thế nào để chương trình Pascal của em có thể thực hiện việc lặp này? Giả sử lớp của em có 40 bạn. Biết ngôn ngữ lập trình dùng cấu trúc lặp để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc nào đó một số lần.

end. begin for i := 1 to 10 do writeln('Day la lan lap thu '. Về cơ bản dạng tiến gần gũi với cách suy nghĩ tự nhiên của HS THCS hơn và chỉ cần dạng tiến là đủ. kiểu đoạn con.. + Trong Pascal cấu trúc for. giá trị đầu. giá trị đầu. trong đó: - biến đếm là biến đơn có kiểu nguyên. giá trị cuối là số nguyên. câu lệnh for. giá trị đầu. mô tả hoạt động của lệnh for. Chính vì vậy. biến đếm. giá trị cuối và câu lệnh. câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.giá trị đầu + 1). Trong SGK chỉ giới thiệu dạng tiến. Dạng lùi: for <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh>. giúp HS dễ tiếp thu kiến thức mà vẫn đảm bảo những kiến thức..i). không yêu cầu phải giới thiệu thêm dạng lùi. Khi thực hiện câu lệnh lặp for. Hoạt động của câu lệnh lặp này như sau: Ban đầu biến đếm được gán bằng giá trị đầu. giá trị đầu và giá trị cuối là các biểu thức có cùng kiểu với biến đếm và giá trị cuối phải lớn hơn giá trị đầu. Một cách tổng quát.....do có hai dạng tiến và lùi: Dạng tiến: for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>. gây khó hiểu với HS. Chính vì thế mà ta biết trước được số lần thực hiện câu lệnh sau từ khóa do (số lần lặp bằng giá trị cuối . phân tích ví dụ này để cho HS hiểu rõ về hoạt động của câu lệnh lặp. program Lap. mỗi lần câu lệnh viết sau từ khoá do được thực hiện biến đếm được tăng lên một đơn vị. Tuy nhiên. Có thể hướng dẫn học sinh lập bảng quá trình thực hiện chương trình trên như dưới đây: Lần lặp thứ i Kết quả viết ra màn hình 59 .do ở trên là dựa trên mặc định biến đếm.do còn được gọi là câu lệnh lặp với số lần biết trước. giá trị cuối có thể là kiểu kí tự. câu lệnh được thực hiện cho đến khi biến đếm lớn hơn giá trị cuối. var i: Integer.do các giá trị đầu và giá trị cuối phải được xác định trước. hiểu về biến đếm. Lưu ý: + Để tránh phức tạp.Trong Pascal cung cấp một 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>.. ở đây không đề cập đến những vấn đề này với mục đích để giản lược nội dung.. GV nên sử dụng chương trình Lap trong SGK. kĩ năng cần thiết theo yêu cầu.

Một cách đơn giản có thể hiểu cấu trúc begin..do và hướng dẫn HS viết chương trình. Trên đây các em đã được tìm hiểu về câu lệnh lặp với số lần biết trước trong Pascal (for. câu lệnh này có thể chứa nhiều câu lệnh khác của Pascal..do và lệnh ghép.. không nhất thiết phải làm hết tất cả các bài tập cuối bài này. Readln(Ten).. write('Chao ban '. GV cần lựa chọn và giao một số bài tập cho HS luyện tập. hai câu lệnh này cần phải được "gói" trong từ khoá begin. 60 .). mỗi ngôn ngữ lập trình có câu lệnh riêng để mô tả cấu trúc này.. sau từ khoá do chỉ có một câu lệnh cần thực hiện. ở chương trình Chao_hoi.. GV có thể cùng HS sử dụng câu lệnh for.do). Khác với chương trình Lap.end. Có thể yêu cầu HS đọc hiểu ví dụ có trong SGK (như chương trình Tinh_tong.1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 Day la lan lap thu 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 Sau khi cùng với HS phân tích chương trình Lap. 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ó ở mọi ngôn ngữ lập trình. giao nhiệm vụ cho HS hoàn thiện chương trình thực hiện chào hỏi các bạn trong lớp (hoặc trong nhóm) để chuẩn bị cho buổi thực hành tới. end. Lưu ý HS trong cấu trúc câu lệnh ghép này sau end là dấu chấm phẩy (. không phải là dấu chấm (... Tinh_giai_thua) hoặc đưa ra bài toán đơn giản cần sử dụng đến câu lệnh for. Muốn vậy. Giả sử lớp có 40 bạn thì đoạn câu lệnh có thể như sau: For i:= 1 to 40 do Begin write('Nhap ten cua ban')..end là một câu lệnh của Pascal. Căn cứ vào tình hình tiếp thu của HS.do để viết đoạn câu lệnh nhập tên và hiển thị ra màn hình dòng chào hỏi. Lưu ý: Cần dành thời để giới thiệu về câu lệnh ghép..).. Ten).. Cuối bài này. sau từ khoá do có hai câu lệnh cần thực hiện. Cần lấy thêm một số ví dụ khác để HS biết và tập làm quen với các tình huống sử dụng câu lệnh for.

. sang trái. sang phải (chẳng hạn. c) Bµi 2.. để vẽ được hình . thao tác chính cần thực hiện là vẽ nửa đường tròn có bán kính 1 đơn vị từ một điểm A tới điểm B theo một trong bốn hướng: lên trên.a. hình.... Xác định điểm bắt đầu vẽ là X. máy tính của em sẽ thực hiện cùng các hoạt động tự kiểm tra các thành phần máy tính. Ta chỉ xét x là một trong bốn hướng: lên trên. Vẽ nửa đường tròn theo hướng lên trên. sang phải. Tô màu và kết thúc thuật toán. Ta gọi thao tác vẽ nửa đường tròn theo hướng x là vẽ nửa đường tròn có bán kính 1 đơn vị bắt đầu từ một điểm xác định.b là nửa đường tròn được vẽ từ điểm A tới điểm B theo hướng lên trên). Hàng ngày (hoặc hàng tuần) bác lái xe khách lái xe để chuyên chở hành khách xuất phát từ một địa điểm và thời gian nhất định và đi theo một tuyến đường đã được xác định trước. sau đó khởi động hệ điều hành theo một trình tự đã được quy định trước. Vẽ nửa đường tròn theo hướng xuống dưới. a) như sau: Bước 1. Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp.. Bước 5. Bước 6. Dưới đây là một số ví dụ: a) b) Hàng ngày em đặt đồng hồ báo thức lúc 6 giờ để dậy sớm tập thể dục. xuống dưới. a) Hình 1 Có thể mô tả các bước của thuật toán để vẽ hình . sang trái. b) Lưu ý đối với giáo viên. Bước 4. Vẽ nửa đường tròn theo hướng sang trái. xuống dưới.3. Có thể trình bày thuật toán vẽ hình trên dưới dạng một cách hình thức như sau. Bước 3. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. Bước 2. Vẽ nửa đường tròn theo hướng sang phải. đường kính nối điểm đầu và điểm cuối của nửa đường tròn vuông góc với hướng x và nửa đường tròn "cong về hướng x". 61 .. a) Có thể thấy. Mỗi lần được khởi động.

Với lệnh lặp for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>. Nếu i > 4. 1. Câu lệnh lặp có tác dụng chỉ dẫn cho máy tính thực hiện lặp lại một câu lệnh hay nhóm câu lệnh với một số lần nhất định. Bµi 5. giữ nguyên tâm hình vuông và thay đổi hướng vẽ một góc 30o. Trừ d). đặt hướng = hướng + 1 và quay lại bước 3.. Bµi 3.3 2. A ← 1 . Bước 2. Nếu điều kiện không được thoả mãn... ngược lại. sang trái +1 = xuống dưới. Tuy nhiên đây vẫn là câu lệnh hợp lệ. Bµi 6. b) Các giá trị đầu và giá trị cuối của biến đếm phải là số nguyên.. điều kiện cần phải kiểm tra chính là giá trị của biến đếm lớn hơn giá trị cuối. chuyển sang câu lệnh tiếp theo trong chương trình.. Xác định điểm bắt đầu vẽ là X. câu lệnh được tiếp tục thực hiện. a) như sau: Bước 1. Nếu i ≤ n.. Đặt i = 0 và đặt hướng = lên trên. Câu lệnh lặp làm đơn giản và giảm nhẹ công sức của người viết chương trình. ta định nghĩa phép toán sau: lên trên + 1 = sang trái.. Thao tác chính cần lặp lại là vẽ hình vuông. Chúng ta nói rằng khi thực hiện các hoạt động lặp.. Tuy có vòng lặp 1000 lần. Vẽ nửa đường tròn theo hướng đã đặt. Bước 4. i ← i + 1. Điều quan trọng là học sinh nhận biết được: muốn vẽ được các hình đã cho chỉ cần lặp thao tác vẽ nửa đường tròn bốn lần hoặc lặp thao tác vẽ hình vuông ba lần. Tô màu và kết thúc thuật toán. 62 . i = i + 1. Bước 2. b) Thuật toán tương tự như trên. i (i + 2) 1 1 1 1 + + +. chương trình kiểm tra một điều kiện. Lưu ý đối với giáo viên. sang phải +1 = lên trên.4 3. Bước 3. Thuật toán tính tổng A = Bước 1. của Pascal.Với các hướng. xuống dưới +1 = sang phải. Khi đó có thể mô tả các bước của thuật toán để vẽ hình 1a như sau: Có thể mô tả các bước của thuật toán để vẽ hình . nhưng chương trình Pascal nêu trong câu hỏi không thực hiện bất kì một hoạt động nào. Bước 5. chuyển bước 6. ngược lại. Gán A ← 0.5 n(n +1) Bước 3. tất cả các câu lệnh đều không hợp lệ: a) Giá trị đầu của biến đếm phải nhỏ hơn giá trị cuối của biến đếm. Bµi 7. Bài này không yêu cầu học sinh mô tả một cách chính xác các bước của thuật toán. Bước 5. quay lại bước 2. Bước 6. Bµi 4. i ← 1. Ghi kết quả A và kết thúc thuật toán. Tại mỗi bước. Bước 4.

Max ← A. Bước 3. write('Nhap N=').Max. Thuật toán: Bước 1. Nhập các số n và x. readln(x). var n. for i:=1 to n do 63 . write('Nhap n=').A). readln(n). Chương trình Pascal có thể như sau: uses crt. Nhập số thứ i và gán giá trị đó vào biến A. Bước 5. Nếu Max < A. nếu như ta muốn lặp lại câu lệnh writeln('A') mười lần. Bước 7. Bước 2.x. a: longint. A:=1.x: integer. A ← 1. Bµi 9. Max:=-32768. d) Thừa dấu chấm phẩy thứ nhất.i.' bang '. Thông báo kết quả A là luỹ thừa bậc n của x và kết thúc thuật toán. quay lại bước 3. Bµi 8.n. begin write('Nhap x='). e) Biến x đã được khai báo như là biến có dữ liệu kiểu số thực và vì thế không thể dùng để xác định giá trị đầu và giá trị cuối trong câu lệnh lặp. Bước 4. Chương trình Pascal có thể như sau: var n.A: integer. i ←1. A ← A. i ←i + 1. begin clrscr.c) Thiếu dấu hai chấm khi gán giá trị đầu. Nếu i ≤ n. A← − 32768 (gán số nhỏ nhất có thể trong các số kiểu nguyên cho A). i←i + 1. ngược lại câu lệnh là hợp lệ. Bước 5.i. Bước 6. Bước 2. end.' mu '. Nhập số n. quay lại bước 3. Thuật toán: Bước 1. i ← 0 (A là biến lưu luỹ thừa bậc n của x). writeln(x. Bước 3. for i:=1 to n do A:=A*X. Thông báo kết quả Max là số lớn nhất và kết thúc thuật toán. Bước 4. Nếu i < n. readln(n).

i. if n>0 then begin SoDuong:=0. để tạo hứng thú cho HS.. Tuy nhiên. Sử dụng được câu lệnh ghép. for i:=1 to n do begin write('Nhap so thu '.begin write('Nhap so thu '.SoDuong. bài 9). Một cách tự nhiên. 2.A: integer.do.. gắn kết lí thuyết-thực hành và tạo niềm tin 64 . bài 5).. việc thực hành và được quan sát trực quan kết quả chạy chương trình đã học ở tiết lí thuyết là cần thiết. if Max<A then Max:=A end..SoDuong) end else writeln('n phai > 0!'). readln(A).i. do đó chúng ta chỉ cần một biến để lưu lần lượt các giá trị nhập vào là đủ. Rèn luyện kĩ năng đọc hiểu chương trình có sử dụng vòng lặp for. Những điểm cần lưu ý và gợi ý dạy học Trước khi tiến hành các bài của bài thực hành 5. begin clrscr. ở đây việc xử lí các giá trị trong dãy số có thể thực hiện bằng cách chỉ cần so sánh các giá trị đã được nhập vào.i.. Lời giải bài này tương tự như lời giải của bài 9 ở trên (xem thuật toán trong lời giải bài tập 5a. Lưu ý. writeln('So cac so duong = '. if A>0 then SoDuong:=SoDuong+1 end.':'). readln(A). GV có thể dành thời gian để HS gõ và chạy một hoặc hai chương trình các em đã viết trong giờ học lí thuyết. Bµi 10. write('Nhap N='). Mục đích.do 1. end. Trong chương trình trên chúng ta chỉ sử dụng hai biến A và Max để giải bài toán. var n. Sử dụng lệnh lặp For.do. Như đã nói.':'). writeln('So lon nhat: '.Max). Một cách giải quyết khác là sử dụng biến mảng (xem bài tập 6. hữu ích để HS ôn lại lí thuyết. readln(n). Bài thực hành 5. Chương trình Pascal có thể như sau: uses crt. để nhập n số chúng ta cần tới n biến. end.. yêu cầu • • • Viết được chương trình có sử dụng vòng lặp for.

4 = 12 3.' = '. readln. Sau ví dụ này. End...do. lưu ý học sinh không cần quan tâm đến quy cách trình bày. chỉ cần quan tâm đến sự thay đổi của biến đếm i.'..N*i) 3. thông tin được lệnh writeln() viết ra màn hình.do. Begin For i:= 1 to 3 do Begin write('Nhap ten cua ban'). Chương trình thực hiện chào hỏi các bạn trong lớp (hoặc trong nhóm) có thể như sau: Program Chao_hoi. GV có thể nhấn tổ hợp phím Ctrl+Break để ngắt chương trình.'.' = '. Readln(Ten). var Ten: string. end. HS cần tập trung tìm hiểu câu lệnh: for i:=1 to 10 do writeln(N. write('Chao ban '.. yêu cầu HS cho giá trị cuối nhỏ. Ten). :3 chỉ có ý nghĩa trong việc quy định quy cách trình bày bảng cửu chương trên màn hình.i. giải thích được hoạt động của câu lệnh for. Yêu cầu HS thay đổi giá trị cuối và nhận xét về số lần nhập tên và hiển thị lời chào hỏi.1 = 3 3. uses crt.i:2. Các tham số :2. Nếu HS đã lỡ để giá trị cuối quá lớn. Có thể cho HS thảo luận theo nhóm để hoàn thành một bảng tiến trình thực hiện của câu lệnh trên như sau: Giả sử với N=3 Bướ c 1 2 3 4 5 i 1 2 3 4 5 i ≤ 10 ? Đúng Đúng Đúng Đúng Đúng writeln(N.3 = 9 3. HS về cơ bản đã hiểu rõ.N*i:3). Số lần lặp bằng Giá trị cuối .2 = 6 3.' x '.Giá trị đầu + 1. Với bài 1 của bài thực hành này.trong học tập.5 = 15 65 . Đặc biệt HS cần phải nhận thấy được sự thay đổi của biến đếm i và các tham số của câu lệnh write để viết ra bảng cửu chương. chương trình lặp lại nhiều lần gây mất thời gian. hiểu và sử dụng được câu lệnh ghép. HS cần giải thích được sự thay đổi này để hiểu về hoạt động của câu lệnh for. Lưu ý: để tránh mất thời gian thử chương trình.

So cho la: '. hay được sử dụng để minh hoạ cho việc sử dụng vòng lặp for.. việc giới thiệu hàm.6 7 8 9 10 11 6 7 8 9 10 11 Đúng Đúng Đúng Đúng Đúng Sai 3. kĩ năng cho nên GV có thể cho thực hành bài này trên lớp hoặc giao cho học sinh tự nghiên cứu. Giới thiệu cùng với thủ tục GotoXY là các hàm lấy vị trí cột WhereX.6 = 18 3. Lưu ý. HS lớp 8 chưa được học giải phương trình bậc nhất hai ẩn số.10 = 30 Không thực hiện lệnh writeln(). End. giải thích tại sao chương trình này cho phép giải bài toán đặt ra. cung cấp cho HS một câu lệnh mới là thủ tục đưa con trỏ tới một ví trị mong muốn trên màn hình (màn hình soạn thảo văn bản) GotoXY().. thủ tục có sẵn trong Pascal. khai thác hàm. đây không phải là yêu cầu bắt buộc trong Chuẩn kiến thức.9 = 27 3. Bài 3. Kết thúc vòng lặp Bài 2. GV có thể giới thiệu chương trình trước rồi yêu cầu HS tìm hiểu. Hơn thế nữa.do lồng nhau. cho). 66 . Tuy nhiên.. Việc giới thiệu thủ tục này nhằm cung cấp cho HS một công cụ để trình bày màn hình. Chương trình giải bài toán này có thể như sau: Var ga. sử dụng. Có một ví dụ vui. '. vị trí dòng WhereY hiện thời của con trỏ..do lồng nhau đó là bài toán cổ: Vừa gà vừa chó Bó lại cho tròn Ba mươi sáu con Một trăm chân chẵn.. GV có thể sử dụng bài 3 này hoặc lấy một ví dụ khác để giới thiệu về vòng for. cho : byte. thủ tục ở đây còn nhằm mục đích hướng dẫn HS tìm hiểu về thư viện chương trình.7 = 21 3. Readln.. 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: '. giới thiệu về việc sử dụng hai vòng for.8 = 24 3. ga. Không cần đi sâu vào việc sử dụng các thủ tục này để trình bày màn hình. Bài toán dân gian này có thể sẽ làm HS hứng thú hơn.do lồng nhau.

. var ga. hướng dẫn để HS nhận thấy số lượng các phép tính ở chương trình sau ít hơn với chương trình ban đầu. Điều đó cũng có nghĩa là thuật toán ở chương trình sau hiệu quả hơn.. nhưng nếu để con người thực hiện thì sẽ lâu hơn rất nhiều. Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện lặp đi lặp lại công việc đến khi một điều kiện nào đó được thoả mãn. ga. dự đoán xu hướng để có thể bỏ qua một số công đoạn tính toán nhằm đi đến kết quả nhanh hơn. if (2*ga + 4*cho = 100) then writeln('Ga: '. Do đó. ý tưởng cơ bản là xét tất cả các trường hợp và kiểm tra xem trường hợp nào thảo mãn: ga + cho= 36 và ga*2 + cho*4 = 100 thì đó là một đáp số của bài toán. GV căn cứ vào mức độ tiếp thu của HS để có thể tiến hành giới thiệu hoặc không giới thiệu nội dung về số lượng phép toán. GV có thể yêu cầu học sinh cải tiến để có chương trình hiệu quả hơn. Nhưng nhược điểm của máy tính lại là chỉ biết làm việc theo sự điều khiển của con người mà không hề có tư duy sáng tạo. Do vậy. 67 .cho. Cho: '. readln. Trong quá trình tính toán tìm ra kết quả. GV có thể phân tích. xây dựng thuật toán sao cho có thể nâng cao hiệu quả làm việc của máy tính. cho:byte. '.Thuật toán này rất đơn giản. Với cách giải như trên máy tính tìm ra kết quả trong nháy mắt. End. end. Begin For cho:= 1 to 24 do Begin ga:= 36 . lựa chọn thuật toán hiệu quả có vai trò quan trọng trong lập trình. yêu cầu • • • Biết nhu cầu cần có cấu trúc lặp với số lần chưa biết trước trong ngôn ngữ lập trình. Lặp với số lần chưa biết trước 1. Mục đích. Luôn cần có ý thức xây dựng. Việc phân tích về số lượng phép toán có thể gây quá tải đối với HS. so sánh tính hiệu quả giữa các thuật toán. Việc xây dựng. Bài 8. Qua bài toán này cũng có thể nêu cho HS thấy ưu điểm nổi bật của máy tính trong việc tính toán nhờ tốc độ xử lý rất cao. con người cần lựa chọn.cho).do trong Pascal. con người còn có khả năng phán đoán. nhất là với những bài toán có khối tượng tính toán lớn. Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước while. lựa chọn thuật toán hiệu quả nhất khi giải bài toán trên máy tính.

Cách tiếp cận này được thực hiện theo phương án đi từ câu lệnh lặp cụ thể while.. Dựa trên chương trình này. Hơn nữa.do trong Pascal. var Tieptuc: char. SGK khái quát. trong đó: - điều kiện thường là một phép so sánh. Ten: string. sau khi giới thiệu thuật toán.. nếu đã giới thiệu ví dụ viết chương trình chào hỏi ở bài trước. uses crt.do của Pascal như một ví dụ minh hoạ.. while tieptuc = 'c' do Begin write('Nhap ten cua ban'). Điều đó tạo điều kiện thuận lợi cho việc làm nổi bật vấn đề. tình huống mới cần giải quyết.do.do qua các ví dụ. Ví dụ 2 trong SGK là một bài toán khoa học. ở phần đầu của bài này GV cần nêu một số ví dụ về hoạt động lặp với số lần chưa biết trước.. sơ đồ hoạt động của câu lệnh while. SGK giới thiệu câu lệnh while. đưa ra sơ đồ hoạt động của cấu trúc lặp với số lần chưa biết trước. Do vậy. end. Câu lệnh lặp này được thực hiện như sau: 68 . Readln(Ten). Ví dụ 1 trong SGK là một hoạt động trong đời sống. write('Tiep tuc ? c/k'). câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép. HS được làm quen với các ví dụ sử dụng lệnh while. Sau khi đã giới thiệu ví dụ 1 trong SGK. Begin Tieptuc:='c'. readln(Tieptuc). GV có thể đặt tình huống chưa biết trước số bạn trong nhóm thì phải viết chương trình như thế nào? Điểm thuận lợi khi sử dụng ví dụ này là HS đã hiểu yêu cầu của bài toán này từ các tiết học trước. sử dụng những bài toán gắn liền với thực tế là một cách tốt để HS nhận thức rõ khái niệm bài toán trong Tin học không chỉ là những bài toán trong lĩnh vực toán học...2. End. sau đó khái quát thành kiến thức chung ở các ngôn ngữ lập trình.. không phải mất nhiều thời gian vào tìm hiểu ý nghĩa của bài toán.. Trong Pascal. Dưới đây gợi ý một cách tiến hành khác để GV tham khảo. writeln('Chao ban '. readln. Những điểm cần lưu ý và gợi ý dạy học Giống với bài 7. GV giới thiệu về cú pháp. Ten). cú pháp câu lệnh lặp với số lần chưa xác định trước có dạng: while <điều kiện> do <câu lệnh>. Sau đó. Trong ví dụ 2. Nói chung HS chưa đưa ra được phương án giải quyết cho vấn đề này. GV nên chủ động đưa ra một chương trình Pascal như sau: Program Chao_hoi.

GV có thể khái quát cho HS biết rằng các ngôn ngữ lập trình đều cung cấp câu lệnh lặp với số lần chưa biết trước.do thường phải là câu lệnh ghép. trong các câu lệnh của vòng lặp này cần có câu lệnh làm thay đổi biểu thức điều kiện. câu lệnh sẽ bị bỏ qua và chuyển sang câu lệnh tiếp theo trong chương trình. 2. điều kiện không được thoả mãn và vòng lặp kết thúc khi điều kiện tieptuc = 'c' cho kết quả sai... Ban đầu ô nhớ này chưa được gán giá trị nên có thể chứa một giá trị ngẫu nhiên nào đó (có một số ngôn ngữ lập trình khi khai báo biến thì gán luôn cho biến một giá trị mặc định nào đó do ngôn ngữ lập trình quy định)..do. Nếu điều kiện đúNG.. thực hiện câu lệnh và quay lại bước 1. hoạt động của câu lệnh lặp với số lần chưa biết trước ở các ngôn ngữ lập trình là giống nhau.. khi đó vòng lặp kết thúc. Việc cần có câu lệnh Tieptuc:='c' có thể được giải thích như sau: gặp lệnh khai báo biến Tieptuc: char Pascal sẽ dành một ô nhớ và đặt tên ô nhớ này là Tieptuc. Khi giải thích được nguyên nhân phải có câu lệnh này. có nghĩa là phải có câu lệnh để đến lúc nào đó điều kiện không được thoả mãn. Nếu điều kiện SAI. Đến đây. giá trị của biểu thức điều kiện thay đổi phụ thuộc vào câu trả lời của người sử dụng. Kiểm tra điều kiện..do. Phần cuối bài GV sử dụng các ví dụ trong SGK hoặc lấy ví dụ khác để HS hiểu được hoạt động. Nếu giá trị ngẫu nhiên này mà khác 'c' thì điều kiện tieptuc = 'c' không được thoả mãn ngay từ đầu và 69 . HS sẽ hiểu rõ thêm về biến.. tức là tieptuc <> 'c'. Lưu ý: + Đối với vòng lặp while. + Trong chương trình trên.. có câu lệnh Tieptuc:='c' ở ngay sau từ khoá Begin. Điểm khác nhau giữa các ngôn ngữ lập trình là cú pháp câu lệnh để thể hiện cấu trúc này mà thôi. Trong ví dụ trên đây..do. Câu lệnh readln(Tieptuc) để gán giá trị cho biến Tieptuc từ bàn phím. điều kiện thực hiện vòng lặp while. ngược lại..1. khi người sử dụng nhấn bất kì chữ cái (hoặc chữ số) nào khác thì vòng lặp kết thúc.. Sơ đồ hoạt động của câu lệnh câu lệnh lặp với số lần chưa biết trước (Xuân sửa lưu đồ này nhé) Việc dịch nghĩa hay diễn giải ý nghĩa của từ tiếng Anh trong câu lệnh while.do có thể là cần thiết đối với HS chưa được học tiếng Anh và để HS dễ nhớ (Trong khi . viết đúng cú pháp và biết một số trường hợp sử dụng hiệu quả câu lệnh while. thì).. Khi người sử dụng nhấn "c" thì vòng lặp tiếp tục. Do vậy câu lệnh sau từ khóa do của câu lệnh lặp while. GV đặt câu hỏi để HS tìm hiểu tại sao phải có câu lệnh này.

khi đó chương trình này sẽ tiếp tục lặp đi lặp lại. Khi chuẩn bị tô phở để phục vụ cho khách.until có đặc điểm là các câu lệnh trong vòng lặp luôn được thực hiện ít nhất một lần. Với câu lệnh Repeat... hay chiếc quần với các đường may đã được thiết kế trước... while a<6 do writeln('A').... Như vậy. + Trong ví dụ trên đây có sử dụng kiểu dữ liệu char mà học sinh chưa biết. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. cho bánh phở đã làm nóng vào bát...until.do có thể xảy ra tình huống vòng lặp không được thực hiện một lần nào cả.vòng lặp while. Do mục đích của ví dụ này là để giới thiệu câu lệnh while... không so sánh câu lệnh Repeat.. Dưới đây là một số ví dụ: a) b) Tìm một từ nhất định bị gõ sai chính tả trong văn bản và sửa lại cho đúng. c) Bµi 2. cho thêm gia vị. đối với câu lệnh lặp while..do để thay thế. nghĩa là người sử dụng luôn luôn gõ phím c. May xong một sản phẩm.do.until.. mỗi cô công nhân may cùng một chi tiết của chiếc áo.. nên GV có thể chỉnh sửa chương trình để sử dụng với một kiểu dữ liệu khác mà các em đã biết (ví dụ như integer) hoặc sử dụng chương trình này nhưng không giải thích về kiểu char. cô công nhân sẽ may sản phẩm tiếp theo cho đến khi hết giờ làm việc. Tuy nhiên. cô bán hàng thường thực hiện các công việc sau đây: Cho một lượng bánh phở vào nồi nước phở để làm nóng bánh phở.. 3. để mô tả cấu trúc lặp với số lần chưa biết trước.do là đủ. end. Trong xưởng may. GV không giới thiệu câu lệnh Repeat..do. GV nên giới thiệu thêm cho HS về kiểu dữ liệu char trước khi kết thúc bài này. có nghĩa là mọi tình huống lặp sử dụng câu lệnh Repeat. GV có thể sử dụng chương trình dưới đây (có trong trong SGK) để giải thích về việc lặp vô hạn có thể xảy ra do lỗi của người lập trình: var a:integer... Người ta đã chứng minh được rằng chỉ cần câu lệnh while. Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp với số lần lặp chưa biết trước.do để tránh quá tải với HS. Trong suốt ca bán hàng số lần thực hiện các thao tác lặp đó là không thể biết trước.. thêm nước phở đang được đun sôi vào bát phở. nếu học sinh tiếp thu tốt. còn có một câu lệnh khác là Repeat.. Trong Pascal..do.... Sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước là ở các điểm sau đây: 70 ... begin a:=5. Số từ cần phải sửa chưa được biết trước. SGK chỉ giới thiệu cho câu lệnh while..do sẽ không được thực hiện một lần nào cả.until.until với while. Trong trường hợp điều kiện luôn được thoả mãn.. làm chín một ít thịt và cho vào bát bánh phở đã được làm nóng. + Các câu lệnh của vòng lặp có thể không được thực hiện một lần nào cả là một đặc điểm khá quan trọng của câu lệnh while. Các thao tác đó được thực hiện lặp lại mỗi khi có khách ăn phở. đều có thể sử dụng while.

Bước 2. i ← i − 1/2 và quay lại bước 2. còn trong câu lệnh lặp với số lần lặp chưa biết trước. câu lệnh mới được thực hiện. S:=S-n end. Điều này đặc biệt đúng đối với câu lệnh lặp while. writeln(S). trước hết điều kiện được kiểm tra. câu lệnh lặp kết thúc nên điều kiện S=0 luôn luôn được thỏa mãn. b) c) Bµi 3.do. còn với câu lệnh lặp với số lần lặp chưa biết trước thì số lần lặp chưa được xác định trước.2 do S:=S-x.. Khi kết thúc thuật toán S = 5. điều kiện là giá trị của một biến đếm có giá trị nguyên đã đạt được giá trị cuối hay chưa. Điều kiện sẽ được thay đổi trong mỗi lần lặp và dựa vào điều kiện này chương trình sẽ quyết định thực hiện tiếp câu lệnh lặp hay không. chuyển đến bước 4.. Mô tả thuật toán: Bước 1. x:=0. ví dụ như một số có chia hết cho 3 hay không.a) Như tên gọi của nó.. câu lệnh lặp với số lần lặp cho trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước. Nhận xét: Trong câu lệnh thực hiện. n:=0. điều kiện được kiểm tra trước khi các bước lặp được thực hiện.2. Nếu i > 1. Đặt i = R (i là bán kính đường tròn sẽ vẽ). Trong câu lệnh lặp với số lần cho trước. Bước 4. a) Chương trình thực hiện 5 vòng lặp. điều kiện tổng quát hơn nhiều. Do đó có thể có trường hợp câu lệnh hoàn toàn không được thực hiện. Bµi 5. b) Vòng lặp trong chương trình được thực hiện vô tận vì sau câu lệnh n:=n+1. while S>5.0.. Do đó nếu điều kiện không được thỏa mãn ngay từ đầu. Đoạn chương trình Pascal tương ứng: S:=10. Khi đó vòng lặp mới được kết thúc sau hữu hạn 71 . S = 10 khi kết thúc thuật toán. Kết thúc thuật toán. vẽ đường tròn bán kính i. có thể là kiểm tra một giá trị của một số thực. Bµi 4. writeln(S). cũng có thể là một điều kiện tổng quát khác. câu lệnh được thực hiện ít nhất một lần.5. ngược lại. b) Thuật toán 2: Không vòng lặp nào được thực hiện vì ngay 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. Trong câu lệnh lặp với số lần cho trước. Đoạn chương trình Pascal tương ứng: S:=10. Trong câu lệnh lặp với số lần chưa xác định trước. các bước lặp sẽ bị bỏ qua. Nhận xét: Trong các thuật toán và chương trình trên. Bước 3. Nếu điều kiện được thoả mãn. a) Thuật toán 1: 10 vòng lặp được 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. sau đó kiểm tra điều kiện. while S<10 do begin n:=n+3. các bước 2 và 3 bị bỏ qua.

S:=S+n. Bước 5. LT: real. Kết thúc thuật toán. Bước 5. A = A. k:=k+1 end end. i ← 2. Chương trình Pascal: var n. Nếu k ≤ N. Đọc các giá trị x và n. với n là số tự nhiên và x là số thực được nhập vào từ bàn phím. k ← 1. Bước 4. k:=1. chuyển xuống bước 5. 72 . b) Thiếu dấu hai chấm trong câu lệnh gán. c) Thiếu các từ khóa begin và end trước và sau các lệnh n:=n+1. write(‘Nhap so n= ‘). Viết thuật toán và 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 của x (tức xn). Bµi 8. Thuật toán: Bước 1. Nếu k > n. Bµi 9. S ← 0. Nếu n chia hết cho i. Hãy so sánh với thuật toán trong bài tập 8. T ← 1. Bước 2.do thường là câu lệnh ghép. ngược lại. câu lệnh trong câu lệnh lặp while. LT:=1.k.bước. Để làm được điều này. A. k ← k + 1 và quay lại bước 3. chuyển xuống bước 5. a) Thừa dấu hai chấm trong điều kiện. Bước 5. A ← 1.. Đọc giá trị n. readln(A). Bµi 7. begin write(‘Nhap so A= ‘). Bước 3. Ghi giá trị S và kết thúc thuật toán. Bước 3. Đọc giá trị N. Nếu i > n −1. Thuật toán: Bước 1. Bước 2. i ← i + 1 và quay lại bước 3. k ← 1. Thông báo kết quả là A và kết thúc thuật toán. chuyển xuống bước 5.x. Bước 4. Bước 2. k ← k + 1 và quay lại bước 3. bài 7. Bước 4. Bước 1. T = T. Tính tích của N số tự nhiên đầu tiên với số lần lặp không xác định (với N là số tự nhiên được nhập vào từ bàn phím). readln(n). S ← S + i. Bước 3. Bµi 6. do đó vòng lặp trở thành vô tận.k: integer. while k<=n do begin LT:=LT*A.

do hoặc for. Mục đích.i. while i<=n-1 do begin if (n mod i)=0 then S:=S+i.. End. i:=1. end.S). Bµi 10. Rèn luyện kĩ năng về khai báo.. readln. i:=2. sử dụng biến Rèn luyện khả năng đọc chương trình Biết vai trò của việc kết hợp các cấu trúc điều khiển.. sum: real. 73 . Sử dụng lệnh lặp while. S:=0..S: integer. readln(n). write('Tong cac uoc so thuc su cua '.do trong chương trình TP có sẵn Biết lựa chọn câu lệnh lặp while.' la: '. end. yêu cầu • • • • • Hiểu câu lệnh lặp while.Chương trình có thể như sau: var n. end. sum:= 0.do 1. Bài thực hành 6. Write('Gia tri N bang '. begin write('Cho so tu nhien n= '). i:6). While (sum<=A) do Begin sum:= sum+1/i. Chương trình có thể như sau: Uses CRT. Var A.... i:= i+1.do phù hợp với tình huống cụ thể. i: integer..n. Begin Write('cho so A: '). i:=i+1. Readln. readln(A).

rồi kết thúc. Với bài 1. trước hết cần xác định Input và Ouput của bài toán: Input: Dãy số thực x1. x2.+xn)/n Thuật toán Bước 1. chạy và kiểm thử chương trình. 74 . Căn cứ vào mô tả thuật toán.. Bước 4. 2. Tính trung bình dãy số vừa nhập TB ← Sum/N.. TB=0. tuy nhiên cách mô tả trên đây được sử dụng với mục đích HS thuận lợi hơn khi đọc. n = 3.Gán biến đếm bằng 0 Dem← 0. Do vậy. Cần làm cho HS hiểu rõ về hoạt động của vòng lặp while.. GV có thể đưa ra hoặc hướng dẫn HS tạo ra những bộ dữ liệu test. Những điểm cần lưu ý và gợi ý dạy học Trước hết cần lưu ý rằng Chuẩn kiến thức.do: dem=0. Bước 2.. HS tìm hiểu để xác định các biến và kiểu tương ứng cần khai báo trong chương trình. Trước khi cho HS thực hành bài 1 trong SGK.2 Cộng thêm x vào tổng Sum: Sum ← Sum + x. Câu c) yêu cầu HS thử dịch. 2. có thể cho học sinh làm việc nhóm để mô phỏng chương trình (Việc này nên được làm trên lớp học. .1 Nhập giá trị số thực x từ bàn phím.do để giải bài toán. Việc thử nghiệm chương trình đã viết khi học lí thuyết giúp HS dễ hiểu hơn. GV cần yêu cầu HS đọc. chỉnh sửa.. Bước 3. kĩ năng 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 chưa biết trước. Có nhiều cách để mô tả thuật toán này. Đưa TB ra màn hình. Những kĩ năng này HS đã được rèn luyện ở những bài thực hành trước cho nên HS có thể hoàn toàn thực hiện được. Trước khi bắt đầu vòng lặp while.. ở tiết bài tập trước khi thực hành trên máy).2. hiểu. có thể cho HS gõ chương trình Chao_hoi mà các em đã được học ở bài lí thuyết.do trong chương trình. Trong khi Dem < N thì 2.xn Output: Giá trị trung bình (x1 + x2+. hiểu chương trình và đặc biệt cần hiểu được hoạt động của lệnh while..do trong chương trình..Nhập N là số lượng số thực sẽ được nhập từ bàn phím: . trong bài thực hành này không yêu cầu HS phải viết chương trình có câu lệnh while. thảo luận đối chiếu giữa thuật toán và các câu lệnh mô tả thuật toán trong chương trình. Ví dụ dưới đây là một mô phỏng hoạt động chính của chương trình với n=3 1.. GV có thể cho HS đọc.. đặc biệt là tính thuyết phục sẽ cao hơn và hơn nữa thể hiện được việc gắn kết giữa lí thuyết với thực hành. .3 Tăng biến dem thêm 1 đơn vị: Dem ← Dem + 1.. đối chiếu giữa thuật toán với chương trình Tinh_Trung_binh ở câu b.Gán tổng Sum ← 0.

.3..do.do sang sử dụng câu lệnh for..do. không thể sử dụng lệnh for. Kết thúc vòng lặp while. Bước 1: Nhập số tự nhiên N từ bàn phím Bước 2: Nếu N≤ 0 thông báo N không phải là số tự nhiên. ngược lại N chia hết cho bất kì một số nào trong khoảng từ 2 đến N − 1 thì N không phải là số nguyên tố.. cách tiến hành giống như với bài 1. Để kiểm tra N có phải số nguyên tố hay không ta sẽ đi kiểm tra xem N có chia hết các số từ 2 đến N −1 hay không.. Bắt đầu vòng lặp while. 3. i←i+1. Sử dụng phép chia lấy phần dư mod để kiểm tra tính chia hết. Với bài 2....do đảm bảo đạt yêu cầu đề ra trong chuẩn kiến thức. Ví dụ.do DEM < N Đúng Đúng Đúng Sai 3.. While. 75 DEM 1 2 3 X (nhập từ bàn phím) 10 15 20 TB 10 25 45 ..... Như vậy.do là khác nhau. Nếu N không chia hết cho số nào trong khoảng từ 2 đến N − 1 thì N là số nguyên tố.... 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. for. số nguyên tố là số tự nhiên chỉ chia hết cho 1 và chính nó.. ở câu d.do thích hợp hơn với trường hợp lặp với số lần chưa biết trước.do và for.2. Bước 3: Nếu N > 0: 3. không thì thông báo N không phải là số nguyên tố. rồi chuyển đến bước 4...2..do để thay thế lệnh while.1. Câu d) yêu cầu HS chuyển từ sử dụng câu lệnh while. rồi chuyển đến bước 4.do thích hợp hơn với trường hợp lặp với số lần biết trước. Tuy nhiên. Trước hết cần xác định Input và Output của bài toán: Input: Số tự nhiên N Output: Trả lời N là số nguyên tố hoặc N không là số nguyên tố Thuật toán HS lớp 8 đã biết tính chất của số nguyên tố... Nếu i = N thì thông báo N là số nguyên tố. bên cạnh mục đích cho HS có ý thức trong việc lựa chọn cấu trúc lặp phù hợp với tình huống. i←2. về cơ bản tình huống sử dụng while. 3. Qua việc làm này HS được rèn luyện thêm về sử dụng lệnh for.do: TB = 45/3 = 15... Trong khi N mod i <> 0.do trong chương trình Chao_hoi được (chưa biết trước số bạn trong nhóm). kĩ năng.

Thuật toán tìm số lớn nhất của dãy số (học sinh đã được tìm hiểu ở bài 5). Sau đó GV cho HS đọc chương trình trong SGK. thuật toán kiểm tra tính nguyên tố của một số tự nhiên là không khó. số nhỏ nhất của một dãy số 2. Tuy nhiên. Tuy nhiên. Mục tiêu của các ví dụ ở mục 1 là dẫn đến nhu cầu cần có biến mảng. đối chiếu việc sử dụng câu lệnh để mô tả thuật toán trên đây. Mục đích. Hơn nữa. vào đầu bài này cần giới thiệu một số ví dụ nhằm đưa đến nhu cầu cần có biến mảng trong ngôn ngữ lập trình. 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.do. Ví dụ 1. Pascal cung cấp một công cụ hiệu quả để hỗ trợ người lập trình đó là biến mảng. câu lệnh lặp.Bước 4: Kết thúc. rẽ nhánh và lặp) trong ngôn ngữ lập trình tạo nên sự linh hoạt và góp phần tạo nên sức mạnh của ngôn ngữ lập trình. Ví dụ mà GV đưa ra có thể chỉ cần thể hiện sự kết hợp giữa câu lệnh điều kiện và câu lệnh lặp với số lần chưa biết trước. Bài 9. Lưu ý. trong chương trình trên sử dụng cả câu lệnh điều kiện.. 76 . không nhất thiết phải có tình huống sử dụng phép chia lấy phần dư mod. Giáo viên có thể không cần trình bày ý nghĩa của việc kết hợp các cấu trúc điều khiển với HS. Làm việc với dãy số 1. yêu cầu • • • Biết được khái niệm mảng một chiều Biết cách khai báo mảng. nếu HS tiếp thu tốt. nhập. in. Mục 1 có hai nội dung quan trọng đó là nhu cầu của biến mảng trong ngôn ngữ lập trình và thuật toán tìm số lớn nhất của một dãy số. Trong mục 1 chỉ giới thiệu việc tìm số lớn nhất của dãy số như một nhiệm vụ cần thực hiện mà không đề cập đến việc giải quyết nhiệm vụ này như thế nào. Đối với đa số HS lớp 8. kĩ năng 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 biết trước..do. truy cập các phần tử của mảng Hiểu thuật toán tìm số lớn nhất. Những điểm cần lưu ý và gợi ý dạy học Tương tự với câu lệnh điều kiện. Như trên đã nêu chuẩn kiến thức. Mục đích của bài này là để HS thấy được sự cần thiết phải kết hợp các cấu trúc điều khiển để giải quyết bài toán. trong ví dụ này còn sử dụng phép chia lấy phần dư mod. GV có thể thay thế bằng ví dụ khác... Chính sự kết hợp giữa các cấu trúc điều khiển cho phép ngôn ngữ lập trình mô tả được những thuật toán phức tạp. giúp giải quyết được nhiều bài toán xuất phát từ nhu cầu thực tiễn. GV có thể yêu cầu HS tập viết chương trình đơn giản có sử dụng câu while. sau khi đã phân tích sự bất tiện nếu chỉ sử dụng cách khai báo biến đã biết (khai báo biến đơn). trong SGK dẫn đến nhu cầu biến mảng. Điều này thể hiện sự cần thiết và tính hiệu quả khi lựa chọn công cụ phù hợp trong lập trình. Sự kết hợp các cấu trúc điều khiển (tuần tự. câu lệnh lặp while.

Trong phần 2 cần cho HS biết cách khai báo.. Diem[1] là phần tử thứ nhất. Có thể viết một đoạn chương trình với 50 lệnh readln() để thực hiện việc nhập giá trị cho 50 phần từ của mảng từ bàn phím: readln(Diem[1]. Ví dụ. thực.. 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 một chiều: var <tên biến mảng> : array [kiểu chỉ số] of [kiểu phần tử]. Có thể thực hiện các thao tác như gán giá trị. Kiểu phần tử có thể là số nguyên. với Diem[1]. Giống như với việc gán giá trị cho biến đơn. Tuy nhiên.n2 với n1. Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: type <tên kiểu mảng> = array [kiểu chỉ số] of <kiểu phần tử>. hay được sử dụng để nhập dữ liệu cho mảng... truy cập. với khai báo var Diem: array[1.do với câu lệnh readln() là một cách lập trình hiệu quả.. kiểu phần tử là kiểu của các phần tử mảng. nhập (gán) giá trị. n2 là các hằng (hoặc biểu thức cho kết quả là số nguyên) xác định chỉ số đầu tiên và chỉ số cuối cùng (n1≤ n2). có hai cách để gán giá trị cho phần tử của mảng: Gán trực tiếp bằng lệnh gán: ví dụ: Diem[1] := 8. so sánh. c) Nhập giá trị cho biến mảng: Để nhập giá trị cho biến mảng thì cần nhập giá trị cho từng phần tử của mảng. Gán giá trị bằng cách nhập từ bàn phím.. readln(Diem[2]). trong đó: - kiểu chỉ số là một dãy số nguyên liên tục n1..50] of real. Ví dụ. việc kết hợp vòng lặp for. 77 . viết giá trị ra màn hình.. viết giá trị của biến mảng ra màn hình. readln(Diem[50]).Diem[50] như với biến đã học (biến đơn). b) Truy cập mảng: Sau khi đã cho HS luyện tập với khai báo biến mảng. Tuy nhiên. Kiểu chỉ số cũng chỉ cần giới thiệu thật đơn giản là dãy số nguyên dương bắt đầu từ n1=1 (không nhất thiết phải giới thiệu những trường hợp còn lại). Diem[2]. var <tên biến mảng>:<tên kiểu mảng>. có thể sử dụng các khai báo vừa thực hiện để giới thiệu về các truy cập vào biến mảng. readln(). Diem[2] := 9. GV chỉ cần giới thiệu với HS cách 1. GV cần sử dụng một số ví dụ để luyện tập về khai báo mảng một chiều và giải thích số lượng phần tử. kiểu phần tử của từng biến mảng tương ứng với mỗi ví dụ. Các phần tử này được "đặt tên" như thế nào? Để "gọi đích danh" từng phần tử cụ thể Pascal sử dụng cách: Tên biến mảng[chỉ số phần tử].. Diem[5] là phần tử thứ 5..5.. khai báo này đã tạo ra một biến mảng có 50 phần tử từ phần tử 1 đến phần tử 50. sử dụng lệnh read().

cho nên giáo viên có thể yêu cầu học sinh trình bày lại thuật toán tìm số lớn nhất của dãy số hoặc thực hiện lại việc mô phỏng thuật toán trên một dãy số cụ thể để các em nhớ lại thuật toán. Thứ hai.do phù hợp hơn vì trong trường hợp biết trước số lần lặp. Giả sử chỉ muốn viết ra màn hình những điểm số lớn hơn hoặc bằng 9 chẳng hạn. găp số nào lớn hơn Max thì gán giá trị của số đó cho Max. Việc đưa ra yêu cầu này có hai mục đích: thứ nhất là để HS làm quen trước với so sánh phần tử của biến mảng sẽ được sử dụng trong phần sau. Mặt khác. Trước khi 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 toán này (đã học trong Bài 5).do. Giải thích về thuật toán tìm giá trị lớn nhất của dãy số nguyên: + Đầu tiên gán giá trị số thứ 1 của dãy số cho Max (Ban đầu tạm thời coi số thứ nhất là số lớn nhất -số lớn nhất tạm thời) + So sánh số lớn nhất tạm thời này với số thứ 2. gần với cách nghĩ tự nhiên của HS hơn. Ví dụ về mô phỏng thuật toán này đã có ở bài 5. Mục 3 là ví dụ về một chương trình cụ thể sử dụng biến mảng và thuật toán tìm giá trị lớn nhất.. Sau đó yêu cầu học sinh thảo luận chỉnh sửa thuật toán trên để tìm ra số nhỏ nhất của dãy số.. đem so sánh Max với tất cả các số còn lại.For i:=1 to 50 do readln(Diem[i]). For i:=1 to 50 do writeln(Diem[i]). tuy nhiên ở đây cấu trúc for... GV cũng có thể nhắc lại về tầm quan trọng của việc lựa chọn cấu trúc điều khiển phù hợp khi lập trình.. câu lệnh như sau: For i:=1 to 50 do if Diem[i] >= 9 then writeln(Diem[i]). Sau khi so sánh đến số cuối cùng của dãy số thì Max chính là giá trị lớn nhất của dãy số. sử dụng cấu trúc for. + Cứ tiếp tục như vậy. Tương tự như vậy. nếu số thứ 2 lớn hơn số lớn nhất tạm thời-Max thì gán giá trị của số thứ 2 cho Max.. HS thấy được sự kết hợp giữa các câu lệnh mà cụ thể là câu lệnh for. để viết giá trị của các phần tử của mảng ra màn hình người ta kết hợp giữa for.do ở đây nói chung là dễ hiểu hơn. Như vậy đến thời điểm này Max là số lớn nhất của số thứ 1 và số thứ 2... Ví dụ. nhỏ nhất của dãy số nguyên. Do học sinh đã được tìm hiểu thuật toán này ở bài 5.do và câu lệnh if-then trong chương trình.do với lệnh writeln() hoặc write().. Làm như vậy HS sẽ không bị bỡ ngỡ khi gặp phép so sánh này trong chương trình. mô phỏng thuật toán tìm giá trị nhỏ nhất của dãy số có thể như bảng dưới đây: Dãy số i ai < SMIN 78 5 1 4 2 Đúng 4 3 Sai 7 4 Sai 6 5 Sai 3 6 Đúng 15 7 Sai 6 8 Sai 8 9 Sai . Trong các ví dụ trên.. khi duyệt các phần tử của biến mảng hoàn toàn có thể sử dụng cấu trúc while.

Máy tính chỉ có thể tham chiếu đến từng số trong dãy số. gấp lại và bỏ vào hộp B. ví dụ như: độ dài của số (có một số duy nhất có hai chữ số) chẳng hạn. GV lần lượt viết từng số lên bảng. Tức là phương án giải của con người không tuần tự mà có thể bỏ qua một số bước khi cần thiết. Sau khi chuyển xong HS cho biết số số lớn nhất trong các số được ghi trên các mảnh giấy. có sự khác biệt giữa con người và máy tính khi giải quyết công việc. Nhặt mảnh giấy thứ hai. GV có thể thêm. Con người có thể nhận diện ra số lớn nhất không chỉ dựa vào giá trị mà có thể còn qua một số dấu hiệu bổ trợ khác. Lặp lại công việc này đến khi hết các mảnh giấy của hộp A. Nhặt mảnh giấy đầu tiên ở hộp A. trong trong nhiều tình huống con người giải các bài toán hiệu quả hơn nhiều máy tính. nếu GV viết một dãy số nguyên lên bảng (ví dụ. Để HS hiểu được máy tính làm việc như thế nào. HS quan sát 79 . Cách mà HS làm giống với cách máy tính tính thực hiện theo thuật toán ở trên. so sánh với số vừa lấy ra từ hộp A (đang cầm trên tay) và nhớ lấy số lớn hơn và cứ tiếp tục như vậy đến khi hết các số trong hộp. ngược lại máy tính lại có ưu điểm vượt trội đó là tốc độ xử lí. HS được phép xem số trên mảnh giấy khi chuyển mảnh giấy đó từ hộp A sang hộp B.SMIN 5 4 4 4 4 3 3 3 3 Thuật toán tìm giá trị lớn nhất. mở ra và so sánh với giá trị lớn nhất tạm thời. Máy tính thực hiện tuần tự theo đúng chỉ dẫn của con người. hàng triệu. con người nhanh chóng "khoanh vùng" được đáp án và nhanh chóng tìm ra đáp án. Để thực hiện công việc này cần hướng dẫn HS thực hiện mô phỏng theo giải thuật tìm dãy số lớn nhất của dãy số nguyên. Mục đích của việc không cho học sinh ghi chép là để HS mô phỏng hoạt động của máy tính: Chỉ cần nhớ số lớn nhất tại thời điểm hiện tại. mỗi số vào một mảnh giấy. không khó hiểu với HS. Tất nhiên. Ví dụ. 8. hàng tỉ số chẳng hạn). Yêu cầu HS không ghi chép ra giấy. khả năng này con người lại bị hạn chế trong tình huống dãy số rất lớn (hàng ngàn. Thực tế. máy tính không có khả năng quan sát cả dãy số vì vậy máy tính phải thực hiện theo thuật toán như trên. Tuy nhiên. Có thể cải biến nội dung dạy học trên đây thành nhiều trò chơi khác nhau. Khi đó máy tính lại thể hiện được sức mạnh của mình bởi ưu thế về tốc độ xử lí. Do vậy. bút. 1. 6. Sau khi HS làm đề nghị các em mô tả lại cách các em đã thực hiện để tìm ra số lớn nhất. với dãy số ngắn như trên con người có thể nhìn cả dãy số cùng một lúc. bớt các mảnh giấy để HS làm lại. Nhưng HS lại có thể khó hiểu là do các em chưa biết tại sao máy tính lại phải sử dụng thuật toán này mới tìm ra được số lớn nhất. mở ra nhớ giá trị của mảnh giấy này (coi là số lớn nhất tạm thời). Yêu cầu HS chuyển lần lượt đến hết từng mảnh giấy ở hộp A sang hộp B. Gấp 10 mảnh giấy này lại và bỏ vào một hộp A. rồi xoá đi luôn. máy tính không có trí thông minh. khả năng quan sát và tư duy. 23. yêu cầu các em không sử dụng giấy. số được nhớ cuối cùng là số lớn nhất. nhỏ nhất trong dãy số nguyên rất đơn giản. GV có thể yêu cầu các em thực hiện như sau: Viết 10 số nguyên. Với những dấu hiệu bổ trợ. Con người có thể đã nhìn nhiều số đồng thời. Đặt một hộp B rỗng bên cạnh. 9) HS có thể thấy ngay được 23 là giá trị lớn nhất mà không nhận thấy sự cần thiết phải thực hiện thuật toán nêu trên. và nhớ giá trị lớn nhất mới nếu thấy lớn hơn. 4. Trong trường hợp này.

{Nhap day so} writeln('Nhap cac phan tu cua day so:'). {Hien thi Max ra man hinh} write('So lon nhat la Max = '. kiểu biến và viết khai báo biến. viết câu lệnh thực hiện các bước nhập N.. Min có thể yêu cầu HS kết hợp tìm Max. Max : integer. program P_Max..100] of integer. End. Yêu cầu HS chỉnh sửa chương trình trên để tìm giá trị nhỏ nhất của dãy số nguyên. Chương trình có thể được xây dựng dần từng phần và cuối cùng có được một chương trình như dưới đây. tính tổng dãy số. Mời một em đi qua từng bạn một. readln(N). Lần lượt gán giá trị từ 2 đến N cho i. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. Var i. Begin {Nhap N} write('Hay nhap do dai cua day so. Sau khi giới thiệu xong thuật toán tìm Max giáo viên hướng dẫn HS xác định các biến. nhập các phần tử của mảng. Đúng. Sau khi đã hiểu -rõ thuật toán và chương trình tìm Max. readln(a[i]).Max).để tìm ra số lớn nhất (hoặc nhỏ nhất). tìm Max. readln. For i:=1 to N do Begin write('a['.']='). Max ← A1 Bước 3. N. in Max ra màn hình.. End. Hoặc mời một nhóm HS đứng lên phía trên lớp. Kết quả này được kiểm chứng công khai bởi các bạn đã đưa ra các số. Thuật toán tìm Max của dãy số nguyên nhập từ bàn phím như sau: Bước 1..i. for i:=2 to n do if Max<a[i] then Max:=a[i]. {Tim Max} Max:=a[1]. An Bước 2. 80 .. N = '). Nhập N và dãy A1. khi em này đến bên bạn nào đó thì bạn này phải đưa ra một số nào đó (có thể là nói thầm hoặc viết ra một mảnh giấy). Đưa ra màn hình giá trị Max rồi kết thúc. 3. Min trong cùng một chương trình như trong SGK. Đi hết lượt HS phải nói được bạn nào đã đưa ra số lớn nhất (hoặc nhỏ nhất). A: array[1. Với mỗi giá trị của i thì thực hiện: Nếu Max <Ai thì Max←Ai Bước 4.

Bµi 2.. vì giá trị đầu của chỉ số mảng phải nhỏ hơn hoặc bằng chỉ số cuối. readln(So_2). readln(So_4). b) và c) Sai. readln(a[i]) end. If Max<So_4 then Max:=So_4. Bµi 5. write('Nhap so thu ba: '). var So_1. Bµi 3. So_3.100] of real. for i:=1 to n do begin write('Nhap gia tri '. Max:=So_1.Max). begin write('Nhap so phan tu cua mang. readln(So_5). So_5. Ngoài ra chúng ta còn có thể lưu trữ và xử lí nhiều dữ liệu có nội dung liên quan đến nhau một cách hiệu quả.'cua mang. chương trình có thể dài như sau: uses crt. chương trình chỉ ngắn gọn như sau: uses crt. readln(So_3). 81 . d) Sai. writeln('So lon nhat: '. b) Nếu sử dụng biến mảng. Đáp án a) Sai. So_4. If Max<So_3 then Max:=So_3. Giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải được xác định ngay khi khai báo biến mảng. end. Bµi 4. i: integer. If Max<So_2 then Max:=So_2. Bµi 6. Chương trình có thể như sau: var N. có thể sử dụng câu lệnh lặp để thay nhiều câu lệnh.i. Bµi 7. Đúng. Phải thay dấu phẩy bằng hai dấu chấm. a['. write('Nhap so thu nhat: '). Lợi ích chính của việc sử dụng biến mảng là rút gọn việc viết chương trình. write('Nhap so thu nam: '). a) Nếu không sử dụng biến mảng. n= '). vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên. begin clrscr. end. If Max<So_5 then Max:=So_5. write('Nhap so thu hai: '). A: array[1. readln(So_1). Max: integer.']= '). read(n). e) Đúng. Không. write('Nhap so thu tu: '). So_2.i.

bài 7. Chương trình nhập n số nguyên từ bàn phím và tính tổng các số dương: uses crt.i. Lưu ý.i.']='). writeln('So lon nhat: '.100] of real. Xem cách viết chương trình ngắn gọn hơn và không sử dụng biến mảng trong bài tập 9. readln(X[k]) end. write('Trung binh bang '.S: integer. Tuy nhiên.i. X: array[1. Bµi 9.'cua mang. end. Viết chương trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên được nhập vào từ bàn phím. var N.TB).':'). begin clrscr. write('Nhap so tu nhien n: ')..']= '). for k:=1 to n do begin write('Nhap X['. Max: integer. cách viết đó sẽ không cho kết quả mong muốn nếu sau khi nhập giá trị của các biến còn cần thực hiện các thao tác dữ liệu khác với các giá trị đó. TB:=TB/n. readln(a[i]) end.Max). for i:=1 to 5 do begin write('Nhap so thu '. end. begin clrscr.5] of integer. read(n).k.var i. n= '). for i:=1 to n do begin write('Nhap gia tri '. A: array[1. for i:=2 to 5 do If Max<a[i] then Max:=a[i]. A: array[1. readln(A[i]) end. i: integer.1000] of integer. Bµi 8.. TB: real. for i:=1 to n do TB:=TB+a[i]. write('Nhap so phan tu cua mang. 82 . TB:=0..k. uses crt. begin clrscr. a['. var n. readln(n). Max:=a[1].

.. • • • Ôn luyện cách sử dụng câu lệnh lặp if.' la so nguyen to. hiểu và chỉnh sửa chương trình.n. S:=0.n. readln(n). Chương trình tương tự như trong bài tập 9. Bài 8: uses crt. Nội dung bài 2 của bài thực hành 6 là viết chương trình nhận biết một số tự nhiên có phải là số nguyên tố hay không. yêu cầu • Thực hành khai báo và sử dụng các biến mảng . var n. bài 8..then.do. for k:=1 to n do if X[k]>0 then S:=S+X[k]. {Dat lai = 0} write('Cho so tu nhien n>2: n= '). X: array[1. chương trình cần phải ghi lại chúng. Để có thể liệt kê. end.S). for i:=1 to (n-1) do if X[i]<>0 then write(X[i].. tính tổng dãy số.' ') end else writeln(n. i:=i+1. begin clrscr. S:=S+X[i] end..' la: '). readln. end. là viết chương trình tính tổng các ước số thực sự của một số nguyên. for. readln. writeln('Tong cac duong S='. if S<>0 then begin write('Cac uoc so cua '. Củng cố kĩ năng đọc. nhưng chưa liệt kê được các ước số đó. Bài thực hành 7. ý tưởng chính là sử dụng một biến mảng phục vụ cho điều này.k. 83 . nhỏ nhất của một dãy số.S: integer. Bµi 10. Nội dung của bài tập 9. Mục đích.i.S). for k:=1 to (n-1) do X[k]:=0. Hiểu và viết được chương trình với thuật toán tìm giá trị lớn nhất.10000] of integer.').' la: '. Xử lí dãy số trong chương trình 1. while i<=(n-1) do {Ghi lai uoc so vao X[i]} begin if (n mod i)=0 then begin X[i]:=i. i:=2. writeln('Tong cac uoc so thuc su cua '.S:=0. end.

Hơn thế nữa. Những điểm cần lưu ý và gợi ý dạy học Để gây hứng thú cho HS. Tính tổng dãy số. Nhưng đây cũng nhằm mục đích luyện tập với việc in phần tử của mảng ra màn hình.100] of integer. readln(n).Sum).100] of integer. for i:=2 to n do if Min>a[i] then Min:=a[i]. N = '). write('Tong day so la = '. for i:=1 to n do Sum:= Sum + a[i]. Sum : integer..i. Begin write('Hay nhap do dai cua day so. For i:=1 to n do Begin write('a['. for i:=1 to n do write(a[i]. readln(a[i]). writeln('Nhap cac phan tu cua day so:'). dưới đây là chương trình P_Min và chương trình P_Sum.']='). Min. readln(n). ' '). writeln('Nhap cac phan tu cua day so:'). Sum:=0.Min). Begin write('Hay nhap do dai cua day so. writeln. Var i. For i:=1 to n do Begin write('a['. việc thực hiện các bài học là cần thiết do yêu cầu trong Chương trình.. HS cần viết được các chương trình này. A: array[1. 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 và chương trình tính tổng P_Sum. readln(a[i]). write('Day so vua nhap la: '). Chương trình tìm Max đã được tiến hành ở bài lí thuyết. readln. write('So nho nhat la Min = '. Chương trình tìm Max đã được giới thiệu ở trên. Chương trình tính tổng dãy số. n. End. Min:=a[1]. Var i. 84 . cần dành thời gian để HS gõ. N = ').']=').i.2. End. n. chạy thử chương trình tìm Max. End. Program P_Sum. Min : integer. trong chương trình này có thêm câu lệnh in ra màn hình dãy số vừa nhập để người sử dụng có thể thuận tiện kiểm chứng kết quả chương trình. Chương trình tìm giá trị nhỏ nhất trong dãy số nguyên P_Min: Program P_Min. A: array[1.

. trong SGK. kĩ năng.. nhỏ nhất của dãy số. ôn tập trên lớp hoặc thực hành trên phòng máy để đảm bảo đạt được yêu cầu quy định trong chuẩn kiến thức. tự viết được chương trình tìm số lớn nhất. trong trường hợp cần thiết GV cần lựa chọn. HS cần tự viết được chương trình nhập giá trị phần tử mảng. kĩ năng. Lưu ý: Theo yêu cầu của chuẩn kiến thức. Do vậy. End. kết thúc bài này phải đảm bảo HS hiểu được thuật toán. Thời gian còn lại dành để HS thực hành với các bài sử dụng kết hợp nhiều câu lệnh. biểu thức điều kiện. xây dựng nội dung tiết bài tập . b. kiểm tra điều kiện ba số a. tính tổng các phần tử của mảng. 85 . c có phải là độ dài của ba cạnh của một tam giác hay không (hoặc các bài toán tương đương). in ra màn hình các phần tử của mảng.readln.

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.