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

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

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

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

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

com để tìm kiếm).google. e) Hiện nay ở một số trường THCS có thể còn có những máy tính cấu hình thấp đã được trang bị từ trước. Những máy tính này hoàn toàn có thể được sử dụng để thực hành với phần mềm TP (for DOS). do tốc độ rất chậm. o Magic Class: www.com.anhkiet. 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.vn. 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.com. Do vậy.vn.com để tìm kiếm).hungphat.google.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). 11 . o NetOPSchool (Đề nghị sử dụng www. Trong trường hợp đó nên thay thế TP (for DOS) bằng Pascal for Windows hoặc Free Pascal. 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. cần rà soát.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26 . Khi khởi động TP. GV lưu ý nhắc HS nháy nút OK để bắt đầu làm việc với TP. 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. thực hành về khởi động chương trình ở các năm học trước nên việc khởi động TP là dễ dàng với các em. màn hình hiện lên như hình dưới đây. GV có thể tải phần mềm Turbo Pascal đã được sửa lỗi này ở website www. Rất có thể HS bỡ ngỡ. có thể màn hình làm việc của TP chỉ là một cửa sổ nhỏ. Mặc dù vậy. không chiếm hết toàn bộ màn hình như minh hoạ dưới đây. Để khắc phục lỗi này. 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.net hoặc có thể sử dụng phần mềm Pascal for Windows hoặc Free Pascal.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.vnschool. 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. Một lưu ý nữa.

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. 27 . chọn mục Screen. 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. sau đó nháy chuột chọn Full-screen như hình dưới đây. chọn mục Properties. Trong cửa sổ Shortcut to Turbo Pascal Properties.Để 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ửa sổ Shortcut to Turbo Pascal Properties hiện lên.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful