1. Trang chủ
  2. » Văn Hóa - Nghệ Thuật

giao an tin hoc 11 day du

95 57 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 95
Dung lượng 650,94 KB

Nội dung

Mục đích, yêu cầu: - Củng cố cho học sinh những kiến thức và kĩ năng đã có khi lập trình với kiểu dữ liệu mảng; - Củng cố cho học sinh một thuật toán sắp xếp các phần tử của một dãy số b[r]

(1)Ngày soạn: 01/09/2013 – Tuần 1(tiết 1) Chương I BÀI MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH I Mục tiêu + Kiến thức:  Hiểu khả ngôn ngữ lập trình bậc cao, phân biệt với ngôn ngữ máy và hợp ngữ  Hiểu ý nghĩa và nhiệm vụ chương trình dịch Phân biệt biên dịch và thông dịch + Thái độ: Ham muốn tìm hiểu các ngôn ngữ lập trình II Chuẩn bị giáo viên và học sinh + Giáo viên: Bài giảng + Học sinh: Đọc trước SGK, xem lại số kiến thức Tin học lớp 10 III Phương pháp: Diễn giải, đàm thoại, giải tình có vấn đề IV Tiến trình bài học: Hoạt động 1: Tìm hiểu khái niệm lập trình và ngôn ngữ lập trình Hoạt động học sinh Hoạt động giáo viên Ghi bảng  Quan sát bài toán và trả lời câu hỏi Cho bài toán sau: Kết luận Bài KHÁI NIỆM LẬP TRÌNH + Input: a, b nghiệm phương trình ax + VÀ NGÔN NGỮ LẬP TRÌNH + Output: x=-b/a, vô nghiệm, vô số b=0 nghiệm Hãy xác định Input, Output B1: Nhập a, b bài toán trên B2: Nếu a<>0 kết luận có nghiệm x=-b/a Hãy xác định các bước để giải bài B3: Nếu a=0 và b<>0, kết luận vô toán trên nghiệm B4: Nếu a=0 và b=0, kết luận vô số  Hệ thống các bước này chúng ta nghiệm gọi là thuật toán + Dùng ngôn ngữ lập trình Làm nào để máy tính điện tử có thể hiểu thuật toán này?  Hoạt động để diễn đạt thuật  Nghiên cứu nội dung SGK và toán thông qua ngôn ngữ lập trả lời câu hỏi trình gọi là lập trình Các em hãy cho biết khái niệm lập trình? * KN: Lập trình là việc sử dụng  Lập trình là việc sử dụng cấu trúc cấu trúc liệu và các lệnh liệu và các lệnh ngôn ngữ lập Kết hoạt động lập trình? trình cụ thể để mô tả liệu và diễn Ngôn ngữ lập trình gồm ngôn ngữ lập trình cụ thể để mô tả liệu và diễn đạt các thao đạt các thao tác thuật toán loại nào?  Được chương trình Theo các em chương trình tác thuật toán  Ngôn ngữ máy, hợp ngữ và ngôn viết ngôn ngữ bậc cao và ngữ bâc cao chương trình viết ngôn  Nghiên cứu SGK và trả lời câu hỏi ngữ máy khác nào?  Chương trình viết ngôn ngữ máy có thể nạp trực tiếp vào nhớ Làm nào để chuyển và thực chương trình viết ngôn ngữ  Chương trình viết ngôn ngữ lập bậc cao sang ngôn ngữ máy? trình bậc cao phải chuyển đổi Vì không lập trình trên ngôn thành chương trình trên ngôn ngữ lập ngữ máy để khỏi công chuyển máy thì thực đổi lập trình với ngôn ngữ bậc  Phải sử dụng chương trình dịch cao? để chuyển đổi  Ngôn ngữ bậc cao dễ viết, dễ hiểu  Ngôn ngữ máy khó viết (2) Hoạt động 2: Tìm hiểu hai loại chương trình dịch: thông dịch và biên dịch Hoạt động học sinh Hoạt động giáo viên Ghi bảng  Nghiên cứu SGK và trả lời câu hỏi: Theo các em chương + Chương trình nguồn là chương trình trình dịch: chương trình nào là viết ngôn ngữ lập trình bậc cao chương trình nguồn và chương * Chương trình dịch gồm thông dịch và biên dịch + Chương trình đích là chương trình trình đích? trực tiếp thực trên máy a) Thông dịch: Là cách thức  Nghiên cứu SGK và trả lời câu hỏi:  Nêu vấn đề: Em muốn giới dịch câu lệnh, dịch đến +Thông dịch: B1: Kiểm tra tính đúng đắn câu thiệu trường mình cho đâu thực đến đó lệnh chương trình người khách du lịch quốc tế biết B1: Kiểm tra tính đúng đắn nguồn; tiếng Anh, có hai cách thực hiện: câu lệnh chương B2: Chuyển lệnh đó thành ngôn ngữ C1: Cần người biết tiếng Anh trình nguồn; máy dịch câu nói em sang B2: Chuyển lệnh đó thành ngôn B3: Thực các câu lệnh vừa tiếng Anh cho người khách Cách ngữ máy B3: Thực các câu lệnh vừa chuyển đổi mày gọi là thông dịch +Biên dịch: C2: Em soạn nội dung giới thiệu chuyển đổi B1: Duyệt, phát lỗi, kiểm tra tính giấy và người phiên dịch dịch b) Biên dịch: đúng đắn các câu lệnh toàn nội dung đó sang tiếng B1: Duyệt, phát lỗi, kiểm chương trình nguồn Anh đọc cho khách nghe tra tính đúng đắn các câu lệnh chương trình nguồn B2: Dịch toàn chương trình nguồn Cách này gọi là biên dịch thành chương trình đích có thể Tương tự chương trình dịch có B2: Dịch toàn chương trình thực trên máy và có thể lưu trữ để hai loại là thông dịch và biên nguồn thành chương trình đích có thể thực trên máy sử dụng lại cần thiết dịch Các em hãy cho biết tiến trình và có thể lưu trữ để sử dụng lại cần thiết thông dịch và biên dịch? Hoạt động 3: Củng cố kiến thức - Khái niệm lập trình và ngôn ngữ lập trình - Các ngôn ngữ lập trình: ngôn ngữ máy, ngôn ngữ bậc cao, hợp ngữ - Khái niệm chương trình dịch - Thông dịch và biên dịch (3) Ngày soạn: 01/09/2013 – Tuần 2(tiết 2) BÀI CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH I Mục tiêu: Kiến thức: - Biết ngôn ngữ lập trình có ba thành phần là: Bảng chữ cái, cú pháp và ngữ nghĩa, hiểu ba thành phần này - Biết số khái niệm: Tên, tên chuẩn, tên dành riêng (từ khoá), và biến Kỹ năng: - Phân biệt ba thành phần: bảng chữ cái, cú pháp và ngữ nghĩa - Phân biệt tên, và biến biết đặt tên đúng Tư và thái độ: -Tư logic - Thái độ cẩn thận, chính xác II Chuẩn bị giáo viên và học sinh; GV: Bảng phụ, phấn, thước HS: Đọc trước bài nhà II Phương pháp - Thuyết trình, vấn đáp, hoạt động nhóm III Tiến trình bài học Hoạt động1: Các thành phần Hoạt động học sinh Hoạt động giáo viên Ghi bảng  Trả lời  Dẫn dắt vào bài + Chữ cái Để diễn tả ngôn ngữ tự nhiên ta cần phải Các thành phần + Cú pháp biết gì? + Ý nghĩa điều cần Các ngôn ngữ lập trình nói chung thường có diễn tả chung số thành phần như: Dùng kí - Mỗi ngôn ngữ lập trình hiệu nào để viết chương trình, viết theo quy tắc thường có ba thành phần là: nào? viết có ý nghĩa là gì?  Mỗi ngôn ngữ lập trình có quy định riêng + Bảng chữ cái + Cú pháp thành phần này + Ngữ nghĩa  Lắng nghe  Giới thiệu bảng chữ cái a Bảng chữ cái:  GV treo bảng phụ (SGK Trang 9)  Bảng chữ cái ngôn ngữ lập trình khác Là tập các kí hiệu dùng để viết có khác Ví dụ bảng chữ cái chương trình, bao gồm: ngôn ngữ lập trình C++ khác pascal là sử - Bộ 26 chữ cái thường và in dụng thêm các kí tự dấu nháy kép(“), dấu hoa bảng chữ cái tiếng Anh: sổ ngược(\), dấu chấm than(!) a, b, c, d, e, f, …, z A, B, C, D, E, F, …, Z - 10 chữ số thập phân: 0, 1, 2,  HS chú ý 3, 4, …, - Các kí hiệu toán học và kí hiệu đặc biệt: +, -, *, /, =, <, >, (, ), , : ; [ ] ? % @ \ | ! # ${}  HS lắng nghe  Giới thiệu cú pháp + Cú pháp ngôn ngữ lập trình khác khác ngôn ngữ pascal dùng cặp từ Begin - End để gộp nhiều lệnh thành lệnh C++ dùng cặp kí hiệu {}  Giới thiệu ngữ nghĩa Ví dụ: Xét biểu thức A+B (1) A, B là các số b Cú pháp Là quy tắc để viết chương trình VD: - Trong Turbo Pascal: Begin End Dùng để bắt đầu và kết thúc chương trình - Hoặc phần khai báo Var A,B:real; Là cú pháp khai báo biến Pascal (4) thực I+J (2) với I, J là các số nguyên c Ngữ nghĩa Program vidu; Xác định ý nghĩa thao tác cần Var A,B:real; (*A,B có kiểu số thực*) phải thực I,J:integer; (* I, J có kiểu nguyên*) *Tóm lại: Begin - Cú pháp cho biết cách viết A + B; chương trình hợp lệ, còn I + J;  Khác nhau: Dấu cộng ngữ nghĩa xác định ý nghĩa End (1) là cộng số thực còn (2) là Về ngữ nghĩa biểu thức trên có khác không? cộng số nguyên  Mỗi ngôn ngữ khác có ngữ nghĩa khác  Hay để viết nghiệm phương trình bậc b  HS lắng nghe và ghi ax +b =0 (a <> 0) là x=− a chép b b Về mặt cú pháp thì x= và a=− a a không có gì sai lỗi cú pháp ngôn ngữ lập trình Nhưng mặt ngữ nghĩa thì có khác biệt hai cách viết đó Hoạt động2: Giới thiệu Tên (tiết 2) Hoạt động học sinh Hoạt động giáo viên  Lắng nghe và ghi nhận  Trong các ngôn ngữ lập trình nói chung, các đối tượng sử dụng chương trình phải đặt tên để tiện cho việc sử dụng Việc đặt tên các ngôn ngữ khác là khác nhau, có ngôn ngữ phân biệt chữ hoa, chữ thường, có ngôn ngữ không phân biệt chữ hoa, chữ thường -  Lắng nghe và ghi nhận  Ngôn ngữ lập trình pascal không phân biệt chữ hoa chữ thường số ngôn ngữ lập trình khác (như C++) lại phân biệt chữ hoa, chữthường - các tổ hợp kí tự chương trình - Các lỗi cú pháp chương trình dịch phát và thông báo cho người lập trình biết Chương trình không còn lỗi cú pháp thì có thể dịch sang ngôn ngữ máy - Lỗi ngữ nghĩa phát chạy chương trình với liệu thử Ghi bảng Một số khái niệm a Tên: - Trong ngôn ngữ Turbo Pascal tên là dãy liên tiếp không quá 127 kí tự, nhiên cần phải đặt tên cho tên gọn và có ý nghĩa - Quy tắc đặt tên: + Bắt đầu chữ cái dấu “_” , sau đó là chữ cái chữ số + Không có khoảng trắng tên + Không trùng với từ khóa - Ví dụ: Trong ngôn ngữ pascal + Các tên đúng: A, Bre1, _ten, + Các tên sai: a bc, 6hgf, x# y, - Ngôn ngữ lập trình có loại tên: tên dành riêng, tên chuẩn, tên người lập trình đặt * Tên dành riêng: Là tên ngôn ngữ lập trình quy định với ý nghĩa riêng xác định mà người lập trình không dùng với ý nghĩa khác Tên dành riêng gọi là từ khoá Ví dụ: số tên dành riêng: Trong Pascal: program,uses,var,const, Trong C++: main, include, if, * Tên chuẩn: là tên ngôn ngữ lập trình dùng với ý nghĩa định nào đó Trong các thư viện ngôn ngữ lập trình Ví dụ : Một số tên chuẩn Trong Pascal: real, integer, char, Trong C++: cin, cout, (5) * Tên người lập trình đặt: Được xác định cách trước sử dụng, không trùng với tên dành riêng * Chú ý: Pascal không phân biệt chữ hoa và chữ thường từ khóa, tên chuẩn và tên người lập trình đặt VD: BEGIN hay Begin hay begin là HĐ3: Hằng và biến Hoạt động học sinh Hoạt động giáo viên  Lắng nghe và ghi nhận  GV đưa ví dụ: Để viếtmột chương trình giải phươngtrình bậc hai ta cần khai báo tên sau: - a,b,c là ba tên dùng để lưu bahệ số phương trình - - x1, x2 là hai tên dùng đểlưu nghiệm (nếu có) - - Delta là tên dùng để lưu giá Lắng nghe và ghi nhận trị delta  Biến là đối tượng sử dụngnhiều viếtchương trình Biến là đại lượng có thể thay đổi nên thường dùng để lưu trữkết - Ghi bảng b Hằng và biến * Hằng: Là đại lượng có giá trị không đổi quá trình thực chương trình - Các ngôn ngữ lập trình thường có: + Hằng số học: số nguyên số thực VD: -5 :hằng số nguyên thực 3.14159 -22.36 0.5: số + Hằng logic: Là các giá trị đúng (TRUE) sai (FALSE) + Hằng xâu: Là chuỗi kí tự mã ASCII VD: ‘Information’, ‘true’, ‘lop11A1’,… * Biến: - Là đại lượng đặt tên, dùng để lưu trữ giá trị và giá trị có thể thay đổi quá trình thực chương trình - Biến phải khai báo trước sử dụng c Chú thích: - Trong viết chương trình có thể viết các chú thích cho chương trình Chú thích không làm ảnh hưởng đến chương trình Trong pascal chú thích đặt {} (* *) Trong C++ chú thích đặt trong: /* */ V Hoạt động 4: Củng cố toàn bài: Giáo viên mở chương trình pascal đơn giản có chứa các thành phần là các khái niệm bài học, không có máy thì sử dụng bảng phụ HS khái niệm chương trình VI Trắc nghiệm: Câu 1: Chương trình dịch là: a) Dịch từ ngôn ngữ tự nhiên sang ngôn ngữ máy b) Dịch từ ngôn ngữ máy sang ngôn ngữ tự nhiên c) Dịch từ ngôn ngũ bậc cao sang ngôn ngữ tự nhiên d) Dịch từ ngôn ngữ tự nhiên sang ngôn ngũ bậc cao Câu 2: Chương tình viết NN BC có ưu điểm: a) Tốc độ nhanh so với chương trình viết ngôn ngữ máy b) Viết nhiều và nhiều thời gian so với chương trình viết NNM c) Khai thác tối đa khả máy d) Ngắn gọn, dễ hiệu chỉnh và nâng cấp không phụ thuộc vào loại máy Câu 3: Chương trình viết hợp ngữ có ưu điểm: a) Máy tính có thể hiểu trực tiếp chương trình này b) Kiểu và cách tổ chức liệu đa dạng, thuận tiện cho việc mô tả thuật toán c) Diễn đạt gần với ngôn ngữ tự nhiên d) Tốc độ thực nhanh so với chương trình viết ngôn ngữ bậc cao Câu 4: NNLT thường có thành phần bản? a) b) c) d) VI DẶN DÒ: Học bài + đọc bài “Các thành phần NNLT” (6) Ngày soạn: 01/09/2013 – Tuần 3(tiết 3) BÀI TẬP CHƯƠNG (SGK Trang 13) I Mục tiêu: Về kiến thức: - Biết có lớp ngôn ngữ lập trình và các mức ngôn ngữ lập trình: ngôn ngữ máy, hợp ngữ và ngôn ngữ bậc cao - Biết vai trò chương trình dịch - Biết khái niệm biên dịch và thông dịch - Biết các thành phần ngôn ngữ lập trình: bảng chữ cái, cú pháp và ngữ nghĩa - Biết các thành phần sở Pascal: bảng chữ cái, tên, tên chuẩn, tên riêng (từ khóa), và biến Về kỹ năng: - Biết viết và tên đúng ngôn ngữ lập trình cụ thể Về tư và thái độ: - Nhận thức quá trình phát triển ngôn ngữ lập trình gắn liền với quá trình phát triển tin học nhằm giải các bài toán thực tiễn ngày càng phức tạp - Ham muốn học ngôn ngữ lập trình cụ thể để có khả giải các bài toán máy tính điện tử II Chuẩn bị giáo viên và học sinh: Giáo viên: Chuẩn bị nội dung để giải bài tập cuối chương và số câu hỏi trắc nghiệm chương Học sinh: Ôn lại kiến thức chương, chuẩn bị bài tập cuối chương III Phương pháp: - Thuyết trình, vấn đáp IV Tiến trình bài học: Ổn định lớp và kiểm tra sỉ số Tiến trình tiết dạy Hoạt động học sinh Hoạt động giáo viên Ghi bảng  Đọc yêu cầu câu hỏi  ĐVĐ: Trước giải bài tập BÀI TẬP CHƯƠNG và bài tập cuối chương trang SGK, các em tự ôn lại 13 SGK số kiến thức mà chúng ta đã học  Suy nghĩ để đưa phương các bài trước dựa trên yêu cầu câu hỏi trang 13 SGK án trả lời  Đặt câu hỏi số 1: Tại Câu 1(Trang 13)  Suy nghĩ, trả lời câu hỏi người ta phải xây dựng các - Ngôn ngữ bậc cao gần với ngôn ngữ tự nhiên hơn, thuận tiện cho đông đảo người ngôn ngữ lập trình bậc cao?  Nhận xét, đánh giá và bổ sung lập trình hướng dẫn cho học sinh trả lời - Chương trình viết ngôn ngữ bậc cao nói chung không phụ thuộc vào phần cứng câu hỏi số 1: máy tính và chương trình có thể thực trên nhiều máy tính khác - Chương trình viết ngôn ngữ bậc cao dễ hiểu, dễ hiệu chỉnh và dễ nâng cấp - Ngôn ngữ bậc cao cho phép làm việc với nhiều kiểu liệu và cách tổ chức liệu  Suy nghĩ, trả lời câu hỏi  Đặt câu hỏi 2: Chương trình đa dạng, thuận tiện cho mô tả thuộc toán dịch là gì? Tại cần phải có Câu (Trang 13) - Chương trình dịch là chương trình đặc chương trình dịch? biệt, có chức chuyển đổi chương trình viết trên ngôn ngữ lập trình bậc cao thành chương trình thực trên C.trình nguồn  C.trình dịch  C.trình đích máy tính cụ thể (Turbo Pascal) Chương trình nguồn  Chương trình dịch Chương trình đích  Suy nghĩ, trả lời câu hỏi,  Đặt câu hỏi 3: Biên dịch và Câu (Trang 13) (7) cho ví dụ thông dịch khác nào? - Trình biên dịch: duyệt, kiểm tra, phát  Phân tích câu trả lời học lỗi, xác định chương trình nguồn có dịch không? dịch toàn chương sinh trình nguồn thành chương trình đích có thể thực trên máy và có thể lưu trữ lại để sử dụng sau cần thiết - Trình thông dịch dịch câu  Đặt câu hỏi 4: Hãy cho biết lệnh ngôn ngữ máy thực các điểm khác tên câu lệnh vừa dịch báo lỗi không dịch dành riêng và tên chuẩn? Câu 4:  Gọi HS trả lời và cho ví dụ  Phân tích câu trả lời học - Tên dành riêng không dùng khác với ý nghĩa đã xác định, tên chuẩn có thể sinh dùng với ý nghĩa khác - Suy nghĩ, trả lời, giải thích VD: câu hỏi, Tên dành riêng Pascal: program, uses, const, type, var, begin,  Đặt câu hỏi 5: Hãy tự viết ba tên đúng theo quy tắc end… Tên chuẩn: Pascal abs, integer… Pascal  Gọi học sinh lên bảng cho ví Câu 5: dụ tên người lập trình đặt Gợi ý: Trong Pascal tên (do người lập trình đặt) đặt tuân theo các quy tắc sau:  Nhận xét, sửa chữa, góp ý  Đặt câu hỏi 6: Hãy cho biết - Chỉ bao gồm chữ cái, chữ số và dấu gạch biểu diễn nào đây dưới; không phải là biểu diễn - Không bắt đầu chữ số; Pascal và rõ - Độ dài theo quy định chương trình dịch (TP không quá 127 kí tự, Free Pascal trường hợp: không quá 255 kí tự) a) 150.0 - Tuy nhiên, không nên đặt tên quá dài hay b) –22 quá ngắn mà nên đặt cho gợi ý nghĩa c) 6,23 đối tượng mang tên đó d) ‘43’ Câu 6: Những biểu diễn sau đây không e) A20 phải là Pascal: f) 1.06E-15 6,23 dấu phẩy phải thay dấu chấm; g) 4+6 A20 là tên chưa rõ giá trị; h) ‘C 4+6 là biểu thức Pascal chuẩn i) ‘TRUE’ coi là Turbo Pascal; - Nhận xét, giải thích ‘TRUE’ là xâu không là lôgic IV Hoạt động củng cố: Ôn lại các khái niệm, các tên và chuẩn bị bài Cấu trúc chương trình V Bài tập trắc nghiệm: Câu 1: Nhiệm vụ và vai trò chương trình dịch là: a) Chuyển các chương trình nguồn viết NNLT này ch.trình tương đương trên NNLT khác b) Chuyển các chương trình nguồn viết NNLT khác thành ngôn ngữ máy c) Chuyển ch.trình từ NNLT bậc cao thành NNLT bậc thấp d) Chuyển ch.trình từ NNLT bậc thấp thành NNLT bậc cao Câu 2: Để biết cách viết ch.trình có hợp lệ hay không, ta dựa vào thành phần nào NNLT? a) Bảng chữ cái b) Ngữ nghĩa c) Cú pháp d) Cả thành phần Câu 3: Các lỗi ngữ nghĩa phát a) Dễ dàng dịch ch.trình b) Khó phát dịch ch.trình c) Dễ dàng thực ch.trình d) Khó phát thực ch.trình Câu 4: Chỉ tên dặt không hợp lệ chương trình? a) BAI TAP b) BAI_TAP c) _BAITAP d) không có (8) Câu 5: Chỉ biểu diễn nào đây không phải là hằng? a) 150.0 b) 4+3 c) 43 d) ‘AB’ Ngày soạn: 01/09/2013 – Tuần 4(tiết 4) CHƯƠNG II CHƯƠNG TRÌNH ĐƠN GIẢN BÀI CẤU TRÚC CHƯƠNG TRÌNH I - Mục tiêu Kiến thức: Biết cấu trúc chung chương trình Kỷ năng: Nhận biết phần cấu trúc Tư – thái độ: Tư logic II - Chuẩn bị Giáo viên: Máy tính, máy chiếu (projector), số ví dụ minh hoạ Học sinh: SGK III – Phương pháp dạy học: Đặt vấn đề hướng dẫn học sinh nắm bắt vấn đề Hoạt động nhóm IV - Tiến trình bài học Hoạt động 1: Kiểm tra bài cũ Câu 1: Có loại tên ngôn ngữ Pascal ? Câu 2: Khái niệm và biến ? Hoạt động 2: Cấu trúc chung chương trình HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS TRÌNH BÀY BẢNG  Cho học sinh đọc phần “cấu  Tập hợp số tự nhiên, Bài CẤU TRÚC CHƯƠNG TRÌNH trúc chung” nguyên, hữu tỉ, thực Cấu trúc chung: Cấu trúc chung chương  Đọc sách [<Phần khai báo>]; trình gồm phần?  Có phần: Phần khai báo, <Phần thân>;  Yêu cầu học sinh đọc SGK phần thân chương trình phần khai báo Sau đó trả lời câu  Khai báo tên chương trình, * [<Phần khai báo>] có thể có không * <Phần thân> thiết phải có hỏi khai báo thư viện, khai báo Trong phần khai báo có các biến, hằng,… phần khai báo nào?  Yêu cầu học sinh nghiên cứu Các thành phần chương trình: a) Phần khai báo: sách Trả lời các câu hỏi sau: * Khai báo tên chương trình:  Có bao nhiêu kiểu liệu  Có kiểu: + Cú pháp: kiểu số nguyên, số thực, kí chuẩn ngôn ngữ Pascal ? tự, lôgic program <tên chương trình>;  Trong ngôn ngữ Pascal, có  Có loại: Byte, word,  Tên chương trình: người lập trình tự kiểu nguyên nào thường integer, longint đặt dùng, phạm vi biểu diễn  Có loại: Real, + Ví dụ: program vi_du; loại  Trong ngôn ngữ Pascal, có extended * Khai báo thư viện kiểu thực nào thường + Cú pháp: dùng, phạm vi biểu diễn uses <tên các thư viện>; loại?  Học sinh xem bảng các + Ví dụ: kiểu liệu chuẩn để biết số - Trong pascal uses crt; byte lưu trữ cho giá trị kiểu liệu và - Trong C++: # include <stdio.h> phạm vi giá trị nó # include <conio.h> (Trang 21, 22 SGK) * Khai báo (9) const <tên hằng> = <giá trị>; + Ví dụ: Const N =100; Pi= 3.141;  Cho học sinh đọc ví dụ đơn giản SGK  Giải thích dòng lệnh * khai báo biến + Cách khai báo: var <danh sách biến>: <kiểu liệu> + Ví dụ: Var a,b,c:integer;  Yêu cầu học sinh nghiên cứu  Đọc sách Ví dụ: Trong chương trình ta cần dùng biến sách GK và cho biết vì phải - Mọi biến dùng a kiểu số nguyên, b kiểu số thực, đó ta khai báo biến ? chương trình phải khai báo: a : integer; khai báo tên biến và kiểu Var b : real; liệu biến Tên biến dùng để xác lập quan hệ biến với địa nhớ nơi lưu giữ giá trị biến  Cho ví dụ:  Có thể HS trả lời khai báo Var x,y,z : Word; biến x, y ,z đúng, H : integer; H sai Yêu cầu học sinh cho ý kiến ví dụ  Dãy lệnh phạm vi b) Phần thân chương trình: Trong pascal: Thân chương trình có dạng: xác định cặp dấu hiệu mở BEGIN đầu và kết thúc [< Dãy lệnh>] END  Trong vd1: đâu là phần khai  Program vd1; {là phần Ví dụ chương trình đơn giản -Trong ngôn ngữ pascal: báo, đâu là phần thân chương khai báo} Program vd1; Begin trình? Write(‘chao cac ban’); End Begin Write(‘chao cac ban’); End {là phần thân chương trình} - Trong ngôn ngữ C++: #include <stdio.h> main()  Hai chương trình cùng {  Cho học sinh quan sát nhận xét thực công việc printf(“ chao cac ban”); chương trình ngôn ngữ viết ngôn ngữ } khác nên hệ thống các câu lệnh chương trình khác IV Bài tập nhà: Mỗi em cho ví dụ Khai báo biến ( hôm sau trả lời) V Cũng cố Có loại kiểu liệu chuẩn ? Cấu trúc khai báo biến ? Bài tập trắc nghiệm: Câu 1: Trong NNLT từ khóa PROGRAM dùng để: a) Khai báo tên chương trình b) Khai báo biến c) Khai báo thư viện d) Khai báo Câu 2: Trong NNLT từ khóa COSNT dùng để: a) Khai báo tên chương trình b) Khai báo biến c) Khai báo thư viện d) Khai báo Câu 3: Trong NNLT từ khóa VAR dùng để: a) Khai báo tên chương trình b) Khai báo biến c) Khai báo thư viện d) Khai báo Câu 4: Trong NNLT từ khóa USE dùng để: khác (10) a) Khai báo tên chương trình b) Khai báo biến c) Khai báo thư viện d) Khai báo Câu 5: Chọn câu đúng: a) Trong NNLT Pascal phần thân không bắt buộc phải có b) Trong NNLT Pascal phần khai báo là phần bắt buộc phải có c) Trong NNLT Pascal phần thân là phần bắt buộc phải có và phần khai báo có thể có không d) Tất sai Ngày soạn: 01/09/2013 – Tuần 5(tiết 5) BÀI MỘT SỐ KIỂU DỮ LIỆU CHUẨN BÀI KHAI BÁO BIẾN I - Mục tiêu Kiến thức - Biết số kiểu liệu chuẩn - Cách khai báo biến Kỷ năng: - Xác định kiểu khai báo liệu - Khai báo biến đúng cấu trúc Tư – thái độ: - Tư logic II - Chuẩn bị Giáo viên: Máy tính, máy chiếu projector, số ví dụ minh họa Học sinh: SGK III – Phương pháp dạy học: Đặt vấn đề hướng dẫn học sinh nắm bắt vấn đề IV - Tiến trình bài học Hoạt động 1: Kiểm tra bài cũ Câu 1: Nêu cấu trúc chung chương trình Câu 2: Nêu cấu trúc các phần khai báo: tên chương trình, hằng, thư viện Hoạt động 2: Đặt vấn đề HOẠT ĐỘNG GIÁO VIÊN HOẠT ĐỘNG HỌC SINH TRÌNH BÀY BẢNG Trong toán học để thực các tính toán cần phải có các tập số Đó là các tập  Tập hợp số tự nhiên, số số nào ? nguyên, số hữu tỉ và tập số  Trong lập trình Pascal có các tập thực  Đọc sách hợp, tập hợp có giới hạn định Hoạt động Một số kiển liệu chuẩn  Yêu cầu học sinh nghiên cứu  Có kiểu: kiểu nguyên, NNLT Pascal có số kiểu liệu chuẩn sau: sách thực, kí tự, lôgic  Trả lời các câu hỏi sau:  Có loại: Byte, word, Kiểu nguyên - Có bao nhiêu kiểu liệu chuẩn integer, longint ngôn ngữ Pascal ? Kiểu Số Byte Miền Giá trị  Trong ngôn ngữ Pascal, có Byte 1…255 kiểu nguyên nào thường Integer -32768  32767 dùng, phạm vi biểu diễn Word  65535 loại Longint -2147483648  2147483647  Trong ngôn ngữ Pascal, có  Có loại: Real, extended Kiểu thực kiểu thực nào thường dùng, phạm vi biểu diễn loại Kiểu Số Byte Miền Giá trị  38 38 real 10  10 extended 10 10 4932  104932 Kiểu ký tự (CHAR) Kiểu Char Số Byte Miền giá trị 256 kí tự mã ASCII (11) - Miền giá trị: Là các kí tự bảng mã ASCII gồm 256 ký tự - Mỗi ký tự có mã tương ứng từ đến 255 - Các kí tự có quan hệ so sánh, việc so sánh dựa trên mã kí tự VD: A có mã ASCII là 65, a có mã ASCII là 97, dấu cách khoảng (Space_) có mã ASCII là 32,… Kiểu logic (Boolean)  Chú ý: Khi khai báo cần chú ý đến phạm vi giá trị kiểu biến  Cho học sinh đọc ví dụ đơn giản  Đọc sách SGK  Giải thích dòng lệnh Kiểu Số Byte Boolearn Miền giá trị TRUE FALSE - Miền giá trị: Chỉ có giá trị là TRUE (đúng) FALSE (sai) - Một số ngôn ngữ có cách mô tả các giá trị logic cách khác - Khi viết Ch.trình NNLT nào thì cần tìm hiểu đặc trưng các kiểu liệu NN đó Hoạt động 4: Biến và cấu trúc khai báo biến chương trình  Mọi biến dùng chương  Lắng nghe, ghi nhận Bài Khai báo biến trình phải khai báo tên * Mọi biến dùng chương trình và kiểu liệu biến phải khai báo tên và kiểu liệu  Tên biến dùng để xác lập mối biến quan hệ biến với địa * Tên biến dùng để xác lập mối quan hệ nhớ, nơi lưu trữ giá trị biến biến với địa nhớ, nơi lưu trữ giá trị biến  Lắng nghe, ghi nhận * Cú pháp khai báo biến Pascal:  Với a, b, c, x1, x2, delta, nhớ dành cho biến Var<danh sách biến>:<kiểu dl>; này là x = 36byte <danh sách biến>:<kiểu dl>;  Với M, N, nhớ dành … cho biến này là 4byte  Với các biến a, b, c, x1, x2, delta,  36 + = 40 byte * Ví dụ: Giả sử ta cần khai báo biến thực N, M khai báo vậy, a, b, c, x1, x2, delta và các biến nguyên M, đó nhớ máy tính cấp phát cho N Ta có thể khai báo sau: biến là bao nhiêu? Var a,b,c,x1,x2,delta:real; M,N:integer; Nhận xét: Bộ nhớ cấp phát cho biến vừa khai báo là 40byte (36 + = 40byte) * * Một số chú ý khai báo biến: - Tên biến phải gợi nhớ ý nghĩa - Không nên đặt tên biến quá ngắn hay quá dài, để tránh mắc lỗi viết nhiều lần - Khai báo biến cần lưu ý đến phạm vi giá trị nó V – Cũng cố Xem có loại kiểu liệu chuẩn ? Cấu trúc khai báo biến ? VI – BT VÀ DẶN DÒ: (12) - Mỗi em cho ví dụ Khai báo biến ( hôm sau trả lời) - Học bài và đọc bài trước bài “phép toán, biểu thức, câu lệnh gán” VII Bài tập trắc nghiệm: Câu 1: Trong ngôn ngữ LT Pascal kiểu liệu nào các kiểu nào sau đây có miền giá trị lớn nhất? a) Byte b) Word c) Integer d) Longint Câu 2: Để khai báo biến chứa giá trị là 1.5, ta phải khai báo biến này thuộc kiểu nào các kiểu sau: a) Byte b) Word c) Integer d) Real Ngày soạn: 12/09/2013 – Tuần 6, 7(tiết 6, 7) BÀI PHÉP TOÁN - BIỂU THỨC - CÂU LỆNH GÁN I / Mục tiêu dạy học: Kiến thức: - Biết các phép toán thông dụng NNLT - Biết cách diễn đạt biểu thức NNLT - Biết chức lệnh gán và cấu trúc nó - Nắm vững số hàm chuẩn thông dụng NNLT Pascal Kỹ năng: - Nhận biết các phép toán để xây dựng biểu thức cho hợp lý - Sử dụng số lệnh gán viết chương trình đơn giản Tư và thái độ: - Phát triển tư lôgic, linh hoạt, có tính sáng tạo - Biết thể tính cẩn thận chính xác tính toán lập luận II/ Chuẩn bị GV & HS: * Giáo viên: - SGK, các tranh liên quan đến bài học - Máy vi tính và máy chiếu Projector (nếu có) * Học sinh: SGK III/ Phương pháp: IV/ Tiến trình bài học: 1/ Họat động 1: a) Mục tiêu: HS biết tên và ký hiệu các phép toán, biết cách sử dụng các phép toán kiểu liệu b) Nội dung: + Phép toán số học: + , - , *, / , DIV, MOD + Phép toán quan hệ: <, <=, > , >=, =, < > , giá trị logic (true false) + Phép toán lôgic: NOT , OR , AND c) Tiến hành: HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS GHI BẢNG 2) Hoạt động 2: Tìm hiểu các phép toán ngôn ngữ lập trình * NNLT nào sử dụng đến phép toán, câu  Khi viết chương trình ta  Chú ý lắng nghe lệnh gán và biểu thức, các khái niệm này phải sử dụng các phép toán, xét NNLT Pascal phép so sánh để đưa Phép toán: định xem và làm việc gì? và NNLT Pascal sử dụng số phép toán sau: chương trình ta viết + Số nguyên: + , - , *, / , DIV, MOD nào ? + Số thực: + , - , *, / , Tất các ngôn ngữ có sử dụng cách giống  Suy nghĩ và đưa + Phép toán quan hệ: <, <=, > , >=, =, < > số phép toán thường + Phép toán logic: AND, OR, NOT hay không? * Trong đó: Toán học có phép toán dùng: + Phép cộng, trừ, nhân, - Phép chia lấy phần nguyên: DIV nào? VD: 34 DIV =  Các phép toán đó có dùng chia - Phép chia lấy phần dư: MOD  Nghiên cứu SGK và NNLT hay không? (13)  Một số phép toán dùng cho biết các nhóm phép VD: 34 MOD = và số phép toán phải sử toán dụng từ các phép toán khác  Ghi số phép toán lên bảng  Phép DIV, MOD sử  Chỉ sử dụng cho kiểu số nguyên dụng cho kiểu liệu nào?  Kết phép toán quan  Kiểu logic hệ thuộc kiểu liệu nào? 3) Hoạt động 3: Tìm hiểu biểu thức: a) Mục tiêu: HS cần biết khái niệm biểu thức số học, biểu thức quan hệ, biểu thức logic và số hàm số học b) Nội dung: - Biểu thức số học nhận từ số, biến số và hàm số liên kết - Nắm bắt các bước thực biểu thức số học - Biểu thức logic cấu thành từ các biểu thức quan hệ c) Tiến hành : HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS TRÌNH BÀY BẢNG Trong toán học biểu thức là gì ?  Suy nghĩ và đưa khái niệm Biểu thức số học: * KN: Trong tin học khái niệm biểu thức - Biểu thức là kết hợp lập trình ? các toán tử (operator) và các toán Cách viết các biểu thức lập hạng (operand) theo đúng trật trình có giống cách viết toán tự định học hay không ? - Mỗi toán hạng có thể là hằng,  Treo tranh có chứa các biểu thức  Quan sát tranh và trả lời : biến biểu thức khác toán học lên bảng * VD: Biểu thức nghiệm  Yêu cầu: HS sử dụng các phép toán phương trình bậc 2: số học hãy biểu diễn các biểu thức  HS lên bảng (GV có HD) (-b+sqrt(Delta))/(2*a); toán học thành biểu thức Trong đó: là số; a, b, Delta a) 4*x-2*y NNLT là biến b) x + 1/(x-y) a) 4x - 2y b) x + * Chú ý : x−y Thứ tự thực các phép toán c) (a+b+c)/((2*a/b)+c) – a+b+ c b −c biểu thức: (b*b-c)/(a*c) c) a +c ac + Trong ngoặc trước, ngoài ngoặc b sau  Trong toán học ta đã làm quen với  Hàm trị tuyệt đối, hàm + Nhân, chia, chia nguyên, chia lấy số hàm số học, hãy kể tên? dư trước, cộng, trừ sau bậc 2, hàm sin, hàm cos  Muốn tính ax2 + ta viết nào? + Trong các phép toán có cùng thứ  HS trả lời: a*x*x+1 tự ưu tiên thì tính toán  Muốn tính |x| , √ x , sinx ta thực từ trái sang phải  HS chưa trả lời làm nào? Hàm số học chuẩn:  Tính các giá trị đó cách đơn Cấu trúc các hàm số học chuẩn giản người ta đã xây dựng sẵn số Tên hàm (đối số) đơn vị chương trình các thư + Đối số là hay nhiều biểu viện chương trình giúp người lập thức số học đặt dấu ngoặc ( ) trình tính toán nhanh sau tên hàm  Treo bảng phụ chứa bảng số + Bản thân hàm chuẩn là hàm chuẩn biểu thức số học và nó có thể tham  Yêu cầu: Học sinh điền thêm số gia vào biểu thức số học thông tin với các chức hàm toán hạng  Cho biểu thức + Một số hàm chuẩn thường dùng:  Suy nghĩ và trả lời: a) |x| - √ x +1 Sqrt(x): Căn bậc hai x (14) b) x2 -  Hãy biểu diễn biểu thức toán biểu thức NNLT  Trong lập trình ta phải so sánh giá trị nào đó trước thực lệnh cách sử dụng biểu thức quan hệ Biểu thức quan hệ còn gọi là biểu thức so sánh dùng để so sánh giá trị đúng sai  Cho ví dụ biểu thức quan hệ?  Kết mà phép toán quan hệ thuộc kiểu liệu nào đã học? a) abs(x)-sqrt(2*x+1); b) x*x – 1;  Trả lời: x + y < 2* x*y  Kiểu logic Sqr (x): Bình phương x Abs (x): Giá trị tuyệt đối x Ln (x): Logarit tự nhiên x Exp (x): Lũy thừa số e x Sin (x): Sinx Cos (x): Cosx VD: Phương trình bậc 2: có hai ax + bx +c=0 (a <> 0) nghiệm phân biệt biểu diễn toán học: với Δ=b2 − ac − b+ √ Δ  Lắng nghe, theo dõi dẫn x 1= 2a dắt Giáo viên để trả lời − b −√ Δ  Biểu thức logic là biểu thức quan hệ x 1= 2a liên kết với phép toán Trong biểu diễn Pascal: logic Delta := b*b – 4*a*c;  Hãy quan sát ví dụ biểu thức x1 :=(-b+sqrt(Delta))/2*a; logic sau: x2 :=(-b-sqrt(Delta))/2*a; 2< x   Trong Pascal cần phải tách thành Biểu thức quan hệ: < x và x  nào ? Cấu trúc chung: <Biểu thức 1> < phép toán quan hệ > <Biểu thức 2>  Kết hợp SGK, trả lời: (2< x) and (x<=8 ) + Trong đó BT1 và BT2 phải cùng kiểu + Kết biểu thức quan hệ là TRUE FALSE VD: > 2; Sqr(x-a)+sqr(x-b)<= R*R; Biểu thức logic - Biểu thức logic đơn giản là logic biến logic - Dùng để liên kết nhiều biểu thức quan hệ lại với VD: x 11 , biểu diễn Pascal: (5<=x)and(x<=11); 4) Hoạt động 4: Tìm hiểu lệnh gán a) Mục tiêu: HS biết đọc chức cấu trúc chung lệnh gán NN Pascal, viết lệnh đúng lập trình b) Nội dung: - Lệnh gán dùng để tính giá trị biểu thức và chuyển nó vào biến - Cấu trúc: Tên biến := biểu thức c) Các bước tiến hành: HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS TRÌNH BÀY BẢNG  Mỗi NNLT có cách viết lệnh gán  Quan sát ví dụ và suy nghĩ để Câu lệnh gán - Lệnh gán là cấu trúc khác nhau, chẳng hạn trả lời NNLT, thường dùng để gán giá Pascal có lệnh gán sau: trị cho biến i:=8+1 Cấu trúc:  Giải thích: Lấy cộng với 1, đem kết đặt vào i , ta i = <tên biến>:= <biểu thức>;  Cần chú ý điều gì viết lệnh gán?  Đưa ý kiến  Phân tích câu trả lời học sinh sau đó tổng hợp lại VD:  Lệnh gán là gì ? (15) Program LenhGan;  Minh họa vài ví dụ khác sử Var x, y, z: Integer; dụng lệnh gán trên bảng  Treo tranh lên bảng và giới thiệu  Suy nghĩ và đưa vài ví dụ Begin x := 1; ví dụ Pascal cho chương trình tương tự y := 2; Var i, j integer; Begin y:=y+x; z := x + y; End i := 2; j := 5; i := i+1; j := j-1; Writeln (‘i=’, i); Writeln (‘j=’, j); readln; End  Vậy chương trình trên in màn hình giá trị i và j bao  Quan sát và trả lời: nhiêu ? i = và j = V Củng cố, dặn dò: - Nhắc lại số khái niệm về: + Các phép toán: Số học, quan hệ, logic + Cấu trúc lệnh Pascal: tên_biến := biểu_thức; - Làm các bài tập 5, 6, 7, SGK trang 35 - 36 - Xem trước bài: Các thủ tục chuẩn vào/ đơn giản VI Trắc nghiệm: Câu 1: Trong ngôn ngữ lập trình Pascal, mặt cú pháp câu lệnh nào sau đây là sai? a) x := 12,5; b) b := (a=5)or (c=7); c) c := pi*12; d) a := 3.12; ≤ x ≤5 Câu 2: Để viết biểu thức sang Pascal ta viết a) >= x and >=x b) <= x and x >= c) x <=3 and x <= d) (x >=3) and (x<=5) Câu 3: Chọn câu đúng các câu sau: a) a=7 b) a:7 c) a:=7 d) Tất sai Ngày soạn: 12/09/2013 – Tuần (tiết 8) BÀI 7- THỦ TỤC CHUẨN VÀO/ RA ĐƠN GIẢN SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH I Mục tiêu Kiến thức: + Biết các lệnh vào đơn giản để nhập liệu từ bàn phím đưa liệu màn hình + Viết số lệnh vào/ đơn giản + Biết các bước: Soạn, dịch, thực và hiệu chỉnh chương trình Thái độ: Ham muốn tìm hiểu các biên soạn và thực chương trình II Chuẩn bị giáo viên và học sinh + Giáo viên: Một số ví dụ + Học sinh: Đọc trước SGK III Phương pháp: + Diễn giải, đàm thoại, giải tình có vấn đề IV Tiến trình bài học: Hoạt động 1:Tìm hiểu thủ tục nhập liệu từ bàn phím HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV TRÌNH BÀY BẢNG Khi giải bài toán, đại Nhập liệu vào từ bàn phím  Ta có lệnh để nhập lượng đã biết ta phải nhập thông tin - Trong pascal ta dùng thủ tục chuẩn vào, lập trình ta nhập sau: (16)  Nghe và ghi bài  READ (x1, x2,…,xn);  nhập các biến x1, x2,…,xn theo hàng ngang từ bàn phím (con trỏ không xuống hàng)  READLN (x1, x2,…,xn);  nhập các biến x1, x2,…,xn theo hàng dọc từ bàn phím (mỗi lần nhập trỏ xuống hàng)  Trả lời cách nào? Read (danh sách biến vào); Làm nào nhập giá trị cho bàn phím? Readln (danh sách biến vào);  Diễn giải cho HS khác - Ví dụ: Read(N);Readln(a,b,c); dùng read / readln - Chú ý:  Thủ tục READ sau dọc xong + Khi nhập liệu từ bàn phím giá trị trỏ không xuống dòng READ, READLN, có ý nghĩa còn READLN là xuống dòng nhau, thường hay dùng READLN  Thủ tục READLN không có tham + Khi nhập giá trị cho các biến thủ tục, giá trị này gõ cách số thì thủ tục có tác dụng là gì? dấu cách phím Enter  Dừng chương trình Hoạt động 2: tìm hiểu thủ tụcđưa liệu màn hình HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV  Trên đây là thủ tục nhập liệu vào còn xuất thì sao?  Trường hợp thủ tục WRITELN;  Trả lời không có tham số thì thì thủ tục có + Write(x1,x2,…, xn) Viết giá tác dụng để làm gì? trị các biến x1,x2,…, xn  Trường hợp thủ tục WRITELN; màn hình theo hàng ngang không có tham số thì thì thủ tục có (con trỏ không xuống hàng) tác dụng đưa trỏ xuống dòng + Writeln(x1,x2,…, xn) Viết giá trị các biến x1,x2,…, xn màn hình theo hàng dọc (mỗi lần viết trị x có xuống hàng)  Độ rộng, số chữ số thập phân là các nguyên dương TRÌNH BÀY BẢNG Đưa liệu màn hình Trong pascal cung cấp thủ tục chuẩn: write(<Danh sách kết ra>); writeln(<Danh sách kết ra>); đó <Danh sách kết ra>có thể tên biến đơn, biểu thức, Ví dụ: write(‘Ket qua giai thua:’,giai_thua);  Chú ý: - Writeln sau đưa kết trỏ xuống dòng - Ngoài TP có quy cách đưa thông tin màn hình sau: + Kết thực: :<Độ rộng>:<số chữ số thập phân> + Kết khác: :<Độ rộng> Ví dụ: Write(N:3); Writeln(‘X=’,x:8:2); Hoạt động3 : Tìm hiểu cách soạn thảo, dịch, thực hiện, hiệu chỉnh chương trình HOẠT ĐỘNG CỦA HS  Nghe giảng  Nghe giảng HOẠT ĐỘNG CỦA GV  Để thực hành TP ta khởi động cách: Nháy dúp vào biểu tượng turbo pascal trên màn hình  Trên máy cần có tệp: Turbo.exe (file chạy) Turbo.tpl (file thư viện) Turbo.tph (file hướng dẫn) TRÌNH BÀY BẢNG Một số tao tác thường dùng pascal: - Khi soạn thảo muốn xuống dòng nhấn Enter - Ghi file vào đĩa: F2 - Mở file đã có: F3 - Biên dịch chương trình: Alt +F9 - Chạy chương trình: Ctrl + F9 - Đóng cửa sổ chương trình: (17) Alt + F3 - Thoát khỏi phần mềm: Alt + X - Chuyển qua lại các cửa sổ: F6 - Xem kết chạy chương trình: Alt + F5 V Hoạt động - củng cố: - Nhắc lại hoạt động Write/Writeln, read/Readln - Cách soạn thảo, chạy chương trình, ghi vào đĩa, thoát khỏi TP - Về nhà làm bài tập sách trang 35, 36 Ngày soạn: 12/09/2013 – Tuần 9, 10 (tiết 9, 10) BÀI THỰC HÀNH SỐ I/ Mục tiêu: Về kiến thức: - Biết chương trình Pascal hoàn chỉnh - Biết sử dụng số dịch vụ chủ yếu Pascal soạn thảo, lưu, dịch và thực chương trình Về kỹ năng: - Viết chương trình đơn giản, lưu chương trình trên đĩa, dịch lỗi cú pháp, thực và tìm lỗi thuật toán, hiệu chỉnh - Bước đầu biết phân tích và hoàn thành chương trình đơn giản trên Turbo Pascal Free Pascal Về tư và thái độ: - Hình thành cho học sinh bước đầu tư lập trình có cấu trúc - Tự giác, tích cực và chủ động hoàn thành II/ Chuẩn bị giáo viên và học sinh: + Giáo viên: Phòng máy tính đã cài sẵn chương trình Turbo Pascal Free Pascal, các chương trình làm ví dụ + Học sinh: - Sách giáo khoa, sách bài tập và bài viết sẵn nhà - Đọc trước phần phụ lục B1 trang 122 - Môi trường Turbo Pascal - Xem trước nội dung bài thực hành số III/ Phương pháp: Gởi mở thông qua hoạt động tư IV/ Tiến trình bài dạy: Hoạt động 1: Kiểm tra nội dung thực hành và khởi động máy HOẠT ĐỘNG CỦA HS  HS để nội dung thực hành trước mặt  Chý ý hướng dẫn GV để khởi động máy và chương trình Turbo Pascal Free Pascal HOẠT ĐỘNG CỦA GV TRÌNH BÀY BẢNG  GV kiểm tra chuẩn bị nội dung Màn hình làm việc TP thực hành học sinh Một số thao tác thường dùng  GV hướng dẫn học sinh khởi động TP máy, và khởi động chương trình Xuống dòng Enter Turbo Pascal Free Pascal Ghi file lên đĩa F2 + Con trỏ soạn thảo Mở file đã có F3 + Thanh Menu & tên file chương Biên dịch ch.trình Alt+ F9  HS lưu chương trình vào đĩa với trình Soát lỗi ch.trình F9 thư mục GV hướng dẫn + Chỉ số vị trí dòng, cột Chạy ch.trình Ctrl+F9 + Dòng phím chức trước cách có hệ thống Đóng cửa sổ ch.trình Alt+ F3 Chuyển cửa sổ F6 Xem lại màn hình Kq Alt+F5 Thoát khỏi ch.trình Alt+X Hoạt động 2: Tìm hiểu chương trình Pascal hoàn chỉnh HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV TRÌNH BÀY BẢNG  Học sinh quan sát trên bảng và  GV ghi chương trình Giai_PTB2 Chương trình giải phương trình bậc hai: độc lập gõ chương trình vào máy lên bảng (18)  GV yêu cầu học sinh đọc và gõ program Giai_PTB2; crt; chương trình Giai_PTB2 trên uses var a,b,c,D: real; bảng begin x1, x2: real; clrscr; write(‘a,b,c: ’); readln(a,b,c); D:=b*b - 4a*b*c; x1:=(-b-sqrt(D))/(2*a); x2:= -b/a-x1; write(‘x1= ’,x1:6:2, ‘x2= ’, x2:6:2); readln end  Nhấn phím F2 và gõ PTB2.PAS  GV yêu cầu học sinh thực các nhiệm vụ sau:  Nhấn phím Alt+F9  Lưu chương trình cách nhấn phím F2 với tên PTB2.PAS  Nhấn phím Ctrl+F9  Dịch và sửa lỗi cú pháp với tổ hợp phím Alt+F9  x1 = 1.00 x2 = 2.00  Thực chương trình với tổ hợp phím Ctrl+F9  Nhập các giá trị 1; -3; và Thông  Nhấn phím Enter báo kết máy đưa  Trở màn hình soạn thảo  Nhấn phím Ctrl+F9 phím Enter  Thông báo lỗi và cho biết vì  Tiếp tục thực chương trình sao: Do bậc hai số  Nhập các giá trị ; ; -2 Thông âm báo kết máy đưa  Vì lại có lỗi xuất hiện?  Sửa lại:  Sửa lại chương trình trên không dùng đến biến D và thực chương trình đã sửa  Tiếp tục sửa lại:  Sửa lại chương trình cách thay đổi công thức tính x2  x1 = 2.00; x2 = 3.00  Thực chương trình đã sửa với liệu ; - ; Thông báo kết  Thông báo lỗi với lý delta pt là số âm  Thực chương trình với liệu ; ; Thông báo kết readln(a, b, c); x1:=(-b-sqrt(b*b - 4a*c))/(2*a); x2:= -b - x1; write(‘x1 = ’, x1:6:2, ‘x2= ’, x2:6:2); readln(a, b, c); x1:=(-b-sqrt(b*b - 4a*c))/(2*a); x2:=(-b+sqrt(b*b - 4a*c))/(2*a); write(‘x1=’,x1:6:2, ‘x2= ’, x2:6 :2); x1 = 2.00; x2 = 3.00 Hoạt động 3: Rèn luyện thêm kỹ lập trình cho học sinh HOẠT ĐỘNG CỦA HS  Nghe và nhận nhiệm vụ  Phân tích theo yêu cầu giáo viên: + Dữ liệu vào ba cạnh a; b ; c + Dữ liệu S: + p:= (a+b+c)/2 S:=sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c))  Thực theo yêu cầu giáo viên: + Soạn chương trình + Bấm phím F2 để lưu chương trình + Bấm Alt+F9 để dịch lỗi cú pháp + Bấm Ctrl+F9 để chạy chương trình + Thông báo kết cho giáo viên  Học sinh thông báo kết HOẠT ĐỘNG CỦA GV  GV yêu cầu học sinh hãy viết chương trình tính diện tích tam giác biết độ dài ba cạnh nó  GV định hướng để học sinh phân tich bài toán + Dữ liệu vào (Input) + Dữ liệu (Output) + Cách tính:  GV yêu cầu học sinh soạn và chạy chương trình lên đĩa  GV yêu cầu học sinh nhập liệu và thông báo kết ; a = 3; b = 6; c = a = 2; b = 5; c = 10; TRÌNH BÀY BẢNG - Trong toán học, diện tích tam giác tính biểu thức: S  ( p  a )  ( p  b)  ( p  c ) Trong đó: a b c p là nửa chu vi tam giác - Chương trình sau: Program DT_tamgiac; Uses crt; Var a,b,c,p,S:real; Begin Writeln(‘Nhap dai ba canh tam giac:’); Readln(a,b,c); P:=(a+b+c)/2; S:=sqrt(sqr(p-a)* sqr(p-b)*sqr(p-c)); Writeln(‘Ket qua dien tich (19) la:’, S:6:2); Readln; End Hoạt động 4: Củng cố buổi thực hành và bài tập nhà HOẠT ĐỘNG CỦA HS  Chú ý và ghi nhớ HOẠT ĐỘNG CỦA GV TRÌNH BÀY BẢNG  Gv nhắc lại các bước hoàn thành chương trình + Phân tích bài toán để xác định liệu vào/ + Xác định thuật toán + Soạn chương trình + Lưu chương trình + Biên dịch chương trình  Về nhà làm bài tập trang 35 và + Thực và hiệu chỉnh chương trình  Làm bài tập trang 35 và 36 36 V TRẮC NGHIỆM: Câu 1: Trong TP với câu lệnh sau: Write (‘ket qua la:’, a); ghi màn hình là: a) Ket qua la b) Ket qua la <a> c) Kq la d) Không đưa gì Câu 2: Trong TP với câu lệnh sau, a là biến số thực a:=12; Write (‘ket qua la:’a); ghi màn hình: a) Ket qua la 1.2E+01 b) Ket qua la 12 c) Kq la a d) Không đưa gì Câu 3: Trong TP, để thực thi chương trình a) Nhấn F9 b) Tổ hợp Shift+F9 c) Tổ hợp Ctrl+F9 d) Tổ hợp Alt+F9 Câu 4: Trong TP dể đóng sổ chương trình a) Nhấn F4 b) Tổ hợp Alt+F3 c) Tổ hợp Alt+F4 d) Nhấn F3 Câu 5: Trong TP để lưu chương trình a) Nhấn F2 b) Tổ hợp Alt+F5 c) Tổ hợp Alt+F2 d) Nhấn F5 Ngày soạn: 12/09/2013 – Tuần 11 (tiết 11) (20) BÀI TẬP A CÂU HỎI: Câu 1: Trong ngôn ngữ lập trình bậc cao tối thiểu phải có bao nhiêu loại biểu thức và bao nhiêu loại phép tính? Câu 2: Khi tìm hiểu kiểu liệu chuẩn ta cần phải nắm các đặc trưng gì nó? Cho ví dụ với kiểu nguyên Câu 3: Hãy viết lại các biểu thức sau từ dạng toán học sang dạng biểu diễn tương ứng Pascal: x y a) ; c) x  x  x ; b)e y  5(2 x 5) cos x; x z Câu 4: Hãy viết các biểu thức sau sang dạng biểu diễn tương ứng Pascal: x sin  ; 2 a) x  y R ; c)100 N 0; 2 B PHẦN TRẢ LỜI:  Câu 1: Tối thiểu phải có loại biểu thức: + Biểu thức số học (bao gồm các phép toán: cộng (+), trừ (-), nhân (*), chia lấy phần nguyên (div), chia lấy dư (mod)) + Biểu thức quan hệ (bao gồm các phép toán: <, <=, >, >=, <>, =) + Biểu thức logic (bao gồm các phép toán: and, or, not)  Câu 2: Các đặc trưng kiểu liệu: - Bộ nhớ dành cho biến - Phạm vi giá trị có thể biểu diễn Ví dụ: Đặc trưng kiểu nguyên Integer(Bộ nhớ dành cho biến nguyên: 4byte, Phạm vi giá trị: -32768  32767)  Câu 3: Biểu diễn Pascal a)  x  y  /  x  z  ; b log a (2 x 5) eln5 b) Gợi ý: Ta có tính chất hàm logarit a b(a, b  0, a 1) , đó: exp  y   exp   x   *ln  *cos x Vậy biểu diễn biểu thức Pascal là: ; c) sqrt ( x  sqrt ( x  sqrt ( x )))  Câu 4: a ) x * x  y * y R * R ; ( x5) e (2 x5)ln5 b)( N 100)and ( N  0) ; c)abs (sin( pi * x / 2))  1/ ; Ngày soạn: 12/10/2012 – Tuần 12(tiết 12) CHƯƠNG III CẤU TRÚC RẺ NHÁNH VÀ LẶP BÀI 9: CẤU TRÚC RẼ NHÁNH I Mục tiêu bài dạy: Kiến thức: - Hiểu nhu cầu cáu trúc rẽ nhánh biểu diễn thuật toán - Học sinh nắm vững ý nghĩa và cú pháp câu lệnh rẽ nhánh dạng khuyết và dạng đủ, hiểu cách sử dụng câu lệnh ghép Kĩ năng: - Sử dụng cấu trúc rẽ nhánh mô tả thuật toán số bài toán đơn giản - Viết các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để thể thuật toán số bài toán đơn giản II Chuẩn bị: - Giáo viên: + Soạn giáo án (21) + Chuẩn bị bảng phụ sau: IF Đ Điều kiện IF Câu lệnh S Câu lệnh S - Học sinh: học bài cũ, đọc và chuẩn bị bài III Phương pháp truyền thụ: Giảng giải + hoạt động học sinh IV Tiến trình bài dạy: Ổn định lớp: Kiểm tra bài cũ: Bài toán: Cho số nguyên a, b; tìm Max(a,b) Yêu cầu: Viết phần tên, phần khai báo, và câu lệnh nhập a, b Nêu thuật toán tìm Max(a,b) Hoạt động 1: HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS  Giao nhiệm vụ cho HS  Thực các yêu cầu  Làm nào để tìm Max(a, b)?  So sánh:  Để thể thuật toán trên  Chưa thể làm Các em có TP các em làm nào? thể biết Input và Output  - Nếu a > b thì max = a bài toán - Nếu a < b thì max = b Điều kiện Đ Câu lệnh TRÌNH BÀY BẢNG Program baitap; Var a,b,max:integer; Begin readln(a,b); end Hoạt động 2: HOẠT ĐỘNG CỦA GV  Cho ví dụ câu điều kiện? HOẠT ĐỘNG CỦA HS  + Nếu em thuộc bài thì 10 điểm…  Chọn hai câu làm ví dụ Từ đó + Nếu tối trời mưa thì em phân tích cho học sinh thấy cấu nghỉ học ngược lại thì em trúc rẽ nhánh thể ví dụ học… (Có thể có nhiều câu khác này nhau) Hoạt động 3: HOẠT ĐỘNG CỦA GV  Nêu cú pháp câu lệnh rẽ nhánh dạng đủ và dạng khuyết  Treo bảng phụ và giải thích quá trình thực câu lệnh rẽ nhánh dạng đủ và dạng khuyết  Gọi học sinh viết câu lệnh so sánh để tìm Max(a, b) cách  Có thể dùng câu lệnh khuyết? max:=a; if a < b then max:=b;  lưu ý các em trước từ khoá Else không có dấu ; và sau then, sau else có lệnh chương trình  Với dạng này, dạng nào thuận tiện hơn? HOẠT ĐỘNG CỦA HS  Quan sát và ghi chép  Lên bảng viết: If a > b then max:= a; If a < b then max:= b; Hoặc: If a > b then max:=a Else max:=b;  Tìm câu trả lời  Tuỳ trường hợp cụ thể TRÌNH BÀY BẢNG Rẽ nhánh: * Một số mệnh đề có dạng điều kiện: + Dạng thiếu: Nếu…thì… + Dạng đủ: Nếu … thì … không thì … * Cấu trúc dùng để mô tả các mệnh đề trên gọi là cấu trúc rẽ nhánh thiếu và đủ * Mọi ngôn ngữ lập trình có các câu lệnh để mô tả cấu trúc rẽ nhánh TRÌNH BÀY BẢNG Câu lệnh IF – THEN: * Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh: a Dạng khuyết: IF <điều kiện> THEN <câu lệnh>; VD: Var a,b: Integer; Begin Write( ‘Nhập a: ’); Readln(a); Write( ‘Nhập b: ‘); Readln(b); If b <> then Write( ‘Thương hai số vừa nhập: ’,a/b:5:2); (22) Readln; End b Dạng đủ: Trong đó: - Điều kiện là biểu thức lôgic - Câu lệnh, câu lệnh 1, câu lệnh là câu lệnh Pascal VD: Var a,b: Integer; Begin Write(‘Nhập a:’); Readln(a); Write( ‘Nhập b: ‘); Readln(b); If b<>0 then Write( ‘Thương hai số vừa nhập: ’,a/b:5:2); Else Write( ‘Không thể chia cho 0’ ); Readln; End Hoạt động 4: HOẠT ĐỘNG CỦA GV  Muốn thực nhiều lệnh sau if sau then thì làm nào? → Dẫn đến khái niệm và cách dùng câu lệnh ghép: cấu trúc rẽ nhánh, sau THEN có từ lệnh trở lên thì gộp thành câu lệnh ghép, đặt các lệnh đó cặp từ khoá Begin…end; với Pascal  Gọi học sinh nêu thuật toán giải PT bậc hai?  Nhận xét, bổ sung  Phân nhóm và yêu cầu học sinh thảo luận nhóm để viết chương trình thể thuật toán trên Ghi lời giải vào bảng phụ  Yêu cầu đại diện nhóm lên treo bảng lời giải và trình bày Cho các nhóm khác nhận xét  chính xác hoá lời giải HS và cho điểm HOẠT ĐỘNG CỦA HS  Phát biểu ý kiến mình TRÌNH BÀY BẢNG Câu lệnh ghép và ví dụ: * Trong ngôn ngữ Pascal câu lệnh ghép có dạng: Begin <các câu lệnh>; End;  Bước 1: Nhập a, b, c; Bước 2: Tính d = b2 – 4ac; Bước 3: + Nếu d < thì pt vô nghiệm + Ngược lại thì pt có nghiệm − b ± √d x1,2 = 2a  Thảo luận theo nhóm và trình bày lời giải vào bảng phụ: * Ví dụ: Viết chương trình giải phương trình bậc hai Program ptb2; Var a,b,c,d,x1,x2:real; Begin Write(‘ Nhap a,b,c:’); Readln(a,b,c); d := b*b – 4*a*c; If d < then Write(‘ PT vo nghiem:’) else Begin Write(‘ PT co nghiem:’); x1:= (-b–sqrt(d))/(2*a);  Đại diện nhóm lên treo bảng lời x2:= (-b+sqrt(d))/(2*a); giải và trình bày Write(x1:6:2, x2:6:2); Các nhóm khác nhận xét End; Readln end * Chú ý: - Trước else không dấu chấm phẩy - Sau end là dấu chấm phẩy (23) VI Củng cố: GV tóm tắt các vấn đề cần nắm bài: - Cú pháp, ý nghĩa câu lệnh rẽ nhánh dạng đủ và dạng khuyết - Cách sử dụng câu lệnh ghép VII Bài tập nhà: - Học bài, trả lời câu 1, trang 50 và làm bài trang 51 sgk - Viết chương trình tìm Max(a, b, c) - Viết chương trình giải phương trình bậc - Chuẩn bị bài mới: Cấu trúc lặp Ngày soạn: 12/10/2012 – Tuần 13(tiết 13) BÀI TẬP I Mục tiêu: Kiến thức: Củng cố cho học sinh kiến thức cấu trúc rẽ nhánh và cấu trúc lặp Củng cố lại vấn đề biểu diễn biểu thức toán học ngôn ngữ lập trình Pascal Kỹ năng: Rèn luyện kỹ vận dụng và linh hoạt việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp để giải bài toán đặt Tư duy, thái độ: Rèn luyện ý thức tự giác học tập tích cực, ham thích tìm hiẻu, chủ động giải các bài tập Rèn luyện tư khoa học, tư logic II Chuẩn bị giáo viên và học sinh: GV: - Chuẩn bị hệ thống các bài tập sách giáo khoa HS: - Học bài cũ và chuẩn bị bài tập III Nội dung: Bài Viết chương trình nhập vào số nguyên N và kiểm tra tính chẳn lẻ số nguyên N vừa nhập Program KIEMTRATINHCHANLE; Uses crt; Var N: integer; Begin Clrscr; Writeln(‘Nhap vao so nguyen N=’); Readln(N); If Nmod2=0 then Writeln(‘N la so chan’) Else Writeln(‘N la so le’); Readln End Bài Viết chương trình giải và biện luận phương trình bậc ax + b = (24) Program GIAIPHUONGTRINHBACI; Uses crt; Var a, b, x: real; Begin Clrscr; Writeln (‘Nhap vao he so a=’); Readln(a); Writeln (‘Nhap vao he so b=’); Readln(b); If a=0 then If b=0 then Writeln (‘Phuong trinh vo so nghiem’) Else Writeln (‘Phuong trinh vo nghiem’) Else x:= -b/a; Writeln (‘Phuong trinh co nghiem x=’, x:6:2); Readln End Ngày soạn: 12/10/2012 – Tuần 14(tiết 14) CÂU HỎI VÀ BÀI TẬP Câu (SGK Tr 50): Hãy cho biết giống và khác hai dạng câu lệnh if then - Câu lệnh if-then có dạng: dạng thiếu và dạng đủ Việc giống và khác dạng này xoay quanh cú pháp và ngữ nghĩa - Về cú pháp: dạng này giống là có điều kiện (là biểu thức logic) nằm sau if và câu lệnh (có thể là câu lệnh ghép) nằm sau then Khác nhau, có dạng đủ có else và sau else còn có câu lệnh khác (có thể là câu lệnh ghép) Như vậy, dạng thiếu dùng điều kiện, câu lệnh; dạng đủ dùng điều kiện, câu lệnh Ngoài ra, dấu chấm phẩy “;” để kết thúc câu lệnh nằm sau else dạng đủ và sau câu lệnh sau then dạng thiếu - Về ngữ nghĩa: dạng này giống là kiểm tra điều kiện và thực câu lệnh sau then điều kiện đúng (true) Khác nhau, dạng đủ, điều kiện sai thì thực câu lệnh nằm sau else Câu (SGK Tr 50): Câu lệnh ghép là gì? Tại phải có câu lệnh ghép? Câu lệnh ghép là câu lệnh hợp thành từ nhiều câu lệnh thành phần - Câu lệnh ghép nhằm thực thao tác gồm nhiều thao tác thành phần Mỗi thao tác thành phần ứng với câu lệnh đơn câu lệnh ghép khác - Câu lệnh ghép là các yếu tố để tạo khả chương trình có cấu trúc - Các câu lệnh đặt begin và end; Câu (SGK Tr 51): Viết câu lệnh rẽ nhánh tính:  x  y neáu x2  y 1  z  x  y neáu x  y  vaø y x 0,5 neáu x  y  vaø y < x  a) program bai4a; uses crt; var x, y, z:real; begin clrscr; write('nhap hai so x va y: ');readln(x,y); if x*x+y*y<=1 then begin z:=(x*x+y*y); writeln('tong can tim: ',z:9); end; if (x*x+y*y>1) and (y>=x) then begin z:=(x+y); writeln('tong can tim: ',z:9); end; Giới thiệu có thời gian (25) if (x*x+y*y>1) and (y<x) then begin z:=0.5; writeln('tong can tim: ',z); end; readln end b)  x  y neáu ñieåm (x,y) thuoäc hình troøn baùn kính r (r > 0), taâm (a,b)  z   x  y trường hợp còn lại Program bai4b; Uses crt; Giới thiệu có thời gian Var x, y, z, a, b, r:real; Begin Clrscr; write('Nhap x: ');readln(x); write('Nhap y: ');readln(y); write('Nhap toa tam hinh tron: '); readln(a,b); write('Nhap ban kinh r: ');readln(r); if sqrt(sqr(x-a)+sqr(x-b))<r then begin z:=abs(x)+abs(y); writeln('Z= ',z:3:3); end; else begin z:= x + y; writeln(‘z = ’, z:3:3); end; readln end Bài Viết chương trình giải phương trình bậc ax 2+ bx +c=0 (a ≠ 0) Program GIAIPHUONGTRINHBAC2; Uses crt; Var a, b, c, x1, x2, Delta: Real; Begin Clrscr; Writeln (‘Nhap vao he so a=’); Readln(a); Writeln (‘Nhap vao he so b=’); Readln(b); Writeln (‘Nhap vao he so c=’); Readln(c); Delta:=b*b-4*a*c; If Delta <0 then Writeln(‘Phuong trinh vo nghiem’); Else If Delta >0 then Begin x1:=(-b+sqrt(Delta))/2*a; x2:= (-b-sqrt(Delta))/2*a; Writeln(‘Nghiem cua phuong trinh la:’,‘x1=’, x2:8:2); End x1:8:2, ‘x2=’, (26) Else x1:= -b/2*a; Writeln(‘Phuong trinh co nghiem kep’, x1:8:2); Readln End Ngày soạn: 13/11/2012 – Tuần 15, 16 (tiết 15, 16) BÀI TẬP VÀ THỰC HÀNH Mục đích, yêu cầu: - Xây dựng chương trình có sử dụng cấu trúc rẽ nhánh; - Làm quen với việc hiệu chỉnh chương trình Kiểm tra bài: Viết câu lệnh rẻ nhánh dạng đủ để kiểm tra số nguyên N là số chẳn hay lẻ * Gợi ý: Nếu N chia hết cho thì thông báo N là số chẳn, ngược lại thì thông báo N là số lẻ * Trả lời: If N mod 2=0 then writeln(N,‘La so chan’) Else writeln(N,‘La so le’); Nội dung: * Bài toán: Bộ số Pi-ta-go Bộ ba số nguyên dương a, b, c gọi là số Pi-ta-go tổng các bình phương hai số bình phương số còn lại Viết chương trình nhập từ bàn phím ba số nguyên dương a, b, c và kiểm tra xem chúng có là số Pi – ta – go hay không a b  c b a  c c a  b * Ý tưởng: Kiểm tra xem có đẳng nào ba đẳng thức sau đây xảy hay không: (27) Những công việc cần thực hiện: a) Gõ chương trình sau: Program Pitago; Uses crt; Var a,b,c: integer; a2,b2,c2: longint; Begin clrscr; write(‘a,b,c’); readln(a,b,c); a2:=a; b2:=b; c2:=c; a2:=a2*a; b2:=b2*b; c2:=c2*c; if(a2=b2+c2)or(b2=a2+c2)or(c2=a2+b2)then writeln(‘Bo ba so da nhap la bo so pitago’) else writeln(‘Bo ba so khong la bo so pitago’); Readln End HOẠT ĐỘNG GIÁO VIÊN HOẠT ĐỘNG HỌC SINH NỘI DUNG GHI BẢNG Hoạt động 1: Kiểm tra lỗi và lưu chương trình  Nhắc nhở học sinh thường xuyên  Nhấn F9, quan sát trỏ lệnh a) Nhập chương trình b) Kiểm tra và sữa lỗi chương kiểm tra lỗi cú pháp câu xuất vị trí nào và nhận biết trình lệnh lỗi chương trình thông qua trợ * Một số trợ giúp trình biên  Giáo viên nhắc nhở học sinh giúp chương trình dịch: dịch thường gặp: nhận biết số lỗi thường mắc - “;” expected (thiếu dấu “;”) phải trợ giúp trình biên dịch: - Unknown indentifier (không VD: hiểu tên đối tượng định-khai - “;” expected (thiếu dấu “;”)  Ghi nhận số trợ giúp báo thiếu) - Unknown indentifier (không chương trình dịch - String constant exceeds hiểu tên đối tượng định - khai line (chuỗi dài quá dòng – có báo thiếu) thể thiếu dấu nháy đơn đóng mở) - String constant exceeds - Syntax error: (Lỗi cú pháp) line (chuỗi dài quá dòng – có - Begin expected (Không thấy thể thiếu dấu nháy đơn) Begin) - Syntax error: (Lỗi cú pháp) - End expected (Không thấy - Begin expected (Không thấy End) Begin) - End expected (Không thấy End)  Có cách để lưu:  Để lưu chương trình ta thực - Vào menu file  save  nhập vào thao tác gì? ô save file as đường dẫn:  Lưu chương trình với tên PITAGO_LOP11xx_TH2.PAS để D:\PITAGO_LOP11xx_TH2.PAS - Nhấn F2  nhập vào ô save file tiện cho buổi thực hành sau as đường dẫn: D:\PITAGO_LOP11xx_TH2.PAS Hoạt động 2: Dịch, thực câu lệnh và theo dõi kết trên cửa sổ WATCH  Nhắc nhở học sinh quan sát màn c) Theo dõi quá trình thực lệnh chương trình: hình trình soạn thảo chương trình - Nhấn tổ hợp phím Ctrl + F7 làm TP, xem thực câu lệnh xuất cửa sổ Add wacth nào chương trình Lưu ý học (28) sinh, nhập giá trị cho ba số a, b, c khoảng trắng cho lần nhập giá trị  Ta có thể theo dõi quá trình thông dịch cách nhấn tổ hợp phím Crtl+F7 và F7  Với liệu a = 3, b = 4, c = Yêu cầu học sinh dịch đến dòng lệnh readln(a,b,c); Quan sát trên cửa sổ WATCH, giá trị a2, b2, c2 là bao nhiêu đến dòng lệnh: a2:=a; b2:=b; c2:=c;  Nhấn F7 đến dòng lệnh: a2:=a2*a; b2:=b2*b; c2:=c2*c;  Nhấn tổ hợp phím Crtl+F7 và quan sát kết trên cửa sổ WATCH  Học sinh nhập giá trị a, b, c - Nhập tên biến cần theo dõi giá trị VD: biến a2, b2, c2 - Nhấn F7 để theo dõi các lệnh * Chú ý: - Có thể nhấn F6 để chuyển đổi cửa sổ thời - Có thể vào lệnh Debug  Wacth  a2: b2: c2:  a2: b2: 16 c2: 25 và theo dõi giá trị a2, b2, c2 là bao nhiêu?  Bộ ba số a, b, c là số Pitago  Quan sát quá trình rẽ nhánh với liệu trên  Có thể cho học sinh nhập vào ba số a = 2, b = 4, c = để ba số  Bộ ba số a, b, c không là số Pitago này không là số Pitago, đó dể quan sát quá trình rẽ nhánh Hoạt động 3: Thực thông dịch với liệu a = 700, b = 1000, c = 800 và lỗi tràn nhớ  Ở liệu này, yêu cầu học  a2: 490000 * Ở dòng khai báo biến: Var a,b,c: integer; sinh ghi lại kết a2, b2, c2 b2: 1000000 a2,b2,c2: longint; trên giấy dòng lệnh: c2: 640000 * Nhận xét: a2:=a2*a; b2:=b2*b; Biến nhớ phạm vi a b c c2:=c2*c;  Nếu thay dãy lệnh a2:= a; b2:= b; c2:= c; a2:=a2*a; b2:=b2*b; c2:=c2*c; dãy lệnh a2:=a*a; b2:=b*b; c2:=c*c; thì kết có gì thay đổi với liệu a = 700, b = 1000, c = 800?  a2: 31248 b2: 16960 c2: -15360 2byte 2byte 2byte -32767-32768 -32767-32768 -32767-32768 Như vậy, thay dãy lệnh a2:=a2*a; b2:=b2*b; c2:=c2*c; dãy lệnh a2:=a*a; b2:=b*b; c2:=c*c; thì a*a có giá trị 490000, vượt phạm vi kiểu nguyên Integer Do đó việc thay lệnh là không hợp lí (29) Ngày soạn: 13/11/2012 – Tuần 17 (tiết 17) BÀI KIỂM TRA TIẾT KHỐI 11 I Mục tiêu: 1) Về kiến thức: - Hiểu cách khai báo hằng, biến, cách biểu diễn biểu thức số học, cách sử dụng lệnh gán Biết cách sử dụng các lệnh vào/ra chuẩn đơn giản - Hiểu câu lệnh rẻ nhánh (dạng thiếu và dạng đủ) - Hiểu cấu lặp kiểm tra điều kiện trước (lặp xác định và không xác định) - Biết cấu trúc chương trình Pascal, soạn thảo số chương trình đơn giản 2) Về kĩ năng: Làm bài kiểm tra trắc nghiệm, tự luận dạng tổng hợp kiến thức II Phương pháp: Trắc nghiệm 30% (số lượng 12 câu), tự luận 70% tổng số điểm Chia thành đề KHUNG MA TRẬN ĐỀ KIỂM TRA TIẾT Mạch kiến thức, kỉ - Các thành phần ngôn ngữ lập trình (Tự luận và trắc nghiệm khách quan) MỨC ĐỘ NHẬN BIẾT Biết Hiểu Tự luận TN Tự TN luận Câu Câu 7,9,12 Vận dụng Tự TN luận Tổng 1.75đ (30) 1đ 0.75đ Câu 2,6 - Kiểu liệu chuẩn - Các thành phần chương trình Câu 3,8 0.5đ Câu - Phép toán, biểu thức, lệnh gán - Hàm số học chuẩn 0.25đ 1.75đ (17.5% ) 0.75đ Câu 4,5 0.5đ 2đ Câu - Các thủ chuẩn vào/ra đơn giản - Cấu trúc điều khiển Câu 0.5đ Câu (17.5% ) Câu 11 Câu 10 1.5đ 1đ 0.25đ 0.25đ (15%) Câu - Soạn thảo, dịch, thực và hiệu chỉnh chương trình 2.25đ (22.5% ) 17 2.25đ Tổng 2.75đ (27.5% ) 3.5đ (35%) 3.25đ (32.5%) 3.25đ (32.5%) 10đ ĐỀ KIỂM TRA TIẾT A PHẦN TRẮC NGHIỆM (3 điểm) Câu Cách viết nào cho biểu thức sau là đúng TP: Sin(5x) + cos(3x+y)=12 A Sin(5*x)+cos(3*x+y)=12; B Sin(5*x)+cos(3x+y)=12; C Sin5*x+cox3*x+y=12; D Sin5*x+ cos3x+y =12; Câu Chọn cú pháp đúng: A USES <danh sách biến> ; B PROGRAM <tên chương trình> ; C VAR <tên biến> := <giá trị> ; D CONST <tên hằng> : < Kiểu liệu> ; Câu Biến A nhận các giá trị: 1; 15; 99; 121 và biến B nhận các giá trị: 1.34; 29; 41.8 Khai báo nào sau đây là đúng: A Var A:Byte; B:Real; B Var A,B:Byte; C Var A:Real; B:Byte; D Var A,B:Integer; Câu Cho biết kết trả biểu thức sau: (20 mod 3)div + (15 div 4) A B C D 10 Câu Cho biết kết trả biểu thức sau: (99 div 9) mod + (13 div 3) div A 10 B C D Câu Bộ nhớ cần cấp phát cho việc khai báo các biến đây: VAR X,Y,Z:Real; (31) C: Char; I,J: Byte; A 21 byte nhớ B 20 byte C 15 byte nhớ D 22 byte nhớ Câu Chú thích sử dụng ngôn ngữ lập trình Pascal có thể ghi trong: A [ ) B (* *) C [ ] D ( ) Câu Chương trình viết sau : Begin End A Chương trình này chạy không thực gì B Chương trình này viết sai cú pháp C Chương trình này không chạy D Chương trình báo lỗi Câu Các số sau đây, số nào sai PASCAL A 12345 B 12,345 C 1.2E-3 D -12.34 Câu 10 Cho A= 19.5; B=45.93 Câu lệnh Write('Gia tri la:',A:6:2,B:8:3); hiển thị màn hình là: A Gia tri la:_ 19.50_ _ 45.930 B Gia tri la:_ _19.5_ _ _ 45.93 C Gia tri la:_ 19.5 _ _ _ 45.930 D Gia tri la:_ _19.50_ _ 45.930 Câu 11 Đoạn chương trình hiển thị: Begin Writeln ('Day la lop TIN HOC'); End A 'Day la lop TIN HOC' B Không chạy vì có lỗi C Day la lop TIN HOC D "Day la lop TINHOC" Câu 12 Hằng: A Đại lượng có giá trị không đổi quá trình thực chương trình B Đại lượng có thể thay đổi C Khai báo từ khóa VAR D Không cần khai báo dùng B PHẦN TỰ LUẬN (7 điểm) Câu Hằng là gì? Viết khai số bất kì Pascal? (1đ) Câu Viết khai báo: Tên chương trình, khai báo thư viện các hàm chuẩn và các biến thực a, b, c, x1, x2, delta ax  bx  c 0  a 0  cần thiết cho việc giải phương trình bậc 2: (0.75đ) Câu Hãy viết các biểu thức sau sang dạng biểu diễn tương ứng Pascal: (2đ) 2a c) 2 a ) x  y R ; b)100  N  ; d ) b2  4ac ; b ; Câu Trình bày cấu trúc if – then dạng thiếu và dạng đủ? (1đ) Câu Viết chương trình biện luận tìm nghiệm phương trình bậc ax + b = 0, với hệ số a, b, c nhập từ bàn phím.(2.25đ) Câu 10 11 12 Câu ĐÁP ÁN Nội dung trắc nghiệm A Sin(5*x)+cos(3*x+y)=12; B PROGRAM <tên chương trình> ; A Var A:Byte; B:Real; C B A 21 byte nhớ (* *) A Chương trình này chạy không thực gì B 12,345 A Gia tri la:_ 19.50_ _ 45.930 C Day la lop TIN HOC A Đại lượng có giá trị không đổi quá trình thực chương trình Nội dung tự luận - Đại lượng có giá trị không thay đổi quá trình thực chương trình - Const Pi=3.14; Program Giai_PTB2; Điểm 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 Điểm 0.5 0.5 0.75 (32) Uses crt; Var a,b,c,x1,x2,delta:Real; X*x + y*y <= R*R; N<=100)and(N>0); 2*a/b; Sqrt(b*b-4*a*c); - Dạng thiếu: If <điều kiện> then <câu lệnh>; - Dạng đủ: If <điều kiện> then <câu lệnh 1> else <câu lệnh 2>; Program GIAIPT_BACNHAT; Uses crt; Var a,b,x:real; Begin Clrscr; Writeln(‘Nhap a,b:’); readln(a,b); If a<>0 then Begin X:=-b/a; writeln(‘Phuong trinh co nghiem x=’,x:6:2); end else if b<>0 then writeln(‘Phuong trinh vo nghiem’) else writeln(‘Phuong trinh co vo so nghiem’); readln End Ngày soạn: 13/11/2012 – Tuần 18 (tiết 18) ĐỀ CƯƠNG ÔN TẬP HỌC KÌ I I MỤC TIÊU: 1) Về kiến thức: 1.1 Khái niệm vấn đề lập trình: + Chương trình nguồn, chương trình đích, chương trình dịch là gì? + Chương trình dịch có loại, điểm khác biệt chúng? + Trong trường hợp nào sử dụng chương trình biên dịch, thông dịch? + Có loại ngôn ngữ lập trình, loại NNLT nào cần đến chương trình dịch? 1.2 Các thành phần ngôn ngữ lập trình: + Biết NNLT thường có ba thành phần bản: bảng chữ cái, cú pháp, ngữ nghĩa + Biết bảng chữ cái có ba nhóm kí tự (chữ cái, chữ số, kí tự đặc biệt) + Nắm quy tắc đặt tên NNLT Pascal + Phân biệt được: tên dành riêng, tên chuẩn, tên người lập trình đặt + Nắm khái niệm: hằng, biến, chú thích 1.3 Cấu trúc chương trình: 0.5 0.5 0.5 0.5 0.5 0.5 2.25 (33) + Nắm cấu trúc chung chương trình (gồm hai phần) + Biết cách khai báo: tên chương trình, thư viện, hằng, biến 1.4 Một số kiểu liệu chuẩn: + Biết phạm vi giá trị các kiểu liệu chuẩn: kiểu nguyên, kiểu thực, kiểu logic, kiểu kí tự + Áp dụng các kiểu liệu này khai báo biến 1.5 Phép toán, biểu thức, câu lệnh gán: + Biết các phép toán đặc trưng cho các kiểu liệu: số nguyên, số thực, kiểu logic, phép toán quan hệ (Tránh nhầm lẫn các phép toán toán học và các phép toán Pascal) + Chuyển các biểu thức toán học sang biểu thức Pascal và ngược lại (phải nắm các hàm số học chuẩn trang 26/SGK) + Biết giá trị trả các loại biểu thức + Biết ý nghĩa và cách sử dụng câu lệnh gán 1.6 Các thủ tục chuẩn vào/ đơn giản: + Biết cách sử dụng thủ tục Readln và Write/writeln để nhập liệu từ bàn phím và đưa liệu màn hình 1.7 Soạn thảo, dịch, thực và hiệu chỉnh chương trình + Biết cách sử dụng phím tắt và menu lệnh để lưu trữ, mở tệp đã có, dịch, chạy chương trình 1.8 Cấu trúc rẽ nhánh: + Biết cách thức làm việc cấu trúc: If…then, If…then…else + Biết mục đích sử dụng Câu lệnh ghép câu lệnh có cấu trúc 2) Về kĩ năng: Hệ thống bài tập tương đối đầy đủ, giúp học sinh hệ thống hóa mạch kiến thức đã học và làm tốt bài thi học kì I II NỘI DUNG: A HỆ THỐNG CÂU HỎI TRẮC NGHIỆM: Ngôn ngữ có thể lập trình trên máy tính là A.Ngôn ngữ máy tính B Hợp ngữ C.Ngôn ngữ lập trình bậc cao D Ngôn ngữ tự nhiên Máy tính có thể trực tiếp thực các câu lệnh viết A Ngôn ngữ máy tính B Hợp ngữ C Ngôn ngữ lập trình bậc cao D Ngôn ngữ tự nhiên Người ta thường viết chương trình ngôn ngữ lập trình bậc cao bởi: A Gần với ngôn ngữ tự nhiên B Không phụ thuộc vào máy tính C Ngắn gọn, dễ đọc, dễ hiểu… D Cả ba đúng Trong quá trình dịch, lối nào sau đây phát A Chính tả B Cú pháp C Giải thuật D Ngữ nghĩa Những phát biểu nào sau đây là sai? A Output chương trình là chương trình trên ngôn ngữ máy; B Chương trình viết hợp ngữ không phải là Input hay Output chương trình dịch nào; C Để biên soạn chương trình trên ngôn ngữ bậc cao có thể sử dụng nhiều hệ soạn thảo văn khác nhau; D Chương trình dịch là thành phần chính ngôn ngữ lập trình bậc cao Bảng chữ cái (Trong TP) gồm các ký tự A A Z ; a z B C *, #, $, @, ^, &, (, ), {, } … D Tất các ký tự trên Thành phần sở ngôn ngữ lập trình TP là A Bảng chữ cái TP B Tên C Hằng, biến D Cả ba lựa chon trên Thành phần ngôn ngữ lập trình là A Bảng chữ cái TP B Cú pháp C Ngữ nghĩa D Cả ba thành phần trên Khi đặt tên cho đối tượng TP có thể A Bắt đầu các chữ số B Bắt đầu các chữ cái C Bắt đầu dấu (*) D Bắt đầu dấu gạch cách trống (34) 10 Tên nào không thuộc TP? A Tên dành riêng B Tên đặc biệt C Tên chuẩn D Tên người sử dụng đăt 11 Tên dành riêng A Người lập trình quy định B TP quy định C Máy tính quy định D Cả ba đúng 12.Cho biết các tển đây đâu là tên dành riêng (từ khóa) A Program B Begin C BaiTap D Real 13 Cho biết các tển đây đâu là tên chuẩn A Program B Integer C BaiTap D Sqrt 14 Tên nào trước sử dụng phải khai báo A Tên chuẩn B Tên dành riêng C Tên người lập trình đặt D Cả ba lựa chọn trên 15 Hằng (Const) quá trình thực chương trình A Giá trị không thay đổi B Giá trị có thể thay đổi C Giá trị luôn thay đổi D Cả ba đúng 16 Hằng (Const) Tp có thể là A Các số nguyên B Các số thực C Các ký tự D Cả ba đúng 17 Biến là đại lượng có A Giá trị không thay đổi B Giá trị có thể thay đổi C Giá trị luôn thay đổi D Cả ba đúng 18 Cho biết các giá trị sau đâu là số nguyên A 1972 B 1.25 C ‘1972’ D 1.0E-6 19 Cho biết các giá trị sau đâu là xâu A 1972 B 1.25 C ‘1972’ D 1.0E-6 20 Cho biết các giá trị sau đâu là số thực A 1972 B 125 C ‘1972’ D 1.0E-6 21 Các từ: PROGRAM, BEGIN, END là A Tên dành riêng B Tên chuẩn C Tên người lập trình đặt D Tên đặc biệt 22 Các từ: SQR, SQRT, REAL là A Tên dành riêng B Tên chuẩn C Tên người lập trình đặt D Tên đặc biệt 23 “Từ khóa ” là cách gọi khác A Tên dành riêng B Tên chuẩn C Tên người lập trình đặt D Tên đặc biệt 3x   x  m   15 13 24 Cách viết nào cho biểu thức sau là đúng TP: A 3*x*x- 1/sqr(5)*(x-m)-15=13 B 3*x*x- 1/sqr(5)(x-m)-15=13 C 3*x*x- (1/sprt(5))*(x-m)-15=13 D 3*sqr(x)- (1/sqrt(5))*(x-m)-15=13 25 Đoạn chương trình hiển thị:Begin Writeln ('Day la lop TIN HOC') ;End A "Day la lop TINHOC" B Không chạy vì có lỗi C 'Day la lop TIN HOC' D Day la lop TIN HOC 2 26 Viết nào cho biểu thức sau là đúng TP:  x  y 13 A 1- abs(sqrt(x*x - y*y)) >=13 B 1-sqrt(abs(sqr(x)) - abs(sqr(y)))>=13 C 1-abs(sqrt(sqr(x)-sqr(y)))>=13 D 1-sqrt(abs(x*x - y*y))>=13 27 Biến A nhận các giá trị: 1;15;99;121 và biến B nhận các giá trị: 1.34;29;41.8 Khai báo nào sau đây là đúng: A Var A:Real; B:Byte; B Var A,B:Byte; C Var A,B:Integer; D Var A:Byte; B:Real; 28 Cho biết kết trả biểu thức sau: (20 mod 3) div + (15 div 4) A B 10 C D (35) 29 Chương trình viết sau : Begin End A Chương trình này chạy không thực gì B Chương trình này viết sai cú pháp C Chương trình này không chạy D Chương trình báo lỗi 30 Cho biểu thức A= (18 div 2)=9; B= (25 mod 5)=0 A Not (A Or B) = True B Not(A) Or Not(B) = True C Not(A) And Not(B) = True D Not(A Or B) = False 31 Cho A= 19.5; B=45.93 Câu lệnh Write('Gia tri la:',A:6:2,B:8:3); hiển thị màn hình là: A Gia tri la:_ _19.50_ _ 45.930 B Gia tri la:_ _19.5_ _ _ 45.93 C Gia tri la:_ 19.5 _ _ _ 45.930 D Gia tri la:_ 19.50_ _ 45.930 32 Chọn cú pháp đúng: A USES <danh sách biến>; B VAR <tên biến> := <giá trị>; C PROGRAM <tên chương trình>; D CONST <tên hằng> : < Kiểu liệu>; 33 Bộ nhớ cần cấp phát bao nhiêu byte để lưu trữ: VAR X , Y :Boolean; D:Integer; A,B :LongInt; A 22 byte nhớ B 20 byte nhớ C 21 byte nhớ D 12 byte nhớ 34 Cách viết nào cho biểu thức sau là đúng TP: Sin(5x) + cos(3x+y)=12 A Sin(5*x)+cos(3*x+y)=12 B Sin(5*x)+cos(3x+y)=12 C Sin5*x+cox3*x+y=12 D Sin5*x+ cos3x+y =12 35 Cho biết tổ hợp phím nào thoát khỏi chương trình Pascal: A Alt+F3 B Alt+F9 C Ctrl+F9 D Alt+X 36 Chú thích sử dụng ngôn ngữ lập trình Pascal có thể ghi trong: A [ ) B (* *) C [ ] D ( ) 37 Cho biết kết trả biểu thức sau: (99 div 9) mod + (13 div 3) div A B C D 10 38.Xét chương trình sau: Var a,b:integer; BEGIN a := 1;b := 2; b := b + a; a := a + b; writeln(a); readln END Kết chương trình trên là: A B C D 39.Trong các khai báo biến sau, khai báo nào là sai : A Var t : LongInt; B Var t : Word ; C Var t : Real ; D Var t : Logic ; 40 Sau thi hành đoạn chương trình sau, thì biến X viết màn hình có giá trị là bao nhiêu? A:= ; B: = 1; X:= ; IF A + B > THEN X := X + A + B; WRITE (X); A B C D 41 Trong Pascal, khẳng định nào các khẳng định sau là sai? A Phần tên chương trình không thiết phải có B Phần thân chương trình có thể có không C Phần khai báo có thể có không D Phần thân chương trình thiết phải có 42 Lệnh Writeln ; dùng để : A Viết dòng chữ Writeln màn hình B Đưa trỏ cuối dòng C Đưa trỏ xuống đầu dòng D Cho xem kết 43 Kiểu liệu nào Pascal có phạm vi giá trị từ 255 A Kiểu Byte B Kiểu Integer C Kiểu Real D Kiểu Word 44 Đoạn chương trình sau viết gì màn hình ? m:=5 ; n: =3 ; If m < n then Writeln ( m , ‘ x ’ , n , ‘ = ‘, m*n ) (36) Else Writeln( m , ‘ + ’ , n , ‘ = ‘, m+n ); A + = B m x m = 15 C m + n = D x = 15 45 Trong Turbo Pascal, để thực chương trình: A Nhấn tổ hợp phím Alt+F9 B Nhấn phím F2 C Nhấn tổ hợp phím Ctrl + F9 D Nhấn phím Alt+F3 46 Để nhập giá trị biến a từ bàn phím, ta viết : A Write(Nhap a = ) ; Readln(a); B Write(‘ Nhap a = ‘ ); Readln(a) ; C Read( ‘Nhap a = ‘); Writeln(a) ; D Writeln(‘Nhap a = ‘ , a); 47 Lệnh Write( ‘5 x = ‘ , 5*4 ) ; viết gì màn hình : A x = 20 B x = 5*4 C 20 = 20 D 20 = * 48 Trong Pascal, mặt cú pháp, câu lệnh nào sau đây là sai? A b:=(a=5) or (c=7) B c:=PI*12 C x:=12,5 D a:=3.12 49 Trong Pascal, với câu lệnh sau: Writeln('KQ la:',a); ghi màn hình? A Không đưa gì Báo lỗi B KQ la: a C Ket qua la: a D KQ la:<giá trị a> 50 Chọn khẳng định đúng: Tính tổng:S = 1+1/2 +1/3 + + 1/1000 A Không thể dùng lệnh For B Chỉ dùng lệnh For C Không thể sử dụng While D Có thể sử dụng While 51 Để khai báo biến n thuộc kiểu số nguyên ta viết : A Const n : Integer; B Var : n : Integer ; C Var n = Integer ; D Var n : Integer ; 52 Bộ nhớ cần cấp phát bao nhiêu byte để lưu trữ khai báo sau: VAR X , Y , Z : Real ; C: Char ; I , J : Byte ; A 21 byte B 20 byte C 15 byte D 22 byte 53 Trong pascal, các phép toán sau đây đâu là phép toán quan hệ : A mod B<> C and D/ 54 Xét biểu thức sau : (9x < 80) and (x <=10) Biểu thức cho kết True x A 10 B 11 C D 55 Chương trình dịch là: A Chương trình dịch ngôn ngữ tự nhiên ngôn ngữ máy B Chương trình dịch ngôn ngữ máy ngôn ngữ tự nhiên C Chương trình có chức chuyển đổi chương trình viết ngôn ngữ lập trình bậc cao thành chương trình thực trên máy tính cụ thể D Chương trình có chức chuyển đổi chương trình viết ngôn ngữ máy thành ngôn ngữ bậc cao 56 Xét biểu thức logic: (n >0) and (n mod = 0) Khẳng định nào sau đây là đúng? A Kiểm tra xem n có là số dương C Kiểm tra n có chia hết cho không; B Kiểm tra n là số nguyên chẵn D Kiểm tra xem n là số dương chẵn 57 Cấu trúc chương trình chia làm phần ? A B C D 58 Trong Turbo Pascal, để lưu chương trình A Nhấn tổ hợp phím Alt + F2 C Nhấn tổ hợp phím Shift + F2 B Nhấn tổ hợp phím Ctrl+F2 D Nhấn phím F2 59 Trong Turbo Pascal, xét chương trình sau Const b = 3.75; Begin Write(b:5:3) End Màn hình kết là A 3.8E+01 B 3.75E+01 C 3.75 D 3.750 (37) 60 Trong Pascal phép toán div, mod thuộc phép toán nào sau đây A Phép toán Logic C Phép toán quan hệ B Phép toán số học với số nguyên D Phép toán số học với số thực 61 Trong Turbo Pascal, để thực thi chương trình A Nhấn phím F9 C Nhấn tổ hợp phím Shift + F9 B Nhấn tổ hợp phím Alt + F9 D Nhấn tổ hợp phím Ctrl+F9 62 Trong Turbo Pascal, với x kiểu nguyên hàm số nào sau đây luôn cho kết là kiểu thực A abs(x) C sqr(x) B inc(x) D sqrt(x) 63 Trong ngôn ngữ lập trình Pascal, từ khóa PROGRAM dùng để A Khai báo C Khai báo biến B Khai báo tên chương trình D Khai báo thư viện 64 Trong ngôn ngữ lập trình Pascal, từ khóa CONST dùng để A Khai báo tên chương trình C Khai báo biến B Khai báo D Khai báo thư viện 65 Trong ngôn ngữ lập trình Pascal, từ khóa VAR dùng để A Khai báo tên chương trình C Khai báo B Khai báo biến D Khai báo thư viện B PHẦN TỰ LUẬN: Câu 1: Trình bày cấu trúc chung chương trình? Giải thích các thành phần cấu trúc chung đó? Câu 2: Chương trình dịch là gì? Trình bày các loại xem là chương trình dịch? Câu 3: Trình bày các khái niệm Hằng và biến? So sánh khác Hằng và biến? Câu 4: Trình bày cú pháp khai báo biến Pascal? Giải thích các thành phần cú pháp? Thực khai báo biến k có kiểu nguyên? Câu 5: Trình bày khái niệm tên Turbo Pascal? Hãy tự biết tên đúng và tên sai Turbo Pascal? Câu 6: Trình bày thủ tục nhập liệu vào từ bàn phím và thủ tục đưa liệu màn hình? Cho ví dụ minh họa? Câu 7: Trình bày cú pháp, nêu các thành phần, vẽ sơ đồ khối và nêu quá trình thực câu lệnh rẻ nhánh dạng đủ Pascal? Áp dụng: Viết câu lệnh if…then dạng đủ cho biết x là số chẳn hay số lẻ? Câu 8: Cho biết giống và khác hai dạng câu lệnh if - then? Câu 9: Câu lệnh ghép là gì? Tại phải có câu lệnh ghép? Câu 10: Viết chương trình xác định nghiệm phương trình bậc nhất: ax  b 0 , với a, b là các hệ số nhập từ bàn phím? ax  bx  c 0  a 0  Câu 11: Viết chương trình tìm nghiệm thực phương trình bậc 2: ? Câu 12: Hãy viết biểu thức toán học đây Pascal: sin x  a cos x ( x  y) a  x3 Đáp án phần tự luận: Câu 1: Cấu trúc chung chương trình gồm: phần Có dạng: [<phần khai báo>] <phần thân> Giải thích các thành phần cấu trúc chung: * Phần khai báo: Là phần có thể có không chương trình * Phần thân: Là phần phải có chương trình Câu 2: - Chương trình dịch là chương trình đặc biệt, có chức chuyển đổi chương trình viết ngôn ngữ lập trình bậc cao thành chương trình thực trên máy - Chương trình dịch có hai loại: Thông dịch và biên dịch * Thông dịch (Interpreter): Là cách dịch lệnh một, dịch tới đâu thực tới đó * Biên dịch: Dịch toàn chương trình nguồn thành chương trình đích sau đó thực Câu 3: * Hằng: Hằng số là đại lượng có giá trị không đổi suốt quá trình thực chương trình * Biến: Biến là đại lượng đặt tên, dùng để lưu trữ giá trị và giá trị có thể thay đổi quá trình thực chương trình (38) * Sự khác và biến: Hằng số có giá trị không đổi suốt quá trình thực chương trình còn biến số nhận giá thân chương trình và giá trị nó có thể thay đổi quá trình thực chương trình Câu 4: * Cú pháp: Var <danh sách biến>:<kiểu liệu>; * Giải thích các thành phần cú pháp: + <danh sách biến>: Là nhiều tên biến, các tên biến viết cách dấu phẩy + <kiểu liệu>: Thường là các kiểu liệu chuẩn * Thực khai báo: Var k : byte; Câu 5: - Trong Ngôn ngữ Turbo Pascal, tên là dãy liên tiếp không quá 127 kí tự bao gồm các chữ cái, chữ số và dấu gạch phải bắt đầu chữ cái dấu gạch - Ví dụ: * Tên đúng: Vi_du1, baitap2 * Tên sai: 1Vi_du, bai tap2 Câu 6: * Thủ tục nhập liệu từ bàn phím: Read (<danh sách biến vào>); Readln(<danh sách biến vào>); Ví dụ: Read(a); Readln(x,y); * Thủ tục đưa liệu màn hình: Write(<danh sách biến ra>); Writeln(<danh sách biến ra>); Ví dụ: Write(a); Writeln(b:6:2); Câu 7: * Cú pháp: If <điều kiện> then <câu lệnh1> else <câu lệnh2>; IF Câu lệnh S Điều kiện Đ Câu lệnh * Trong đó: - Điều kiện là biểu thức logic - Câu lệnh 1, câu lệnh là: câu lệnh Pascal * Ý nghĩa câu lệnh If – then dạng đủ: Tính và kiểm tra điều kiện Nếu điều kiện đúng thì câu lệnh thực hiện, ngược lại thì câu lệnh thực Câu 8: * Giống nhau: - Về cú pháp: + Cả hai dạng có điều kiện (biểu thức logic) nằm sau từ khóa if + Cả hai dạng có câu lệnh (lệnh đơn lệnh ghép) sau từ khóa then - Về ngữ nghĩa: Cả hai dạng kiểm tra điều kiện và thực câu lệnh (lệnh đơn ghép) sau từ khóa then điều kiện đúng * Khác nhau: - Về cú pháp: + Dạng đủ có từ khóa else, sau từ khóa else còn có câu lệnh khác + Dạng đủ kiểm tra điều kiện, thực câu lệnh, còn dạng thiếu điều kiện câu lệnh - Về ngữ nghĩa: Ở dạng đủ điều kiện sai thì thực câu lệnh sau else Câu 9: * Câu lệnh ghép: Là câu lệnh hợp thành từ nhiều câu lệnh thành phần (đơn ghép), nhằm thực thao tác gồm nhiều thao tác thành phần Mỗi thao tác thành phần tương ứng với câu lệnh đơn câu lệnh ghép khác (39) * Tại phải có câu lệnh ghép: Về mặt ngôn ngữ lập trình câu lệnh ghép là các yếu tố cần thiết để xây dựng chương trình có cấu trúc Câu 10: Program PTBac1; Uses crt; Var a,b:real; Begin Write(‘Nhap gia tri a va b:’); Readln(a,b); If a<>0 then Writeln(‘x=’,-b/a:10:2) Else If b=0 then Writeln(‘Phuong trinh vo so nghiem’) Else Writeln(‘Phuong trinh vo nghiem’); Readln End Câu 11: Program Ptbac2;Uses crt; Var a,b,c,x1,x2,delta:real; Begin Write(‘Nhap a,b,c’); readln(a,b,c); Delta:=b*b-4*a*c; If delta<0 then write(‘Phuong trinh vo nghiem’) Else Begin X1:=(-b+sqrt(delta))/(2*a); X2:=(-b-sqrt(delta))/(2*a); Writeln(‘x1=’,x1:10:2,’x2=’,x2:10:2); End; Readln End Câu 12: (sqr(x)+y)*(sqrt(sin(x)+a*cos(x))/(abs(a)+x*sqr(x)) Tuần 19 (tiết 19) THI HỌC KÌ I (40) Ngày soạn: 13/11/2013 – Tuần 20, 21 (tiết 20, 21, 22) BÀI 10: CẤU TRÚC LẶP I MỤC TIÊU Kiến thức - Biết ý nghĩa cấu trúc lặp - Biết cấu trúc chung lệnh lặp for ngôn ngữ lập trình Pascal - Biết sử dụng đúng hai dạng lệnh lặp For ngôn ngữ lập trình Pascal Kĩ - Bước đầu sử dụng lệnh lặp For để lập trình giải số bài toán đơn giản II ĐỒ DÙNG DẠY HỌC Chuẩn bị giáo viên - Máy vi tính, bút dạ, máy chiếu projector, sách giáo khoa, sách giáo viên Chuẩn bị học sinh - Sách giáo khoa III HOẠT ĐỘNG DẠY-HỌC Ổn định lớp: Kiểm tra sĩ số HS Kiểm tra bài cũ: Phát và chỉnh sữa lỗi chương trình sau: PROGRAM Tinh_can_bac_hai; VAR a; Real; BEGIN Write (Nhap so a =); READLN (‘a’); IF a < THEN Write(‘a:10:2, la so am’); ELSE Writeln(‘Can bac hai cua’,a:5:2, ‘la’, SQRT(a):10:2 ); READLN END Nội dung dạy học: HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS Hoạt động 1: Tìm hiểu ý nghĩa cấu trúc lặp (Tiết 16) Nêu bài toán đặt vấn đề  Chú ý quan sát bài toán đặt vấn bài toán tổng_1.(SGK) đề  Hãy xác định công thức toán học  HS khó xác định công để tính tổng? thức  Gợi ý phương pháp: Ta xem tổng S là cái bể chứa  Theo dõi gợi ý nước, các số hạng là cái ca có dung tích khác nhau, đó việc tính tổng trên tương tự việc đổ các ca nước vào bể chứa S  Phải thực 100 lần đổ nước  Có bao nhiêu lần đổ nước vào  Mỗi lần đổ lượng thùng? a+i  Mỗi lần đổ lượng là bao  Phải viết 100 lệnh nhiêu? lần thứ i đổ bao nhiêu?  Phải viết bao nhiêu lệnh?  Tập trung theo dõi giáo viên Nêu bài toán đặt vấn đề trình bày bài toán tổng_2  Tương tự vậy, ta xem việc tính tổng này công việc đổ nước vào bể chứa S  N không xác định  Ta phải thực tính bao nhiêu lần đổ vậy?  Rỏ ràng ta không xác định NỘI DUNG CẤU TRÚC LẶP Lặp: Xét bài toán sau: * Bài toán số 1: Tính và đưa màn hình tổng 1 1 S= + + + + a a+1 a+2 a+ 100 * Nhận xét: Lặp với số lần biết trước (100) và việc cộng vào tổng S kết thúc đã thực việc cộng 100 lần Ta có: S0  a S1 S0  a 1 S S1  a2 … S100 S99  a  100 * Bài toán 2: Tính và đưa màn hình tổng (41) 1 1 S= + + + + + a a+1 a+2 a+ N Nhận xét: Đây là dạng lặp không xác định và công việc cộng vào tổng S kết thúc điều kiện ( < , 0001 ) thỏa mãn a+ N số lần ta đổ, vì ta không xác định lần đổ thứ bao nhiêu để lượng nước ca nhỏ 1000 đơn vị  Dẫn dắt: Chương trình viết dài, khó đọc và dễ sai sót Cần có cấu trúc điều khiển việc lặp lại thực các công việc trên  Trong tất các ngôn ngữ lập trình có cấu trúc điều khiển việc thực lặp lại với số lần đã định trước Chia lớp làm nhóm nhóm viết thuật toán giải bài toán  Thảo luận theo nhóm để viết thuật toán: Bước 1: N  0; S  1/a; Bước 2: N  N+1; Bước 3: Nếu N > 100 thì chuyển đến bước Bước 4: S  S+ 1/(a+N), quay lại bước Bước 5: Đưa S màn hình kết thúc  Thông báo kết viết  Thu kết quả, chiếu kết lên  Nhận xét, đánh giá kết bảng Gọi học sinh nhóm khác nhóm khác nhận xét đánh giá  Theo dõi và ghi nhớ * Tóm lại: Cấu trúc lặp mô tả thao tác lặp và có hai dạng là lặp với số lần biết trước và lặp với số lần chưa biết trước  Chuẩn hóa lại thuật toán cho học sinh lần cuối Kiểm tra bài cũ: Cho phương trình ax 2+ bx +c=0 (a ≠ 0) với Delta = b*b – 4*a*c, sử dụng cấu trúc If Then dể tìm nghiệm phương trình trên? Hoạt động 2: Tìm hiểu lệnh lặp For Do ngôn ngữ lập trình Pascal Yêu cầu học sinh nghiên cứu  Đọc sách giáo khoa và trả lời Lặp với số lần biết trước và câu sách giáo khoa và cho biết cấu FOR <biến đếm>:=<Giá trị lệnh FOR – DO: trúc chung For? đầu> TO <Giá trị cuối> DO * Dạng lặp tiến: + Cấu trúc: <Câu lệnh> FOR<biến đếm>:= <giá trị đầu> TO<giá trị cuối> DO <câu lệnh>; + Sơ đồ nguyên lí:  Giải thích: <biến đếm>: là biến kiểu nguyên, ký tự  Ý nghĩa <Giá trị đầu> <Giá trị cuối>, kiểu liệu chúng?  Trong bài toán tính tổng_1a <Giá trị đầu> <Giá trị cuối> là bao nhiêu?  Dẫn dắt: Những lệnh nào cần lặp lại ta đặt sau DO  Khi nhiều lệnh khác cần lặp lại ta viết nào?  Dùng để làm giới hạn cho biến đếm  Cùng kiểu với <biến đếm>  <Giá trị đầu> là  <Giá trị cuối> là 100  Phải sử dụng cấu trúc lệnh ghép Begin end; + VD: Bài toán 1a  Trong bài toán tính tổng, lệnh  S := S + ; ………………… a+i nào cần lặp lại?  <Giá trị đầu> nhỏ <Giá trị S:=1.0/a; FOR N:=1 TO 100 DO  Em có nhận xét gì giá trị cuối> S:=S+1.0/(a+N); (42) <Giá trị đầu> và <Giá trị cuối> ? …………………  Dẫn dắt: Khi đó lệnh For  Nghiên cứu sách giáo khoa, suy * Dạng lặp lùi: gọi là For tiến Ngôn ngữ lập nghĩ, so sánh với cấu trúc For + Cấu trúc: trình Pascal còn có dạng For tiến để trả lời khác gọi là For lùi  Yêu cầu: Hãy trình bày cấu trúc Sơ đồ nguyên chung For lùi FOR <biến đếm>:= <giá trị cuối> +DOWNTO <giálí:trị đầu> DO <câu lệnh>;  So sánh <Giá trị đầu> và <Giá trị cuối>?  Trong hai bài toán trên, dạng lệnh For nào là phù hợp?  <Giá trị đầu> lớn <Giá trị cuối>  Sử dụng dạng For tiến là phù hợp + VD: Bài toán 1b: ………………… S:=1.0/a; FOR N:=100 DOWNTO DO S:=S+1.0/(a+N);  Chú ý: Trong vòng lặp không chứa lệnh làm thay đổi giá trị biến điều khiển  HS chú ý Hoạt động 3: Rèn luyện kĩ vận dụng lệnh lặp For  Nêu nội dung bài toán Mục  Chú ý lắng nghe và trả lời các tiêu là xác định việc yêu cầu giáo viên chính cần làm  Giá trị đầu là 1, giá trị cuối là + Xác định giá trị đầu, giá trị 100 ………………… - Trong đó: + Biến đếm là biến đơn, thường có kiểu nguyên và kí tự (‘a’… ‘z’ ) + Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm và giá trị đầu phải nhỏ giá trị cuối - Hoạt động lệnh FOR-DO + Dạng lặp tiến: câu lệnh viết sau từ khóa DO thực tuần tự, với biến đếm nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối + Dạng lặp lùi: câu lệnh viết sau từ khóa DO thực tuần tự, với biến đếm nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu - Chú ý: Câu lệnh viết sau DO không thay đổi giá trị biến đếm Ví dụ: (SGK – P 44) Chương trình tính và đưa màn hình tổng các số chia hết cho phạm vi từ M đến N (43) cuối + Xác định lệnh cần lặp lại  Yêu cầu học sinh tiếp tục hoàn thành chương trình nhà  Nêu nội dung bài toán 2, mục tiêu là viết chương trình hoàn thiện  Định hướng vấn đề chính  Chia lớp làm nhóm Yêu cầu học sinh viết chương trình lên bảng  Chính xác hoá bài làm học sinh chương tình mẫu ; a+i Program Vi_du2; Uses crt; Var M,N,i:integer; T: longint; Begin Clrscr; Writeln(‘Nhap so M nho hon  Chú ý lắng nghe nội dung và N’); yêu cầu Write(‘M = ’); readln(M); Write(‘N = ’); readln(N);  Cùng thảo luận và viết chương T:= 0; For i:=M to N trình theo nhóm If(imod3=0)or(imod5=0) then T:=T+i;  Quan sát chương trình giáo viên Writeln(‘Ket qua:’,T); hướng dẫn và ghi nhớ Readln End S := S + IV ĐÁNH GIÁ CUỐI BÀI Những nội dung đã học - Cấu trúc chung lệnh lặp For Sơ đồ thực lệnh lặp For Câu hỏi và bài tập nhà - Giải bài tập 5.a, 6, sách giáo khoa, trang 51 - Xem trước phần nội dung cấu trúc lặp có số lần chưa xác định While - Xem nội dung phụ lục B, sách giáo khoa trang 131: Lệnh rẽ nhánh và lặp - Xem nội dung phụ lục C, sách giáo khoa trang 139: Lệnh rẽ nhánh và lặp HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS NỘI DUNG Hoạt động 4: Hình thành câu lệnh while-do  Có thể xây dựng thuật toán  HS lắng nghe Lặp với số lần chưa biết trước và câu lệnh While – Tổng sau để giải bài toán * Bài toán Tổng_2: Tính và đưa màn hình  GV trình bày 1 1 S      B1: S 1/a; N  0; a a 1 a  aN tổng cho B2: Nếu 1/(a+N)<0.0001 thì đến 1/(a+N) < 0.0001 chuyển đến B5 ; + Phân tích bài toán: B3: N  N+1; - Khởi tạo tổng ban đầu S = 1/a; N = 0; B4: S  S+1/(a+N); - Mỗi xét điều kiện 1/(a+N)<0.0001, B5: Đưa S màn hình kết còn sai thì tổng S tăng thêm lượng 1/ thúc (a+N) với N = N +1 tăng đơn vị sau lần xét điều kiện Nếu điều kiện đúng thì bài toán  Theo thuật toán việc lặp lại số  HS trả lời kết thúc lần chưa biết trước có kết * Như vậy, việc lặp lại số lần chưa biết trước thúc không? kết thúc điều kiện cho trước thỏa mãn  Để mô tả cấu trúc lặp + Cấu trúc lặp While-do: Trong Pascal để vậy, Pascal dùng câu lệnh mô tả tính lặp trên, người ta đưa cấu while-do có dạng: trúc sau: While <điều kiện> <câu lệnh>; (Hình SGK)  Học sinh xem sơ đồ (hình Trong đó: 7) - Điều kiện là biểu thức logic; - Câu lệnh là câu lệnh đơn lệnh ghép  HS lắng nghe + Sơ đồ nguyên lí: (44)  Sơ đồ khối thuật toán Tong_2 + Nhận xét cấu trúc lặp While – do: - Khi vào lệnh lặp, điều kiện kiểm tra Nếu đúng thì thực công việc, sau đó quay lại kiểm tra điều kiện, điều kiện sai thì kết thúc vòng lặp - Trong lệnh lặp While – do, cần có lệnh thay đổi giá trị biến điều khiển * Ví dụ 1: Chương trình cài đặt thuật toán Tong_2: Program Tong_2; Uses crt; Var S:real; a,N:integer; Begin Write(‘Hay nhap gia tri a vao:’); Readln(a); S:=1.0/a; N:=0; While not (1/(a+N)<0.0001)do Begin N:=N+1; S:=S+1.0/(a+N); End; Writeln(‘Tong S la:’,S:8:4); Readln End  Hãy xây dựng thuật toán tìm  Nhóm trình bày kết UCLN (đã học lớp 10)  GV nhận xét và hoàn chỉnh HS trình bày chương trình * Ví dụ 2: Tìm ước chung lớn số nguyên M, N Program UCLN; Uses crt; Var M,N:integer; Begin Clrscr; Write(‘M,N=’); readln(M,N); While M<>N If M>N then M:=M-N else N:=N-M; Writeln(‘UCLN=’,M); Readln End Hoạt động 2: Cũng cố, dặn dò  Nhắc lại số khái niệm  Nhắc lại cấu trúc câu lệnh  Bài tập nhà Ngày soạn: 13/11/2013 – Tuần 21 (tiết 23) (45) CÂU HỎI VÀ BÀI TẬP CÂU HỎI VÀ BÀI TẬP Câu 1: Có thể dùng câu lênh while – để thay cho câu lệnh for – không? Nếu được, hãy thực điều đó với chương trình Tong_1a Program tong1a; Uses crt; Var S: real; a, N: integer; begin clrscr; write('Nhap a: ');readln(a); S:=1.0/a; N:=1; While n<=100 Begin S:=S+1.0/ (a+N); N:=N+1; End; Writeln('Tong S la: ',S:8:4); Readln End Câu 4: Viết câu lệnh rẽ nhánh tính:  x  y neáu x2  y 1  z  x  y neáu x  y  vaø y x 0,5 neáu x  y  vaø y < x  a) program bai4a; uses crt; var x, y, z:real; begin clrscr; write('nhap hai so x va y: ');readln(x,y); if x*x+y*y<=1 then begin z:=(x*x+y*y); writeln('tong can tim: ',z:9); end; if (x*x+y*y>1) and (y>=x) then begin z:=(x+y); writeln('tong can tim: ',z:9); end; if (x*x+y*y>1) and (y<x) then begin z:=0.5; writeln('tong can tim: ',z); end; readln end Giới thiệu có thời gian b)  x  y neáu ñieåm (x,y) thuoäc hình troøn baùn kính r (r > 0), taâm (a,b)  z   x  y trường hợp còn lại Program bai4b; Uses crt; Giới thiệu có thời gian (46) Var x, y, z, a, b, r:real; Begin Clrscr; write('Nhap x: ');readln(x); write('Nhap y: ');readln(y); write('Nhap toa tam hinh tron: '); readln(a,b); write('Nhap ban kinh r: ');readln(r); if sqrt(sqr(x-a)+sqr(x-b))<r then begin z:=abs(x)+abs(y); writeln('Z= ',z:3:3); end; else begin z:= x + y; writeln(‘z = ’, z:3:3); end; readln end Câu 5: Lập trình tính: 50 n Y  n 1 n  a) Program bai5a; Uses crt; Const n=50; Var i: integer; Y:real; Begin Clrscr; Y:=0; for i:=1 to n Y:=Y+i/(i+1); Write('Tong Y: ',y:9:3); Readln End b) e( n) 1  1 1       2.10 1! 2! 3! n! n! Đưa giá trị e(n) màn hình program bai5b; uses crt; var n:longint; e,sh:real; begin clrscr; sh:=1/2; n:=2; e:=2+sh; while sh>=2e-6 begin n:=n+1; sh:=sh*(1/n); e:=e+sh; end; writeln('Gia tri e(n) la: ',e:10:6); (47) readln end Ngày soạn: 13/11/2013 – Tuần 22 (tiết 24) CÂU HỎI VÀ BÀI TẬP Câu (SGK Tr 51) Lập trình để giải bài toán cổ sau: Vừa gà vừa chó Bó lại cho tròn Ba mươi sáu Một trăm chân chẵn Hỏi có bao nhiêu loại?  Chương trình thực hiện: program Bai6; uses crt; var x, y:byte; begin clrscr; for x:=1 to 36 for y:=0 to 20 if (x+y=36) and (2*x+4*y=100) then begin writeln('Co',x,' Ga'); write('Co ',y,' Cho'); end; readln end Bài (SGK Tr 51) Nhập từ bàn phím tuổi cha và (hiện tuổi cha lớn hai lần tuổi và tuổi cha tuổi ít là 25) Đưa màn hình câu trả lời cho câu hỏi “Bao nhiêu năm thì tuổi cha gấp đôi tuổi ?”  Chương trình thực hiện: program Bai7; uses crt; var b, c, n:byte; begin clrscr; repeat write('Nhap tuoi cha: ');readln(b); write('Nhap tuoi con: ');readln(c); if (b-c<25) or (b<2*c) then writeln('Du lieu khong hop le,nhap lai.'); until (b-c>=25) and (b>=2*c); if b=2*c then writeln('Hien tuoi cha gap hai lan tuoi con.') else if b>2*c then writeln('Sau ',b-2*c,' nam tuoi cha se gap doi tuoi con'); readln end Bài (SGK Tr 51) Một người gửi tiết kiệm không kì hạn với số tiền A đồng với lãi suất 0,3% tháng (48) Hỏi sau bao nhiêu tháng, người đó rút hết tiền thì nhận số tiền ít là B đồng? Biết với việc gửi tiết kiệm không kì hạn thì lãi không cộng vào vốn  Chương trình thực hiện: program Bai8; uses crt; var A, B, St, Luu :real; n:byte; begin clrscr; write('Nhap so tien gui: ');readln(a); write('Nhap so tien nhan: ');readln(b); luu:=A; n:=0; st:=a; while St<=B begin St:=St+luu*0.003; n:=n+1; end; writeln('So thang can la: ',n); readln end (49) Ngày soạn: 20/01/2014 – Tuần 22, 23 (tiết 25, 26, 27) CHƯƠNG IV KIỂU DỮ LIỆU CÓ CẤU TRÚC BÀI 11 KIỂU MẢNG I Mục tiêu: - Về kiến thức: + Nắm khái niệm mảng chiều + Nắm quy tắc mà NNLT xây dựng và sử dụng mảng chiều - Về kỹ năng: + Nhận biết các thành phần khai báo kiểu mảng chiều + Nhận biết định danh phần tử kiểu mảng chiều xuất chương trình + Biết cách khai báo mảng đơn giản và số kiểu miền kiểu nguyên - Về tư duy, thái độ: + Có tư đúng đắn việc áp dụng mảng chiều để giải các bài toán đơn giản II Chuẩn bị GV, HS: + Giáo viên: SGK, SBT, SGV, tranh sơ đồ + Học sinh: SGV, SBT III Phương pháp: Trực quan, thuyết trình kết hợp với hỏi - đáp IV Tiến trình bài học: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Tìm hiểu cần thiết chương IV (Kiểu liệu có cấu trúc) và định nghĩa mảng chiều  Trả lời  Nhắc lại kiểu Bài11 KIỂU MẢNG Kiểu mảng chiều: liệu đã học? - Xét ví dụ:  GV nêu lên cần thiết phải có kiểu liệu có cấu Nhập vào nhiệt độ trung bình ngày tuần, tính và đưa màn hình nhiệt độ trúc  Tìm hiểu mảng trung bình tuần và số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình chiều  Trả lời  Hãy trình bày ý tưởng để tuần Giải: giải bài toán trên  Ta có thể viết chương Program nhdo; trình NN Pascal Var t2,t3,t4,t5,t6,t7,cn,tb:real; sau: d : integer; Begin Writeln('Nhap vao nhiet cua cac thu tuan'); Readln(t1,t2,t3,t4,t5,t6,t7,cn); tb:= (t2+t3+t4+t5+t6+t7+cn)/7; d := 0; If t2>tb then d:=d+1; If t3>tb then d:=d+1; If t4>tb then d:=d+1; If t5>tb then d:=d+1; If t6>tb then d:=d+1; If t7>tb then d:=d+1; If cn>tb then d:=d+1; Writeln('Nhiet trung binh tuan: ', tb:5:2); Writeln('So nhiet cao hon (50) nhiet trung binh la: ',d); Readln End Dùng mảng chiều: Program nhiet_do; Const max = 20; Type nh_do = array[1 max] of real;  Nếu ta viết mảng Var a:nh_do; chiều: d, i, n: byte; t, tb: real; Begin Writeln('Nhap so ngay: '); Readln(n); t:=0; d:=0; For i:=1 to n Begin Writeln('Nhap vao nhiet cua thu ',i,':'); Readln(a[i]); t:=t+a[i]; End; tb:=t/n; For i:=1 to n If a[i]>tb then d:=d+1; Writeln('Nhiet trung binh tuan: ',tb:5:2); Writeln('So nhiet cao hon  So sánh chương trình nhiet trung binh la: ',d); trên Readln  Thế nào là mảng chiều? End a/ Định nghĩa: Mảng chiều là dãy hữu hạn các phần tử cùng kiểu Hoạt động 2: Tìm hiểu cách khai báo mảng chiều (TIẾT 26)  Theo dõi SGK và trả lời  Có cách để khai báo b/Khai báo: Cách 1: Khai báo trực tiếp: mảng chiều? Var <tên biến mảng>:array[kiểu số]of <kiểu phần tử>; Cách 2: Khai báo gián tiếp Type <tên kiểu mảng>=array[kiểu số]of<kiểu phần tử>; Var <tên biến mảng>:<tên kiểu mảng>;  Lên bảng Chỉ số phần tử  Hãy khai báo mảng ví dụ trên cách khai báo trực tiếp  Để tham chiếu đến nhiệt độ thứ ta viết a[2]  Hình ảnh mảng chiều nhớ: 99 100 … a[i] a[1] * Trong đó: + Kiểu số thường là đoạn số nguyên liên tục có dạng n1 n2 (n1<n2)(n1, n2 là các biểu thức) + Kiểu phần tử là kiểu liệu các phần tử mảng * Tham chiếu đến giá trị phần tử mảng: Việc tham chiếu tới phần tử mảng chiều xác định tên mảng cùng với số, viết cặp ngoặc [] Ví dụ: Ta có mảng a gồm 100 phần tử nguyên, việc tham chiếu tới phần tử thứ i viết sau: a[i] a[i] có giá trị phần tử thứ i mảng (51)  Mỗi phần tử mảng truy xuất thông qua Tên biến mảng cùng với số mảng dấu ngoặc vuông [] * Ví dụ khác: Dùng mảng có kiểu phần tử là nguyên để biểu diễn dãy hữu hạn N số nguyên, cách khai báo mảng này sau: + Gián tiếp: Const N := 100; Type MANG = Array[1 N]of integer; Var a: MANG; + Trực tiếp: Const N:= 100; Var a: Array[1 N]of integer; * Chú ý: Vùng nhớ cấp phát cho liệu môđun chương trình Pascal tối đa là 64 KB Hoạt động 3: Củng cố - Thế nào là mảng chiều? - Cách khai báo biến mảng Hoạt động 4: Bài tập nhà: Nhập vào dãy số và in màn hình số chẳn BÀI 11 KIỂU MẢNG (tiết 27) I Mục Tiêu: 1)Về kiến thức: Thể các thuật toán tìm kiếm và xếp: xếp dãy số nguyên phương pháp trao đổi và tìm kiếm nhị phân 2)Về kỹ : Biết cách sử dụng mảng chiều chương trình thể các thuật toán trên 3)Về tư thái độ : + Ý thức rèn luyện kỹ các thao tác trên kiểu liệu có cấu trúc + Hứng thú tìm hiểu các thuật toán thường gặp trên các mô hình liệu II Chuẩn bị giáo viên và học sinh: 1) Về giáo viên: Chuẩn bị số bài tập liên quan đến tìm kiếm và xếp mảng chiều 2) Về học sinh: Xem lại thuật toán đã học lớp 10 (Tìm GTLN dãy số nguyên, xếp trao đổi và tìm kiếm nhị phân) III Phương pháp : gợi mở IV Tiến trình bài học : 1) Kiểm tra bài cũ (10ph) Trình bày thao tác nhập, xuất mảng chiều 2) Nội dung bài : HOẠT ĐỘNG CỦA GV Hoạt động 1: Vidụ  Giáo viên hướng dẫn lại thuật toán tìm phần tử lớn dãy số nguyên đã học lớp 10  Xác định input và output bài toán: * Input: Số nguyên N (N  250) và dãy N số nguyên a1 , a2 , , aN * Output: Chỉ số và giá trị phần tử lớn  Treo bảng phụ thuật toán này  Nếu dùng lệnh Pascal để thực bước HOẠT ĐỘNG CỦA HS PHẦN TRÌNH BÀY c) Một số ví dụ: Vidụ 1: Tìm phần tử lớn dãy số nguyên  Xem SGK và suy nghĩ các bước liệt kê Bước 1: Nhập N và dãy a1 , , aN ;  Cấu trúc mảng và cấu trúc lặp xác định a Bước 2: Max  ,i  2; Bước 3: Nếu i > N thì đưa Program TimMax; Uses crt; Const Nmax = 250; Type TIMMAX = array[1 Nmax]of integer; Var N,i,Max,csMax: integer; A: TIMMAX; Begin Clrscr; Write(‘Nhap so lương phan tu cua day, N=’); readln(N); For i:=1 to N Begin Write(‘phan tu thu’,i,’=’); readln(A[i]); (52) 1, ta sử dụng cấu trúc nào để nhập phần tử dãy?  Ta sử dụng cấu trúc For – để duyệt hết tất các phần tử dãy, và i > N thì vòng lặp For thoát khỏi lặp, và kết thúc thuật toán End; Max:= A[i]; csMax:=1; For i:=2 to N If A[i]>Max then begin Max  ; Max:=A[i]; csMax:=i; 4.2: i  i  quay lại End; Writeln(‘Gia tri Max:’,Max); bước 3; Writeln(‘Chi so Max’,csMax); Readln End giá trị Max kết thúc; Bước 4: 4.1: Nếu  Max thì Hoạt động2: Vidụ  Nhắc lại thuật toán tráo đổi đã học lớp 10  Giáo viên giải thích các câu lệnh chương trình cài đặt TR 57 SGK  Thuật toán xếp tráo đổi: Bước 1: Nhập N, các số hạng a1 , a2 , , aN Bước 2: M  N; Bước 3: Nếu M < thì đưa dãy A đã xếp kết thúc; Bước 4: M  M  1, i  0; Bước 5: i  i 1; Bước 6: Nếu i > M thì quay lại B3; Bước 7: Nếu  1 thì tráo đổi và ai+1 cho nhau; Bước 8: Quay lại B5 Ví dụ : Sắp xếp dãy số nguyên thuật toán tráo đổi Chương trình thực hiện: Program sapxep; Uses crt; Const Nmax = 250; Type Mang1chieu = array[1 Nmax]of integer; Var N,i,j,t:integer; A:Mang1chieu; Begin Clrscr; Write(‘Nhap so luong phan tu cua day, N=’); Readln(N); For i:=1 to N Begin Write(‘Phan tu thu ’,i); Readln(A[i]); End; For j:=N donwnto For i:=1 to j-1 If A[i]>A[i+1] then Begin T:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; End; Writeln(‘Day so duoc sap xep la:’); For i:=1 to N write(A[i]:4); Readln End III.Củng cố: Nhắc lại kiểu mảng, bài toán tìm kiếm, xếp IV.Bài tập nhà: Yêu cầu học sinh chạy thử chương trình xếp phương pháp tráo đổi bài tập SGK trang 58 (53) Ngày soạn: 20/01/2014 – Tuần 24 (tiết 28, 29) BÀI TẬP VÀ THỰC HÀNH SỐ I Mục tiêu: 1.Kiến thức: - Củng cố lại kiến thức kiểu liệu mảng, cụ thể là mảng chiều.Qua đó cung cấp cho học sinh các thuật toán thường gặp với kiểu liệu mảng 2.Kĩ năng: - Rèn luyện cho học sinh số kĩ làm việc với mảng như: + Khai báo kiểu liệu mảng chiều, + Nhập/ xuất liệu, + Duyệt qua các phần tử mảng, - Qua đó giúp học sinh biết cách giải số bài toán thường gặp như: + Tính tổng các phần tử thoả mãn điều kiện nào đó, + Đếm số các phần tử thoả mãn điều kiện nào đó, + Tìm phần tử lớn nhất/bé mảng và vị trí nó Thái độ: - Rèn luyện tác phong, tư lập trình, tự giác, tích cực, chủ động và sáng tạo tìm kiếm kiến thức II Chuẩn bị giáo viên và học sinh: Giáo viên: + Phòng máy vi tính, + Một số chương trình cài sẵn USB đĩa mềm, + Máy chiếu bảng phụ, 2.Học sinh: + Học bài cũ, + Đọc trước bài nhà III Phương pháp: - Trình chiếu kết hợp đàm thoại - Hướng dẫn học sinh các bước thực số chương trình IV Tiến trình bài dạy: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY 1.Hoạt động 1: Kiểm tra bài cũ Câu hỏi: Có cách khai báo mảng chiều? Cho ví dụ Có hai cách khai báo:  Lắng nghe câu hỏi  Nêu câu hỏi a/Khai báo trực tiếp:  Học sinh trả lời câu hỏi Cả lớp  Gọi học sinh lên trả lời theo dõi, nhận xét  Giáo viên nhận xét, cho điểm Var<tên biến mảng>: array [ kiểu số ] of < kiểu phần tử>; b/ Khai báo gián tiếp Type < tên kiểu mảng > : array [ kiểu số ] of < kiểu phần tử>; Var < tên biến mảng >: < tên kiểu mảng >; 2.Hoạt động 2: Bài tập số SGK P.63  Treo bảng phụ có nội dung bài số Bài 1a SGK Trang 63 1/HĐTP1: Quan sát bảng phụ 1a) SGK P.63 (có thể sử dụng máy chiếu ) Sau đó đặt câu hỏi cho học  Lắng nghe câu hỏi và trả lời sinh trả lời  Khai báo uses CRT; có ý nghĩa - Khai báo thư viện chương trình CRT để sử dụng thủ tục gì? (54) Clrscr;  Myarray là tên kiểu liệu hay - Myarray : tên kiểu liệu - nmax: số phần tử tối đa có thể tên biến?  Vai trò nmax và n có gì khác chứa biến mảng a, - n: số phần tử thực tế a - randomize là thủ tục khỏi tạo  Những dòng lệnh nào dùng để tạo chế sinh số ngẫu nhiên - Random(n): cho số ngẫu nhiên từ biến mảng a?  Theo dõi để nắm hàm Random đến n-1  Giáo viên giới thiệu hàm Khi đó Random cho học sinh Sau đó đặt a[i]:=Random(300)– Random(300)  Câu lệnh cho số ngẫu nhiên có câu hỏi: giá trị từ -299 đến 299  a[i] := Random(300) – Random sinh các số ngẫu nhiên phạm vi từ -299 đến 299 (300) có ý nghĩa gì?  Câu lệnh in màn hình giá trị tất  Lệnh for i:=1 to n các phần tử mảng Write ( a[i] : 5); - Lệnh for i:=1 to n Có ý nghĩa gì? Write ( a[i] : 5); Sẽ  Cộng tất các phần tử chia hết  Lệnh For- cuối cùng thực ghi n số ngẫu nhiên cho k nhiệm vụ gì?  Số lần thực lệnh gán đúng Lệnh gán s := s + a[i]; thực số phần tử mảng chia hết bao nhiêu lần? cho k  Thực lại chương trình lần Bài 1b Trang 64  Theo dõi kết chạy thử cuối để học sinh thấy kết Chương trình đưa số các số dương và số các số âm ngẫu nhiên chương trình  Treo bảng phụ câu b) bài tập mảng Program bai1b; Uses crt; SGK P.64 Const nmax = 100; Hỏi HS: Var a:array[1 nmax]of 2/HĐTP2: Sửa chương trính câu  Ý nghĩa biến posi và neg? integer; a/ để chương trình giải  Chức lệnh: Posi,neg,i,n: integer; bài toán câu b/ If a[i] > then Begin Clrscr; Randomize; posi := posi +1;  Quan sát bảng phụ, theo dõi và Write(‘Nhap n = ’); else if a[i] < then Readln(n); trả lời các câu hỏi GV nhau? neg := neg +1; là gì?  Hướng dẫn học sinh thêm vào  Nếu a[i] > thì cộng a[i] vào vị trí cần thiết để chương trình posi; ngược lại a[i] < thì đếm số lượng các số âm và các số dương cộng a[i] vào neg  Quan sát các lệnh và suy nghĩ vị trí cần sửa chương trình câu  Chạy thử chưong trình để học a/ sinh theo dõi kết  Theo dõi kết chạy chương trình 3.Hoạt động 3: Bài tập số SGK 64 1/HĐTP1: Đưa ví dụ cụ thể Ví dụ: Cho mảng gồm phần tử: Tìm phần tử có giá trị lớn và vị trí nó mảng ( số thứ tự )  Gợi ý, hướng dẫn học sinh thuật toán tìm phần tử lớn và vị trí  Theo dõi, suy nghĩ để nắm thuật nó (kết hợp làm thủ công) For i:=1 to n a[i]:=random(300)random(300); For i:= to n write(a[i]:5); Writeln; Posi:=0; neg:=0; If a[i]>0 then posi:=posi+1; Else if a[i]<0 then neg:=neg+1; Writeln(posi:4,neg:4); Readln End +posi: đếm số dương mảng +neg: đếm các số âm mảng (55)  Cho học sinh đọc đoạn chương j:=1; For i:=2 to n trình bài P.64 SGK If a[i] > a[j] then Hỏi HS: j:=i;  Nếu muốn tìm phần tử nhỏ thì cần sửa chỗ nào? Sau kết thúc:  Đọc đoạn chương trình sgk Liên  Nếu muốn tìm phần tử lớn + Giá trị lớn là a[j] hệ trả lời các câu hỏi mà GV nêu với số lớn nó thì ta + Vị trí cần tìm j sửa ổ chỗ nào?  Sửa a[i] > a[j]; thành a[i] < a[j] ;  Chạy thử chưong trình cho học sinh theo dõi  Sửa a[i] > a[j]; thành a[i] >= a[j];  Theo dõi học sinh thực 2/HĐTP2: chương trình và xem kết  Theo dõi GV chạy chương trình và làm lại trên máy tính Hoạt động 4: Củng cố - Nhắc lại cho học sinh số kiến thức về: + Tính tổng các phần tử các phần tử thoả mãn điều kiện nào đó + Đếm số các phần tử thoả mãn điều kiện nào đó + Tìm phần tử lớn nhất/ bé Bài tập nhà - Viết chương trình nhập mảng chiều, đếm số phần tử nhỏ số k nào đó toán Ngày soạn: 20/01/2014 – Tuần 25 (tiết 30, 31) BÀI TẬP VÀ THỰC HÀNH SỐ I Mục tiêu Kiến thức - Củng cố kiến thức liệu kiểu mảng - Xây dựng cấu trúc liệu, hiểu thuật toán xếp tráo đổi Kĩ - Biết chỉnh sữa lỗi chương trình - Tự nhập các liệu để hiểu ý nghĩa số câu lệnh Thái độ - Nghiêm túc thực đúng nội quy phòng máy, tự giác lập trình II.Chuẩn bị - GV: Bảng phụ viết sẵn chương trình, phòng máy, projecter - HV: SGK, CT đã viết sẵn III Phương pháp IV Tiến hành dạy học Hoạt động 1: Nhắc lại kiến thức đã học liên quan bài thực hành HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Nhắc lại kiến thức đã học liên quan bài thực hành Hỏi 1: Nêu cách khai báo kiểu mảng chiều  TL: có cách + Gián tiếp: + Trực tiếp: Hỏi 2: Nhập từ bàn phím xây dựng mảng  TL: For i:= to chiều A có phần tử Begin Writeln(‘Nhap phan tu thu’,i,‘=’); (56) Readln(A[i]); End; Hoạt động 2: Xác định bài toán và tìm hiểu chương trình Quan sát đề và lằng nghe câu Chiếu đề bài lên bảng Bài Chương trình thực hỏi giáo viên thuật toán xếp dãy số nguyên Trả lời câu hỏi Xác định bài toán thuật toán tráo đổi với các giá - Vào: mảng A  Yêu cầu học sinh xác định trị khác n số - Ra: mảng A đã xếp liệu vào/ra bài toán? - Thủ tục random sinh Theo dãy số minh họa, nhớ lại GV minh họa bài toán: các số nguyên ngẫu nhiên thuật toán xếp đã học A - Hai vòng lặp for - j=N duyệt mảng, kiểm tra và i 6  Quan sát, đối chiếu thuật toán liệt kê với CT (SGK) Xem CT và tìm hiểu số Mảng A đã xếp: biến, lệnh  i dùng làm biến số A  lệnh t := a[i];  Nhắc lại thuật toán a[i]:= a[i+1]; a[i+1]:= t; Tìm hiểu chương trình Thực tráo đổi giá trị phần tử  Đoạn lệnh nào thực tráo đổi liên tiếp mảng  Chú ý, lắng nghe, quan sát và ghi giá trị phần tử liền kề mảng?  Treo bảng CT chuẩn bị sẵn nhớ Hoạt động 4: Xác định bài toán câu b Xác định bài toán: Xác định bài toán + Input: mảng a;  Yêu cầu học sinh xác I/O bài + Output: mảng a đã xếp, số toán? lần tráo đổi (Dem);  Khi A[i] > A[i+1] (tức là biểu  Biến Dem tăng lên nào? thức điều kiện lệnh If đúng)  Cần đưa câu lệnh tăng Dem vào  Sau then: Cần đưa câu lệnh vị trí nào CT trên? dem:=dem+1; trước sau  Câu lệnh khởi tạo Dem:= lệnh tráo đổi  Biến Dem:= 0; phải đặt trước đặt vào vị trí nào CT? vòng lặp for -  Câu lệnh đưa màn hình số lần tráo đổi đặt vị trí nào  Câu lệnh Write(‘so lan thuc hien traodoi:’,dem); CT? Được đặt sau câu lệnh Write(a[i]:7); Hoạt động 6: Củng cố - Thuật toán xếp tráo đổi - Đếm số lần tráo đổi Hoạt động 7: Bài tập nhà - Tìm thêm các thuật toán xếp khác tối ưu xếp for j:=N downto For i:=1 to j-1 If a[i]>a[i+1] then Begin t:= a[i]; a[i]:=a[i+1]; a[i+1]:= t; End; - Đưa kết mảng đã xếp For i:=1 to n Write(a[i]:7); t:= a[i]; a[i]:=a[i+1]; a[i+1]:= t; Bài 1b Khai báo biến đếm nguyên Dem và bổ sung vào chương trình câu lệnh cần thiết để biến Dem tính số lần tráo đổi chương trình … Dem:=0; For j:=N downto For i:=1 to j-1 If a[i]>a[i+1] then Begin t:= a[i]; a[i]:=a[i+1]; a[i+1]:= t; Dem:=dem+1; End; For i:=1 to n Write(a[i]:7); Write(‘so lan thuc hien trao doi:’,dem); … (57) - Cho mảng A và mảng B (là mảng A đã xếp) Hãy in số các phần tử mảng A theo mảng B Ngày soạn: 20/01/2014 – Tuần 26 (tiết 32, 33) KIỂU XÂU I.Mục tiêu Về kiến thức - Biết kiểu dự liệu mới, biết khái niệm kiểu xâu - Phân biệt giống và khác kiểu mảng với kiểu xâu - Biết cách khai báo biến, nhập/xuất liệu, tham chiếu đến kí tự xâu - Biết các phép toán liên quan đến xâu Về kĩ - Khai báo biến kiểu xâu ngôn ngữ lập trình Pascal - Sử dụng biến xâu và các phép toán trên xâu để giải bài toán đơn giản II Chuẩn bị GV và HS GV: Máy vi tính, Máy chiếu để giới thiệu ví dụ HSSGK III Phương pháp Thuyết trình, vấn đáp IV Tiến trình bài học HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Hoạt động 1: Tìm hiểu kiểu liệu xâu  Quan sát  Giáo viên treo bảng phụ hình ảnh minh họa hai mảng A, B  Mảng A: Và mảng B: P A S C A L  Các phần tử mảng A có kiểu số nguyên  Dữ liệu mảng A có kiểu  Không Các phần tử mảng B liệu là gì? có kiểu kí tự (char)  Dữ liệu mảng B có phải là liệu kiểu số hay không?  Như liệu các bài toán không thuộc kiểu số mà kiểu phi số - kiểu kí tự Hoạt động 2: Khai báo liệu kiểu xâu và các thao tác xử lí xâu  Trả lời PHẦN TRÌNH BÀY BÀI 12 KIỂU XÂU * Định nghĩa: Xâu là dãy các kí tự mã ASCII, kí tự gọi là phần tử xâu * Ví dụ: ‘In formation’, ‘Turbo Pascal’, ’lop 10A1’,… * Các đặc điểm: - Số lượng kí tự xâu gọi là độ dài xâu (kể kí tự trống) - Xâu có độ dài gọi là xâu rỗng - Có thể xem xâu là mảng chiều mà phần tử là kí tự Khai báo: Var<tên biến>:string[độ dài lớn xâu]; * Ví dụ:  Độ dài lớn xâu là bao  26 nhiêu?  Các phép toán trên liệu  Hãy nhắc lại các phép toán đã học trên kiểu liệu chuẩn chuẩn: - Phép toán số học (+, -, *, /, div, mod) - Phép toán quan hệ (>, >=, <, <=, =, <>) - Phép toán logic (And, or, not) Var Hoten: string[26]; Hoặc Var Hoten: string; * Cách tham chiếu tới phần tử xâu: Phần tử xâu xác định tên biến xâu và số đặt ngoặc [ ] Ví dụ: Hoten:=’Nguyen Le Huyen’; (58) Hoten[6] cho ta kí tự ‘n’ là kí tự  Đối với liệu kiểu xâu, các thứ biến xâu Hoten phép toán thực trên kiểu này bao gồm: - Phép ghép xâu (Kí hiệu: +) - Phép toán so sánh xâu - Các hàm, thủ tục xử lí xâu khác  Quan sát chương trình để dự tính kết  Chiếu chương trình VD phép  Được xâu ‘AB’ so sánh và yêu cầu HS cho biết kết  Lưu ý cho HS: - Xâu có độ dài nhau, việc so sánh dựa vào mã ASCII kí tự đầu tiên khác tính từ bên trái xâu - Xâu có độ dài khác nhau, việc so sánh dựa vào số kí tự chúng và xâu này là đoạn đầu xâu - Hai xâu chúng giống hoàn toàn Hoạt động 3: Rèn luyện kĩ vận dụng hàm và thủ tục  Chúng ta đã biết xâu là gì? Và số các phép toán trên xâu Bây chung ta học số thủ tục chuẩn dùng để xử lí xâu  Chú ý quan sát trên bảng  Ứng với thủ tục và hàm giáo viên đưa ví dụ minh họa theo SGK  HS trả lời  Xâu gồm kí tự trống Kí hiệu xâu gồm kí tự viết nào? số lượng kí tự là trống là ‘ ’ xâu này có độ dài là bao nhiêu?  Tham số các hàm và thủ tục  Quan sát trên bảng chuẩn phải hợp lí, chẳng hạng không thể dùng Insert( S1, S2, 12) length(S2)<12  Bấy chúng ta sâu các chức các hàm và thủ tục xâu Các thao tác xử lí xâu a) Phép ghép xâu: Phép ghép kí hiệu dấu cộng (+) Trả cho ta xâu Ví dụ: Var st: string; Begin St:='A' + 'B';Write(st); Readln;End Kết xâu ‘AB’ b) Phép so sánh: Trả cho ta giá trị logic (Đúng sai) Ví dụ: 'AB'<'ABC'  Đúng 'BAC’> ‘ABC’  Sai * Lưu ý: - Hai xâu chúng giống hoàn toàn VD: ‘TIN HOC’ = ‘TIN HOC’ - Nếu A, B là các xâu có độ dài khác và A là đoạn đầu B thì A là nhỏ B VD: ‘Tin hoc’< ‘Tin hoc lop 11’ - Xâu A lớn xâu B kí tự đầu tiên khác chúng kể từ trái sang xâu A có mã ASCII lớn VD: ‘Ha Noi’ > ‘Ha Nam’; Vì mã ASCII ‘o’ là 111 > ‘a’ là 97 c) Các thao tác xử lí xâu: Một số thủ tục chuẩn dùng để xử lí xâu - Delete(St,vt,n) Xoá n kí tự xâu st vị trí vt - Insert(S1,S2,vt) Chèn xâu S1 vào xâu S2 vị trí vt S2 - Val(St,x,m) Đổi giá trị xâu St thành số ghi giá trị vào biến X, nến không đổi thì vị trí gây lỗi ghi m, đổi thành công thì m = - Str(X,St) Chuyển số X thành xâu kí tự lưu St Một số hàm chuẩn: - Copy(St, vt, n) Sao chép từ xâu St n kí tự từ vị trí vt - Pos(S1, S2) Tìm vị trí xuất đầu tiên S1 S2 - Length(st) Cho độ dài xâu St - Upcase(ch) Cho chữ cái viết hoa (59) tương ứng với chữ thường chuỗi 3) Một số ví dụ: Bảng phụ chứa ví dụ  Cho số lượng kí tự có  Ý nghĩa hàm Length(b)? sâu b  Quan sát trên bảng  Sử dụng vòng lặp For giá trị cuối downto giá trị đầu để sau đó in các kí tự chuỗi theo chiều ngược lại  Cho thấy hàm length() có thể tham chiếu đến kí tự cử xâu thông qua vị trí nó  Xâu b tạo thành từ xâu rỗng qua phép ghép xâu Uses crt; Var a, b: string; Begin Clrscr; Write(‘nhaphotenthunhat:‘); Readln (a); Write(‘nhaphotenthuhai:‘); Readln (b); If length(a)>length(b) then Write(a) else writer(b); Realn End  Em nào có thể giải thích câu lệnh Bảng phụ chứa ví dụ For i:=k downto Bảng phụ chứa ví dụ write([i]); ?  Qua các ví dụ trên ta thấy điều Bảng phụ chứa ví dụ gì? Bảng phụ chứa ví dụ  Em có nhận xét gì xâu b tạo thành?  Tương tự các em xem ví dụ  Quan sát trên bảng Hoạt động 4: Củng cố Nhắc lại nội dung đã học: - Khai báo biến - Nhập xuất gá trị cho biến xâu - Tham chiếu kí tự xâu - Phép ghép xâu - Các phép so sánh - Nhắc lại số hàm và thủ tục liên quan đến xâu - Nhắc lại cấu trúc câu lệnh Hoạt Động 5: Dặn dò - Về nhà xem phần kiến thức lý thuết còn lại bài, bao gồm các thủ tục và hàm liên quan đến xâu, sách giáo khoa trang 70 - 72 - Giải bài tạp số 10 trang 80 Ngày soạn: 20/01/2014 – Tuần 27 (tiết 34, 35) BÀI TẬP VÀ BÀI THỰC SỐ I Mục tiêu: Kiến thức: - Củng cố cho học sinh kiến thức xâu ký tự, đặc biệt là các hàm và thủ tục liên quan - Nắm số thuật toán : tạo xâu mới, đếm số lần xuất ký tự… Kỹ năng: - Khai báo biến kiểu xâu - Nhập, xuất giá trị cho biến xâu - Duyệt qua tất các ký tự xâu (60) - Sử dụng các hàm và thủ tục chuẩn Thái độ: Tự giác, tích cực, chủ động thực hành II Chuẩn bị giáo viên và học sinh: GV: - Phòng máy vi tính đã cài đầy đủ Turbo Pascal - Tổ chức phòng máy để HS có kỹ làm việc với kiểu xâu HS: SGK, bài tập chuẩn bị sẵn nhà III Phương pháp dạy học: Gợi mở, vấn đáp kết hợp hoạt động nhóm IV Tiến trình bài dạy: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Tìm hiểu chương trình, đề xuất phương án cải tiến  Quan sát, đọc kỹ đề  Tìm hiểu đề bài: BÀI THỰC HÀNH SỐ - Giới thiệu nội dung đề bài lên Bài 1: Nhập vào từ bàn phím bảng xâu Kiểm tra xâu đó có phải là xâu - Một xâu gọi là đối xứng hay không Palindrome ta đọc các ký tự từ phải sang trái giống (xâu Palindrome) a) Chạy chương trình  HS trả lời: đọc từ trái sang phải - Yêu cầu HS cho ví dụ xâu Var i,x:byte; * Là xâu Palindrome: ‘45654’; ‘abccba’ Palidrom và ví dụ không phải a,p:string; Begin * Không là xâu Palindrome: là xâu Palidrom Write(‘Nhap xau’); ‘abcdba’ * Gọi HS trả lời Readln(a); * Gọi HS khác nhận xét  HS nhận xét X:=length(a); * GV chính xác P:=’’;  Quan sát chương trình, suy nghĩ,  Tìm hiểu chương trình gợi ý For i:=x downto - GV thực chương trình gợi P:=p+a[i]; phân tích để hiểu chương trình If a=p then  HS trả lời: Kiểm tra xâu có ý trên máy chủ để HS quan sát  Chức chương trình là Write(‘Xaula Palindrome’); phải Palindrome hay không Else gì?  In ra: ‘xau la Palindrome’  Kết in màn hình Write(‘Xau khong la Plindrome’); ‘xau khong la Palindrome’ nào? Readln  HS nhận xét End  Gọi HS trả lời  Gọi HS khác nhận xét  Quan sát GV thực chương  GV chính xác trình, nhập liệu và kết  Chạy chương trình trên máy chương trình chủ để HS kiểm nghiệm suy  Chú ý theo dõi yêu cầu GV luận mình và trả lời số câu hỏi dẫn dắt:  Cải tiến chương trình  Các ký tự vị trí này giống  GV nêu yêu cầu : Viết lại b) Hãy viết lại chương trình trên, chương trình mà không sử dụng đó không dùng biến xâu p biến trung gian p  Nhận xét các cặp vị trí đối Uses crt;  Ký tự thứ i đối xứng với ký tự xứng xâu Var i,x:byte; a:string; thứ length(a) – i +1 Palindrome?  So sánh tối đa length(a) div  Ký tự thứ i đối xứng với ký tự Kt:boolean; Begin vị trí nào? Write(‘Nhap xau’);  Cần phải so sánh bao nhiêu Readln(a);  Có thể dùng For While cặp ký tự xâu để biết X:=length(a); xâu đó là Palidrom? Kt:=true;  Thực soạn thảo chương trình  Dùng cấu trúc lặp nào để so For i:=1 to xdiv2 vào máy theo yêu cầu cải tiến sánh ? If a[i]<>a[x-i+1] then GV  Yêu cầu HS chi tiết hoá kt:=false;  Nhập liệu vào và thông báo các câu lệnh để có chương If kt then (61) kết write(‘La xau Palindome ’) trình chạy đúng  Yêu cầu HS nhập liệu cho Else sẵn GV và thông báo kết Write(‘Khong la xau Palindrome’); Readln; End Hoạt động 2: Rèn luyện kĩ lập trình  Quan sát đề và xác định  GV giới thiệu đề bài công việc cần thực  GV nêu mục đích bài toán Bài 2: Viết chương trình nhập từ bàn phím xâu S và thông báo màn hình số lần xuất chữ cái   Xác định liệu vào, liệu tiếng Anh S (không phân biệt chữ hoa hay chữ thường) * Input: Nhập vào xâu S bài toán? * Output: Số lần xuất chữ  Lí không phân biệt chữ hoa Program bai2; Uses crt; cái hay chữ thường nên ta dể dàng Var S:string; thực việc so sánh kí I,n,dem:integer; tự xâu vừa nhập Ch:char;  Dùng thủ tục upcase(s[i]) Begin để chuyển tất kí tự xâu Clrscr; Write(‘Nhap xau:’);read(S); S sang kí tự in hoa For i:=1 to length(s)  Dùng vòng lặp For ch:=‘A’ to ‘Z’ Và phép so sánh s[i]=ch để xác định số chữ cái S  Yêu cầu HS nhập liệu cho sẵn GV và thông báo kết  Nhập liệu vào và thông báo kết cho GV  Xác nhận bài làm có kết đúng và sửa sai cho HS có kết sai S[i]:=upcase(s[i]); For ch:=‘A’ to ‘Z’ Begin Dem:=0; For i:=1 to length(S) If s[i]=ch then Dem:=dem +1; If dem>0 then Writeln(‘Trong xau co’,dem,’chu ‘,ch); End; Readln End Hoạt động 3: Rèn luyện kỹ tìm kiếm và thay xuất từ từ khác xâu văn  GV giới thiệu đề bài Bài 3: Nhập vào từ bàn phím  GV hướng dẫn: Tìm vị trí xâu xâu Thay tất các cụm kí tự “anh” xâu st đã cho, ‘anh’ cụm kí tự ‘em’ xoá xâu này chèn xâu Program bai3; “em” vào vị trí đó Lặp lặp Uses crt; lại điều này không Var s:string; I,n:integer; tìm thấy xâu “anh” cần thay Begin xâu st Clrscr;  Các hàm và thủ tục chuẩn đã Write(‘Nhap xau:’);read(S); biết kiểu xâu có thể tìm While pos(‘anh’,s)<>0 vị trí xuất xâu con, Begin  HS trả lời xoá xâu con, chèn xâu n:= pos(‘anh’,s); Delete(s,n,3);  HS nhận xét không? Insert(‘em’,s,n);  Gọi HS trả lời End;  HS nhà chuẩn bị  Gọi HS khác nhận xét Write(‘Xau moi:’,s);  GV chính xác Readln  GV cùng HS thống dàn End ý chương trình và yêu cầu HS nhà chi tiết hoá các câu lệnh để có chương trình chạy đúng (62) V Củng cố và dặn dò: - Nắm số thuật toán đơn giản liên quan đến xâu ký tự : + Kiểm tra xâu đối xứng + Tìm tần suất xuất các ký tự có xâu - Đọc trước nội dung bài kiểu ghi – SGK trang 74 Ngày soạn: 20/01/2014 – Tuần 28, 29 (tiết 36, 37, 38, 39) CÂU HỎI VÀ BÀI TẬP (SGK Tr 79, 80) A Mục đích, yêu cầu: - Củng cố cho học sinh kiến thức và kĩ đã có lập trình với kiểu liệu mảng; - Củng cố cho học sinh thuật toán xếp các phần tử dãy số (bằng tráo đổi) và kĩ diễn đạt thuật toán này chương trình sử dụng kiểu liệu mảng; - Rèn luyện học sinh ý thức cần có người lập trình là viết chương trình với khối lượng tính toán ít có thể được; - Góp phần hình thành và rèn luyện tư lập trình, tác phong người lập trình B Nội dung: Câu 1: Tại mảng là kiểu liệu có cấu trúc?  Mảng là kiểu liệu có cấu trúc vì: - Mảng là kiểu có cấu trúc đề cập tới sớm các ngôn ngữ lập trình - Nó xây dựng từ kiểu liệu đã có, theo quy tắc, khuôn dạng ngôn ngữ lập trình cung cấp - Nó dùng để định nhóm đối tượng cùng tính chất nào đó Câu 2: Tại phải khai báo kích thước mảng?  Do mảng là kiểu liệu có cấu trúc, kiểu mảng lại tốn nhiều nhớ, nên khai báo mảng cần khai báo thêm kích thước để máy có thể cấp phát đủ nhớ Câu 3: Các phần tử mảng có thể có kiểu gì?  Kiểu số thực (Real), Kiểu logic (boolean), kiểu nguyên (integer, longint),… Câu 4: Tham chiếu đến phần tử mảng cách nào?  Tham chiếu đến phần tử mảng chiều xác định tên mảng cùng với số, viết cặp dấu ngoặc vuông [] Câu 5: Viết chương trình nhập từ bàn phím số nguyên dương N ( N 100 ) và dãy A gồm N số nguyên A1 , A2 , , AN có giá trị tuyệt đối không lớn 1000 Hãy cho biết dãy A có phải là cấp số cộng hay không và thông báo kết màn hình uses crt;  var a:array[1 100] of integer; n,i,d:integer; csc:boolean; begin clrscr; write('Nhap n: ');readln(n); for i:=1 to n begin repeat write('Nhap phan tu thu ',i,': '); readln(a[i]); if abs(a[i])>1000 then writeln('Nhap so nho hon 1000'); until abs(a[i])<=1000; end; csc:=false; d:=a[2]-a[1]; (63) for i:=2 to n if a[i+1]-a[i]=d then csc:=true; if csc then writeln('Day la cap so cong') else write('Day khong la cap so cong'); readln end Câu 6: Viết chương trình nhập từ bàn phím số nguyên dương N ( N 100 ) và dãy A gồm N số nguyên A1 , A2 , , AN có giá trị tuyệt đối không lớn 1000 Hãy đưa thông tin sau: a) Số lượng số chẵn và số lẻ dãy; b) Số lượng số nguyên tố dãy  program bai6; uses crt; var A:array[1 100] of integer; i,n,dem,u,d:integer; begin clrscr; write('Nhap so luong phan tu: '); readln(n); for i:=1 to n begin repeat write('Nhap phan tu thu ',i,': '); readln(a[i]); if abs(A[i])>1000 then write('Nhap so <1000 OK'); until abs(A[i])<1000; end; dem:=0; for i:=1 to n begin if a[i] mod 2= then dem:=dem+1; end; writeln('So luong so le: ',n-dem); writeln('So luong so chan: ',dem); for i:=1 to n if a[i]>1 then begin u:=2; while (u<=sqrt(A[i])) and (A[i] mod u <> 0) u:=u+1; if u>sqrt(A[i]) then d:=d+1; (64) end; write('So luong so nguyen to: ',d); readln end Bài 7: Dãy F là dãy Phi-bô-na-xi nếu: F0 0; F1 1; FN FN   FN  với N 2 Viết chương trình nhập từ bàn phím số nguyên dương N và đưa màn hình số hạng thứ N dãy Phi-bô-na-xi Chương trình bạn thực với giá trị lớn N là bao nhiêu?  program bai7; uses crt; n, i:word; var f, f1,f2:word; begin clrscr; repeat write('Nhap N: ');readln(n); if n<2 then writeln('Nhap N>2 OK!'); until n>=2; f1:=1; f2:=2; for i:=3 to n begin f:=f1+f2; f1:=f2; f2:=f; end; write('So fibonaxi thu ',n,' la ' ,f); readln end (65) Ngày soạn: 20/01/2014 – Tuần 30 (tiết 40, 41) CHƯƠNG V TỆP VÀ THAO TÁC VỚI TỆP §14 kiÓu d÷ liÖu tÖp §15 thao t¸c víi tÖp I MỤC TIÊU: 1) Kiến thức:  Học sinh nắm đặc điểm kiểu liệu tệp  BiÕt hai c¸ch ph©n lo¹i tÖp, khái niệm tệp có cấu trúc và tệp văn  Hai thao tác tệp  Biết các bớc làm việc với tệp: gắn tên cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp  BiÕt khai b¸o biÕn tÖp vµ c¸c thao t¸c c¬ b¶n víi tÖp v¨n b¶n  BiÕt sö dông mét sè hµm vµ thñ tôc chuÈn lµm viÖc víi tÖp 2) Kĩ năng:  Khai báo đúng tệp văn  Sử dụng số hàm và thủ tục chuẩn làm việc với tệp 3) Thái độ: Học sinh thấy cần thiết và tiện lợi kiểu liệu tệp II TIẾN TRÌNH DẠY HỌC: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Đặt vấn đề  Sau chạy chương trình các bài §14 kiÓu d÷ liÖu tÖp trước ta thấy kết in trên màn hình muốn sử dụng kết đó sau thì không Do đó ta có kiểu liệu tệp Hoạt động 2: Đặt điểm kiểu liệu tệp  Trả lời: Các kiểu liệu trước lưu trữ Vai trò kiểu tệp Dữ liệu kiểu tệp có đặc - RAM nhớ nào?  Khi tắt máy điện thì liệu điểm sau:  Dữ liệu lưu trữ nhớ này nào? + Được lưu trữ lâu dài nhớ  Để lưu giữ liệu lâu dài nhằm khai ngoài (đĩa từ, CD, ) và không bị  Không liệu tắt thác, xử lí thông tin đó ta phải lưu nó tắt nguồn điện vào máy máy nhớ ngoài thông qua kiểu liệu tệp + Lượng thông tin lưu trữ trên tệp  Dung lượng liệu  Yêu cầu học sinh đọc sách giáo khoa và có thể lớn và phụ thuộc vào dung lượng đĩa lưu trữ lớn nhắc lại đặc điểm kiểu liệu tệp? Hoạt động 3: Phân loại tệp và thao tác với tệp  Có loại tệp: Tệp có cấu  Có loại tệp (theo cách tổ chức trúc và tệp văn liệu), trình bày khái niệm các loại tệp?  Tệp văn là tệp mà  Giới thiệu cho HS biết hai cách phân liệu ghi dạng các loại tệp kí tự theo mã ASCII  Có hai thao tác làm việc với  Tệp có cấu trúc: là tệp mà tệp là ghi liệu vào tệp và đọc liệu các thành phần nó từ tệp tổ chức theo cấu trúc định Phân loại tệp và thao tác với tệp: Hai cách phân loại tệp: Theo cách tổ chức liệu - Tệp văn - Tệp có cấu trúc Theo cách thức truy cập - Tệp truy cập - Tệp truy cập trực tiếp Hai thao tác tệp là ghi liệu vào tệp và đọc liệu từ tệp Hoạt động 4: Thao tác với tệp  Hai thao tác  Yêu cầu HS nhắc lại các thao tác §15 thao t¸c víi tÖp (66) tệp là ghi liệu vào tệp và làm việc với tệp đọc liệu từ tệp  Giới thiệu cấu trúc chung khai báo biến tệp và giải thích Khai báo  Với tệp văn là :  Var a: text; VAR <Tên biến tệp> : TEXT;  Ví dụ:  Yêu cầu học sinh khai báo tệp Thao tác với tệp  Các thao tác với tệp chia thành bốn nhóm : - Gán tên tệp; - Mở tệp; - Vào/Ra liệu; - Đóng tệp * Gán tên tệp:  Để thao tác với tệp, trước hết phải gán tên tệp cho biến tệp câu lệnh : ASSIGN(< Tên biến tệp>,<Tên tệp>); Trong đó Tên tệp là biến xâu xâu  Ví dụ Giả thiết có biến xâu MYFILE và cần gán biến tệp F2 với tệp có tên DULIEU.DAT Việc gán tên tệp thực các câu lệnh ?  Ví dụ Để chuẩn bị thao tác với tệp có tên là INP.DAT trên thư mục gốc đĩa C: ta dùng các câu lệnh sau để gắn nó với tệp F3? * Mở tệp:  Tệp có thể dùng để chứa kết liệu vào Trước mở tệp, biến tệp phải gán tên tệp thủ tục ASSIGN  Câu lệnh mở tệp để ghi kết có dạng :  Assign(f1, ‘b1.inp’); REWRITE(<Tên biến tệp>); Rewrite(f1);  Khi thực lệnh REWRITE(F3), trên thư mục gốc C:\ chưa có tệp KQ.DAT, thì tệp tạo với nội dung rỗng Nếu tệp này đã có, thì nội dung nó bị xoá để chuẩn bị ghi thông tin  Để chuẩn bị đọc liệu từ tệp đã có ta  Assign(f1, ‘b1.out’); mở tệp câu lệnh : Reset(f1); RESET(<Tên biến tệp>); * Đọc/ghi tệp:  Readln(f,x1,x2);  Tệp định kiểu mở thủ tục  Đọc liệu từ biến tệp f, REWRITE có thể ghi liệu đặt giá trị vào hai biến x1và thủ tục WRITE x2 Câu lệnh ghi có dạng :  Writeln(f, ‘hieu la’,x1-x2); WRITE(<Tên biến tệp>,<Tên Biến >); Ghi vào biến tệp f hai tham  Nếu tệp mở thủ tục RESET 1.Khai báo tệp văn bản: VAR <Tên biến tệp>: TEXT; Ví dụ: Var f : text; 2.Gắn tên tệp : ASSIGN(< Tên biến tệp>, <Tên tệp>); Vd1: MYFILE := 'DULIEU.DAT'; ASSIGN(F2,MYFILE); ASSIGN(F2,'DULIEU.DAT'); Vd2: MYFILE := 'C:\INP.DAT'; ASSIGN(F3,MYFILE); Mở tệp: Để đọc: RESET(<Tên biến tệp>); Để ghi : REWRITE(<Tên biến tệp>); Ví dụ TF := 'C:\KQ.DAT'; ASSIGN(F3,TF); REWRITE(F3); Ví dụ Để đọc liệu từ tệp DL.INP ta có thể mở tệp : ASSIGN(F1, 'DL.INP'); RESET(F1); 4.Đọc/ghi tệp : Đọc : READ(<Tên biến tệp>,<danh sách biến>); Ghi : WRITE(<Tên biến tệp>, <danh sách kêt quả>); Ví dụ (67) số là dòng chữ ‘hieu la’ và ghi giá trị x1 – x2  Học sinh ghi bài  Close(f1);  Eof(f1); thì có thể đọc thông tin Câu lệnh đọc có dạng: READ(<Tên biến tệp>,<Tên biến >);  Yêu cầu học sinh cho ví dụ và giải thích * Đóng tệp:  Sau làm việc xong với tệp cần phải đóng tệp Việc đóng tệp là đặc biệt quan trọng sau ghi thông tin vào tệp  Câu lệnh đóng tệp có dạng : CLOSE(<Tên biến tệp>);  Một tệp, sau đóng có thể mở lại Khi mở lại tệp, dùng biến tệp cũ thì không cần thiết phải dùng thủ tục ASSIGN gán lại tên tệp * Một số hàm và thủ tục chuẩn thường dùng thao tác tệp:  Giới thiệu HS biết hai hàm chuẩn và ý nghĩa nó Lệnh ghi giá trị biến A vào tệp gắn với biến tệp F3 : WRITE(F3,A); Ví dụ Lệnh đọc giá trị từ tệp gắn với biến tệp F1 và gán cho biến C : READ(F1,C); Đóng tệp Sau làm việc xong phải đóng tệp câu lệnh : CLOSE(<Tên biến tệp>); Ví dụ: CLOSE(F1); CLOSE(F3); Một số hàm và thủ tục chuẩn thường dùng thao tác tệp Hàm lôgíc EOF(<Tên biến tệp>); Cho giá trị True trỏ tệp tới cuối tệp Hàm lôgíc EOFLN(<Tên biến tệp>) Cho giá trị True trỏ tệp tới cuối dòng III CỦNG CỐ: - Nêu đặc điểm kiểu liệu tệp - Hãy cho biết khác biệt tệp định kiểu và tệp văn - Cho biết các thao tác làm việc với tệp - Sơ đồ làm việc với tệp dùng để nhập thông tin phải có lệnh nào? - Các thao tác với tệp mô tả hình16 - Ghi tệp: Gán tên tệp, tạo tệp mới, ghi thông tin, đóng tệp - Đọc tệp: Gán tên tệp, mở tệp, đọc thông tin, đóng tệp ASSIGN(<Tên biến tệp>,<Tên tệp>); Ghi Đọc REWRITE(<Tên biến tệp>); RESET(<Tên biến tệp>); WRITE(<Tên biến tệp>,<danh sách kq>); READ(<Tên biến tệp >,<danh sách biến>); CLOSE(<Tên biến tệp>); Hình 16 Sơ đồ làm việc với tệp (68) Ngày soạn: 10/02/2014 – Tuần 31 (tiết 42) BÀI 16 VÍ DỤ LÀM VIỆC VỚI TỆP I Mục tiêu: Kiến thức: - Củng cố lại kiến thức đã học tệp bài 14, 15 chương V thông qua ví dụ Kỹ năng: - Nhận biết các cách hoạt động tệp - Biết sử dụng các thủ tục và hàm liên quan để giải bài toán - Nắm chức các thủ tục và hàm để thao tác với tệp II Chuẩn bị GV và HS: - GV: Giáo án, SGK, sách GV, máy chiếu, sách bài tập, máy tính có soạn sẵn các ví dụ - HS: Sách GK III Phương pháp: - Đặt vấn đề - Thuyết trình - Diễn giải, dùng bảng để ghi lại các chi tiết quan trọng ví dụ IV Tiến trình bài học HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Kiểm tra bài cũ và giới thiệu bài + Ôn lại kiến thức đã học bài 14, 15 + Vận dụng để giải vấn đề cụ thể thực tế  HS đứng dậy và trả lời câu hỏi  Nhắc lại kiến thức cũ - Ghi lại hàm và thủ tục mà Var <tên biến tệp>:text;  Gọi HS nhắc lại các hàm và thủ HS đã nêu Assign(<biến tệp>,<tên tệp>); tục liên quan đến tệp Rewrite(<biến tệp>); - Bổ sung thiếu sót  Nhận xét và bổ sung thêm các HS1 hàm, thủ tục còn còn thiếu  HS Lắng nghe lời giảng  Gọi HS khác nhận xét và bổ sung - Đánh số thứ tự trên các hàm thủ tục đã ghi bảng GV cho đầy đủ  Nhận xét chung ý kiến HS  HS hướng theo dẫn dắt đã trình bày GV để vào VD  Giới thiệu bài  Nêu lên vai trò tệp việc xử lý và lưu trữ thông tin, áp dụng vào thực tế ( Sơ lược VD1) Hoạt động 2: Tìm hiểu VD1 và VD2 - Mục tiêu : Giúp HS hiểu nội dung CT, biết đầu vào, đầu CT - Nội dung: VD1 SGK, tính khoảng cách trại Hiệu trưởng và trại GVCN  Tìm hiểu VD  Theo dõi VD1  Gọi HS đọc VD1  Lắng nghe hướng dẫn GV  Nhấn mạnh điểm quan trọng - Ghi lại công thức tính khoảng cách điểm lên bảng để HS cần lưu ý VD1  Gợi ý cách giải bài toán, để nắm rõ giải bài bài toán này ta cần phải nắm công thức tính khoảng cách điểm  Nhắc lại công thức tính khoảng cách điểm trên mặt phẳng toạ độ  Trong VD này ta cần tổ chức và lưu  HS trả lời : Cần tổ chức và lưu trữ liệu tệp dạng nào ?  Các thao tác liên quan đến tệp (69) trữ tệp dạng văn sử dụng VD này gồm gì ?  HS trả lời : Khai báo tệp Gắn tên tệp Mở tệp để đọc liệu Hiện kết màn hình Đóng tệp  HS trả lời : Các hàm sử dụng là: Var Assign Reset While Eof Read Writeln Close  HS trả lời: Trả kết là True trỏ cuối tệp  Không, vì không biết trước số lượng phần tử tệp Var <tên biến tệp>: text; Assign(<biến tệp>, <tên tệp>); Reset(<biến tệp>);  Các hàm và thủ tục nào sử dụng While Eof(<biến tệp>); VD này ? Read(<biến tệp>,<DS biến>); Writeln(<biến tệp>);  Hàm Eof(<biến tệp>) có chức Close(<biến tệp>); gì ?  Có thể thay lệnh While lệnh For to không ?  Kết luận lại vấn đề đã nêu  Thực chương trình cho HS thấy kết  Tìm hiểu VD2 - Trình bày nội dung CT lên bảng  Gọi HS đọc VD2  Nhắc lại công thức tính địên trở tương đương điện trở mắc song - Ghi lại công thức tính điện trở song  Gọi HS trình bày cách tính điện trở tương đương điện trở mắc tương đương các điện trở song song - Ghi lại kết điện trở tương  Lắng nghe giải thích thầy mắc hình đến đương HS trình bày  Nhận xét và sửa sai  Theo giỏi quá trình thực  Cho HS đọc qua nội dung CT của GV VD2 - Bổ sung thêm cho hoàn chỉnh  Mảng a dùng để làm gì?  Theo dõi VD SGK  Dòng lệnh For to có ý nghĩa  HS lắng nghe lời giảng gì? GV  Tại phải dùng hàm Close?  HS nhìn lên bảng để theo dõi  Tổng kết lại CT VD2  Theo dõi nội dung CT  Yêu cầu HS tìm hiểu lại VD2 VD2 SKG qua hướng dẫn trên lớp  HS trả lời: Dùng để lưu kết điện trở tương đương điện trở mắc theo cách hình vẽ  Vì CT dùng biến tệp f1và f2 nên ta phải dùng hàm Close để đóng tệp đó Hoạt động 3: Củng cố kiến thức đã học chương V.(3) - Những nội dung đã học + Các thao tác xử lý tệp + Gán tên tệp + Tạo tệp + Mở tệp + Đọc, ghi liệu vào tệp + Đóng tệp Hoạt động 4: Dặn dò - Cần nắm vững cách làm việc với tệp - Xem lại các VD1 và VD2 (70) Ngày soạn: 10/02/2014 – Tuần 31 (tiết 43) BÀI TẬP – SGK TRANG 89 Câu Nêu số trường hợp cần phải dùng tệp? Một số trường hợp phải dùng tệp: cần lưu trữ lượng liệu lớn, dùng lâu dài, ít thay đổi và yêu cầu để xử lí nhiều lần liệu tên nhân viên quan, hồ sơ sinh viên, lương cán bộ,… Câu Trong sơ đồ thao tác tệp, cần ghi liệu vào tệp phải dùng thao tác nào? Những thao tác cho việc ghi liệu vào tệp:  Thứ nhất, gắn biến tệp với tên tệp thủ tục assign(<tên biến tệp>,<tên tệp>);  Thứ hai, mở tệp Rewrite(<tên biến tệp>);  Thứ ba, ghi liệu vào tệp Write(<tên biến tệp>,<danh sách các kết quả>);  Thứ tư, đóng tệp Close(<tên biến tệp>); Câu Tại cần phải có câu lệnh mở tệp trước đọc/ghi tệp? Việc mở tệp câu lệnh mở tệp là cần thiết vì: trình dịch biết mở nhằm vào mục đích đọc hay ghi và đồng thời đặt trỏ tệp vào vị trí thích hợp Câu Tại phải dùng câu lệnh đóng tệp sau đã kết thúc ghi liệu vào tệp? Để đảm an toàn cho liệu cho tệp, đó hệ thống thực hoàn tất việc ghi liệu Ngày soạn: 20/02/2014 – Tuần 32 (tiết 44) CHƯƠNG VI CHƯƠNG TRÌNH CON BÀI 17 CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI I Mục đích yêu cầu: + Biết CTC là khối lệnh nhằm giải bài toán để góp phần giải bài toán lớn chương trình + Biết viết nhứng chương trình dài, phức tạp thì việc sử dụng CTC là cần thiết + Biết lợi ích việc sử dụng CTC II Chuẩn bị: Máy chiếu bảng phụ đã viết sẵn chương trình tinh_tong không sử dụng chương trình và sử dụng chương trình III Nội dung: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Đặt vấn đề  Các chương trình giải các bài toán  Nghe GV nêu vấn đề điều cần phức tạp thường dài, có thể gồm thiết phải có chương trình nhiều lệnh, đọc khó hình dung chương trình thực công việc gì và việc hiệu chỉnh chương trình khó khăn  Như làm nào bài toán phức tạp dễ đọc, dễ hiểu, dễ hiệu chỉnh, dễ nâng cấp? Do đó ta nghiên cứu vấn đề là CTC, để tìm hiểu CTC là gì? Hoạt động 2: Tính tổng Lũy Thừa an + bm + cp + dq  HS nêu ý tưởng giải bài  GV cho HS nêu ý tưởng bài toán 1.Khái niệm chương trình - Những bài toán phức tạp có toán và trả lời này  Có nghĩa là chia bài toán thành thể phân chia thành nhiều bài toán  Cho HS khác nhận xét trả lời bài toán nhỏ, làm là làm nhỏ, bài toán nhỏ phân (71) bạn mịn dần bài toán  thiết kế bài toán từ trên xuống  GV phân tích: Để giải BT trên MT có chia chương trình thành các khối, khối gồm nhiều lệnh giải bài toán nào đó  chương trình chính xây dựng từ các CTC Chương trình là gì?  Giáo viên chốt lại khái niệm trên bảng phụ, máy chiếu viết trên  Trả lời khái niệm chương trình bảng chia thành nhiều bài toán nhỏ, quá trình làm “mịn” dần bài toán gọi là cách thiết kế từ trên xuống - Khi lập trình để giải các bài toán có thể chia thành các khối, khối bao gồm các lệnh để giải bài toán nào đó, khối lệnh xây dựng thành CTC , sau đó chương trình chính xây dựng trên các CTC này, cách lập trình gọi là chương trình có cấu trúc - Chương trình là dãy lệnh mô tả số thao tác định và có thể thực (được gọi ) từ nhiều vị trí chương trình Hoạt động 3: Tính tổng không sử dụng chương trình  GV dùng bảng phụ 1: bài tinh_tong (không sử dụng CTC trang 92 SGK ), cho HS nhận xét đoạn chương trình trên  GV chốt lại các ý: đoạn CT có đoạn lệnh tương tự  chương trình dài, khó theo dõi, khó hiệu chỉnh  Dùng bảng phụ 2: Chương trình tinh_tong có sử dụng chương trình  GV giải rhích : các dòng lệnh: var j: integer; tich:=1.0; for j:=1 to k tich:=tich*x  Chú ý bảng phụ trình  Để tính các luỹ thừa ta viết: chiếu, sau đó nhận xét Luythua(a,n), luythua(b,m), Luythua(c,p), luythua(d,q)  Và rõ các đoạn lệnh thay CTC  Từ điều đã nêu cho HS nêu các ích  HS nhận xét và so sánh đoạn lợi CTC chương trình  GV giải thích rõ ích lợi việc sử dụng CTC Hoạt động 4: Củng cố  Các HS nêu các lợi ích  HS nêu khái niệm CTC, * Lợi ích việc sử dụng CTC + Tránh việc phải viết viết lại nhiều CTC lợi ích việc sử dụng CTC lần cùng dãy lệnh; + Hổ trợ việc thực các chương trình lớn; + Phục vụ cho quá trình trừu tượng hoá ; + Mở rộng khả ngôn ngữ; + Thuận tiện cho phát triển, nâng cấp chương trình; IV Dặn dò: Xem trước phần 2của bài 17 Ngày soạn: 20/02/2014 – Tuần 32, 33 (tiết 45, 46) (72) BÀI 17 CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI I Mục tiêu: Kiến thức: - Biết phân biệt hai loại chương trình con: Hàm và thủ tục - Biết cấu trúc chương trình - Biết phân biệt tham số hình thức với tham số thực sự, biến cục với biến toàn cục Kỹ năng: - Nhận biết hai loại tham số hình thức và tham số thật - Nhận biết phạm vi hoạt động biến toàn cục, biến cục - Cách thực chương trinh Thái độ: - Phát huy tinh thần học tập theo nhóm II Đồ dùng dạy học: - GV: Bảng phụ, máy chiếu(nếu có) - HS: Sách GK, sách bài tập III Phương pháp: - Đặt vấn đề - Thuyết trình - Diễn giải, dùng bảng để ghi lại các chi tiết quan trọng ví dụ - Phát huy tính sáng tạo học sinh IV Tiến trình bài học HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Hoạt động 1: Kiểm tra kiến thức cũ Câu 1: Trình bày khái niệm chương trình là gì? Câu 2: Mục đích sử dụng chương trình là gì? GV nhận xét cho điểm Hoạt động 2: Phân loại và cấu trúc chương trình  Chúng ta đã biết chương trình là gì? Lợi ích việc sử dụng chương trình lập trình Nhưng ta chưa biết chương trình chương trình có  HS trả lời câu hỏi cấu trúc nào? Và phân loại nào?  Trong nhiều ngôn ngữ lập trình chương trình phân làm loại?  Trong ngôn ngữ pascal các em cho biết  HS trả lời câu hỏi: số hàm và thủ tục chuẩn mà em biết? + Hàm: Sin(x), sqrt(x),  Xét hàm sin(x) π length(x)  Với x= giá trị hàm sin(x) cho + Writeln, readln, kết là bao nhiêu ?  HS trả lời câu hỏi:  GV nhận xét: Sau thực tính Sin(x)=1/2 π toán hàm sin(x) với x= cho giá trị là 1/2  Vậy các em cho biết hàm có đặc điểm gì ?(hay hàm là gì ?)  Học sinh trả lời Hàm PHẦN TRÌNH BÀY Phân loại và cấu trúc chương trình a Phân loại: + Hàm: - Là chương trình - Thực số thao tác định - Trả giá trị qua tên hàm  Xét thủ tục Writeln, Writeln(‘‘xin chao’’)  Thủ tục Writeln(‘xin chao’) làm gì ? cho + Thủ tục: kết là gì ? có trả giá trị nào - Là chương trình (73) Thủ tục không ?  Vậy các em cho biết thủ tục có đặc điểm gì ?(hay hàm là gì ?) - Thực số thao tác định - Không trả giá trị qua tên thủ tục  Học sinh trả lời Hoạt động 3: Cấu trúc chương trình  Trên sở phân loại hàm và thủ tục bây b Cấu trúc chương trình ta tìm hiểu cấu trúc hàm và thủ tục (Chương trình con) tổ chức nào ? - Chương trình có cấu trúc  Các em hãy cho biết chương trình chính tương tự chương trình chính gồm phần: gồm phần ?(kiến thức củ) <Phần đầu> [<Phần khai báo>] Trong chương trình cấu trúc nó  HS trả lời <Phần thân> gồm phần ? + Phần đầu: Về chương trình và chuơng - Để khai báo tên hàm thủ tục trình chính có tương tự không ? - Nếu là hàm phải khai báo kiểu liệu chi giá trị trả hàm - Nhất thiết phải có Phần đầu dùng để làm gì ? + Phần khai báo: - Khai báo các biến cho liệu  Phần Khai báo dùng để làm gì ? vào/ra, các và biến dùng chương trình + Phần thân:  Học sinh đọc sách GK và - Gồm dãy các lệnh thực để từ trả lời  Phần thân dùng để làm gì ? iệu vào/ra ta nhận  Bây ta tiếp tục tìm hiểu các biến liệu hay kết qủa mong muốn khai báo và phạm vi hoạt động nó chương trình và *Khái niệm các biến: - Tham số hình thức: gồm các biến chương trình chính khai báo cho liệu vào/ra k  Xét ví dụ : Tính luỹ thừa : luythua= x - Biến cục bộ: Gồm các biến khái Khi đó tên chương trình có thể đặt là khai báo chương trình luythua, tên các biết chưa liệu vào là x, k  Vậy tính xk ta viết - Biến toàn cục: Gồm các biến luythua(x,k) Khi đó x, k là tham số hình khái khai báo chương trình chính thức * Phạm vi hoạt động các biến:  Vậy tham số hình thức là gì ? - Biến cục bộ: - Chỉ sử dụng chương trình cuả nó mà thôi - Không thể sử dụng biến cục cuả chương trình cho chương trình chính và các chương trình khác - Biến toàn cục:  Đối biến cục bộ, biến toàn cục thì phạm - Được sử dụng chương trình chính có thể sử dụng vi hoạt động nó nào ? (74) chương trình Hoạt động 4: Thực chương trình  Sau có chương trình con, muốn thực chuơng trình đó thì  HS trả lời ta làm nào ? Ví dụ: sqrt(255) c Thực chương trình con: - Để thực gọi chương trình ta thực lệnh theo cú pháp sau Cú pháp: <tên chương trình con>(<tham số thực sự>) Trong đó: Tham số thực là các hằng, biến chứa liệu vào/ Hãy cho ví dụ lệnh gọi CTC ? - Khi thực chương trình các tham số hình thức dùng để  Xét ví dụ : CTC luythua(x,k) với x,k nhập liệu vào và tham số hình thức nhận giá trị tham số tham số hình thức thực tương ứng, còn các tham Với biến : a =2, b=3  Lệnh gọi CTC là Luythua(a,b) đó số hình thức dùng để lưu trữ tham số hình thức x,k nhận giá trị tương liệu trả giá trị đó cho tham số thực tương ứng ứng tham số thực a,b V Cũng cố kiến thức: Những nội dung đã học: - CTC gồm: Hàm và thủ tục - Cấu trúc chương trinh - Biến cục bộ, biến toàn cục - Tham sô hình thức, tham số thật - Cách gọi chương trinh Ngày soạn: 20/02/2014 – Tuần 33, 34 (tiết 47, 48, 49) BÀI 18 VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON I Mục tiêu: Kiến thức: - Học sinh biết cấu trúc chung và vị trí thủ tục chương trình chính - Phân biệt tham trị, tham biến Kỹ năng: - Nhận biết các thành phần phần đầu thủ tục - Nhận biết loại tham số phần đầu thủ tục - Nhận biết lời gọi thủ tục chương trình chính cùng với tham số thực Tư và thái độ: - Rèn luyện cho HS phẩm chất người lập trình tinh thần hợp tác, khả làm việc nhóm, làm việc chung II Chuẩn bị GV và HS: - GV: Giáo án, SGK, sách GV, các ví dụ, bảng phụ, sách bài tập - HS: Sách GK, sách bài tập III Phương pháp: - Thuyết trình - Diễn giải - Đàm thoại IV Tiến trình bài học HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Hoạt động 1: Kiểm tra bài cũ và giới thiệu bài PHẦN TRÌNH BÀY (75) Câu 1: CT là gì ? CT có loại nào? Cấu trúc CT ? Trả lời: - CT là dãy lệnh mô tả số thao tác định và có thể thực nhiều vị trí CT - CT có loại : Hàm và thủ tục - Cấu trúc CT : Phần đầu, phần khai báo, phần thân Hoạt động 2: Tìm hiểu cách viết và sử dụng thủ tục Cách viết và sử dụng thủ tục  HS quan sát bảng phụ  GV treo bảng phụ đã ghi vd vẽ * VD: Bảng phụ (VD vẽ HCN trang HCN cho HS quan sát  Sử dụng câu lệnh để vẽ  Ví dụ trên bảng sử dụng bao nhiêu 96) HCN câu lệnh để vẽ HCN ?  Như cần cẽ HCN ta phải  HS lắng nghe dùng câu lệnh Giả sử muốn vẽ HCN thì câu lệnh Writeln trên phải lặp lại lần  Gọi HS đứng lên nhận xét  Đúng dùng lần câu lệnh  HS trả lời chương trình đó thì chương trình dài, để dài dòng, tốn thời gian khắc phục điều đó ta dùng CT là  HS lắng nghe thủ tục  Tìm hiểu chương trình  Treo bảng phụ ( VD thủ tục a Cấu trúc thủ tục: SGK trang 96, 97)  HS quan sát chương trình  Giới thiệu cho HS câu lệnh - VD bảng (VD thủ tục trang 96, 97 trên bảng phụ chương trình để HS thấy SGK) * Thủ tục có cấu trúc sau  HS lắng nghe GV giới cấu trúc thủ tục thiệu  Vị trí thủ tục nằm phần nào Procedure <Tên thủ tuc> [(<DS tham số>)]; chương trình [< phần khai báo>]  Các em quan sát và cho biết cấu Begin [<Dãy các lệnh>] trúc thủ tục gồm phần ?  HS trả lời: Thủ tục nằm  Qua VD cho biết lời gọi thủ tục End; - Phần đầu thủ tục gồm tên dành riêng phần khai báo chương nằm đâu ? Procedure, là tên thủ tục DS trình  GV nhận xét và ghi bảng tham số có thể có không có  HS trả lời: Gồm có phần: - Phần khai báo: Dùng để xác định Tên thủ tục, phần khai báo, phần thân thủ tục  GV cho HS quan sát bảng phụ các hằng, kiểu, biến và có thể xác định các chương trình khác  Nằm phần thân CT (VD thủ tục trang 98,99 SGK) sử dụng thủ tục chính  GV giải thích VD - Dãy câu lệnhh:Được viết cặp  HS lắng nghe và ghi bài  GV nhận xét : Qua VD trên ta có tên dành riêng Begin và End tạo thành thể dùng nhiều giá trị thay để vẽ thân thủ tục b VD thủ tục: nhiều HCN với chương trình  HS quan sát bảng phụ  Thủ tục vẽ - HCN đây đã diễn - Trong lời gọi thủ tục các tham số đạt thủ tục vẽ HCN có kích hình thức thay tham số thực thước chiều dài và chiều rộng tuỳ tương ứng là các giá trị cụ thể đgl  HS lắng nghe theo dõi theo giá trị các tham số chdai, tham số giá trị (tham trị) chrong Những tham số này gọi là - Trong lệnh gọi thủ tục các tham số  HS lắng nghe theo dõi tham số hình thức Ngoài nó còn hình thức thay các tham số thực tương ứng là tên các biến chứa đựơc thay tên các biến  GV treo bảng phụ cho HS quan liệu đgl tham số biến (tham biến) sát (VD tham biến 1, VD tham biến * Sự khác khai báo tham số hình thức: trang 99, 100) - Các tham số có từ khoá Var đứng là  Gọi HS nhận xét  HS quan sát bảng phụ (76) tham số biến, còn không có là tham số giá trị  HS nhận xét: Khi khai báo  GV nhận xét * Chú ý: tham số biến ta đặt từ khoá  Để phân biệt tham số này Pascal - Nếu có nhiều tham biến cùng kiểu liệu thì có thể dùng từ khoá Var đằng trước các tham số dùng từ khoá Var để khai báo Var cho phần khai báo, ngăn cách đó  GV ghi bảng dấu phẩy  HS lắng nghe - Khai báo liệu cho tham số dùng tên kiểu Tên kiểu là tên chuẩn tên người lập trình đặt  HS ghi bài V Củng cố: - Cấu trúc CT và vị trí nó CT chính? - CT viết phần khai báo CT có phần đầu, phần khai báo và phần thân - CT có thể có tham số hình thức khai báo và thay tham số thực gọi CT - Phân biệt tham số hình thức và tham số thực Cách sử dụng tham biến và tham trị VI BT nhà: BT trang 60 SBT: 6.1, 6.3, 6.4, 6.5 BÀI 18 VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (Tiếp theo) I Mục tiêu: - Về kiến thức: + Nhớ cấu trúc hàm, cách sử dụng hàm + Phân biệt hai loại chương trình (thủ tục và hàm) + Xác định biến toàn cục và biến cục - Về kỹ năng: + Nhận biết các thành phần đầu hàm + Nhận biết các câu lệnh sử dụng hàm chương trình chính cùng các tham số thực - Về tư và trình độ: + Tiếp tục rèn luyện, thảo luận làm việc theo nhóm II Chuẩn bị giáo viên và học sinh - Giáo viên: Giáo án, bảng phụ - Học sinh: Ghi chép bài đầy đủ - Học sinh nghe giảng, thảo luận và trả lời câu hỏi giáo viên đưa - Giáo viên thuyết trình, đặt câu hỏi cho học sinh III Tiến trình tiết dạy: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV PHẦN TRÌNH BÀY Hoạt động 1: Kiểm tra bài cũ và giới thiệu bài Câu 1: Cho ví dụ cấu trúc thủ tục? Câu 2: Nêu khác tham số giá trị và tham số biến? Câu 3: Em hãy kể tên hàm mà chúng ta đã học và cho biết cách sử dụng chúng?  <tên hàm> người dùng tự đặt Dạng Hàm (Function)  Các kiểu liệu: integer, real, 2.1 Cấu trúc: Function <tên hàm>[<danh char, boolean, string  Cũng giống thủ tục [<danh sách tham số>]: không cần thiết sách tham số>]: <kiểu liệu>; [khai báo các biến]; hàm không có tham số Begin [<dãy các lệnh>] End;  Em hãy nhắc lại các kiểu liệu <Kiểu liệu>: Kiểu liệu trả đã học? lại hàm các kiểu integer, real, char, boolean, string Vd: Function tong(x,y: integer): (77) integer; 2.2 Sử dụng hàm: - Giống hàm chuẩn, viết tên hàm gọi và thay tham số hình thức các tham số thực tương ứng - Lệnh gọi hàm tham gia vào biểu thức toán hạng Ví dụ: A:= 8*UCLN(x,y)-3; Chú ý: Trong thân hàm phải có ít lệnh gán giá trị cho tên hàm <tên hàm>:= <biểu thức>;  Có hàm UCLN  Tính ước chung lớn hai số x, y  UCLN:= x;  Chương trình trình bày trên bảng phụ  Trong ví dụ có bao nhiêu hàm?  Hàm UCLN(x,y): dùng để  Đều là chương trình làm gì?  Khác: thân hàm phải có ít  Chỉ lệnh gán giá trị cho tên hàm? lệnh  Biến toàn cục là: Tuso, mauso, a Được khai báo chương trình chính  Biến cục bộ: x, y Được khai báo chương trình  Biến sử dụng gồm biến  a, b vừa là biến toàn cục vừa là biến cục bộ, c là biến toàn  Tên hàm là Min, giá trị kết thuộc kiểu liệu real Ví dụ 1: - Chương trình thực rút gọn phân số, sử dụng hàm tính ước chung lơn số  Em hãy cho biết giống và 2.3 Phân biệt hàm và thủ tục: khác hàm và thủ tục? a/ Giống nhau:  Tổng hợp rút kết luật chung - Là chương trình con, có cấu trúc giống chương trình - Đều có thể chứa các tham số,  Dựa vào ví dụ chi đâu là biến cùng tuân theo quy định khai toàn cục, biến cục bộ? Chúng báo khai báo vị trí nào? b/ Khác nhau: - Tên hàm phải có kiểu liệu - Trong thân hàm phải có lệnh  Chương trình trình bày trên gán giá trị cho tên hàm bảng phụ  Phân tích cho hoc sinh biết 2.4 Biến toàn cục và biến cục bộ: ý tưởng thuật toán  Chỉ các biến sử dụng - Biến toàn cục là biến khai chương trình, phân biệt biến báo chương trình chính cục bộ, biến toàn cục, khai - Biến cục là biến khai báo vị trí nào chương trình báo chương trình ?  Nêu tên hàm, giá trị kết Ví dụ 2: Chương trình tìm số nhỏ hàm thuộc kiểu liệu nào? số nhập từ bàn phím  Hàm sử dụng lần?  Hàm sử dụng lần IV Cũng cố: - Nhấn mạnh lại cách khai báo hàm, phân biệt hàm và thủ tục - Phân biến toàn cục và biến cục V Bài tập nhà: Function tim(m,n: integer); Begin r:=m mod n; (78) If r= then tim:=n; Else Tim:=tim(n,r); End; Khai báo biến, sửa lỗi cho đoạn chương trình trên? Đoạn chương trình thực công việc gì? Ngày soạn: 20/02/2014 – Tuần 32, 33 (tiết 45, 46) BÀI TẬP VÀ THỰC HÀNH SỐ I MỤC TIÊU Kiến thức: - Cũng cố lại các kiến thức xâu, kí tự, chương trình Kỹ năng: - Rèn luyện kỹ xử lý xâu việc tạo hiệu ứng cho máy chạy trên màn hình - Nâng cao kỹ viết và sử dụng chương trình II ĐỒ DÙNG DẠY HỌC Chuẩn bị giáo viên: - Máy vi tính, tổ chức phòng máy để học sinh có các kỹ việc tổ chức và sử dụng chương trình lập trình Chuẩn bị học sinh: - Sách giáo khoa III HOẠT ĐỘNG DẠY HỌC Hoạt động 1: Tìm hiểu việc xây dựng hai thủ tục catdan(s1, s2) và cangiua(s) a Mục tiêu: - Nắm chức hai thủ tục catdan(s1, s2) và cangiua(s) Biết ý nghĩa tham số chương trình đó b Nội dung: Thủ tục catdan Type str79 = string[79]; Procedure catdan(s1:str79; var s2:str79); Begin S2 := copy(s1,2, length(s1) - 1) + s1[1]; End; Thủ tục cangiua Procedure cangiua( var s : str79); Var i,n : integer; Begin n:= length(s); n:= (80-n)div 2; for i:= to n s:= ‘ ’ + s end; b Các bước tiến hành: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Quan sát thủ tục catdan() và trả lời câu hỏi Tìm hiểu hai thủ tục catdan (s1, s2) và cangiua (s) giáo viên  Chiếu nội dung thủ tục catdan (s1, s2);  Vào: Xâu kí tự s1  Đầu vào và đầu thủ tục này?  Ra: Biến xâu kí tự s2  Chức thủ tục này là gì?  Thực việc tạo xâu s2 từ xâu s1 việc chuyển kí tự thứ đến vị trí cuối cùng xâu  S1= ‘abcd’ thì S2 = ‘bcda’  Yêu cầu học sinh cho ví dụ minh hoạ (79)  Chiếu nội dung thủ tục: cangiua(s);  Đấu vào thủ tục?  Quan sát, suy nghĩ và trả lời  Thủ tục thực công việc gì?  Đầu vào là xâu kí tự S không qua 79 kí tự  Thủ tục thực thêm vào trước xâu s số kí tự tự trắng để đưa s màn hình kí tự S  Giáo viên chú ý: Có thể nhắc học sinh không khai ban đầu dòng gồm 80 kí tự báo s là tham biến thì thủ tục này không có hiệu lực gì Quan sát chương trình trên bảng và theo dõi vì lệnh đưa s nàm hình không nằm thủ tục này Tìm hiểu chương trình câu b, sách giáo khoa, dẫn dắt giáo viên trnag 103, 104  Yêu cầu người sử dụng nhập xâu kí tự  Chiếu chương trình lên bảng Đưa xâu đó màn hình có dạng dòng chữ chạy  Chức chương trình màn hình văn 25*80  Giới thiệu cho học sinh các thủ tục chuẩn:  Quan sát trên màn hình để đối chiếu với kết gotoxy (x,y); delay(n); và keypressed;  Thực chương trình để giúp học sinh thấy kết mà học sinh tự suy luận tính chương trình Hoạt động 2: Rèn luyện kĩ lập trình a Mục tiêu: - Học sịnh vận dụng các hiểu biết chương trình con, thuật toàn cung cấp để giải bài toán tổng quát b Nội dung: - Viết chương trình nhập xâu kí tự và đưa dòng chữ chạy dòng bất kì chương trình chính quy định - Nội dung chương trình giống chương trình câub, SGK, trang 10 c Các bước tiến hành: Quan sát yêu cầu trên bảng Tìm hiểu yêu cầu đề bài  Chiếu nội dung yêu cầu lên bảng  Về bản, giống nhiệm vụ mà câu b đã làm  Yêu cầu học sinh tìm vấn đề bài tập này Chỉ khác là chương trình câu b luôn cho xâu kí tự chạy dòng 12, còn bài này xâu kí tự phải chạy dòng bất kì Vì phải truyền tham số quy định dòng chạy cho thủ tục  Yêu cầu học sinh lập trình trên máy  Độc lập viết chương trình vào máy và báo cáo kết  Yêu cầu học sinh thực chương trình và nhập thử nghiệm liệu test  Nhập liệu theo test giáo viên và báo cáo  Đánh giá kết lập trình học sinh kết IV Đánh giá cuối bài: Câu hỏi và bài tập nhà - Viết thủ tục chaychu (s,dong) nhận tham số và xâu S gồm không qua 79 kí tự và biến nguyên Dong In màn hình dòng chữ xác định S chạy dòng Dong viết chương trình và thực có sử dụng thủ tục này - Chuẩn bị bài cho bài thực hành số 7: Xem trước nội dung bàỉ thực hành số 7, SGK, trang 105 (Không dạy tiết này) BÀI TẬP VÀ THỰC HÀNH SỐ I MỤC TIÊU: (80) Kiến thức: Củng cố lại các kiến thức chương trình con: Thủ tục, hàm, tham số biến và tham số giá trị, biến toàn cục và biến cục Kỹ năng: Sử dụng chương trình để giải trọn vẹn bài toán trên máy tính II ĐỒ DÙNG DẠY HỌC: Chuẩn bị giáo viên: Máy vi tính, tổ chức phòng máy để HS có các lỹ việc tổ chức và sử dụng các chương trình lập trình Chuẩn bị học sinh: Đọc trước bài tập thực hành theo yêu cầu giáo viên III HOẠT ĐỘNG DẠY VÀ HỌC: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Hoạt động 1: Tìm hiểu việc xây dựng hàm và thủ tục chương trình, thực các việc liên quan đến tam giác a Muc tiêu: HS biết các hàm và thủ tục chương trình, hiểu chức chương trình con, tính đầu vào và đầu chương trình b Nội dung: - Procedure daicanh(R: Tamgiac; var a,b,c: real); - Function chuvi(var R: Tamgiac): real; - Function dientich(var R: Tamgiac): real; - Procedure tinhchat(var R: Tamgiac; var deu,can,vuong: boolean); - Procedure hienthi(var R: Tamgiac); - Funtion kh_cach(P,Q: Diem): real; c Các bước tiến hành:  Đưa bài toán: Nhập toạ độ đỉnh tam giác, tính diện tích, chu vi, hiển thị tính vuông, cân  HS nhìn bảng và trả lời các câu hỏi GV đưa tam giác  Trả lời câu hỏi GV  GV định hướng cho HS vì phải xây dựng kiểu  Trả lời các câu hỏi GV đưa quá trình liệu để giải bài toán SGK  Yêu cầu HS phân biệt hàm và thủ tục? giảng bài  GV chính xác hoá kết quả, nhấn mạnh ý: Một chương trình có thể dùng các chương trình  HS lắng nghe GV giảng bài và trả lời các câu hỏi khai báo trước nó thân chương trình GV đưa ra: mình + Xác định đâu là tham trị và đâu là tham biến  Dẫn dắt, giải thích cho HS hiểu ý nghĩa, dạng các chương trình bên chương trình con, cách dùng các tham số (tham biến, tham trị), thứ tự khai báo, đầu vào, đầu chương trình sử dụng để giải bài toán trên + Procedure daicanh(R: Tamgiac; var a,b,c: real);  Nhận đầu vào là biến R mô tả tam giác và đầu là độ dài cạnh a,b,c + Function chuvi(var R: Tamgiac): real;  Cho giá trị là chu vi tam giác R + Function dientich(var R: Tamgiac): real;  Cho giá trị là chu vi tam giác R + Procedure tinhchat(var R: Tamgiac; var deu,can,vuong: boolean);  Nhận đầu vào là biến R mô tả tam giác và đầu là tính chất tám giác (đều, cân vuông) + Procedure hienthi(var R: Tamgiac);  Quan sát chương trình, dự tính chức  Hiển thị toạ độ đỉnh tam giác trên màn hình (81) chương trình + Funtion kh_cach(P,Q: Diem): real;  Cho giá trị là khoảng cách hai điểm P, Q  GV sử dụng máy chiếu để để hiển thị nội dung  Nhập vào toạ độ đỉnh tam giác, khảo sát tính chương trình SGK lên màn hình cho HS quan chất tam giác (cân, vuông, đều) Quan sát kết sát, kết hợp với dùng bảng để thảo luận và giải thích trên màn hình để đối chiếu với kết tự tính nội dung chương trình và cách dùng các  Quan sát và ghi nhớ kết để thấy hiệu ứng chương trình chương trình chính Sau thay đổi tham biến và tham trị HS đã thông hiểu chương trình, yêu cầu HS lên chạy thử cách nhập toạ độ HS đã kiểm tra trước Hoạt động 2: Rèn luyện kỹ lập trình a Mục tiêu: Viết chương trình có sử dụng chương trình để tính số lượng tam giác đều, số lượng tam giác cân và số lượng tam giác vuông b Nội dung: - Viết chương trình, sử dụng các hàm và thủ tục đã xây dựng để giải bài toán sau: Cho tệp liệu TAMGIAC.DAT có cấu trúc sau: Dòng 1: Ghi số nguyên N (1<=N<=100) N dòng tiếp theo: dòng ghi số thực xA, yA, xB, yB, xC, yC là các toạ độ đỉnh A, B, C tam giác Yêu cầu: đọc liệu từ tệp TAMGIAC.DAT, xử lý và đưa kết tệp TAMGIAC.OUT gồm dòng: Dòng 1: Ghi số lượng tam giác Dòng 2: Ghi số lượng tam giác cân (nhưng không đều) Dòng 3: Ghi số lượng tam giác vuông c Các bước tiến hành:  Quan sát yêu cầu  Phân tích yêu cầu để bài + Nhóm 1: Đặt câu hỏi  Chiếu nội dung, yêu cầu lên bảng  Dữ liệu vào  Chia lớp thành hai nhóm  Dữ liệu  Nhóm 1: Nêu câu hỏi phân tích để giải  Cần sửa chỗ nào tỏng chương trình câu bài toán b  Nhóm 2: Trả lời câu hỏi phân tích nhóm  Thuật toán để đếm số lượng các loại hình tam để tìm cách giải bài toán giác  GV góp ý, bổ sung câu hỏi phân tích và trả lời phân + Nhóm 2: Trả lời câu hỏi phân tích tích  Phải viết lệnh đọc đữ liệu tệp  Ba số nguyên dương là số lương loại hình tam giác ghi trên dòng tệp  Cần thay đoạn chương trình nhập liệu chương trình để đọc liệu từ tệp TAMGIAC.DAT  Thay đoạn chương trình in kết màn hình chương trình để in số nguyên dương là số lượng loại hình tệp TAMGIAC.OUT Thuật toán: Nếu deu thì d:= d + Ngược lại can thì c:= c +  Lập trình: Ngược lại thì v:= v + 1;  Yêu cầu HS lập trình trên máy GV tiếp cận  Độc lập viết chương trình, thực chương trình Hs để sửa lỗi cần thiết test tự tạo  Yêu cầu HS nhập liệu vào GV và báo cáo  Thông báo kết cho GV kết chương trình  Nhập liệu GV và báo cáo kết  Đánh giá kết HS (82) IV CỦNG CỐ KIẾN THỨC: Nhắc lại nội dung đã học từ đầu chương VI: Cách xây dựng chương hàm, thủ tục, cách truyền tham biến, tham trị V CÂU HỎI VÀ BÀI TẬP VỀ NHÀ: - Đọc bài đọc thêm - Chuẩn bị bài - Viết các chương trình sau (dùng các chương trình con): + Đếm và in màn hình các số nguyên tố dãy số nguyên nhập từ bàn phím + Nhập liệu gồm các thông tin họ tên, điểm toán, điểm văn HS vào file KETQUA.INP Sau đó đọc file và in màn hình HS lên lớp (biết HS lên lớp là HS có điểm toán >= và điểm văn >= 5) Ngày soạn: 20/02/2014 – Tuần 36 (tiết 52) KIỂM TRA TIẾT (thực hành) I Mục đích yêu cầu: * Về phía học sinh: - Rèn luyện kĩ tư lập trình kiểu liệu tệp (khai báo và các thao tác tệp văn bản) - Viết chương trình, kiểm tra lỗi cú pháp, biên dịch và xem kết sau biên dịch * Về phía giáo viên: - Kiểm tra kết trên tệp “KIEMTRA.TXT” và đánh giá II Nội dung kiểm tra: Viết chương trình: - Nhập vào họ tên từ bàn phím và ghi họ tên vừa nhập vào tệp có tên “HOTEN.TXT” - Đọc liệu trên tệp “HOTEN.TXT” và ghi liệu vừa đọc vào tệp “KIEMTRA.TXT” Ngày soạn: 20/02/2013 – Tuần 36, 37 (tiết 53, 54) ÔN TẬP (ĐỀ CƯƠNG) Câu Lợi ích chương trình là A Tiết kiệm thời gian viết mã chương trình B Làm cho chương trình tường minh, dễ đọc C Thuận tiện việc sửa chửa, nâng cấp chương trình D Tất các ý trên Câu Chương trình có loại A B C D Câu Sự khác hàm và thủ tục là A Hàm có trả giá trị còn thủ tục thì không B Thủ tục có trả giá trị còn hàm thì không C Hàm có tham số còn thủ tục thì không D Thủ tục có tham số còn hàm thì không Câu Tham số khai báo ta khai báo chương trình gọi là A Tham số thực B Tham số hình thức C Tham số giả D Tham số tạm Câu Tham số truyền vào ta gọi chương trình gọi là A Tham số thực B Tham số hình thức C Tham số giả D Tham số tạm thời Câu Biến khai báo chương trình gọi là A Biến toàn cục B Biến cục C Biến D Biến ngoài Câu Phát biểu nào sau đây đúng nói biến cục A Được sử dụng chương trình khai báo nó B Được sử dụng chương trình chính C Được sử dụng tất các chương trình D Tất sai (83) Câu Giả sử ta đã viết hàm tính tổng các số nguyên từ đến n: Function Sum(n: Integer): Integer; … Cách gọi hàm nào sau đây chương trình chính là đúng A Sum(n: Integer); B S:= Sum(n: Integer); C S:=Sum(n); D S:=Sum(n): integer; Câu Biến a, b khai báo hàm tính ước chung lớn nhất, biến x, y khai báo chương trình chính Biểu thức nào sau đây viết chương trình chính là đúng: A a:= b-1; B a:= x-y; C b:=x+y; D x:=y; Câu 10 Cho thủ tục f() cài đặt sau: Procedure f( a,b: integer); Var c: integer; Begin c:=a+b; write(c) end; chuong trình chính có đoạn sau: x:=4; y:=5; f(x,6); hỏi kết xuất màn hình là gì: A 10 B C D Câu 11 Hãy chọn câu lệnh Đúng: A For i := 10 to S := S+i ; B For i := downto 10 S := S+i ; C For i := -10 to -1 S := S+i ; D For i := -10 downto -1 S := S+i ; Câu 12 Chọn đáp án ghép ĐÚNG NHẤT Trong câu lệnh for-do và while-do, sau từ khóa ta phép viết: A Chỉ câu lệnh đơn B Nhiều câu lệnh C Một câu lệnh đơn ghép D Cả A và B đúng Câu 13 Trong cấu trúc lặp While <Điều kiện> <Câu lệnh> ; Hãy cho biết <Điều kiện> trả kết nào sau đây để <Câu lệnh> thực hiện? A <ĐK> trả kết TRUE B <ĐK> trả kết FALSE Câu 14 Lặp với số lần chưa biết trước ta dùng câu lệnh : A For – B While – C Cả A và B đúng Câu 15 Lặp với số lần biết trước ta dùng câu lệnh : A For – B While – C Cả A và B đúng Câu 16 Trong cấu trúc lặp Hãy chọn phát biểu SAI: A <biến đếm>, <giá trị đầu>, <giá trị cuối> phải cùng kiểu liệu B Ta có thể khai báo <biến đếm> là kiểu số thực C Giá trị <biến đếm> điều chỉnh tự động (tăng giảm đơn vị) D Điều kiện để câu lệnh For-do tiếp tục lặp là <giá trị đầu> phải nhỏ <giá trị cuối> Câu 17 Chọn phát biểu sai các phát biểu sau: A Có thể dùng vòng lặp while-do thay cho vòng lặp for B Có thể dùng vòng lặp for-do thay cho vòng lặp while-do C Trong vòng lặp while-do phải có câu lệnh làm thay đổi điều kiện lặp cho sau số hữu hạn vòng lặp (chưa biết trước) thì điều kiện lặp nhận giá trị sai D Trong vòng lặp for-do không nên dùng lệnh gán làm thay đổi giá trị biến điều khiển vòng lặp Câu 18 Chọn phát biểu đúng các phát biểu sau: A Có thể dùng cấu trúc lặp để thay cho cấu trúc rẽ nhánh mô tả thuật toán B Câu lệnh lặp không xuất <câu lệnh> đứng sau từ THEN cấu trúc rẽ nhánh C Câu lệnh rẽ nhánh không xuất <câu lệnh> cấu trúc lặp D Một cấu trúc lặp có thể xuất <câu lệnh> cấu trúc lặp khác Câu 19 Hãy tính số lần lặp câu lệnh sau: For i:= -10 to 10 S := S + i; A B 20 C 21 D Lệnh FOR sai cú pháp Câu 20 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực công việc gì? (84) T:=0; For i:=1 to N If (i mod = 0) or (i mod = 0) Then T:=T+i; A Tính tổng các số chia hết cho và phạm vi từ đến N B Tính tổng các số chia hết cho phạm vi từ đến N C Tìm ước số N D Tính tổng các ước thực (ước thực là ước mà không kể chính nó) N; Câu 21 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau đưa màn hình kết gì? T:=0; For i:=1 to n If (i mod = 0) Then T:=T+i; A Tính tổng các số chia hết cho phạm vi từ đến n B Tính tổng các số không chia hết cho phạm vi từ đến n C Tính tổng bình phương các số phạm vi từ đến n D Tính tổng các số nguyên phạm vi từ đến n Câu 22 Cho đoạn chương trình sau: S:= 1; FOR i:= TO DO S:= S - i ; Sau thực đoạn chương trình trên thì S có giá trị A Lệnh FOR sai cú pháp B C -3 D Câu 23 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực công việc gì? i:=0; While (i<>0) Do Write( i : 3); A Đưa màn hình 10 chữ số 0; B Lặp vô hạn việc đưa màn hình số C Không đưa thông tin gì D Đưa màn hình chữ số Câu 24 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau đưa màn hình kết gì? T:=0; For i:=1 to n If (i mod = 0) Then T:=T+i; A Tính tổng các số chia hết cho phạm vi từ đến n B Tính tổng các số không chia hết cho phạm vi từ đến n C Tính tổng các số nguyên phạm vi từ đến n D Tính tổng bình phương các số phạm vi từ đến n Câu 25 Cho S và i là biến nguyên Khi chạy đoạn chương trình for i:=1 to 10 s := s+i; writeln(s); Kết xuất màn hình A 101 B 55 C 11 D 100 Câu 26 Hãy chọn cấu trúc đúng lệnh FOR dạng lùi A FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh> ; B FOR <biến đếm> := <giá trị đầu> DOWNTO <giá trị cuối> DO <câu lệnh> ; C FOR <biến đếm> := <giá trị cuối> TO <giá trị đầu> DO <câu lệnh> ; D FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO <câu lệnh> ; Câu 27 Trong ngôn ngữ lập trình Pascal, các câu lệnh sau có ý nghĩa gì? Type Mangthuc = array[1 100] of real; Var A: Mangthuc; A Định nghĩa mảng chiều có tên kiểu mảng là “Mangthuc” và khai báo biến mảng chiều với tên là “A” B Định nghĩa mảng chiều có tên là “A” và khai báo biến mảng chiều với tên là “Mangthuc” C Khai báo biến kiểu mảng chiều D Khai báo biến chiều với tên là “Mangthuc” Câu 28 Trong ngôn ngữ lập trình Pascal, đoạn chương trình dùng để làm gì? Var a: array[1 10] of integer; (85) i, Pos: integer; Begin Pos:=0; for i:= to n If a[i] mod = then pos:= pos+1; End A Đếm số phần tử mảng a là số chẵn B Đếm số phần tử mảng a là số lẻ C Tính tổng các phần tử mảng a D Đếm các phần tử có mảng a Câu 29 Hãy chọn cú pháp khai báo đúng các khai báo sau : A Var <tên mảng > :< Kiểu liệu>; B Var < tên biến mảng >: [ kiểu số ] of < kiểu phần tử>; C Var < tên biến mảng >: array [ kiểu số ] of < kiểu phần tử>; D Var < tên biến mảng >: array [ kiểu số ] < kiểu phần tử>; Câu 30 Giả sử ta có mảng A sau : A 10 15 20 25 30 35 40 45 50 Để có giá trị là 35 ta truy xuất sau : A 35 B A[35] C [35] D A[7] Câu 31 Trong Pascal, để xuất các phần tử mảng chiều ta dùng vòng For? A B C D Câu 32 Đoạn chương trình sau làm gi? S:=0; For i:=1 to n S:=S+a[i]; A Đếm số phần tử mảng A B In mảng A C Tính tổng các phần tử mảng A D Nhập mảng A Câu 33 Cho xâu A=‘Bai_tap_pascal’; B=‘Bai_tap_chuong_1’ Khẳng định nào sau đây đúng A A > B B B > A C A = B D A  B Câu 34 Đoạn chương trình sau cho kết nào? Var a, b: string; i: integer; Begin a:=’12341234abc’; b:= ‘’; For i:= 11 downto if a[i] <> ‘2’ then b:=b+a[i]; writeln(b); End A ‘134134abc’ B ‘cba431431’ C ‘12341234abc’ D ‘cba134134’ Câu 35 Cho đoạn chương trình Var s1, s2: string; Begin s1:= ‘tinhoc ’; s2:=’11’; insert(s2,s1,7); write(s1); end Kết là A ‘tin11hoc11’ B ‘tin11hoc’ C ‘tinhoc11 ’ D ‘tinh11oc11’ Câu 36 Hãy cho biết cú pháp khai báo nào sau đây là đúng : A Var < tên biến > : string[độ dài lớn xâu ]; B Var string[độ dài lớn xâu ]; C Var < tên biến > string[độ dài lớn xâu ] D Var < tên biến > string[độ dài lớn xâu ]; Câu 37 Giả sử xâu A là : ‘ABCD’ đó lệnh write(A) có kết là: A AB B BC C CD D ABCD Câu 38 Giả sử xâu A là : ‘ABCD’ đó lệnh write(A[1]) có kết là: (86) A D B B C A D C Câu 39 Giả sử : st:=‘abcd’; thủ tục Delete(st,2,2); có kết là: A ad B cd C bc D bd Câu 40 Giả sử : st:=’abcd’; thủ tục Insert(‘ab’,st,2); có kết là: A abcdab B ababad C ababcd D aabbcd Câu 41 Giả sử : st:=‘Thuan Hoa’; hàm copy(st,7,3); có kết là: A Hoa B uan Hoa C n Ho D an Hoa Câu 42 Giả sử : st:= ‘Thuan Hoa’; hàm length(st); có kết là : A B C D 10 Câu 43 Giả sử : st:= ‘Thuan Hoa’; hàm Pos(‘m’,st); có kết là : A B C D Câu 44 Trong ngôn ngữ Pascal, xâu là: A Mảng các kí tự B Tập hợp các chữ cái và chữ số C Tập hợp các chữ cái từ A đến Z D Dãy các kí tự bảng mã ASCII Câu 45 Một xâu có tối đa bao nhiêu kí tự? A 64 B 255 C 128 D 256 Câu 46 Xâu không có kí tự nào gọi là: A Xâu không B Xâu chứa khoảng trắng C Xâu rỗng D Không có loại xâu này Câu 47 Phần tử đầu tiên xâu là phần tử thứ: A B Do người lập trình khai báo C D Không có số Câu 48 Đoạn chương trình sau làm gì? For i:=length(a) downto write(a[i]); A Viết kí tự đầu a B Viết kí tự cuối a C Viết xâu a theo thứ tự ngược D Viết xâu a theo thứ tự Câu 49 Đoạn chương trình sau làm gì? k:=0; For i:=1 to length(a) If a[i]='a' then k:=k+1; A Đếm số kí tự số xâu a B Đếm số kí tự a xâu a C Đếm số kí tự trắng xâu a D Đếm số kí tự xâu a Câu 50 Đoạn chương trình sau làm gì? k:=0; For i:=1 to length(a) If a[i]=a[1] then k:=k+1; A Đếm số kí tự trắng xâu a B Đếm số kí tự số xâu a C Đếm số kí tự a xâu a D Đếm số kí tự giống kí tự đầu xâu a Câu 51 Đoạn chương trình sau làm gì? For i:= to length(a)do Write(Upcase(a[i])); A Xuất màn hình xâu a với kí tự đầu viết in hoa B Xuất màn hình xâu a viết in hoa C Xuất màn hình xâu viết in thường D Xuất màn hình xâu a theo thứ tự Câu 52.Cho biết các tên đây đâu là tên dành riêng (từ khóa) A Program B Begin C BaiTap D Real Câu 53 Cho biết các tển đây đâu là tên chuẩn A Program B Pascal C BaiTap D Sqrt Câu 54 Hằng (Const) quá trình thực chương trình A Giá trị không thay đổi B Giá trị có thể thay đổi C Giá trị luôn thay đổi D Cả ba đúng Câu 55 Hằng (Const) Tp có thể là A Các số nguyên B Các số thực C Các ký tự D Cả ba đúng Câu 56 Các từ: PROGRAM, BEGIN, END là A Tên dành riêng B Tên chuẩn C Tên người lập trình đặt D Tên đặc biệt Câu 57 Các từ: SQR, SQRT, REAL là A Tên dành riêng B Tên chuẩn C Tên người lập trình đặt D Tên đặc biệt (87) Câu 58 Cho biết kết trả biểu thức sau: (20 mod 3) div + (15 div 4) A B 10 C D Câu 59 Bộ nhớ cần cấp phát bao nhiêu byte để lưu trữ: VAR X,Y:Boolean; D:Integer; A,B :LongInt; A 22 byte nhớ B 20 byte nhớ C 21 byte nhớ D 12 byte nhớ Câu 60 Trong Turbo Pascal, để thực chương trình: A Nhấn tổ hợp phím Alt+F9 B Nhấn phím F2 C Nhấn tổ hợp phím Ctrl + F9 D Nhấn phím Alt+F3 B PHẦN TỰ LUẬN: Câu Nêu giống và khác thủ tục và hàm? Câu Chương trình có thể không có tham số không? Cho ví dụ Câu Hãy cho ví dụ chương trình có nhiều kết Câu Viết chương trình (hàm, thủ tục) tính bội số chung nhỏ hai số nguyên dương a, b Hãy cho biết trường hợp nào dùng thủ tục, trường hợp nào dùng hàm? Câu Hàm, thủ tục là gì? Hãy trình bày cấu trúc hàm, thủ tục? Câu Xây dựng các chương trình sau: a) Nhập số nguyên a, b b) Tính tổng số nguyên a, b c) Tính an (a là số thực, n là số nguyên dương) d) Tính n! (n là số nguyên dương) e) Kiểm tra số nguyên dương a có phải là số nguyên tố không? Câu Cho S1:= ‘Ha Noi-Viet Nam’; S2: = ‘-thu do’; Hãy cho biết kết sau lời gọi thủ tục (hàm): (2đ) Các thủ tục (hàm) Kết trả Delete(S1,7,1); ………………………………………………………… Insert(S2,S1,7); ………………………………………………………… Pos(‘Viet Nam’); ………………………………………………………… Length(S1) ………………………………………………………… Câu Hãy liệt kê biến cục bộ? biến toàn cục? tham số hình thức? tham số thực sự? tên chương trình chính? m n p q Tên chương trình chương trình tính tổng lũy thừa? Tluythua a  b  c  d Program TONGLUYTHUA; Uses crt; Var Tluythua, a, b, c, d: real; m, n, p, q: integer; Function luythua(x:real, k:integer): integer; Var i:integer; Lt:integer; Begin Lt:=1.0; For i:=1 to k Lt:=Lt*x; luythua:=Lt; End; Begin Clrscr; Write(‘Hay nhap du lieu theo thu tu a, b, c, d, m, n, p, q:’); Readln(a, b, c, d, m, n, p, q); Tluythua:=luythua(a,m)+luythua(b,n)+luythua(c,p)+luythua(d,q); Writeln(‘Ket qua tong luy thua:’, Tluythua:6:2); (88) Realn; End Câu Trình bày cấu trúc khai báo biến tệp văn bản? Trong sơ đồ thao tác với tệp, cần ghi liệu vào tệp phải dùng thao tác nào? Câu 10 Thế nào là tham biến, tham trị, tham số thực sự? Thế nào là biến toàn cục, biến cục bộ? ĐÁP ÁN PHẦN TRẮC NGHIỆM: Câu 10 11 12 13 14 15 Đ-án D B A B A B A C D A C C A B A Câu 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Đ-án B B D A B A A C A B A A A C D Câu 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 Đ-án B C A B C A D C A D A C A A B Câu 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 Đ-án C A C B D B A D A D A B D D C ĐÁP ÁN PHẦN TỰ LUẬN: Câu * Giống nhau: - Đều là chương trình con, có cấu trúc giống chương trình - Đều có thể chứa các tham số (tham số giá trị và tham số biến), cùng tuân theo các quy định khai báo và sử dụng các loại tham số này (Có thể không có tham số) * Khác nhau: - Hàm khác thủ tục điểm là hàm luôn trả giá trị thuộc kiểu xác định thông qua tên hàm (các kiểu liệu đơn giản: integer, real, boolean, char, string) - Đầu hàm khóa Function còn thủ tục bắt đầu với từ khóa Procedure - Phải kết hàm thuộc kiểu liệu nào - Trong thân hàm thường có câu lệnh gán giá trị cho tên hàm Câu Trong chương trình có thể không cần tham số Trong trường hợp cần nhận các giá trị từ chương trình chính thì chương trình cần phải có các tham số VD: Procedure Ve_hcn; Begin Writeln(‘********************’); Writeln(‘* *’); Writeln(‘********************’); End; Câu Chương trình cho nhiều kết Procedure Hoan_doi(Var x, y: integer); Var tg:integer; Begin tg:=x; x:=y; y:=tg; end; Câu Program BSCNN; Uses crt; Var x,y:integer; Function ucln(a,b:integer):integer; Var r: integer; Begin While b>0 Begin r:=a mod b; a:=b; (89) b:=r; end; ucln:=a; end; Function bcnn(a,b :integer);integer); Begin Bcnn:=a*b div ucln(a,b); End; Begin Clrscr; Writeln(‘Nhap vao so nguyen x: ’); readln(x); Writeln(‘Nhap vao so nguyen y: ’); readln(y); Writeln(‘Boi chung nho nhat la:’, bcnn(x,y)); Readln; End - Ta nên dùng hàm có kết ra, ví dụ bài toán tìm số nhỏ nhất, ucln, bcnn, min,… - Thủ tục thường dùng để đưa nhiều kết hay không kết nào mà thực nhiệm vụ nào đó, ví dụ bài toán hoán đổi, in danh sách màn hình,… Câu * Khái niệm hàm, thủ tục: - Hàm (Function) là chương trình thực số thao tác nào đó và trả giá trị qua tên hàm - Thủ tục (Procedure) là chương trình thực các thao tác định không trả giá trị qua tên thủ tục * Cấu trúc hàm, thủ tục: - Hàm: Function<tên hàm>[(<danh sách tham số>)]:<kiểu liệu>; [<Phần khai báo>]; Begin [<dãy các lệnh>]; <tên hàm>:=<biểu thức>; End; - Thủ tục: Procedure<tên thủ tục>[(<danh sách tham số>)]; [<Phần khai báo>]; Begin [<dãy các lệnh>]; End; Câu Xây dựng các chương trình sau: a) Chương trình nhập hai số nguyên a, b Procedure nhap; Begin Writeln(‘Nhap a:’); Readln(a); Writeln(‘Nhap b:’); Readln()b; End; b) Chương trình tính tổng hai số nguyên a, b Function tong(var x, y: integer): integer; Begin Tong:=x+y; End; c) Tính an (a là số thực, n là số nguyên dương) Function luythua(var a:real, var n: integer): real; Var i: integer; Lt: real; Begin Lt:=1.0; For i:=1 to n Lt:=Lt*a; (90) Luythua:=lt; End; d) Tính n! (n là số nguyên dương) Function giaithua(var n: integer): integer; Var gt, i: integer; Begin gt:=1; For i:= to n gt:=gt*i; giaithua:=gt; end; e) Kiểm tra số nguyên dương a có phải là số nguyên tố không? (Số nguyên dương gọi là số nguyên tố nó chia hết cho và chính nó- nói cách khác là số có ước số là và chính nó) Procedure kiemtra_sont(var a:integer); Var i:integer; kt: boolean; begin kt:= true; if a<=1 then kt:=false; for i:=2 to trunc(sqrt(a)) if (a mod i=0) then kt:=false; if kt then writeln(‘So vua nhap la so nguyen to!’) else writeln(‘So vua nhap khong la so nguyen to!’); end; Câu S1:= ‘Ha Noi-Viet Nam’; S2: = ‘-thu do’; Các thủ tục (hàm) Kết trả Delete(S1,7,1); ‘Ha NoiViet Nam’ Insert(S2,S1,7); ‘Ha Noi-thu do-Viet Nam’ Pos(‘Viet Nam’); Length(S1) 15 Câu - Biến cục bộ: i, Lt - Biến toàn cục: a, b, c, d, m, n, p, q, Tluythua - Tham số thực sự: (a,m); (b,n); (c,p); (d,q) - Tham số hình thức: (x,k) - Tên chương trình chính: tongluythua - Tên chương trình con: luythua Câu * Cấu trúc khai báo biến tệp văn bản: Var<tên biến tệp>:text; * Các thao tác cho việc ghi liệu vào tệp: - Gắn biến tệp với tên tệp: assign(<biến tệp>, <tên tệp>); - Mở tệp: Rewrite(<biến tệp>); - Ghi liệu vào tệp: Write(<biến tệp>,<danh sách kết quả>); - Đóng tệp: Close(<biến tệp>); Câu 10 - Định nghĩa tham trị: Trong lệnh gọi chương trình con, các tham số hình thức thay các tham số thực tương ứng là các giá trị cụ thể gọi là các tham số giá trị - Định nghĩa tham biến: Trong lệnh gọi chương trình con, các tham số hình thức thay các tham số thực tương ứng là tên các biến chứa liệu gọi là các tham số biến (91) - Biến toàn cục: Là các biến khai báo chương trình chính Các biến này có tác dụng nơi chương trình chính - Biến cục bộ: Là các biến khai báo chương trình Các biến này có tác dụng chương trình đó Khi chương trình kết thúc, các biến này tác dụng theo Ngày soạn: 20/02/2014 – Tuần 37 (tiết 55) KIỂM TRA HỌC KÌ II Ngày soạn: 20/02/2014 – Tuần 38 (tiết 56) BÀI 19: THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN I Mục tiêu: + Kiến thức: - Giới thiệu số thư viện chương trình chuẩn và cách sử dụng + Kĩ năng: - Bước đầu sử dụng các thư viện đó lập trình - Biết khai báo và sử dụng thư viện CRT, GRAPH II Đồ dùng Dạy học: + Giáo viên: giáo án, máy chiếu, chương trình sử dụng các hàm cần giới thiệu + Học sinh: Sách giáo khoa III Hoạt động Dạy - Học: + Ổn định lớp + Kiểm tra bài cũ + Tiến trình tiết dạy: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV + Đặt vấn đề: Giới thiệu các thư + Các chương trình thư viện viện chương trình ngôn ngữ CRT : lập trình - Clrscr, textcolor, textbackgrond, + HĐ 1: Giới thiệu thư viện CRT gotoXY - Yêu cầu học sinh đọc sách và kể - Quan sát tên chương trình thư viện CRT - Chưa sử dụng thư viện CRT - Quan sát -Xoá màn hình - Đặt màu chữ PHẦN TRÌNH BÀY 1/ CRT: - Chứa các thủ tục liên quan đến việc quản lí và khai thác mà hình, bàn phím máy tính - Trình chiếu và cho chạy chương trình sau: Program xoamanhinh; Begin Clrscr; Writeln(‘Xoa man hinh’); Readln; End - Clrscr: xoá màn hình - Vì xuất lỗi chạy chương trình này? - Thêm : Uses CRT vào trước begin và chạy chương trình - Chức thủ tục Clrscr ? - Trình chiếu chương trình chứa (92) thủ tục textcolor, yêu cầu học sinh quan sát và nhận xét chức - Đặt màu lệnh này - Trình chiếu chương trình chứa thủ tục textbackground, yêu cầu học sinh quan sát và nhận xét chức lệnh này - Đưa trỏ cột X và dòng Y - Trình chiếu chương trình chứa thủ tục gotoXY, yêu cầu học sinh quan sát và nhận xét chức lệnh này + HĐ 2: Tìm hiểu thư viện Graph - ĐVĐ: thư viện Graph chứa các - Lắng nghe thủ tục liên quan đến chế độ đồ hoạ + Cho HS xem sách và trả lời: - Các dạng liệu nào có thể hiển thi trên màn hình? - Văn và hình ảnh - Card màn hình có nhiệm vụ gì? - Các tệp điều khiển đồ hoạ có - Đảm bảo tương tác giữ vi xử lí chức gì? và màn hình - Cung cấp các chương trình điều khiền tương ứng với các loại bảng - Khi nói đến màn hình phân giải mạch đồ hoạ 640x480 là nói đến điều gì? - 640 dòng và 480 cột + Để sử dụng thư viện đồ hoạ ta phải làm gì? - Để khởi tạo chế độ đồ hoạ ta sử - Khởi tạo chế độ đồ hoạ dụng thủ tục nào? - Initgraph(var driver, Integer; path: string); - Textcolor(n): đặt màu chữ, đó n là biến xác định màu - Textbackground(n): đặt màu - GotoXY(x,y): đưa trỏ đến cột x dòng y màn hình văn 2/ Graph: - Chứa các hàm và thủ tục liên quan đến chế độ đồ hoạ a) Các thiết bị và chương trình hỗ trợ đồ hoạ: - Có hai chế độ làm việc: văn và đồ hoạ - Bảng mạch điều khiển màn hình là thiết bị đảm bảo tương tácgiữa vi xử lí và màn hình b) Khởi tạo chế dộ đồ hoạ: - Initgraph(var driver, mode: mode: Integer; path: string); + Trong đó: - driver: số hiệu chương trình điều khiển BGI - mode: số hiệu độ phân giải - path: đường dẫn đến tệp BGI - CloseGraph: Kết thúc chế độ đồ - Khi không sử dụng chế độ đồ hoạ hoạ thì ta phải làm gì? - Trở chế độ văn IV Củng cố: V Dặn dò, nhà: Ngày soạn: 20/02/2014 – Tuần 37 (tiết 57) (93) BÀI 19: THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN (tiếp theo) I Mục đích yêu cầu: - Về kiến thức: Biết số thư viện chương trình chuẩn - Về kỹ năng: + Khởi động chế độ đồ họa + Sử dụng các thủ tục vẽ điểm, đường, hình tròn, hình elip, hình chữ nhật II Chuẩn bị: - GV: SGK, giáo án, máy chiếu Projector - HS: SGK, III Phương pháp: - Gợi mở, vấn đáp - Làm việc theo nhóm IV Hoạt động dạy học: Ổn định lớp: Kiểm tra sĩ số HS Kiểm tra bài cũ: Nêu ý nghĩa và số thủ tục thư viện CRT ? Nội dung dạy học: HOẠT ĐỘNG CỦA HS HOẠT ĐỘNG CỦA GV Hoạt động 1: Khởi động và đóng chế độ đồ họa  Quan sát ví dụ và trả lời  Trình chiếu ví dụ vẽ đường tròn Hãy đoạn chương trình khởi động đồ họa  Yêu cầu học sinh nghiên cứu  Initgraph ( driver, mode: SGK và ví dụ để nêu cấu trúc integer, path: string) chung thủ tục khởi động đồ họa  Giải thích các thông số thủ tục PHẦN TRÌNH BÀY b) Khởi động đồ họa: - Cấu trúc chung thủ tục khởi động đồ họa Initgraph (driver, mode: integer, path: string); + Driver: số hiệu chương trình điều khiển BGI, thường gán giá trị + Mode: là số hiệu độ phân giải  Muốn thoát khỏi chế độ đồ họa + Path: đường dẫn đến các tệp BGI dùng thủ tục gì?  Closegraph  Trình chiếu thêm ví dụ minh họa - Thủ tục kết thúc đồ họa: Closegraph  Quan sát Hoạt động 2: Các thủ tục vẽ điểm, đoạn thẳng  Quan sát  Thủ tục Putpixel c.Các thủ tục vẽ điểm, đoạn thẳng  Trình chiếu ví dụ Use graph; Begin Drive: = 0; Initgraph ( drive, mode,  Cho HS nêu kết ‘C: TP\BGI’);  Gọi HS nêu cấu trúc chung Putpixel(20,40,60); thủ tục Putpixel Readln;  HS trả lời  Giải thích các thông số thủ End - Cấu trúc chung:  HS trả lời tục Putpixel (x, y: integer; color:  Chức Putpixel là gì ? word); + x và y là tọa độ điểm Thủ tục Line: + color là màu điểm  Quan sát  Trình chiếu ví dụ - Chức năng: Vẽ điểm màu color trên màn hình tọa độ (x,y)  Cho HS nêu kết Use graph;  HS trả lời  Gọi HS nêu cấu trúc chung Begin thủ tục Line (94)  Giải thích các thông số thủ tục  Chức Line là gì ? Drive: = 0;  HS trả lời Initgraph ( drive, mode, ‘C: TP\BGI’); Line (20,40,30,60); Readln; End - Cấu trúc chung: Line (x1,y1,x2,y2: integer) - Chức năng: Vẽ đoạn thẳng  Quan sát Thủ tục Lineto: từ điểm có tọa độ (x1,y1) đến điểm  Trình chiếu ví dụ có tọa độ (x2,y2) Use graph; Begin  HS trả lời  Cho HS nêu kết Drive: = 0;  Gọi HS nêu cấu trúc chung Initgraph ( drive, mode,  HS trả lời thủ tục Lineto ‘C: TP\BGI’)  Giải thích các thông số thủ Lineto (20,20) tục Readln;  Chức Lineto là gì? End - Cấu trúc chung: Lineto (x,y: integer) - Chức năng: Vẽ đường thẳng từ điểm đến điểm có tọa  Quan sát Thủ tục Linerel: độ (x,y)  Trình chiếu ví dụ Use graph Begin Drive: = 0;  HS trả lời  Cho HS nêu kết Initgraph ( drive, mode,  Gọi HS nêu cấu trúc chung ‘C: TP\BGI’) thủ tục Linerel Linerel (10,10);  HS trả lời  Giải thích các thông số thủ Readln; tục End  Chức Linerel là gì? - Cấu trúc chung: Linerel (dx,dy: integer) - Chức năng: Vẽ đường thẳng nối điểm với điểm có tọa Thủ tục Setcolor: độ tọa độ cộng với  Trình chiếu ví dụ gia số (dx,dy)  Quan sát Use graph; Begin Drive: = 0; Initgraph ( drive, mode,  Cho HS nêu kết ‘C: TP\BGI’)  HS trả lời  Gọi HS nêu cấu trúc chung Lineto (20,20); thủ tục Setcolor Setcolor (10);  Giải thích các thông số thủ Lineto (20;-20); tục Readln;  HS trả lời  Chức Setcolor là gì? End - Cấu trúc chung: Setcolor (color: word) - Chức năng: Đặt màu cho nét vẽ Hoạt động 3: Các thủ tục vẽ hình đơn giản và các thủ tục, hàm liên quan đến vị trí trỏ  Quan sát  Trình chiếu: ví dụ d Các thủ tục vẽ hình đơn giản Use graph; (95)  HS trả lời  HS trả lời  Cho HS nêu kết  Gọi HS nêu cấu trúc chung các thủ tục Circle, Ellipse, Rectange  HS trả lời  System, Dos, printer  Giải thích các thông số thủ tục  Chức thủ tục là gì?  HS trả lời  Khai báo  uses crt,graph;  Giới thiệu các hàm xác định GTLN màn hình, thủ tục chuyển trỏ tới tọa độ (x, y)  Hãy nêu số thư viện khác Pascal?  Chức thư viện?  Để sử dụng các thủ tục và hàm chuẩn thư viện nào đó ta phải làm gì?  Gọi HS nêu VD Hoạt động 5: Củng cố - Dặn dò - Biết số thư viện chuẩn - Biết số thủ tục đồ họa đơn giản - Đọc thêm bài “Âm thanh” Begin Drive: = 0; Initgraph ( drive, mode, ‘C: TP\BGI’) Circle (20, 20, 30); Elipse (50,50,30,120,50,100); Rectangle (100,100,100,200); Readln; End - Cấu trúc chung: + Hình tròn: Circle (x,y: integer; r:word) + Elipse: Ellipse(x,y:integer; stAngle, EndAngle, Xr, Yr: word) + Hình chữ nhật: Rectange(x1,y1,x2,y2:integer) - Chức năng: + Circle: Vẽ đường tròn có tâm (x,y) và bán kính r + Elipse: Vẽ cung Elip có tâm điểm (x,y) với trục lớn xr, trục nhỏ yr, từ góc đầu StAngle đến góc cuối EndAngle + Rectange: Vẽ hình chữ nhật với (x1,y1) là tọa độ đỉnh trái trên; (x2,y2) là tọa độ đỉnh phải e Các thủ tục và hàm liên quan đến vị trí trỏ - Hàm xác định GTLN cua màn hình: Function GetMaxX: integer; Function GetMaxY: integer; - Thủ tục chuyển trỏ tới tọa độ (x;y) Procedure MoveTo(x,y:integer); Một số thư viện khác: - System: chứa các hàm sơ cấp và các thủ tục vào - Dos: chứa các thủ tục tạo thư mục, thiết lập hệ thống - Printer: cung cấp các thủ tục làm việc với máy in Sử dụng thư viện: - Khai báo thủ tục và hàm chuẩn theo cấu trúc: Uses unit1, unit2, ,unit n; (96)

Ngày đăng: 14/09/2021, 07:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w