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

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

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

2 tiết còn lại dành cho các bài kiểm tra định kì trong học kì. thuật toán mới. 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. Để giảm bớt khó khăn cho HS. Tiết thực hành cơ bản là để HS chạy thử chương trình. việc khai thác phần mềm học tập còn nhằm mục đích tạo sự thay đổi. không phải mất thời gian để hiểu bài toán. Ngược lại. giáo viên tự xác định nội dung các tiết ôn tập. 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ì. đánh giá là 8 tiết. Khi đó. trọng tâm của chương trình. SGK được in màu. gây thêm hứng thú học tập. Nhưng khi dạy lập trình không nên lạm dụng phòng máy tính. ảnh cách trình bày trong SGK đã được chọn lọc. 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). 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.HS vừa học được câu lệnh mới vừa học được bài toán. 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. Trong các tiết ôn tập GV cần khái quát kiến thức. thì nên có một bài kiểm tra trên giấy. Bên cạnh đó. kĩ năng lập trình nói chung thể hiện rõ mục tiêu. Ô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ì). h) SGK là tài liệu mà HS nào cũng có. mỗi học kì 04 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. 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. thuật toán. Ban đầu việc giao bài cho HS đọc có thể mất thời gian. 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. 4. Có thể dành 2 tiết cho bài kiểm tra cuối học kì. Căn cứ vào tình hình thực tế của lớp học. HS chỉ còn duy nhất nhiệm vụ tìm hiểu câu lệnh. thuật toán từ trước. Một trong những việc có thể thực hiện ngay trong lớp học đó là hướng dẫn HS và dành thời gian cho HS tự nghiên cứu nội dung SGK. rèn luyện kĩ năng làm việc với môi trường lập trình. nên dành các tiết ôn tập để ôn luyện. Vì vậy. Hướng dẫn cụ thể hơn về kiểm 9 . Tuy nhiên. cân nhắc kĩ lưỡng. nghĩa là dạy xong câu lệnh rồi đến thuật toán hoặc ngược lại. 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. 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. 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. 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. 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. b) Thời lượng để kiểm tra. đố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. Do vậy. Trong SGV có giới thiệu một số cách làm như vậy. lúc đó HS cũng chỉ tập trung vào tìm hiểu thuật toán mới. tổng kết kiến thức. kĩ năng trọng tâm của chương trình. rèn luyện kĩ năng khai thác phần mềm cho HS. hình thức đẹp. cần khai thác tối đa SGK trong quá trình dạy học. Tuy nhiên.

đánh giá môn Tin học cấp THCS được thực hiện theo Quy chế Đánh giá. do vậy máy chiếu projector. cần lưu ý mục tiêu của giờ thực hành là để học sinh thực hành. chăm chỉ. đánh giá nội dung này. 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.net . máy chiếu vật thể. cho điểm cả lớp một nhóm hoặc một vài học sinh.. g) Việc kiểm tra. kĩ năng gắn liền với ngôn ngữ lập trình cụ thể. đánh giá có tác động đến quá trình dạy học. Để định hướng học tập đúng cho HS. 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. kĩ năng lập trình nói chung. cần lưu ý tăng cường sử dụng trắc nghiệm khách quan trong kiểm tra. GV có thể tải phần mềm TP đã được chỉnh sửa lỗi này trên website www. máy chiếu overhead. e) Việc kiểm tra. 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.. kĩ năng lập trình nói chung. tránh HS chỉ chú trọng đến đến chi tiết cụ thể của ngôn ngữ lập trình Pascal. f) Cần tiến hành đánh giá học sinh trong giờ thực hành..vnschool. c) Trong SGK sử dụng phần mềm Turbo Pascal để minh hoạ. c) Nội dung kiểm tra phải đảm bảo cả lí thuyết và thực hành. 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. Trong tiết thực hành có thể đánh giá. 10 . 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). 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. không phải là giờ kiểm tra. Theo đó. Kiểm tra trong giờ thực hành là để học sinh tập trung. đánh giá có trong cuốn Hướng dẫn thực hiện chương trình. 5. nghiêm túc học tập. bài tập này sẽ giúp HS có ý thức chú trọng đến kiến thức. đánh giá. danh mục còn có các tranh. Những câu hỏi. Vì vậy. ảnh được phóng to để dạy học. kĩ năng trọng tâm của chương trình. Ngoài máy tính. 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. cần dành một tỉ lệ thích đáng cho câu hỏi. điểm này là điểm kiểm tra thường xuyên (hệ số 1). là các thiết bị được khuyến khích trang bị để dạy học cho môn Tin học. 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.tra. bên cạnh việc kiểm tra những kiến thức. 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. 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. Cần lựa chọn nội dung kiểm tra để đảm bảo bao quát hết kiến thức. bài tập về kiến thức. Tuy nhiên. 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).

o Magic Class: www.google.hungphat.com để tìm kiếm). 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). do tốc độ rất chậm.anhkiet. 11 . o E-Learning Class (Đề nghị sử dụng www. 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. Dưới đây giới thiệu một số phần mềm để giáo viên tham khảo: o XClass: www. 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.com để tìm kiếm).vn. o NetOPSchool (Đề nghị sử dụng www.vn.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). Trong trường hợp đó nên thay thế TP (for DOS) bằng Pascal for Windows hoặc Free Pascal. 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. cần rà soát.com.google.com. 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. Do vậy.

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

do (2 tiết) Bài 8. Phần này được chia thành 9 bài lí thuyết và 7 bài thực hành. Riêng với Bài 5 thời lượng được tăng gấp đôi. Máy tính và chương trình máy tính (2 tiết) Bài 2. Làm việc với dãy số (2 tiết) Bài thực hành 7. không phải dạy một ngôn ngữ lập trình nhất định. 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. 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. Câu lệnh lặp (2 tiết) Bài thực hành 5. then (2 tiết) Bài 7. ngôn ngữ lập trình nói chung. 13 .. Sử dụng lệnh điều kiện if . b. Sử dụng lệnh lặp while... Lặp với số lần chưa biết trước (2 tiết) Bài thực hành 6. 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. kĩ năng về lập trình. nhà trường.. trong quá trình giảng dạy.do (2 tiết) Bài 9. nhất là môn Toán. 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. Làm quen với Turbo Pascal (2 tiết) Bài 3. 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. Về cơ bản SGK trình bày theo cách tiếp cận các kiến thức. 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. việc phân bố thời lượng như trên chỉ là tương đối. Sử dụng lệnh lặp for .. 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. 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. 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 đó. Sau phần này. học sinh sẽ có một số hiểu biết cơ bản về lập trình. khái niệm cơ bản về lập trình từ khái quát đến cụ thể. 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 đó. Những điểm cần lưu ý và gợi ý dạy học a.. 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.2. Sử dụng biến trong chương trình (2 tiết) Bài thực hành 3. 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. Xử lí dãy số trong chương trình (2 tiết)Như đã nói ở trên. 3. Khai báo và sử dụng biến (2 tiết) Bài 5. Viết chương trình để tính toán (2 tiết) Bài 4. Câu lệnh điều kiện (2 tiết) Bài thực hành 4.

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. học sinh có thể chỉnh sửa để có các chương trình tốt hơn. Trước hết. 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. 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. giá thành rẻ (hoặc miễn phí) và tính sư phạm cao. 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.Đối với HS THCS.. c. dễ hiểu. 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. các câu lệnh lặp khác. không được giới thiệu trong SGK. 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. 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. kĩ năng theo yêu cầu của chương trình. để HS dễ tiếp thu. Tuy sử dụng Pascal để minh họa. SGK không nhằm mục đích giới thiệu các thành phần. (5) Việc cài đặt Pascal là dễ dàng và ngôn ngữ Pascal có thể được sử dụng miễn phí. cú pháp. Chẳng hạn. trong sáng. C hoặc Java. nhất là VB. chẳng hạn như Logo. 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 .. cập nhật. hoặc đã không còn được sử dụng rộng rãi. Hơn nữa.v. 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 đó. có tính sư phạm cao. với sự hướng dẫn của giáo viên. 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. (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. 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. v. Về thứ tự trình bày các nội dung trong Phần 1. dễ dùng.. Cho nên cách sử dụng Pascal để minh hoạ trong SGK chỉ là một phương án. câu lệnh điều kiện case. 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. Xét về mặt nào đấy. 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. dịch. (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. các kĩ năng lập trình như viết. 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. 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ể. d. Trong quá trình học tập. rất nhiều kiểu dữ liệu. chỉnh sửa. qua đó phát triển tốt hơn các kĩ năng lập trình. giáo viên cần lưu ý một vài điểm sau đây. (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 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. VB. Basic. 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. kiểu dữ liệu. giải thích. Hai ngôn ngữ đầu là những ngôn ngữ ít được phổ biến. 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ạ. 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. 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.

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

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

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

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

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. phân tích. Đ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. kiểm thử. triển khai cài đặt.. Như vậy. Chương trình đóng vai trò dịch từ ngôn ngữ lập trình bậc cao sang ngôn ngữ máy gọi là "chương trình dịch". C. Hai bước nói trên chỉ là một phần của công việc lập trình. Java. Tuy nhiên. 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. 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ể. Tuy nhiên. Cần lưu ý rằng. hỗ trợ. sau khi thuật toán đã được xây dựng. Vì vậy.. 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ó 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. Free Pascal. đố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. v.). Để tránh quá tải cho học sinh về mặt thuật ngữ. HS đã biết máy tính chỉ có thể hiểu được ngôn ngữ nhị phân. các bước nêu trên chỉ là hai trong số rất nhiều bước (giai đoạn) để tạo ra một chương trình cụ thể có thể “chạy” trên máy tính. công cụ theo dõi.. Vì vậy. Vấn đề là ngôn ngữ máy lại rất khó sử dụng. Có thể liệt kê ra một số ngôn ngữ lập trình bậc cao như Pascal. 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. Trong các bài thực hành với Pascal. như đã nêu ở trên. các thư 19 . Ngôn ngữ lập trình bậc cao là giải pháp như vậy. 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.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. 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. lập trình.. rất khó cho con người nếu sử dụng ngôn ngữ này để viết chương trình. 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. đào tạo. công cụ phát hiện và thông báo lỗi. người ta còn phải thực hiện nhiều công việc khác. Để 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. thiết kế. 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. khó nhớ đối với con người. khảo sát các qui trình nghiệp vụ. hay còn gọi tắt là Chương trình. học sinh sẽ phân biệt rõ hơn hai bước này. tức là dãy số 0 và 1. 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. người ta thường cung cấp chương trình dịch cho một ngôn ngữ lập trình cụ thể kèm theo một số công cụ hỗ trợ người lập trình như: phần mềm soạn thảo. để có đượ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.v. gỡ rối chương trình..

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

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

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

vì vậy để HS hiểu về quy định từ khoá trong ngôn ngữ lập trình. Lưu ý: phần thân là phần quan trọng. 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ữ). các từ và tuân thủ quy tắc tắc viết mà ngôn ngữ lập trình đặt ra. GV không cần giải thích sâu về chương trình này. câu lệnh ở đây. hoặc cứ ghép các từ (có nghĩa) là có một câu có nghĩa. 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. chức năng cố định. đó là các từ mà ngôn ngữ lập trình đã quy định dùng với ý nghĩa.). 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. Trên thực tế. có bảng chữ cái và các quy tắc viết. 23 . dựa vào hình 7 (CT_Dau_Tien). 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ác từ như program. Tuy nhiên. 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ũng không nên giải thích quá kĩ về từ khoá. Cụ thể. là các câu lệnh. GV sử dụng ví dụ ở hình 6. để 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'). còn phần khai báo có thể có hoặc không.. Khi viết chương trình phải sử dụng các chữ cái. Từ khoá là khái niệm mới với HS. tất nhiên là tên không được trùng với từ khoá. tạo hứng thú cho HS trong tiết thực hành. tên. 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. Chẳng hạn. 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. begin. 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. SGK (CT_Dau_Tien) để minh hoạ cho HS về các thành phần của ngôn ngữ lập trình.Ngôn ngữ lập trình cũng vậy (quan sát hình 6). 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. 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). bắt buộc phải có ở mọi chương 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). Mục 3. Ví dụ. 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. ở đâ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. 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. có thể lấy ví dụ về cụm từ Lớp trưởng. trong tiếng Việt. uses. 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 đó. Giữa từ khoá Begin và End. 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.

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. 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. Đ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í. 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. Nếu giới thiệu trên lớp. Như đã biết. mục 2. Trong phần này cần cho HS biết có nhiều ngôn ngữ lập trình. 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. bài 2. dùng để khai báo kết thúc chương trình. 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. 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. bước hai. Xem SGK. GV cần lưu ý trước khi chuyển sang mục 5. 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". 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. Không. Ví dụ chương trình Pascal sau đây hoàn toàn hợp lệ: 24 . Tuy nhiê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ể. với tất cả ngôn ngữ lập trình đều có tập hợp các kí hiệu (bảng chữ cái) và quy tắc riêng để viết chương trình. Cá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. 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. Bµi 2. 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. ngôn ngữ Pascal là một minh hoạ cụ thể. 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.. trong đó không có các chữ có dấu của tiếng Việt. cần nhấn mạnh để học sinh ghi nhớ. cách bố trí các câu lệnh. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. Việc dịch chương trình cũng rất đơn giản.. 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. Để dịch và chạy chương trình. Lưu ý đối với giáo viên. Các cụm từ sử dụng trong chương trình (từ khoá. Trong cả hai trường hợp. 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. Lưu ý đối với giáo viên. dịch chương trình phục vụ trực tiếp cho bài thực hành 1.Đế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. 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.. nhấn Ctrl + F9. ví dụ với ngôn ngữ lập trình Turbo Pascal. 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. mục tiêu là dạy học lập trình. 3. 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. Do vậy. Từ khoá Begin dùng để khai báo bắt đầu chương trình. từ khoá End. dịch chương trình vừa soạn thảo sang ngôn ngữ máy.

chạy chương trình và xem kết quả. Biết sự cần thiết phải tuân thủ quy định của ngôn ngữ lập trình 2. trong đó (1) Hai đại lượng khác nhau phải có tên khác nhau. Bµi 3. 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.begin program CT_thu. writeln(' Chào các bạn'). Làm quen với Turbo Pascal 1. 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. abc.TPL. 25 . 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. Xem SGK. Bµi 5. 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. Tam giac (có dấu cách). Chương trình 1 là chương trình Pascal đầy đủ và hoàn toàn hợp lệ. tên không hợp lệ: 8a (bắt đầu bằng số). Mục đích. mục 4. bài 2. end. sửa lỗi trong chương trình. end (trùng với từ khoá). beginprogram. không được dùng cho bất kì mục đích nào khác. Tamgiac. yêu cầu • • • • • Thực hiện được thao tác khởi động/kết thúc TP. Bµi 4. 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. b1. 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. Biết cách dịch. Soạn thảo được một chương trình Pascal đơn giản.exe và TURBO. 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. mặc dù chương trình này chẳng thực hiện điều gì cả. Bài thực hành 1. Các tên hợp lệ: a. Bµi 6. 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. (có dấu chấm). (2) Tên không được trùng với các từ khoá. Lưu ý rằng nếu sử dụng Turbo Pascal for DOS.

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. lúng túng vì có một thông báo giữa màn hình vì điều này không được nhắc đến trong SGK. GV 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. Vì HS đã được học. 26 . Rất có thể HS bỡ ngỡ. GV lưu ý nhắc HS nháy nút OK để bắt đầu làm việc với TP. có thể màn hình làm việc của TP chỉ là một cửa sổ nhỏ. không chiếm hết toàn bộ màn hình như minh hoạ dưới đây. Một lưu ý nữa. GV có thể tải phần mềm Turbo Pascal đã được sửa lỗi này ở website www. Mặc dù vậ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. Khi khởi động TP. Để khắc phục lỗi này.vnschool. màn hình hiện lên như hình dưới đây. 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.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. cửa sổ Shortcut to Turbo Pascal Properties hiện lên. chọn mục Screen. 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.Để HS tiện theo dõi thì nên mở rộng cửa sổ TP ra toàn bộ màn hình. Cách làm như sau: - Chọn biểu tượng tắt của TP trên màn hình nền. 27 . Trong cửa sổ Shortcut to Turbo Pascal Properties.

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). cần nhắc HS gõ chính xác chương trình vào máy tính. khởi động/thoát khỏi TP. cần cho HS nhận biết biểu tượng của TP trên màn hình nền. Tuy nhiên. 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. TP không hỗ trợ gõ tiếng Việt có dấu.. cần lưu ý các em chỉ gõ tiếng Việt không dấu. biết cách mở bảng chọ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. sử dụng ở những bài sau. 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. Backspace khi soạn thảo trong TP. cần hướng dẫn học sinh sử dụng phím Delete. dán. phần mềm soạn thảo văn bản ở các lớp trước). cắt. lưu. dịch và chạy được chương trình. Trọng tâm của bài 2 này là HS thực hiện được việc soạn thảo. 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. 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ả.- Nháy OK để kết thúc.. Với bài 2. 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. vì vậy giáo viên chỉ cần yêu cầu học sinh làm theo các bước đó. GV yêu cầu HS tự đối chiếu chương trình vừa gõ với 28 . trong TP cũng khác. 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. 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 bài 1. không hoàn toàn chính xác. Các công cụ soạn thảo như: sao chép.

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. 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. Bài 3. tìm hiểu câu lệnh của ngôn ngữ lập trình.. yêu cầu • • • Biết khái niệm kiểu dữ liệu. 29 . 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. Cách làm này là một phương pháp hướng dẫn HS tự khám phá. Chương trình máy tính và dữ liệu 1. So sánh hai kết quả để rút ra sự khác nhau giữa lệnh write là writeln. 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. 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. 2. Có thể căn cứ vào thông báo lỗi của TP để sửa chương trình. Khi đó. dịch. Biết một số phép toán cơ bản với dữ liệu số. Cùng với việc cung cấp chương trình soạn thảo. có thể HS không xem được kết quả hiển thị trên màn hình. Biết khái niệm điều khiển tương tác giữa người với máy tính. Vì vậy. Visual C. . HS còn được tiếp cận dần về kiểu dữ liệu ở các bài sau. 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(). 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. và writeln('Minh la Turbo Pascal'). Ví dụ. 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. 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.chương trình trong SGK để chỉnh sửa theo đúng chương trình mẫu. Mục đích. 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. 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. thì kết quả đưa ra màn hình trên hai dòng. Kiểu dữ liệu là một khái niệm mới và tương đối khó với HS. Hiện nay. Để 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. làm việc với ngôn ngữ lập trình. 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.. Nếu còn thời gian. ban đầu trong chương trình có hai dòng lệnh writeln('Chao cac ban'). việc dịch. phát hiện và sửa lỗi. màn hình sẽ dừng lại để HS quan sát kết quả. Khi nhấn Ctrl+F9 để dịch và chạy chương trình. Visual Basic. 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.

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

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. ngược lại phần thân chương trình thì bắt buộc phải có. 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. tránh mất thời gian tính toán không cần thiết. Do vậy. 32 = 3*3. 34 . chỉnh sửa. cần đưa ra các ví dụ đơn giản với các phép tính đơn giản. đơn giản hơn. tạo niềm tin. 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. 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. dễ kiểm chứng kết quả hơn đối với HS. nhân. Do vậy. 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ó. trừ.• • Hiểu phép toán div. 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. chạy và xem kết quả của chương trình. dựa vào thông báo lỗi của TP khi biên dịch. 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(). Trong phần b và phần 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. Đây là bài đầu tiên HS tập viết biểu thức trong Pascal. Chỉ cần tập trung vào bốn phép tính đơn giản là cộng. khác với trong toán học. Cần lưu ý HS gõ chuẩn xác. trong Pascal sử dụng kí hiệu * và / tương ứng với phép nhân và phép chia. số lượng phép tính nhiều. 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. 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. Nội dung của câu a là để HS làm trên lớp. 2. 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. Nói cách khác là phần khai báo không bắt buộc phải có. Tránh đưa ra các ví dụ quá phức tạp. GV có thể thay các ví dụ trong SGK bằng các ví dụ khác. Để HS có thể dễ dàng kiểm chứng kết quả tính toán biểu thức. Mặc dù trong Pascal có hàm sqr. nội dung này có thể được dạy trên lớp ngay sau bài 3. 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. 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. Ví dụ. không cần thiết phải sử dụng đến máy tính. HS luyện tập soạn thảo. Nếu cần thiết. biên dịch. khó tính toán ra kết quả. dễ dàng tính ra kết quả. Đâ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. đố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). Lưu ý. 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. hứng thú trong học tập. chia.

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

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

Const So_PI = 3. Write('Dien tich hinh tron la: '. 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ị. Pascal thay tên biến R bằng giá trị là 3 đang được lưu ở ô nhớ R.nhấn Enter. nghĩa là tính 3. SGK đã trình bày rất rõ ý này. readln end. 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. 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. S). 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. Giá trị của biến có thể thay đổi. Khi thực hiện chương trình. Đến đây nhấn mạnh cho HS rằng cần khai báo biến. 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. Readln(R). 37 . Với câu lệnh Write('Dien tich hinh tron la: '. điểm khác biệt của chương trình này là khai báo hằng số So_PI.14 được lưu trong ô nhớ So_PI. So với chương trình trước. đ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. đầy đủ ở đây).14. Có thể gán giá trị cho biến và sử dụng biến trong tính toán. Đây là đặc điểm quan trọng của biến: Giá trị của biến có thể thay đổi. Sau này. trong biểu thức So_PI*R*R. kiểu của biến trước. 3. 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. 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ì. biến R có giá trị bằng 3. 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. S:= So_PI*R*R.14. Sau đó GV có thể đưa ra chương trình dưới đây: Var R: Integer. Begin Write('Nhap ban kinh hinh tron R=: ').14*R*R). Đến đây. Tương tự như với biến R. S: Real. 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. 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ớ. nhưng GV chưa cần giải thích chính xác. thì chương trình sẽ "mang" số 3 này "đặt" vào ô nhớ R.14*3*3. Đ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. khi tính toán Pascal sẽ thay hằng số So_PI bằng giá trị 3.

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

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

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

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

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

z:=x. Output của một bài toán đơn giản. gia tri cua bien 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ể. Biết các bước giải bài toán trên máy tính. nếu không nói là quan trọng nhất trong lập trình. Ví dụ này cho thấy bài toán có thể còn là một công việc.. có thể thay hai lệnh: Writeln('Truoc trao doi.. x). thuật toán. y). 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. 2. 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. readln end. x). {Ket thuc trao doi} Writeln('Sau trao doi. Lưu ý. Từ bài toán đến chương trình 1. y). 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. Biết mô tả thuật toán bằng phương pháp liệt kê các bước. tìm số lớn nhất của một dãy số. bằng một lệnh như sau: Writeln('Truoc trao doi. Write('Sau trao doi. 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ụ. ' y = '. nấu món ăn hay điều khiển rô-bốt nhặt rác chẳng hạn.. yêu cầu • • • • • • Biết khái niệm bài toán. 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. gia tri cua bien y = '. Để 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. ví dụ. x. gia tri cua bien x = '. trong chương trình trên đã lựa chọn cách viết nhiều lệnh đơn giản. mặc dù có thể ghép một số lệnh thành một lệnh để chương trình ngắn gọn hơn. Vật lí. 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. gia tri cua bien x = '. y). Write('Truoc trao doi. một nhiệm vụ gắn liền với cuộc sống hàng 43 . Bài 5. x:=y. 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 học kì. để HS dễ tiếp thu. gia tri cua bien y = '. Xác định được Input. 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. Mục đích. Hiểu thuật toán tính tổng của N số tự nhiên đầu tiên. y:=z.

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

Bµi 3. GV có thể mô phỏng thuật toán với một bộ dữ liệu cụ thể. x có giá trị ban đầu của y và y có giá trị ban đầu của x. INPUT: Dãy n số. Để 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. với N = 10 (trong SGK.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. 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. OUTPUT: Số học sinh có họ Trần. OUTPUT: Tổng của các phần tử lớn hơn 0. . Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. cấu trúc lặp và một số bài toán ở các bài sau. INPUT: Dãy n số. tức giá trị của hai biến x và y được hoán đổi cho nhau. Mô tả thuật toán: 45 . 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. OUTPUT: Số các số có giá trị nhỏ nhất (có thể một hay nhiều số). N= 100). Sau ba bước. Ví dụ: + Mô phỏng thuật toán tính tổng N số tự nhiên đầu tiên. Đáp án: a) b) c) INPUT: Danh sách họ của các học sinh trong lớp. Bµi 2.

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

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

ngược lại. Nếu i < 1. chuyển tới bước 5. Bước 3. 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. 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. • • • • • 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.. INPUT: n và dãy n số a1... 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. S ← 0. Mục đích. 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ước 3.. hoạt động của các câu lệnh điều kiện dạng thiếu và dạng đủ trong Pascal. 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. a2.. 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. an. ngược lại. Nếu ai > 0.Bước 2.. 2. 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. a2. Vì vậy. Thông báo S và kết thúc thuật toán. an. Nếu ai > 0. 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. Hiểu cú pháp. Hiểu cấu trúc rẽ nhánh có hai dạng: Dạng thiếu và dạng đủ. 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 đó. Bµi 8. chuyển tới bước 5. Bước 4. Trong thực tiễn. Tính tổng các số dương trong dãy số A = {a1. OUTPUT: S = Tổng các số ai > 0 trong dãy a1. a2. Nghĩa là. Bắt đầu bài học mới. Bài 6. S ← S + ai. 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.. giữ nguyên S.. Bước 1. Bước 5. Nếu i ≤ n.. Bước 2. Bước 5. an} cho trước. 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. Thông báo giá trị Vitri = i và kết thúc thuật toán.. Bước 4. i ← i + 1. và quay lại bước 2.. quay lại bước 2. Gán i ← i −1. Bước đầu viết được câu lệnh điều kiện trong Pascal. i ← 0. Câu lệnh điều kiện 1. Theo một nghĩa nào đó thì 48 ..

if <điều kiện> then <câu lệnh>... Nếu. 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>. Cũng từ những ví dụ về hoạt động phụ thuộc vào điều kiện. ngược lại thì bỏ qua câu lệnh.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. thì.... không thì. Tương ứng với hai cấu trúc rẽ nhánh dạng thiếu và dạng đủ. thì. 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..... (Xuân sửa lưu đồ này nhé) 49 .. 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 1> else <câu lệnh 2>.

máy tính để bàn của em sẽ không hoạt động được. 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. sau đó khái quát thành những kiến thức. nguyên tắc chung cho mọi ngôn ngữ lập trình. ngược lại thì thực hiện câu lệnh 2. Đế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. 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.. HS chưa được luyện tập. GV chủ động lựa chọn cách tiến hành phù hợp. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1.5.ở dạng đủ: Nếu điều kiện thoả mãn thì câu lệnh 1 được thực hiện... dạng đủ.. thì. Phương án này đi từ câu lệnh cụ thể của Pascal... Mặc dù các phép so sánh. Cuối bài học GV cần khái quát hoá để HS biết cấu trúc rẽ nhánh. Việc dịch câu lệnh if. không thì... Tuy nhiên. Nếu không được cắm điện. câu lệnh. 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).. câu lệnh. Giáo viên có thể chủ động chọn các ví dụ khác. câu lệnh 1.. nhưng tránh những ví dụ quá phức tạp về điều kiện. ra tiếng Việt tương ứng là nế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. em sẽ đạt danh hiệu "Học sinh giỏi".. nhiều phép so sánh. Tuy nhiên. . câu lệnh 1.. kí hiệu các phép so sánh trong Pascal đã được giới thiệu ở bài học trước... then. Điều kiện thường là phép so sánh (lưu ý. Phép so sánh cho kết quả là đúng tương đương điều kiện được thoả mã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. và nếu. 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). Các ví dụ ở đây đơn giản. tập viết câu lệnh điều kiện trong bài học này. thì. Trong SGK dành mục 2 và mục 3 để nói về điều kiện và phép so sánh. then. câu lệnh 2 là câu lệnh của Pascal. câu lệnh 2 và điều kiện.. nhất là với HS chưa được học tiếng Anh. ý nghĩa của biểu thức điều kiện. và if. 3.. 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.. 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.. 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. Trong đó. Căn cứ vào điều kiện thực tế.. 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. biết ý nghĩa câu lệnh. có thể là cần thiết cho HS dễ nhớ ý nghĩa của câu lệnh. esle. 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. 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.

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

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

Kết thúc thuật toán. 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.. Mục đích. 53 . 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. Chương trình Pascal: program Tam_giac. X: integer. write('Nhap so B: '). dễ hiểu để HS dễ dàng nhận ra ý nghĩa.Bước 5. câu lệnh trong cấu trúc rẽ nhánh. readln(B). Do vậy.. uses crt.. biểu thức điều kiện. 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'). var begin clrscr. readln(C). hoạt động của câu lệnh điều kiện. 2. end. B.else. 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.then trong chương trình. yêu cầu • • Viết được được câu lệnh điều kiện if. Sử dụng lệnh rẽ nhánh 1. 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. then.. C... readln(A). Bài thực hành 4. write('Nhap so C: '). then. HS đã được làm quen với thuật toán này ở ví dụ 4. các ví dụ cần đơn giản.. bài 5. readln. Do vậy.. write('Nhap so A: '). 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.

Đối với câu a. then. A.. Tuy nhiên. var begin clrscr.. write('Nhap so B:'). bài 1 (SGK). 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 đủ. Sau khi giới thiệu câu lệnh dạng thiếu. {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. 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. 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. B. Bước 2. lưu ý không đặt dấu chấm phảy sau câu lệnh trước từ khoá else. Kết thúc.' '. b từ bàn phím. T: integer.Tuy nhiên. {Buoc 1: Nhap hai so nguyen a. Hơn nữa. readln.. 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. 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. Bước 3. {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. cách tiếp cận này có nhược điểm là sử dụng hay câu lệnh if. Bước 4. uses crt. 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). Trên cơ sở phần mô tả thuật toán.. readln(A).' '. End.B). Đoạn chương trình: - 54 . việc giới thiệu câu lệnh dạng đủ sẽ thuận lợi hơn. 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. 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. yêu cầu HS mô tả các bước để giải quyết bài toán. b tu ban phim} write('Nhap so A:'). else. 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. GV hướng dẫn để HS viết được chương trình tương ứng. Nhập hai số nguyên a. Do vậy.A). cách sử dụng lệnh rẽ nhánh trong chương trình này.. readln(B). Giữ nguyên yêu cầu đề bài của bài 1. 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).then thay cho một câu lệnh.. Chương trình có thể như sau: program Sap_xep.

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

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. 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'). 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. 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. 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. Thực ra. 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.Sai Long>Trang? Đúng writeln('Ban Long cao hon'). Tuy nhiên. Sau khi lập trình xong. 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. 56 . 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. Các bộ số liệu cần phủ kín các trường hợp: Trang cao hơn Long. còn gọi là bước kiểm thử. If Long=Trang then writeln('Hai ban cao bang nhau'). 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. hai bạn cao bằng nhau và Long cao hơn Trang. phát hiện lỗi.

nghĩa là phải đồng thời thoả mãn ba điều kiện a + b > c. Đú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. 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. vuông). Sau khi học bài này. 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'). 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. thảo luận kĩ để hiểu chương trình này. 57 . b. 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.If Long<Trang then writeln('Ban Trang cao hon'). 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. kĩ năng. Cần cho HS đọc. 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. b + c > a và c + a > b đồng thời thoả mãn. Cách thứ hai là sử dụng câu lệnh điều kiện lồng nhau như trong SGK. Đ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. đều. b + c > a và c + a > b. 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ố). HS cần biết điều kiện để ba số dương a.

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

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

60 .. ở chương trình Chao_hoi.. Ten). Cuối bài này. write('Chao ban '. hai câu lệnh này cần phải được "gói" trong từ khoá begin. Căn cứ vào tình hình tiếp thu của HS...do và lệnh ghép. 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 (. GV có thể cùng HS sử dụng câu lệnh for. GV cần lựa chọn và giao một số bài tập cho HS luyện tập.. mỗi ngôn ngữ lập trình có câu lệnh riêng để mô tả cấu trúc này. câu lệnh này có thể chứa nhiều câu lệnh khác của Pascal. 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'). 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.do và hướng dẫn HS viết chương trình. GV cần khái quát cho HS cấu trúc lặp với số lần biết trước có ở mọi ngôn ngữ lập trình. sau từ khoá do có hai câu lệnh cần thực hiện. Khác với chương trình Lap. sau từ khoá do chỉ có một câu lệnh cần thực hiện. 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. 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à một câu lệnh của Pascal. Một cách đơn giản có thể hiểu cấu trúc begin.do). Muốn vậy..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... không phải là dấu chấm (.end.. 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). Có thể yêu cầu HS đọc hiểu ví dụ có trong SGK (như chương trình Tinh_tong.. Lưu ý: Cần dành thời để giới thiệu về câu lệnh ghép... 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. end.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.

a) Hình 1 Có thể mô tả các bước của thuật toán để vẽ hình . 61 . Bước 2. hình. để vẽ được hình . Bước 5. sang trái. Vẽ nửa đường tròn theo hướng sang trái.. . c) Bµi 2.a.. 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.. Tô màu và kết thúc thuật toán..3. xuống dướ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". 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. Có thể nêu rất nhiều vài ví dụ về các hoạt động lặp. Xác định điểm bắt đầu vẽ là X. Vẽ nửa đường tròn theo hướng sang phải.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). b) Lưu ý đối với giáo viên. Hướng dẫn trả lời câu hỏi và bài tập Bµi 1. sang phải. Bước 3. 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. sang trái. Ta chỉ xét x là một trong bốn hướng: lên trê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. a) như sau: Bước 1. Mỗi lần được khởi động. Vẽ nửa đường tròn theo hướng xuống dưới. Bước 6. sau đó khởi động hệ điều hành theo một trình tự đã được quy định trước. xuống dưới. a) Có thể thấy... 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. sang phải (chẳng hạn. 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. Vẽ nửa đường tròn theo hướng lên trên. Bước 4.

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

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

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

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

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

Bài 8. '. Mục đích. end. nhưng nếu để con người thực hiện thì sẽ lâu hơn rất nhiều. Luôn cần có ý thức xây dựng. Việc xây dựng.. End. so sánh tính hiệu quả giữa các thuật toán. 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.. Trong quá trình tính toán tìm ra kết quả. 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. 67 . ga.cho. cho:byte. if (2*ga + 4*cho = 100) then writeln('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. GV có thể phân tích. nhất là với những bài toán có khối tượng tính toán lớn. 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. lựa chọn thuật toán hiệu quả có vai trò quan trọng trong lập trình. Do đó. GV có thể yêu cầu học sinh cải tiến để có chương trình hiệu quả hơn. Begin For cho:= 1 to 24 do Begin ga:= 36 .do trong Pascal.cho). con người cần lựa chọn. 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. Với cách giải như trên máy tính tìm ra kết quả trong nháy mắt. var ga. 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. 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. readln. ý 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. 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. 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. Điều đó cũng có nghĩa là thuật toán ở chương trình sau hiệu quả hơn. 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.Thuật toán này rất đơn giản. Cho: '. Lặp với số lần chưa biết trước 1. con người còn có khả năng phán đoán. 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. Do vậy.

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

HS sẽ hiểu rõ thêm về biến. Nếu điều kiện đúNG. khi đó vòng lặp kết thúc... 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. đ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.. điều kiện thực hiện vòng lặp while. 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. Lưu ý: + Đối với vòng lặp while. 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.. tức là tieptuc <> 'c'. 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. 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. Đến đây. Câu lệnh readln(Tieptuc) để gán giá trị cho biến Tieptuc từ bàn phím... GV đặt câu hỏi để HS tìm hiểu tại sao phải có câu lệnh này... thì). 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. thực hiện câu lệnh và quay lại bước 1. 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 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 .do thường phải là câu lệnh ghép. 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. Trong ví dụ trên đây. 2. 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. + Trong chương trình trên. 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. 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. Nếu điều kiện SAI.. 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 . 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.. Kiểm tra điều kiện.do. 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.1.do. ngược lại. câu lệnh sẽ bị bỏ qua và chuyển sang câu lệnh tiếp theo trong chương trình.. Khi giải thích được nguyên nhân phải có câu lệnh này.

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

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

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

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

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

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

. 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ố. 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. 76 . 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. 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). câu lệnh lặp. Ví dụ 1. thuật toán kiểm tra tính nguyên tố của một số tự nhiên là không khó. GV có thể thay thế bằng ví dụ khác.do. câu lệnh lặp while. Tuy nhiên. nhập. Đối với đa số HS lớp 8. Bài 9. đối chiếu việc sử dụng câu lệnh để mô tả thuật toán trên đây. trong ví dụ này còn sử dụng phép chia lấy phần dư mod.. 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. 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. 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. 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. 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. nếu HS tiếp thu tốt. 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. Tuy nhiên. 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. Như trên đã nêu chuẩn kiến thức. Sự kết hợp các cấu trúc điều khiển (tuần tự. số nhỏ nhất của một dãy số 2. 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. 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.. in.do. Làm việc với dãy số 1. Lưu ý. trong chương trình trên sử dụng cả câu lệnh điều kiện. 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). 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ề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. 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. Mục đích. 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.Bước 4: Kết thúc. trong SGK dẫn đến nhu cầu biến mảng.. 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. 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. 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. Sau đó GV cho HS đọc chương trình trong SGK. Hơn nữa.

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

Ví dụ về mô phỏng thuật toán này đã có ở bài 5. để 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. 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ố. 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. 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..For i:=1 to 50 do readln(Diem[i]). 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.. 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. 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.. Ví dụ. + Cứ tiếp tục như vậy. Tương tự như vậy. gần với cách nghĩ tự nhiên của HS hơ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. Thứ hai. 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ố. Mặt khác.do ở đây nói chung là dễ hiểu hơn. găp số nào lớn hơn Max thì gán giá trị của số đó cho Max.do với lệnh writeln() hoặc write(). 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.. For i:=1 to 50 do writeln(Diem[i]).. 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. 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.. đem so sánh Max với tất cả các số còn lại.. nhỏ nhất của dãy số nguyên.do và câu lệnh if-then trong chương trình. tuy nhiên ở đây cấu trúc for. sử dụng cấu trúc for.. 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. 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. 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. câu lệnh như sau: For i:=1 to 50 do if Diem[i] >= 9 then writeln(Diem[i]). Do học sinh đã được tìm hiểu thuật toán này ở bài 5. 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 phù hợp hơn vì trong trường hợp biết trước số lần lặp.

mỗi số vào một mảnh giấy. Để HS hiểu được máy tính làm việc như thế nào. khả năng quan sát và tư duy. 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. gấp lại và bỏ vào 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. 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. nhỏ nhất trong dãy số nguyên rất đơn giản. Yêu cầu HS không ghi chép ra giấy. con người nhanh chóng "khoanh vùng" được đáp án và nhanh chóng tìm ra đáp án. 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. nếu GV viết một dãy số nguyên lên bảng (ví dụ. Để 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. 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í. 23. Nhặt mảnh giấy thứ hai. 4. 8. rồi xoá đi luô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. GV có thể yêu cầu các em thực hiện như sau: Viết 10 số nguyên. 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. và nhớ giá trị lớn nhất mới nếu thấy lớn hơn. 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. 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. Con người có thể đã nhìn nhiều số đồng thời. bớt các mảnh giấy để HS làm lại. Trong trường hợp này. số được nhớ cuối cùng là số lớn nhất. HS quan sát 79 . 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. GV có thể thêm. hàng triệu. 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. Với những dấu hiệu bổ trợ. 6. 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. GV lần lượt viết từng số lên bảng. mở ra và so sánh với giá trị lớn nhất tạm thời. Tuy nhiên. mở ra nhớ giá trị của mảnh giấy này (coi là số lớn nhất tạm thời). 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. 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. hàng tỉ số chẳng hạn). Thực tế. ví dụ như: độ dài của số (có một số duy nhất có hai chữ số) chẳng hạn. 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. 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. 1. Máy tính thực hiện tuần tự theo đúng chỉ dẫn của con người. yêu cầu các em không sử dụng giấy. Tất nhiên. Nhặt mảnh giấy đầu tiên ở hộp A. Máy tính chỉ có thể tham chiếu đến từng số trong dãy số. bút. 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. không khó hiểu với HS. ngược lại máy tính lại có ưu điểm vượt trội đó là tốc độ xử lí. 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. Đặt một hộp B rỗng bên cạnh. máy tính không có trí thông minh. 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. Gấp 10 mảnh giấy này lại và bỏ vào một hộp A. 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. Ví dụ. Do vậy.

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

end.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. b) Nếu sử dụng biến mảng. So_2.'cua mang. var So_1. end. Chương trình có thể như sau: var N. If Max<So_4 then Max:=So_4. write('Nhap so thu nhat: '). If Max<So_3 then Max:=So_3. có thể sử dụng câu lệnh lặp để thay nhiều câu lệnh. Phải thay dấu phẩy bằng hai dấu chấm. d) Sai. readln(a[i]) end. a) Nếu không sử dụng biến mảng. Không. begin write('Nhap so phan tu cua mang.']= '). So_3. readln(So_3). a['.Max). 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. A: array[1.. Đúng. Bµi 6. 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. readln(So_2). readln(So_5). write('Nhap so thu hai: '). readln(So_1). chương trình chỉ ngắn gọn như sau: uses crt. readln(So_4). Bµi 7. i: integer. write('Nhap so thu nam: '). Đáp án a) Sai. If Max<So_2 then Max:=So_2. 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ả. 81 . for i:=1 to n do begin write('Nhap gia tri '. read(n).i. begin clrscr. vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên. Bµi 5. write('Nhap so thu ba: '). chương trình có thể dài như sau: uses crt. b) và c) Sai. Max: integer. So_5. If Max<So_5 then Max:=So_5. writeln('So lon nhat: '. write('Nhap so thu tu: '). Bµi 4. So_4. Bµi 3.i. e) Đúng.100] of real. Max:=So_1. n= ').

begin clrscr..100] of real. i: integer. 82 . write('Trung binh bang '.. readln(n). X: array[1. TB:=0. begin clrscr. read(n). readln(X[k]) end.S: integer.i. Bµi 8.Max). readln(a[i]) end. write('Nhap so phan tu cua mang.i. A: array[1.var i. writeln('So lon nhat: '. begin clrscr. 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ị đó. for i:=1 to n do begin write('Nhap gia tri '.1000] of integer.':'). for i:=2 to 5 do If Max<a[i] then Max:=a[i].k.5] of integer. TB:=TB/n. var N.. write('Nhap so tu nhien n: '). 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. uses crt. bài 7. readln(A[i]) end. A: array[1. Bµi 9. end. 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. for k:=1 to n do begin write('Nhap X['. var n.']='). Lưu ý. Tuy nhiên. end. TB: real. n= '). for i:=1 to 5 do begin write('Nhap so thu '.']= '). Max:=a[1]. for i:=1 to n do TB:=TB+a[i].i.TB). Max: integer. a['.'cua mang. 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.k.

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

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

tính tổng các phần tử của mảng. trong trường hợp cần thiết GV cần lựa chọn. b. kết thúc bài này phải đảm bảo HS hiểu được thuật toán. kĩ năng. 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. Do vậy. HS cần tự viết được chương trình nhập giá trị phần tử mảng. Lưu ý: Theo yêu cầu của chuẩn kiến thức.. biểu thức điều kiện. 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).readln. End.. kĩ năng. kiểm tra điều kiện ba số a. ô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. nhỏ nhất của dãy số. xây dựng nội dung tiết bài tập . tự viết được chương trình tìm số lớn nhất. in ra màn hình các phần tử của mảng. trong SGK.

Sign up to vote on this title
UsefulNot useful