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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i. A: array[1. 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. write('Trung binh bang '.var i. for i:=2 to 5 do If Max<a[i] then Max:=a[i]. Tuy nhiên.']= ').':'). A: array[1. Bµi 8..1000] of integer. begin clrscr. Bµi 9. Max:=a[1]. end.Max). Max: integer. Lưu ý. var n. uses crt. n= ').. for i:=1 to n do TB:=TB+a[i]. 82 .TB). begin clrscr. a['. readln(n)..i.i.5] of integer. end. for i:=1 to n do begin write('Nhap gia tri '. readln(A[i]) end. write('Nhap so phan tu cua mang. write('Nhap so tu nhien n: ').100] of real. for k:=1 to n do begin write('Nhap X['. i: integer. X: array[1.'cua mang.S: integer. TB: real. for i:=1 to 5 do begin write('Nhap so thu '. readln(a[i]) end. TB:=0. Xem cách viết chương trình ngắn gọn hơn và không sử dụng biến mảng trong bài tập 9.k.k. 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ị đó.']='). writeln('So lon nhat: '. bài 7. TB:=TB/n. read(n). var N. 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. begin clrscr. readln(X[k]) end.

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

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

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

Sign up to vote on this title
UsefulNot useful