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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

còn gọi là bước kiểm thử. If Long=Trang then writeln('Hai ban cao bang nhau'). 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. 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. Thực ra. 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. 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'). 56 . 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. hai bạn cao bằng nhau và Long cao hơn Trang. việc thử chương trình với một số bộ dữ liệu mẫu là một trong các công đoạn của phát triển phần mềm. Sai Long<Trang? writeln('Hai ban cao bang nhau') Đúng writeln('Ban Trang cao hon') Về cách dạy phần này. Tuy nhiên. nên cho HS gõ chương trình vào máy và chạy thử với các bộ dữ liệu kiểm tra.Sai Long>Trang? Đúng writeln('Ban Long cao hon'). 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. 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. phát hiện lỗi. 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. 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Do vậy.. n = 3.do trong chương trình.Gán tổng Sum ← 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.. 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..+xn)/n Thuật toán Bước 1. hiểu.3 Tăng biến dem thêm 1 đơn vị: Dem ← Dem + 1. Câu c) yêu cầu HS thử dịch. Trước khi bắt đầu vòng lặp 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 chưa biết trước. 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..Nhập N là số lượng số thực sẽ được nhập từ bàn phím: .2 Cộng thêm x vào tổng Sum: Sum ← Sum + x.. 2. Ví dụ dưới đây là một mô phỏng hoạt động chính của chương trình với n=3 1. GV có thể cho HS đọc. . 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. 74 . Đưa TB ra màn hình.. có thể cho HS gõ chương trình Chao_hoi mà các em đã được học ở bài lí thuyết..do: dem=0.do để giải bài toán.2. Căn cứ vào mô tả thuật toán. 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. Bước 4. rồi kết thú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. chạy và kiểm thử chương trình. Bước 2. Bước 3.xn Output: Giá trị trung bình (x1 + x2+. Với bài 1. Trước khi cho HS thực hành bài 1 trong SGK. 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.. TB=0.do trong chương trình. đối chiếu giữa thuật toán với chương trình Tinh_Trung_binh ở câu b. 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.. 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.. Cần làm cho HS hiểu rõ về hoạt động của vòng lặp while.1 Nhập giá trị số thực x từ bàn phím. GV có thể đưa ra hoặc hướng dẫn HS tạo ra những bộ dữ liệu test.Gán biến đếm bằng 0 Dem← 0. ở tiết bài tập trước khi thực hành trên máy). . GV cần yêu cầu HS đọc. x2. Trong khi Dem < N thì 2. Có nhiều cách để mô tả thuật toán này. chỉnh sửa.. Tính trung bình dãy số vừa nhập TB ← Sum/N. 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. hiểu chương trình và đặc biệt cần hiểu được hoạt động của 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.do.do: TB = 45/3 = 15.2.do thích hợp hơn với trường hợp lặp với số lần biết trước. 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ố. 3.... 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ố. Tuy nhiên..do sang sử dụng câu lệnh for.do là khác nhau.. 3.do để thay thế lệnh while. về cơ bản tình huống sử dụng while. 75 DEM 1 2 3 X (nhập từ bàn phím) 10 15 20 TB 10 25 45 . 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. Qua việc làm này HS được rèn luyện thêm về sử dụng lệnh for. ngược lại N chia hết cho bất kì một số nào trong khoảng từ 2 đến N − 1 thì N không phải là số nguyên tố.. Với bài 2.3.. Bước 3: Nếu N > 0: 3.2. Sử dụng phép chia lấy phần dư mod để kiểm tra tính chia hết. i←i+1... không thể sử dụng lệnh for.. Câu d) yêu cầu HS chuyển từ sử dụng câu lệnh while...1.do đảm bảo đạt yêu cầu đề ra trong chuẩn kiến thức.do DEM < N Đúng Đúng Đúng Sai 3.. Kết thúc vòng lặp while. Ví dụ. 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. không thì thông báo N không phải là số nguyên tố. Nếu i = N thì thông báo N là số nguyên tố. for.do. Trong khi N mod i <> 0. Để 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.. kĩ năng... While. ở câu d.. 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.. số nguyên tố là số tự nhiên chỉ chia hết cho 1 và chính nó.. Như vậy....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. Bắt đầu vòng lặp while.. rồi chuyển đến bước 4. cách tiến hành giống như với bài 1. i←2.do và for.

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful