Giáo án tin học11 CHƯƠNG I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH Ngày soạn: 21/8/2007 Tiết 1:
KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH
I. Mục đích, yêu cầu. Hiểu được khả năng của ng2 lập trình bậc cao, phân biệt được với ng2 máy và hợp ngữ. Hiểu ý nghĩa và nhiệm vụ của chtrình dịch. Phân biệt được thông dịch và biên dịch. Biết các thành phần cơ bản của ng2 lập trình: bảng chữ cái, cú pháp, ngữ nghĩa. Hiểu và phân biệt được các thành phần này II. Lên lớp 1. Ổn định tình hình lớp. Giới thiệu làm quen với HS của lớp. Tạo tâm lý và quan hệ tốt với HS trước khi bắt đầu tiết học đầu tiên 2. Bài mới T/g Hđ của GV Hđ của HS 2’ ĐVĐ: Về lập trình các em chỉ mới được tìm hiểu qua bài các bước để giải bài toán trên máy tính chta chưa có khái niệm cụ thể. Còn ngôn ngữ lập trình chta cũng đã tìm hiểu tất cả ở lớp 10. H: Vậy có những loại ngôn ngữ lập trình nào? Tl:Ng2 máy, hợp ngữ, ng2 bậc 2 H: Hãy phân biệt ng bậc cao với các loại cao. ng2 khác? Tl: (1-2 hs) Phân biệt ng2 bậc cao: chtrình viết bằng ng2 bậc cao ko phụ thuộc vào loại máy và phải dùng chtrình dịch để chuyển về ng2 máy. H: Tóm lại ng2 lập trình dùng để làm gì? Dẫn dắt: Vậy lập trình là gì? Chta tìm hiểu Tl: Lập trình k/n này. Ghi bảng Giải thích thêm về câu lệnh: - Cl để diễn tả các thao tác trong các bước Ghi bài của t/toán. - Cl đơn thực hiện bước có 1 thao tác - Cl ghép thực hiện bước gồm dãy các thao tác. Nghe giảng và tự ghi chép Dẫn dắt: Chtrình viết bằng ng2 máy sẽ thực hiện được ngay, còn chtrình viết bằng ng2 bậc cao thì phải chuyển đổi thành chtrình trên ng2 máy mới có thể thực hiện được. Công cụ thực hiện chuyển đổi đó gọi là chtrình dịch. H: Input, Output của chtrình dịch là gì? ( Có thể cho điểm miệng Hs trả lời đúng ) Tl: In: chtrình viết bằng ng2 H: nhiệm vụ quan trọng nhất của chtrình bậc cao dịch là gì? Out: chtrình trên ng2 máy. Tl: (2-3Hs) phát hiện lỗi cú * Phân biệt Thông dịch và Biên dịch pháp của chtrình nguồn Phân tích Ví dụ Sgk Tìm hiểu ví dụ Sgk
Giáo viên: Bùi Văn Tú
1
Nd ghi bảng
KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1. K/n lập trình (Sgk) Ý nghĩa: tạo ra các chtrình giải được bài toán trên MT.
2. Chtrình dịch a. K/niệm: Sgk
Giáo án tin học11 b. Phân loại: Có 2 loại - Thông dịch: lần lượt dịch và thực hiện từng câu lệnh. - Biên dịch: dịch toàn bộ chtrình rồi mới thực hiện và được lưu trữ để sử dụng lại lần sau.
ĐVĐ sang bài mới: Để có thể sử dụng một ng2 lập trình nào đó thì trước hết chta phải biết các thành phần cơ bản có trong nó là gì? Có ba thành phần cơ bản của ng2 lập trình: bảng chữ cái, cú pháp, ngữ nghĩa. Trước hết chta tìm hiểu bảng chữ cái. Treo bảng chữ cái * So sánh bảng chữ cái của ng2 lập trình với bảng chữ cái của ng2 tự nhiên Về cú pháp: Về ngữ nghĩa: Trong từng ngữ cảnh khác nhau, ngữ nghĩa của 1 tổ hợp kí tự là khác nhau Ví dụ: Sgk * Tóm lại + Phân biệt giữa cú pháp và ngữ nghĩa + Lỗi cú pháp + Lỗi ngữ nghĩa
a + b neu a 2 + b 2 > 1 va a > b 1 nguoc lai
Ví dụ: S =
Xem thử 3 cách mô tả cách nào đúng.
H: Lỗi ngữ nghĩa thường được phát hiện khi nào?
CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH 1. Các thành phần cơ bản - Bảng chữ cái
Cách1: If a2+b2>1 then if a>b then s=a+b Else s =1; (* a2+b2<1 thì s =? *)
- Cú pháp: bộ qui tắc để viết chtrình
- Ngữ nghĩa Cách2: If a2+b2>1 then begin if a>b then s=a+b end Else s =1; (* a
1 and a>b then s=a+b Else s=1 Tl: Khi thực hiện kiểm thử chtrình.
3. Củng cố: Ba lớp của ng2 lập trình và các mức của nó. Vai trò của chtrình dịch Khái niệm biên dịch và thông dịch Lỗi cú pháp, lỗi ngữ nghĩa 4. Về nhà: Đọc Bài đọc thêm 1 để tìm hiểu sơ về 1 số ng2 lập trình Soạn trước phần còn lại của bài 2. Trong đó chú ý các khái niệm mới: tên, hằng, biến. Cách sử dụng nó trong lập trình
Giáo viên: Bùi Văn Tú
2
Giáo án tin học11 Ngày soạn: 24/8/2007 Tiết 2:
CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH
I. MỤC TIÊU 1. Kiến thức Biết được một số khái niệm như: tên, tên chuẩn, tên dành riêng, tên do người dùng đặt, hằng biến chú thích 2. Kĩ năng Phân biệt được tên chuẩn với tên dành riêng và tên tự đặt Nhớ các qui định về tên hằng biến Biết đặt tên đúng, nhận biết được tên sai qui định Sử dụng đúng chú thích II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên Bảng chứa các tên đúng –sai để Hs chọn, bảng con, bút dạ. 2. Học sinh Sách giáo khoa III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (7 phút) Kiểm tra bài cũ Hđ của GV H1: Hãy phân biệt chtrình thông dịch và biên dịch? H2: NNLT có những thành phần nào? Lỗi cú pháp và lỗi ngữ nghĩa được phát hiện bằng gì?
Hđ của HS Hs1: trình bày trên bảng. Hs2: trả lời trước lớp Hs3: nhận xét câu trả lời của Hs1
Nhận xét, đánh giá cho điểm 3 Hs 2. Hoạt động 2: (18 phút) Tìm hiểu khái niệm tên trong thành phần của ngôn ngữ lập trình. a. Mục tiêu: Hs biết và phân biệt được 1 số loại tên: tên dành riêng, tên chuẩn, tên tự đặt. b. Nội dung: Mọi đối tượng trong chtrình đếu phải được đặt tên theo một qui tắc của NNLT và từng chtrình dịch cụ thể. Tên dành riêng (từ khóa): là những tên được NNLT qui định dùng với ý nghĩa xác định, người lập trình ko được dùng với ý nghĩa khác Tên chuẩn: là những tên được NNLT qui định dùng với ý nghĩa nào đó, người lập trình có thể định nghĩa lại để dùng với ý nghĩa khác. Tên do người dùng đặt: là tên được dùng theo ý nghĩa riêng của người lập trình, phải được khai báo trước khi sử dụng và không được trùng với từ khóa. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng ĐVĐ: Mọi đối tượng trong chtrình đếu phải 1. Khái niệm Tên được đặt tên (Sgk) 1. N/cứu Sgk nêu qui tắc đặt tên trong Turbo 1. N/cứu sgk và trả lời: Pascal? + Gồm chữ cái, chữ số, dấu gạch dưới + Không quá 127 kí tự, không bắt đầu bằng kí tự số. 2. Quan sát và trả lời 2. Chọn các tên đúng trong bảng sau: A Ví dụ: A _24 A_BC A_BC A BC _24 5ad A5d A5d C#BC Khẳng định lại các tên đúng 3. Y/cầu Hs n/cứu Sgk để biết các khái niệm 3. N/cứu sgk và trả lời về tên dành riêng, tên chuẩn, tên tự đặt. + Tên dành riêng Chia lớp thành 3 nhóm, mỗi nhóm tìm hiểu Thảo luận theo nhóm và cử + Tên chuẩn
Giáo viên: Bùi Văn Tú
3
Giáo án tin học11 và trình bày về một loại tên và cho ví dụ. Treo tranh chứa 1 số tên trong NNLT Pascal đã được chuẩn bị sẵn: Type Const Integer Dem Function Byte Inc Mang string HS xác định tên theo từng loại tên?
người trình bày. + Tên dành riêng + Tên chuẩn + Tên do người dùng đặt
+ Tên do người dùng đặt
Quan sát và ghi lên bảng con. Ví dụ: + Từ khóa: Type, Const, function Treo bảng con của 3 nhóm cho nhóm khác + Tên chuẩn: Integer, byte, nhận xét, bổ sung string, inc + Tên tự đặt: dem, mang Tổng kết vấn đề này Quan sát kết quả cnhóm khác, nhận xét và bổ sung 3. Hoạt động 3: (15 phút) Tìm hiểu hằng, biến, chú thích a. Mục tiêu: Hs biết được khái niệm về hằng, biến và chú thích. Phân biệt được hằng và biến. Thấy được ý nghĩa của chú thích. b. Nội dung: * Hằng là đại lượng có giá trị không đổi trong quá trình thực hiện chtrình. Có 3 loại hằng + Hằng số học: số nguyên, só thực, có dấu và không dấu + Hằng xâu: chuổi kí tự bất kì, được đặt trong dấu nháy đơn + Hằng logic: có 2 giá trị True hoặc False * Biến: là đại lượng đặt tên để lưu giá trị và giá trị này có thể thay đổi trong quá trình thực hiện chtrình, biến dùng trong chtrình đều phải được khai báo. * Chú thích : giải thích cho chtrình rõ ràng, dể hiểu. Được đặt trong cặp dấu { } hoặc (* *) c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Y/cầu Hs cho 1 số ví dụ về hằng số, hằng 1. Suy nghĩ và trả lời 2. Hằng và biến xâu, hằng logic + Hằng số: 55 73.05 a. Hằng + Hằng xâu: ‘211’ ‘AB’ + Hằng số + Hằng logic: False True + Hằng xâu Trình bày k/niệm về các loại hằng. Xem k/niệm hằng ở Sgk + Hằng logic 2. Ghi bảng: Xác định hằng số và hằng xâu: 2. Quan sát và trả lời 56 -3785 ‘485’ + Hằng số: 56; -3785; 1.5E+2 ‘THPT’ 1.5E+2 45,7 + Hằng xâu: ‘485’ ‘THPT’ H: hằng kí tự nháy đơn và hằng kí tự nháy kép được biểu diễn như thế nào? 3. Y/cầu Hs n/cứu Sgk và cho biết k/niệm Biến Cho ví dụ một số biến
Tl: nháy đơn: ’’’’ Nháy kép: ‘””’ 3. N/cứu Sgk và trả lời
4. Y/cầu Hs n/cứu Sgk và cho biết chức năng của chú thích trong chtrình. Cho 1 số ví dụ khác về chú thích
4. Cá nhân n/cứu Sgk vá trả lời Chú thích được đặt giữa cặp dấu { } và (* *) dùng để giải thích chtrình rõ ràng dễ hiểu. Tl: Tên do người lập trình đặt. Tl: Không, vì đó là dòng chú thích.
IV. ĐÁNH GIÁ CUỐI BÀI
Giáo viên: Bùi Văn Tú
(Sgk)
Ví dụ: Tong, dtoan, …
H: Tên biến và tên hằng thuộc loại tên nào? H: Các lệnh được viết trong cặp { } có được TP thực hiện ko? Vì sao?
b. Biến K/niệm:
4
c. Chú thích Ví dụ: {thu tuc nhap du lieu}
Giáo án tin học11 1. Nội dung đã học. Thành phần của NNLT: bảng chữ cái, cú pháp, ngữ nghĩa Khái niệm: tên, từ khóa, tên chuẩn, tên tự đặt, biến, hằng, … 2. Câu hỏi, bài tập về nhà. Làm bài tập 3, 4, 5 trang 13 Sgk Xem bài đc thêm: Ngôn ngữ Pascal Xem trước bài: Cấu trúc chtrình Sgk Xem nội dung phụ lục B, trang 128 Sgk: Một số tên dành riêng Ngày soạn: 27/8/2007 Tiết 3: BÀI TẬP I. MỤC TIÊU 1. Kiến thức - Biết có 3 lớp ngôn ngữ lập trình và các mức của 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ò của 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 cơ bản của 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 cơ sở của Pascal: bảng chữ cái, tên, tên chuẩn, tên riêng (từ khóa), hằng và biến. 2. Kĩ năng: Biết viết hằng và tên đúng trong một ngôn ngữ lập trình cụ thể. 3. Về tư duy và thái độ: Nhận thức được quá trình phát triển của ngôn ngữ lập trình gắn liền với quá trình phát triển của 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 một ngôn ngữ lập trình cụ thể để có khả năng giải các bài toán bằng máy tính điện tử. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: chuẩn bị nội dung để giải bài tập cuối chương và một số câu hỏi trắc nghiệm của chương. 2. Học sinh: Ôn lại kiến thức của chương, chuẩn bị bài tập cuối chương. III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ T/g Hđ của GV Hđ của HS 1. Phân biệt giữa Hằng và Biến? Cho một số biến đúng? HS1: trả lời 2. Đâu là từ khóa trong các tên sau đây? Integer Begin Do int chan tong Hs2: trả lời (Begin và Do) - Nhận xét, đánh giá cho điểm 2. Hoạt động 2: T/g Hđ của GV Hđ của HS Nd ghi bảng ĐVĐ: Trước khi giải bài tập - Đọc yêu cầu của câu hỏi và Câu 1:Ngôn ngữ bậc cao trong SGK, các em tự ôn lại một bài tập cuối chương trang 13 + gần với ngôn ngữ tự nhiên hơn, số kiến thức mà chúng ta đã học SGK. + không phụ thuộc vào phần cứng ở các bài trước dựa trên yêu cầu - Suy nghĩ để đưa ra phương máy tính và một chương trình có thể của câu hỏi trang 13 SGK. án trả lời. thực hiện trên nhiều máy tính khác nhau; Đặt câu hỏi số 1: Tại sao người - Suy nghĩ, trả lời câu hỏi. + dễ hiểu, dễ hiệu chỉnh và dễ nâng ta phải xây dựng các ngôn ngữ cấp; lập trình bậc cao? + cho phép làm việc với nhiều kiểu - Nhận xét, đánh giá và bổ sung dữ liệu và cách tổ chức dữ liệu đa hướng dẫn cho học sinh trả lời dạng, thuận tiện cho mô tả thuộc toán. câu hỏi số 1: Câu 2: Trình biên dịch: duyệt, kiểm tra, phát Đặt câu hỏi 2: Biên dịch và hiện lỗi, xác định chương trình nguồn thông dịch khác nhau như thế có dịch được không? dịch toàn bộ nào? - Suy nghĩ, trả lời câu hỏi. chương trình nguồn thành một chương trình đích có thể thực hiện Phân tích câu trả lời của học sinh. trên máy và có thể lưu trữ lại để sử
Giáo viên: Bùi Văn Tú
5
Giáo án tin học11 dụng về sau khi cần thiết. Trình thông dịch lần lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiện ngay câu lệnh vừa dịch được hoặc báo lỗi nếu không dịch được 3. Hoạt động 3: T/g Hđ của GV Đặt câu hỏi 3: Hãy cho biết các điểm khác nhau giữa tên dành riêng và tên chuẩn? Viết 3 tên đúng quy tắctrong Pascal? - Gọi hs trả lời và cho ví dụ - Phân tích câu trả lời của học sinh. Hỏi: Nêu lại quy tắc đặt tên trong Pascal? - Gọi 3 học sinh lên bảng cho ví dụ về tên do người lập trình đặt. *Nhận xét, sửa chữa, góp ý.
Hđ của HS
Suy nghĩ, trả lời, giải thích Trả lời
Nd ghi bảng Câu 3: Tên dành riêng không được dùng khác với ý nghĩa đã xác định, tên chuẩn có thể dùng với ý nghĩa khác. VD: Tên dành riêng trong Pascal: program, uses, const, type, var, begin, end. Tên chuẩn: trong Pascal abs, integer.
Lên bảng Chú ý, ghi nhớ
4. Hoạt động 4: T/g Hđ của GV Đặt câu hỏi 4: Hãy cho biết những biểu diễn nào dưới đây không phải là biểu diễn hằng trong Pascal và chỉ rõ trong từng trường hợp: - Nhận xét, giải thích
Hđ của HS Trả lời giải thích từng câu một
Nd ghi bảng Câu 4: 1 150.0 hằng số 2 –22 hằng số 3 6,23 K 4 ‘43’ hằng xâu 5 A20 K 6 1.06E-15 hằng số 7 4+6 b/thức hằng 8 ‘C K 9 ‘TRUE’ hằng xâu
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) Câu hỏi, bài tập về nhà Xem trước Chương 3 gồm các bài: Cấu trúc chương trình và Một số kiểu dữ liệu chuẩn. Xem trước nội dung phụ lục B phần 3: Một số kiểu dữ liệu chuẩn. (trang 129 Sgk) Bài tập kiểm tra trắc nghiệm cuối chương: (15 phút) Câu 1:Chương trình viết bằng hợp ngữ không có đặc điểm nào trong các đặc điểm sau: A. Ngắn gọn hơn so với chương trình được viết bằng ngôn ngữ bậc cao. B. Tốc độ thực hiện nhanh hơn so với chương trình được viết bằng ngôn ngữ bậc cao. C. Diễn đạt gần với ngôn ngữ tự nhiên. D. Sử dụng trọn vẹn các khả năng của máy tính Câu 2: Chương trình viết bằng ngôn ngữ bậc cao không có đặc điểm nào trong các đặc điểm sau: A. Không phụ thuộc vào loại máy, chương trình có thể thực hiện trên nhiều loại máy. B. Ngắn gọn, dễ hiểu, dễ hiệu chỉnh và nâng cấp. C. Kiểu dữ liệu cà cách tổ chức dữ liệu đa dạng, thuận tiện cho mô tả thuật toán. D. Máy tính có thể hiểu và thực hiện trực tiếp chương trình này. Câu 3: Chương trình dịch không có khả năng nào trong các khả năng sau? A. Phát hiện được lỗi ngữ nghĩa. C. Phát hiện được lỗi cú pháp. B. Thông báo lỗi cú pháp. D. Tạo được chương trình dịch. Câu 4: Nhận biết đúng/sai trong Pascal?
Giáo viên: Bùi Văn Tú
6
Giáo án tin học11 STT 1 2 3 4 5 6
Tên biến
Đúng(Đ)/Sai(S)
1hoten Hoten Ho ten Ho_ten Ho-ten1 Hoten1
S Đ S Đ S Đ
Câu 5: Ghép mỗi câu ở cột 1 với một câu thích hợp ở cột 2 trong bảng sau: Cột 1 (1) Biên dịch (2) Thông dịch (3) Chương trình viết trên ngôn ngữ lập trình bậc cao. (4) Biến (5) Hằng
Cột 2 (A) là các đại lượng có giá trị không đổi trong quá trình thực hiện chương trình. (B) dịch và thực hiện từng câu lệnh, nếu còn câu lệnh tiếp theo thì quá trình này còn tiếp tục. (C) là những đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình. (d) dịch toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và có thể lưu trữ để sử dụng lại khi cần thiết. (E) phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể thực hiện được.
CHƯƠNG II: CHƯƠNG TRÌNH ĐƠN GIẢN Ngày soạn: 29/8/2007 Tiết 4:
CẤU TRÚC CHƯƠNG TRÌNH
I. MỤC TIÊU 1. Kiến thức Hiểu chtrình là sự mô tả của thuật toán bằng một NNLT Biết cấu trúc của một chtrình đơn giản: cấu trúc chung và các thành phần 2. Kĩ năng Nhận biết được thành phần của một chtrình đơn giản II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên Máy tính, máy chiếu projector . Một số chtrình mẫu viết sẵn. 2. Học sinh Sách giáo khoa III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV H1: Phân biệt tên chuẩn và từ khóa? Tên hằng, tên biến thuộc loại tên nào? H2: Cho một số tên biến, hằng đúng qui cách?
Hđ của HS Hs1: trả lời trước lớp Hs2: trình bày trên bảng Hs3: nhận xét phần trả lời của Hs2
Nhận xét, đánh giá cho điểm 3 hs 2. Hoạt động 2: (5phút) Tìm hiểu cấu trúc chung của chtrình a. Mục tiêu: Hs biết được chtrình có 2 phần. b. Nội dung: Cấu trúc chtrình có 2 phần: phần khai báo, phần thân. c. Các bước tiến hành: Hđ của GV Hđ của HS 1. Câu hỏi gợi ý: Một bài tập làm văn 1. Suy nghĩ và trả lời.
Giáo viên: Bùi Văn Tú
7
Nd ghi bảng
Giáo án tin học11 thường viết có mấy phần? Các phần có thứ tự không? Tại sao phải chia ra như vậy? 2. Y/cầu Hs n/cứu Sgk và trả lời các câu hỏi sau: - Một chtrình có cấu trúc mấy phần?
- Có ba phần - Có thứ tự: mở bài, thân bài, kết luận. - Dễ viết, dễ đọc và dễ hiểu nội dung . 2. N/cứu sgk, thảo luận và trả lời: Có 2 phần: []
CẤU TRÚC CHƯƠNG TRÌNH 1. Cấu trúc chung Có 2 phần: []
3. Chiếu lên bảng chtrình: Program vidu; 3. Quan sát và trả lời Begin Write(‘ chao cac ban’); Readln; - Phần bôi đen là phần thân. Còn End. H: Đâu là phần khai báo và phần thân lại là phần khai báo. chtrình? Dẫn dắt chuyển sang Hđ 3: Chtrình trên chỉ là chtrình đơn giản. Để có thể nhận biết các thành phần trong chtrình bất kỳ, ta cần tìm hiểu nội dung của từng thành phần. 3. Hoạt động 3: (15phút) Tìm hiểu các thành phần của chtrình. a. Mục tiêu: Hs biết được nội dung của các thành phần trong chtrình b. Nội dung: Phần khai báo: khai báo tên chtrình, khai báo các thư viện, khai báo hằng, khai báo biến, khai báo chtrình con, ... Phần thân: bao gồm dãy lệnhđược đặt trong cặp dấu hiệu mở đầu và kết thúc Begin Các câu lệnh; End. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Y/cầu Hs n/cứu Sgk và trả lời câu hỏi: 1. N/cứu sgk, thảo luận và trả lời: 2. Các thành phần của chương - Trong phần khai báo có những khai báo - Khai báo tên chtrình trình nào? - Khai báo thư viện CTC a. Phần khai báo - Khai báo hằng Program tên_chtrình; - Khai báo biến Uses tên_thư_viện; Dẫn dắt: Cách khai báo các đối tượng này - Khai báo CTC Const tên_hằng = giá_trị; trong chtrình như thế nào? 2. Y/cầu Hs tiếp tục n/cứu Sgk và lấy ví dụ Var tên_biến: kiểu_dữ_liệu; cho từng loại khai báo. 2. N/cứu sgk, thảo luận và cho ví dụ: - Khai báo tên chtrình Program tim_uscln; - Khai báo thư viện CTC Uses crt; - Khai báo hằng Const max = 1000; * Cách khai báo biến sẽ được tìm hiểu Pi = 3.14; riêng trong tiết sau. - Khai báo biến * Khai báo và sử dụng CTC được trình bày Var a, d, c: integer; ở chươngVI. Kt:char; 3. Y/cầu Hs cho biết cấu trúc của phần thân * Ghi nhớ các ví dụ. chtrình. 3. Trả lời
Giáo viên: Bùi Văn Tú
8
Giáo án tin học11 Begin Dãy các câu lệnh; End.
b. Phần thân
4. Hoạt động 4: (15 phút) Xét một vài ví dụ về những chtrình đơn giản a. Mục tiêu: Hs nhận biết được từng phần của một chtrình đơn giản. b. Nội dung: Một vài chtrình đơn giản. c. Các bước tiến hành: Hđ của GV Hđ của HS 1. Chiếu lên bảng một chtrình đơn giản. 1. Quan sát và trả lời Program vidu; Uses crt; Var x, y: byte; z:word; Begin z:= x+y; writeln(z); readln; - Phần khai báo (gồm 3 dòng End. đầu): khai báo tên CT, khai báo H1: Phần khai báo của chtrình? thư viện, khai báo biến. - Còn lại là phần thân. + lệnh gán (: =) + lệnh đưa thông tin ra màn H2: Phần thân của chtrình, hình. + lệnh z:=x+y có ý nghĩa gì? 2. Suy nghĩ, thảo luận và trả lời. + lệnh writeln có chức năng gì? Dòng khai báo tên 2. Có thể bỏ bớt các phần nào trong chtrình Dòng khai báo thư viện. trên, nhưng kết quả chtrình không thay đổi? 3. Thảo luận và trả lời Trình bày trên bìa trắng 3. Chia lớp thành 4 nhóm Y/cầu: + 2 nhóm lấy một ví dụ về chtrình Pascal chỉ có phần thân. + 2 nhóm còn lại chtrình không có phần khai báo biến * Đính bìa các nhóm lên bảng, cho các nhóm nhận xét và đánh giá chéo. IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học Một chtrình gồm có 2 phần: phần khai báo và phần thân. 2. Câu hỏi, bài tập về nhà Xem trước bài: Một số kiểu dữ liệu chuẩn. Khai báo biến. (trang 21-23 sgk) Xem trước nội dung phụ lục B phần 3: Một số kiểu dữ liệu chuẩn. (trang 129 Sgk)
Ngày soạn: 31/8/2007 Tiết 5
MỘT SỐ KIỂU DỮ LIỆU CHUẨN KHAI BÁO BIẾN
I. MỤC TIÊU 1. Kiến thức Biết một số kiểu dữ liệu chuẩn: nguyên, thực, kí tự, logic.
Giáo viên: Bùi Văn Tú
9
Nd ghi bảng
Giáo án tin học11 Hiểu cách khai báo biến. 2. Kĩ năng Xác định được kiểu cần khai báo của dữ liệu đơn giản. Biết khai báo biến đúng. 3. Tư duy – thái độ: Tư duy logic. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Máy tính, máy chiếu projector, một số ví dụ minh hoạ. Bảng treo chứa một số khai báo biến cho Hs chọn Đúng - Sai 2. Học sinh: SGK III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (7 phút) Kiểm tra bài cũ Hđ của GV Hđ của HS H1: Nêu cấu trúc chung của một chương trình? Hs1: trả lời trước lớp H2: Nêu cấu trúc của các phần khai báo: tên chương trình, hằng, thư viện? Hs2: trình bày trên bảng Nhận xét, đánh giá cho điểm 3 hs Hs3: nhận xét phần trả lời của Hs2 2. Hoạt động 2: (3 phút)Đặt vấn đề Hđ của GV Hđ của HS Nd ghi bảng Trong toán học để thực hiện được tính toán cần phải có các tập số. Đó là các tập số nào ? Tl: Tập hợp số tự nhiên, nguyên, Trong lập trình Pascal cũng có các tập hợp, hữu tỉ, thực. mỗi tập hợp có 1 giới hạn nhất định. Đọc sách. 3. Hoạt động 3: (20 phút)Một số kiểu dữ liệu chuẩn. a. Mục tiêu: Biết được tên và giới hạn biểu diễn của một số kiểu dữ liệu chuẩn. b. Nội dung: Kiểu số nguyên: Byte, Integer, Word, Longint Kiểu số thực: Real, Extended Kiểu kí tự: là kí tự thuộc bảng mã ASCII (char) Kiểu logic: là tập hợp gồm 2 giá trị True và False, là kết quả của phép so sánh. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Kiểu dữ liệu chuẩn là một tập hữu hạn các 1. Chú ý, lắng nghe giá trị, mỗi kiểu dữ liệu cần một dung lượng - Liên tưởng các tập số trong bộ nhớ cần thiết đẻ lưu trữ và xác định các toán học với một kiểu dữ liệu 1. Kiểu dữ liệu chuẩn phép toán có thể tác động lên dữ liệu. trong Pascal. 2. Y/cầu Hs n/cứu Sgk trả lời các câu hỏi sau: H1: Có bao nhiêu dữ liệu chuẩn trong ngôn 2. N/cứu Sgk và trả lời ngữ Pascal ? H2: Trong ngôn ngữ Pascal, có những kiểu Tl1: Có 4 kiểu: nguyên, thực, kí nguyên nào thường dùng, phạm vi biểu diễn tự, lôgic. của mỗi loại? Tl2: Có 4 loại: byte, integer, H3: Trong ngôn ngữ Pascal, có những kiểu word, longint. Sgk thực nào thường dùng, phạm vi biểu diễn của mỗi loại? Tl3: Có 2 loại: Real, Extended. H4: Trong ngôn ngữ Pascal, có bao nhiêu kiểu kí tự? Tl4: Có 1 loại: char H5: Trong ngôn ngữ Pascal, có bao nhiêu kiểu logic, gồm các giá trị nào? Tl5: Có 1 loại: Boolean gồm 2 Sgk giá trị: True và False Treo bảng Quan sát 3. Giải thích một số vấn đề cho Hs 3. Chú ý lắng nghe và ghi nhớ. + Vì sao phạm vi biểu diễn của các loại số nguyên là khác nhau? + Miền giá trị của các loại kiểu thực, số chữ
Giáo viên: Bùi Văn Tú
10
Giáo án tin học11 số có nghĩa? 4. Ứng dụng: Muốn tính toán các giá trị: 5, 8, 9.05 ta phải sử dụng kiểu dữ liệu nào?
4. Suy nghĩ và trả lời Kiểu thực (Real)
- Bảng tổng hợp giới hạn biểu diễn một số kiểu dữ liệu thường dùng
4. Hoạt động 4: (10 phút) Tìm hiểu cách khai báo biến a. Mục tiêu: - Hs biết được rằng mọi biến trong chtrình đều phải được khai báo tên và kiểu dữ liệu. - Hs biết được cấu trúc chung của khai báo biến trong NNLT Pascal, khai báo được biến khi lập trình. b. Nội dung: Cấu trúc chung của khai báo biến trong lập trình bằng Pascal: Var tên_biến_1: kiểu_dữ_liệu_1; tên_biến_2: kiểu_dữ_liệu_2; ................... tên_biến_N: kiểu_dữ_liệu_N; biếnA, biếnB, ...., biến F: kiểu_dữ_liệu; c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Yêu cầu học sinh nghiên cứu sách GK và 1. Đọc sách. cho biết vì sao phải khai báo biến ? Mọi biến dùng trong chtrình đều phải được khai báo tên biến và 2. Khai báo biến kiểu dữ liệu của biến. Tên biến dùng để xác lập quan hệ giữa biến với địa chỉ bộ nhớ nơi lưu giữ giá trị của biến. Cấu trúc chung của khai báo biến bằng Pascal:
Var : ;
Cho ví dụ: Cần một biến kiểu nguyên, và một biến kiểu logic.
Var a: integer; B: boolean;
2. Treo bảng có chứa một số khai báo và yêu cầu Hs chọn khai báo đúng trong Pascal?
2.Quan sát và chọn khai báo đúng Var x, y, z: word; I: byte;
3. Treo bảng có chứa một số khai báo trong Pascal. Hỏi: Có tất cả bao nhiêu biến, bộ nhớ phải cấp phát là bao nhiêu? - Có 5 biến - Tổng bộ nhớ cần cấp phát: x (2byte), y (2byte), n(6byte), i(1byte), c(1byte) 2+2+6+1+1=12byte IV. ĐÁNH GIÁ CUỐI BÀI (5 phút) 1. Nội dung đã học Các kiểu dữ liệu chuẩn: nguyên, thực, kí tự, lôgic Cách khai báo biến 2. Câu hỏi, bài tập về nhà Làm bài tập 1,2,3,4,5 sgk trang 35 Xem trước bài: Phép toán, biểu thức, lệnh gán. sgk trang 24
Giáo viên: Bùi Văn Tú
11
Chọn khai báo đúng Var x, y, z: word; n m: real; X: longint; I: byte; a: inte gr; true: boolean; Var x, y: word; n : real; i: byte; c: char;
Giáo án tin học11 Ngày soạn: 1/9/2007 Tiết 6
PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN
I. MỤC TIÊU 1. Kiến thức Biết được khái niệm: phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan hệ. Hiểu lệnh gán. Biết được một số hàm thông dụng trong Pascal 2. Kĩ năng Viết được lệnh gán Viết được các biểu thức số học và logic với các phép toán thông dụng. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên Tranh chứa bảng các hàm số học, bảng chân trị. Máy tính, Projector. 2. Học sinh Sgk 3. Tư duy và thái độ : Phát triển tư duy lôgic, linh hoạt, có tính sáng tạo. Biết thể hiện về tính cẩn thận chính xác trong tính toán cũng như lập luận. III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Hđ của HS - Viết khai báo biến của bài toán: 2Hs lên bảng làm việc độc lập. Cho 2 số nguyên N, M. Tính giá trị của biểu thức p= Đ/a: (m+n)/(m*n). Var N, M: Integer; Ghi đề bài và gọi tên 2 hs P:real; - Hỏi thêm: Bộ nhớ cần cấp phát cho các biến đó là bao nhiêu? Đ/a: 10Byte Nhận xét, đánh giá cho điểm. 2. Hoạt động 2: (10 phút)Tìm hiểu một số phép toán a. Mục tiêu: HS biết được 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 đối với mỗi kiểu dữ 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 hoặc false) + Phép toán lôgic: NOT , OR , AND. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. ĐVĐ: Để mô tả các thao tác trong thuật 1.Chú ý lắng nghe toán, mỗi NNLT đều xác định và sử dụng một sô kháiniệm cơ bản: phép toán, biểu thức, gán giá trị. 2. Hãy kể các phép toán đã học ở toán học? 2. Suy nghĩ và trả lời - Phép: cộng, trừ, nhân, chia, lấy dư, so sánh, chia lấy nguyên. 1. Phép toán trong Pascal - Trong NNLT Pascal cũng có các phép toán đó nhưng được diễn tả bằng một cách khác. - Phép toán số học: +, -, *, /, 3. Y/cầu Hs n/cứu Sgk và cho biết có bao div, mod nhiêu nhóm phép toán? 3. N/cứu sgk và trả lời. - Phép toán quan hệ: <, >, =, - Phép toán số học: +, -, *, /, div, >=, <=, <> mod - Phép toán logic: and, or, not - phép toán quan hệ: <, >, =, >=, <=, <> - phép toán logic: and, or, not H1: Phép chia (/) được sử dụng cho kiểu dữ Tl: kiểu thực liệu nào?
Giáo viên: Bùi Văn Tú
12
Giáo án tin học11 H2: Phép Mod, Div được sử dụng cho kiểu Tl: kiểu nguyên. dữ liệu nào? H3: Kết quả của phép toán quan hệ thuộc Tl: kiểu logic kiểu dữ liệu nào? 3. Hoạt động 3: (20phút) Tìm hiểu về biểu thức a. Mục tiêu: Hs biết khái niệm về biểu thức số học, quan hệ, lôgic. biết cách xây dựng các biểu thức đó. Biết được một số hàm số học chuẩn trong lập trình b. Nội dung: - Biểu thức số học nhận được từ hằng số, biến số và hàm số liên kết. - Nắm bắt được tuần tự các bước khi thực hiện biểu thức số học. - Biểu thức logic được cấu thành từ các biểu thức quan hệ. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. ĐVĐ: Trong toán học ta đã làm quen với 1. Suy nghĩ, trả lời khái niệm biểu thức. Hãy cho biết các yếu tổ - Gồm 2 phần: toán hạng, toán tử 2. Biểu thức số học cơ bản xây dựng nên biểu thức? Nếu trong một bài toán mà toán hạng là hằng Toán hạng: hằng, biến, hàm số, biến, hoặc hàm số và toán tử là các phép số. toán số học thì biểu thức có tên gọi là gì? - Biểu thức số học Toán tử: +, -, *, /, mod, div. 2. Treo bảng có chứa các biểu thức toán học, * Thứ tự thực hiện: Sgk yêu cầu: sử dụng phép toán số học để biễu 2. Quan sát bảng và lên bảng trả * Chú ý: diễn biểu thức toán học đó thành biểu thức lời. + Nên dùng biến trung gian để trong NNLT. tránh việc tính 1 biểu thức nhiều lần. 1 + Biểu thức có chứa hằng hoặc a. 4x - 2y b. x + a. 4*x-2*y x− y biến kiểu thực, thì giá trị của biểu thức cũng thuộc kiểu thực b. x+1/(x-y) a+b+c c. 2a b
+c
-
b2 − c ac
- Từ việc xây dựng các biểu thức trên, hãy nêu thứ tự thực hiện các phép toán.
3. Nêu vấn đề:Trong toán học ta đã làm quen với một số hàm số học, hãy kể tên? - Muốn tính ax2 + 1 ta viết thế nào? - Muốn tính
x ,
x , sinx ... ta làm thế
nào? Tính các giá trị đó một cách đơn giản người ta đã xây dựng sẵn một số đơn vị chương trình trong các thư viện chương trình giúp người lập trình tính toán nhanh hơn. - Treo tranh chứa bảng một số hàm chuẩn. Yêu cầu: Học sinh điền thêm một số thông tin với các chức năng của hàm. - Cho biểu thức
x − 2x + 1
c. ((a+b+c)/((2*a /b)+c)) - (b*bc)/(a*c) N/cứu sgk và trả lời - Thực hiện trong ngoặc trước; ngoài ngoặc sau. Nhân, chia, chia lấy nguyên, chia lấy dư trước; cộng trừ sau. 3. Nhớ lại và trả lời Hàm trị tuyệt đối, hàm căn bậc 2, hàm sin ... - HS trả lời: 2*x*x+1 - HS chưa trả lời được Cách viết cho một số hàm số học chuẩn : Tên hàm (đối số) Nghiên cứu SGK - 26 và quan sát tranh vẽ, lên bảng điền tranh
x2 −1
Hãy biểu diễn biểu thức toán trong biểu thức trong NNLT. 4. Nêu vấn đề: Trong lập trình ta phải so sánh 2 giá trị nào đó trước khi thực hiện lệnh bằng
Giáo viên: Bùi Văn Tú
3. Hàm số học chuẩn
- Suy nghĩ và trả lời: (abs(x) - sqrt(2*x+1)) /
13
+ Đối số là một hay nhiều biểu thức số học đặt trong dấu ngoặc ( ) sau tên hàm . VD: (SGK - 26).
Giáo án tin học11 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 được dùng để so sánh 2 giá trị đúng hoặc sai. - Cho một ví dụ về biểu thức quan hệ. - Thứ tự thực hiện của biểu thức quan hệ? - Kết quả mà phép toán quan hệ thuộc kiểu dữ liệu nào? 5. Biểu thức logic là biểu thức quan hệ được liên kết với nhau bởi phép toán logic - Hãy quan sát biểu thức trong toán học sau: 2< x ≤ 8 và biễu diễn bthức này trong NNLT Pascal. - Thứ tự thực hiện của bthức lôgic? - Kết quả mà bthức lôgic thuộc kiểu dữ liệu nào? Treo tranh có chứa bảng chân trị của A và B, y/cầu hs điền giá trị cho A and B, A or B, not B
(sqr(x)-1) 4. Lắng nghe, suy nghĩ.
- Trả lời: x + y < 2* x*y
4. Biểu thức quan hệ: Cấu trúc chung: < phép toán quan hệ > + trong đó BT1 và BT2 phải cùng kiểu. + Kết quả của biểu thức quan hệ là TRUE hoặc FALSE. VD: - 5 > 2
+ Tính gtrị của các bthức + Thực hiện phép toán qhệ - Kiểu logic 5. Lắng nghe, theo dõi sự sự dẫn dắt của Gv để trả lời - Kết hợp SGK, trả lời: (x > 2)and(x <= 8) + Thực hiện các bthức qhệ + Thực hiện p/toán lôgic - Kiểu logic
5. Biểu thức logic. - Biểu thức logic đơn giản là hằng hoặc biến logic. - Dùng để liên kết nhiều biểu thức quan hệ lại với nhau. Ví dụ: Cho 3 số a, b, c. Viết điều kiện xác định a, b, c là độ dài 3 cạnh của 1 tam giác. (a+b>c) and (b+c>a) and (a+c>b)
Suy nghĩ và trả lời bằng cách điền vào bảng A A Not A B and or A B B 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 4. Hoạt động 4: (8 phút) Câu lệnh gán(:=) a. Mục tiêu: HS biết được chức năng cấu trúc chung của lệnh gán trong NN Pascal, viết lệnh đúng khi lập trình. b. Nội dung: - Lệnh gán dùng để tính giá trị một biểu thức và chuyển nó vào một biến. - Cấu trúc: Tên biến:= biểu thức; c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng - Mỗi NNLT có cách viết lệnh gán khác nhau, - Quan sát ví dụ và suy nghĩ để 6. Câu lệnh gán. chẳng hạn như trong Pascal có lệnh gán sau: trả lời. - Lệnh gán là cấu trúc cơ bản i:=8+3 của mọi NNLT, thường dùng - Giải thích: Lấy 8 cộng với 3, đem kết quả để gán giá trị cho biến. đặt vào i , ta được i = 11. Hỏi: Hãy cho biết chức năng của lệnh gán? + Tính gtrị của bthức + Gán gtrị tính được vào tên - Y/cầu hs Sgk cho biết cấu trúc chung của biến. Cấu trúc: lệnh gán trong NNLT Pascal < tên _biến>:= ; Cho một số ví dụ về lệnh gán := ; VD: x:= (b*b-4* a*c); Cần chú ý gì khi viết lệnh gán? i:= i+1; Phân tích câu trả lời của học sinh sau đó j:= j-1; tổng hợp lại Thảo luận và đưa ra ý kiến.
Giáo viên: Bùi Văn Tú
14
Giáo án tin học11 + viết đúng kí hiệu gán. + bthức bên phải cần được xác định gtrị trước khi gán. + kiểu của bthức bên phải phải phù hợp với kiểu của biến. Treo tranh, giới thiệu ví dụ về Pascal Cho chtrình: Var x, y: integer; T:boolean; Begin x:=3; y:=9; x:=x-1; y:=y div 2; Write(‘x=’,x); writeln(‘ y=’,y); T:= x
Quan sát, làm thử ch/trình qua các lệnh và trả lời:
x=2 y=4 TRUE
IV. ĐÁNH GIÁ CUỐI BÀI (2phút) 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà Xem trước bài: Các 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.
Ngày soạn: 10/9/07 Tiết 7
CÁC 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 1. Kiến thức - Biết được ý nghĩa của các thủ tục vào/ ra chuẩn đối với lập trình - Biết được các cấu trúc chung của thủ tục vào/ ra trong NNLT Pascal - Biết được các bước để hoàn chỉnh một chtrình - Biết được các file cơ bản của Turbo Pascal 7.0 2. Kĩ năng - Viết đúng lệnh vào /ra dữ liệu - Biết nhập đúng dữ liệu khi thực hiện chtrình. - Biết khởi đọng và thoát khỏi hệ soạn thảo Turbo Pascal 7.0 - Soạn được một chtrình vào máy. Dịch được chtrình để phát hiện lỗi cú pháp. - Thực hiện được chtrình để nhập dữ liệu và thu kết quả, tìm lỗi thuật toán và sửa lỗi II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: - Sgk, tranh chứa các biểu thức trong toán, Projector, máy vi tính, một số chtrình viết sẵn. - Máy vi tính có cài phần mềm Turbo Pascal 7.0, Projector. 2. Học sinh: sgk III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Cho M, N là 2 biến nguyên. Điều kiện xác định M, N đồng thời là số chẵn hoặc đồng thời là số lẻ được thể hiện trong Pascal như thế nào?
Giáo viên: Bùi Văn Tú
15
Hđ của HS 2 Hs lên bảng trả lời bằng cách ghi bảng
Giáo án tin học11 - Gọi 2 Hs lên bảng độc lập trả lời Đ/a: ((M mod 2 = 0) and (N mod 2 = 0)) Or ((M mod - Gọi Hs khác nhận xét (Đúng, Sai) 2 =1) and (N mod 2 = 1)) Nhận xét đánh giá, cho điểm 2. Hoạt động 2: (10 phút)Tìm hiểu thủ tục nhập dữ liệu vào từ bàn phím. a. Nội dung: Dùng để đưa nhiều bộ dữ liệu khác nhau cho cùng một chtrình xữ lí. Cấu trúc: Read/Readln(, , ...., ); b. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu vđ: Khi giải quyết một bài toán, ta phải đưa dữ liệu vào máy tính xữ lí, việc đưa dữ liệu bằng lệnh gán sẽ làm cho chtrình chỉ có tác dụng với một dữ liệu cố định. Để 1. chtrình giải quyết được nhiều bài toán hơn, ta phải sử dụng thủ tục nhập dữ liệu. 1. Nhập dữ liệu từ bản - Y/cầu Hs n/cứu Sgk cho biết cấu trúc chung phím của thủ tục nhập dữ liệu trong NNLT Pascal: - N/cứu Sgk và trả lời: - Ghi bảng Read(,…,); Ví dụ: khi viết chtrình giải ptrình: Ax2 + Bx Readln(,…,); Read(,…, + C = 0, ta phải nhập vào các đại lượng nào? ); Suy nghĩ, trả lời: Readln(,…, viết lệnh nhập? - phải nhập giá trị vào 3 biến A, ); Ví dụ 2. Treo bảng chứa chtrình Pascal đơn giản có B, C lệnh nhập giá trị cho 3 biến. -Lệnhnhập:Readln(A,B,C); - Mô phỏng kết quả chtrình cho hs quan sát. Hỏi: Khi nhập giá trị cho nhiều biến, ta phải 2. Quan sát chtrình và kết quả. thực hiện như thế nào? - Các giá trị phải được cách nhau ít nhất một dấu cách (Space) - Các giá trị phải được cách nhau ít nhất một dấu cách Ví dụ: để nhập các giá trị 2, -1.5, 7 cho các hoặc kí tự xuống dòng (Enter). hoặc kí tự xuống dòng. - Quan sát ví dụ của gv biến A, B, C ta có thể gõ: Cách1: 2 1.5 7 Enter Cách2: 2 1.5 Enter 7 Enter Hỏi: Lệnh Read và Readln khác nhau như thế nào? - Suy nghĩ, trả lời Read: …… Readln: …… 3. Hoạt động 3:(15 phút)Tìm hiểu thủ tục đưa dữ liệu ra màn hình. a. Nội dung: - Dùng để đưa kết quả sau khi xữ kí ra màn hình để người sử dụng thấy. - Write/Writeln(,...,); b. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu vđ: Sau khi xữ lí xong, kết quả CT 1. 2. Đưa dữ liệu ra màn hình được lưu trong bộ nhớ, để nhìn thấy được kết quả ta phải dùng thủ tục xuất dữ liệu. Write(,..., - Y/cầu hs n/cứu Sgk cho biết cấu trúc chung ); của thủ tục xuất dữ liệu trong NNLT Pascal - N/cứu Sgk và trả lời. Writeln(,..., ); Ví dụ: Khi viết CT giải pt: ax+b=0, ta phải đưa ra màn hình gtrị nghiệm -b/a, ta phải viết lệnh như thế nào? 2. Để nhập giá trị cho 1 biến từ bàn phím, ta - Writeln(-b/a); thường đưa thêm câu dẫn dắt sau đó mới đến câu lệnh nhập. Bằng cách dùng cặp thủ tục 2. Chú ý lắng nghe và ghi nhớ.
Giáo viên: Bùi Văn Tú
16
Giáo án tin học11 write và read. Ví dụ: Cần nhập 1 số ngdương N (N<=100) từ bàn phím ta viết câu lệnh như sau: Write(‘Nhap so nguyen duong N<=100: ’); Readln(N); 3. Treo bảng chứa chtrình Pascal đơn giản: Mô phỏng kết quả chtrình để hs quan sát Nhap vao hai so: 5-6 -----5-----6----11
3. Quan sát kết quả chtrình và trả lời một số câu hỏi:
Hỏi: chức năng câu lệnh writeln(); Hỏi: ý nghĩa của :6 trong câu lệnh write(...); 4. Khi các tham số trong lệnh write() thuộc kiểu Char hoặc Real thì qui định vị trí như thế nào? Vd1: với c = ‘E’ và x = 145 ---------E---145
Viết ra màn hình dòng chữ và đưa con trỏ xuống dòng. - Dành 6 vị trí trên màn hình để viết số x, 6 vị trí tiếp để viết số y, …
- Khi tham số có kiểu nguyên hoặc kiểu kí tự việc qui định vị trí là giống nhau : <độ rộng> Vd1: write(c:10, x:6); - Khi tham số có kiểu thực phải qui định 2 loại vị trí: vị trí cho toàn bộ số thực và vị trí cho phần thập phân : <độ rộng>: <số chữ số thập phân> Vd2: writeln(N:5, r:8:3); Write(7983:8:3)
Vd2: n = 54 và r = 24.7 ---54--24.700 7983.000 5. <> Thủ tục Readln và Writeln không có tham số có chức năng là gì?
Vd: Đoạn CT cho kết quả thế nào? Writeln(‘DAY THON VI DA’); Writeln; Writeln(‘’:20);
Program vd; Var x, y, z:integer; Begin Writeln(‘Nhap vao hai so: ’); Readln(x, y); Z:= x+y; Write(x:6, y:6, z:6); Readln End.
5. N/cứu sgk, suy nghĩ vatr lời: - Readln đặt cuối chtrình để tạm dừng chtrình cho người dùng thấy kết quả của chtrình đưa ra màn hình. - Writeln để đưa con trỏ xuống đầu dòng dưới. DAY THON VI DA -------------------------------- - - - - - - - _
4. Hoạt động 4: (3 phút)Làm quen với Turbo Pascal 7.0 a. Mục tiêu: Biết được các file Ct cơ bản của TurboPascal 7.0. Biết cách khởi động và thoát khỏi TP 7.0 b. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. ĐVĐ: Để sử dụng được Pascal trên máy 1. Tham khảo sgk và trả lời
Giáo viên: Bùi Văn Tú
17
Giáo án tin học11 phải có các file chtrình cần thiết. Y/cầu hs Turbo.exe Turbo.tpl tham khảo Sgk và cho biết tên các file đó. Graph.tpu egavga.bgi 2. Cách khởi động Tpascal: Và các file *.chr Bấm vào biểu tượng Turbo Pascal 7.0 trên 2. Học sinh quan sát và ghi nhớ màn hình - Giới thiệu màn hình soạn thảo CT: bảng chọn, con trỏ, vùng soạn thảo, ... 5. Hoạt động 5: (5 phút)Tập soạn thảo chtrình vào dịch lỗi cú pháp a. Nội dung: Gõ các lệnh chtrình Lưu file chtrình lên đĩa: bấm F2 Biên dịch lỗi cú pháp: Alt + F9 b. Các bước tiến hành: Hđ của GV Hđ của HS 1. Soạn một chtrình làm ví dụ, lưu chtrình, 1. Quan sát và ghi nhớ dịch lỗi. 2. Mở chtrình có sẵn, y/cầu hs chỉ các lỗi cú pháp trong CT, Biên dịch lỗi và sửa. Program vd Var x: integer; Bigen Write(‘nhap so ngduong );Readln(x); Y:= sqrt(x); Write(y); End;
Nd ghi bảng - Lưu chtrình vào đĩa: bấm F2 - Mở chtrình có trong đĩa: bấm F3 - Biên dịch lỗi cú pháp: bấm Alt+F9 - Đóng cửa sổ chtrình: bấm Alt+F3 - Thoát khỏi phầm mềm: Alt+X
Program vd; Var x, y: integer; Begin Write(‘nhap so ngduong ‘); Readln(x); Y:= sqrt(x); Write(y); End. 6. Hoạt động 6: (5 phút)Tập thực hiện chtrình và tìm lỗi thuật toán để hiệu chỉnh a. Mục tiêu: Hs biết cách thực hiện một chtrình, nhập dữ liệu và tìm lỗi thuật toán để hiệu chỉnh. b. Nội dung: - Chạy chtrình: bấm Ctrl+F9 - Xây dựng các bộ test - Nhập dữ liệu, thu kết quả, đối chứng với kết quả của test. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Thực hiện chtrình ở trên, nhập dữ liệu, giới 1. Quan sát gv thực hiện và tham - Chạy chtrình: bấm Ctrl+F9 thiệu kết quả khảo sgk Hỏi: Nhóm phím dùng để thựchiện chtrình? 2. Giới thiệu chtrình giải pt: ax+b=0 Ctrl+F9 Var a, b:real; Begin 2. Đọc chtrình và độc lập suy Readln(a, b); nghĩ để tìm test và trả lời: If a<>0 then write(-b/a) a=0, b=0 pt vô số nghiệm else write(‘PTVN’); Readln End. Hãy tìm test để chứng minh chtrình này Sai. IV. ĐÁNH GIÁ CUỐI BÀI (2phút) 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà - So sánh sự giống nhau và khác nhau của các cặp lệnh write()/writeln() và read()/readln(). - Viết chtrình nhập vào một số và tính bình phương của số đó. - Viết chtrình nhập độ dài bán kính và tính chu vi, diện tích hình tròn tương ứng. - Làm bài tập 9, 10 sgk trang36 - Xem trước nội dung phần bài tập và thực hành số 1 sgk trang 34
Giáo viên: Bùi Văn Tú
18
Giáo án tin học11 * Xem phụ lục B sgk:
Ngày soạn: 18/9/07 Tiết 8 - 9
Trang 122: Môi trường Turbo Pascal Trang 136: Một số thông báo lỗi
BÀI TẬP THỰC HÀNH SỐ 1
I. MỤC TIÊU 1. Kiến thức - Biết được một chtrình Pascal hoàn chỉnh. - Làm quen các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu, dịch, thực hiện chtrình. 2. Kĩ năng - Soạn thảo được chtrình, lưu lên đĩa, dịch lỗi cú pháp, thực hiện và tìm lỗi thuật toán và hiệu chỉnh. - Bước dầu biết phântích và hoàn thành chtrình đơn giản trên Pascal 3. Thái độ: Tự giác, tích cực và chủ động trong thực hành II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Phong máy vi tính được cài đầy đủ Turbo Pascal, projector để hướng dẫn 2. Học sinh: Sgk, sách bài tập và bài tập đã viết ở nhà III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (8 phút) Kiểm tra bài cũ Hđ của GV Viết chtrình nhập vào một số và tính bình phương của số đó. Cho 2 hs xung phong lên bảng Nhận xét, đánh giá, cho điểm
Hđ của HS Chtrình đạt yêu cầu: Var x, y: integer; Begin Write(‘nhap vao một so ’); readln(x); Y:= sqr(y); Write(y); readln End.
2. Hoạt động 2: (30phút)Tìm hiểu một chtrình hoàn chỉnh a. Nội dung: Cho chương trình sau: Program Giai_pt; Uses crt; Var a, b, c, d, x1, x2: real; Begin Clrscr; Write(’nhap a b c ’); Readln(a, b, c); D:= b*b-4*a*c; X1:= (-b-sqrt(d))/(2*a); X2:= (-b+sqrt(d))/(2*a); Writeln(’x1=’,x1:6:2,’ x2=’,x2:6:2); Readln End. b. Các bước tiến hành: Hđ của GV Hđ của HS 1. Chiếu chtrình lên bảng. Y/cầu hs thực hiện 1. Quan sát chtrình, đọc lập các nhiệm vụ: soạn vào máy - Soạn chtrình vào máy - Lưu chtrình F2 - Dịch lỗi cú pháp Alt+F9 - Thực hiện chtrình Ctrl+F9 - Nhập dữ liệu 1 -3 2. Thông báo kết quả x1=1.00 x2=2.00 - Trở về màn hình soạn thảo - Thực hiện chtrình Enter - Nhập dữ liệu 1 0 2. Thông báo kết quả. Ctrl+F9
Giáo viên: Bùi Văn Tú
19
Nd ghi bảng Program Giai_pt; Uses crt; Var a, b, c, d, x1, x2: real; Begin Clrscr; Write(’nhap a b c ’); Readln(a, b, c); D:= b*b-4*a*c; X1:= (-b-sqrt(d))/(2*a); X2:= (-b+sqrt(d))/(2*a);
Giáo án tin học11 - Vì sao có lỗi xuất hiện?
Thông báo lỗi Do căn bậc hai của một số âm
Writeln(’x1=’,x1:6:2,’ x2=’, x2:6:2); Readln End.
3. Hoạt động 3: (45 phút)Rèn luyện kĩ năng lập chương trình. a. Mục tiêu: Hs soạn, lưu, dịch và thực hiện được chương trình b. Nội dung: Viết chương trình nhập từ bàn phím 2 số thực a và b, tính và đưa ra màn hình trung bình cộng các bình phương của hai số đó. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Định hướng để hs phân tích bài toán 1. Phân tích theo yêu cầu của gv Bài toán: Viết chương trình - Dữ liệu vào: - Dữ liệu vào: a b nhập từ bàn phím 2 số thực a - Dữ liệu ra: - Dữ liệu ra: tb và b, tính và đưa ra màn hình - Cách tính: - tb =(a2+b2)/2 trung bình cộng các bình 2. Y/cầu hs tự sọan chtrình và lưu lên máy. 2. Thực hiện các y/cầu của gv phương của hai số đó. - Soạn chtrình Quan sát hướng dẫn từng nhóm hs trong lúc - F2, gõ tên file để lưu thực hành - Alt+F9 : biên dịch lỗi - Ctrl+F9: t/hiện chtrình 3. Y/cầu hs nhập dữ liệu và thông báo kết quả 3.Nhập dữ liệu theo y/cầu. - Với a=5, b=7 - Với a=7, b=-5 - Với a=5, b=7 thì tb=37 - Với a=7, b=-5thì tb=37 IV. ĐÁNH GIÁ CUỐI BÀI (7phút) 1. Nội dung đã học Các bước để hoàn thành một chương trình: - Phân tích bài toán để xácđịnh dữ liệu vào/ra - Xác định thuật toán - Soạn thảo chtrình vào máy - Lưu trữ chtrình - Biên dịch chtrình - Thực hiện và hiệu chỉnh chtrình 2. Câu hỏi, bài tập về nhà - Viết chương trình nhập vào độ dài 3 cạnh của một tam giác, tính chu vi, diện tích của tam giác đó. - Làm bài tập 7, 8, 9, 10 sgk trang 36 + Soạn chương trình + Dịch lỗi và thực hiện + Nhập dữ liệu và kiểm tra kết quả - Xem trước bài: Cấu trúc rẽ nhánh, sgk trang38
Ngày soạn: 19/09/07 Tiết 10
BÀI TẬP ÔN CHƯƠNG II
I. MỤC TIÊU 1. Kiến thức: Biết phânbiệt các loại biểu thức trong NNLT 2. Kĩ năng: Viết được các biểu thức số học và logic với các phép toán thông dụng. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: bài giải các bài tập sgk 2. Học sinh: sgk III. HOẠT ĐỘNG DẠY HỌC
Giáo viên: Bùi Văn Tú
20
Giáo án tin học11 1. Hoạt động 1: (15 phút) Kiểm tra 15 phút Hđ của GV Hđ của HS Phát đề cho hs Nhận đề và làm bài Thu bài làm của hs Nộp bài làm 2. Hoạt động 2: (10 phút) Bài tập 8/sgk/36 a. Mục tiêu: Xây dựng được biểu thức logic làm điều kiện để giải một số bài toán đơn giản b. Nội dung: Viết biểu thức lôgic cho kết quả True khi tọa độ (x, y) là điểm nằm trong vùng gạch chéo kể cả biên của hình 2.a và 2.b (trang 36/sgk) c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Hình 2.a: Y/cầu hs quan sát hình và trả lời các câu hỏi: Quan sát hình và trả lời - Giá trị của y trong vùng gạch chéo? - Giá trị của x trong vùng gạch chéo? 0<=y<=1 - Điểm A(x,y) thì x, y có quan hệ thế nào? -1<=x<=1 - Y/cầu hs từ các biểu thức quan hệ viết ra bthức lôgic theo yêu cầu của đề? |x|<=y - Phân tích các giá trị x, y để đơn giản biểu thức (|x|<=y) and ((x>=-1)and (y<=1) and (abs(x)<=y) (x<=1)) and ((y>=0) andy<=1) 2. Hình 2.b Chú ý lắng nghe, để ý cách xác Y/cầu hs tự làm, tương tự hình 2.a định giá trị đúng. Tự làm 3. Hoạt động 3: (15 phút)Bài 9/sgk/36 a. Mục tiêu: Củng cố lại các bước khi xây dựng chương trình, sử dụng các dạng câu lệnh vào ra đã học. b. Nội dung:Bài 9/sgk/36 c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng - Y/cầu hs đọc đề - Đọc đề Định hướng để hs phân tích bài toán - Dữ liệu vào: - Dữ liệu vào: a =R - Dữ liệu ra: - Dữ liệu ra: dtích phần gạch - Cách tính: chéo (1/2 dtích hình tròn) - Cách tính: a*a*pi/2 Hs độc lập viết chương trình Y/cầu hs tự viết chương trình - 1 hs lên bảng - Nhận xét - Chỉ định 1 hs lên bảng trình bày - Y/cầu hs khác nhận xét bài làm trên bảng So sánh, nhận xét (lỗi cú pháp, thuật toán,…) Program dt; - Treo bảng có sẵn chtrình đúng để hs so Var a: real; sánh. Begin Write(‘nhap gia tri a (a>0) ‘); (Pi là hằng có sẵn trong Pascal có giá trị readln(a); 3.1415926536) Writeln(‘Dien tich can tim la: ‘, a*a*pi/2 :20:3); Chạy thử chtrình Readln; Nếu a=2 thì kquả: 6.2832 End. IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà Xem trước bài: Cấu trúc rẽ nhánh, sgk trang 38
Giáo viên: Bùi Văn Tú
21
Giáo án tin học11
Giáo viên: Bùi Văn Tú
22
Giáo án tin học11 CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP Ngày soạn: 30/9/07 Tiết 11
CẤU TRÚC RẼ NHÁNH
I. MỤC TIÊU 1. Kiến thức - Hiểu nhu cầu của cáu trúc rẽ nhánh trong biểu diễn thuật toán. - Học sinh nắm vững ý nghĩa và cú pháp của câu lệnh rẽ nhánh dạng khuyết và dạng đủ, hiểu được cách sử dụng câu lệnh ghép. 2. Kĩ năng - Sử dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản. - Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng được để thể hiện thuật toán của một số bài toán đơn giản II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: + Soạn giáo án. + Chuẩn bị bảng phụ sau:
IF Đ_kiện
Đ
Câu lệnh
S IF S
Câu lệnh 2
Điều kiện
Đ
Câu lệnh 1
2. Học sinh: sọan bài ở nhà. III. PHƯƠNG PHÁP: Giảng giải + hoạt động của học sinh. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Hđ của HS Cho 2 số nguyên a, b; tìm Max(a,b). 2 hs lên bảng trả lời độc lập. Yêu cầu: viết phần tên, phần khai báo, và câu lệnh nhập a, b bằng Pascal. Nêu thuật toán tìm Max(a,b). Hs khác nhận xét Gọi 2 hs lên bảng Nhận xét, đánh giá, cho điểm Đ/án: Program baitap; Var a, b, max : integer; Begin readln(a,b); end. 2. Hoạt động 2: (5 phút) Tìm hiểu cấu trúc rẽ nhánh thiếu và đủ Hoạt động của GV Hoạt động của HS Nội dung - Với bài toán trên làm thế nào để tìm Max(a, - So sánh: 1. Rẽ nhánh: b)? + Nếu a>b thì max = a. * Một số mệnh đề có dạng + Nếu a
Giáo viên: Bùi Văn Tú
23
Giáo án tin học11 Còn dạng nào khác không? - Hãy cho ví dụ về các loại câu điều kiện * Chọn hai câu làm ví dụ. Từ đó phân tích cho học sinh thấy cấu trúc rẽ nhánh thể hiện trong ví dụ này. 3. Hoạt động 3: (12 phút)Câu lệnh If …then Hđ của GV 1. Y/cầu hs n/cứu sgk và dựa vào các ví dụ cấu trúc rẽ nhánh để đưa ra cấu trúc chung của câu lệnh rẽ nhánh. 2. Khi không đề cập đến việc gì xãy ra nếu điều kiện không thõa mãn cấu trúc câu lậnh rẽ nhánh như thế nào? 3.Gọi học sinh viết câu lệnh so sánh để tìm Max(a, b) bằng 2 cách. - Có thể chỉ dùng 1 câu lệnh khuyết? max:=a; if a < b then max:=b; Lưu ý: Trước từ khoá Else không có dấu ; - Dạng nào thuận tiện hơn?
- Có, Nếu …thì … nếu không thì … - Nếu có học bài thì đạt điểm 10. - Nếu là người lớn thì 5000đ nếu trẻ em thì 1000đ. Hđ của HS 1. N/cứu sgk và trả lời If<điều_kiện>Then Else; 2. Chú ý lắng nghe và trả lời. Câu lệnh khuyết: If <điều_kiện> Then; 3. Lên bảng If a > b then max:= a; If a < b then max:= b; Hoặc: If a > b then max:=a Else max:=b;
* Cấu trúc dùng để mô tả các mệnh đề như trên được gọi là cấu trúc rẽ nhánh thiếu và đủ. * Mọi ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh. Nd ghi bảng 2. 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 đủ: IF <điều kiện> THEN ELSE < câu lệnh 2>; b. Dạng khuyết: (dạng đặc biệt) IF <điều kiện> THEN ;
Suy nghĩ và trả lời. -> tuỳ trường hợp cụ thể. 4. Hoạt động 4: (3 phút) Câu lệnh ghép Hđ của GV 1. Nêu vđ: Sau then, sau else phải có một câu lệnh. Nhưng thực tế trong các trường hợp phức tạp đòi hỏi phải là nhiều câu lệnh. NNLT cho phép gộp dãy các lệnh thành một câu lệnh ghép 2. Y/cầu hs n/cứu sgk cho biết cấu trúc câu lệnh ghép trong Pascal
Hđ của HS 1. Chú ý lắng nghe
Nd ghi bảng Câu lệnh ghép trong Pascal: Begin ; End;
2. N/cứu sgk và trả lời Begin ; End; 5. Hoạt động 5: (18 phút)Rèn luyện kĩ năng vận dụng lệnh If a. Nội dung: Vd1: Viết chương trình nhập vào độ dài 2 cạnh của một hình chữ nhật, tính chu vi, diện tích của hcn đó. Vd2: Tìm nghiệm của pt bậc hai: ax2+bx+c=0 b. Cách tiến hành Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu nội dung, mục đích yêu cầu của vd1 1. Chú ý dẫn dắt của gv Vd1: Viết chương trình nhập vào độ dài 2 cạnh của một Chtrình này các em đã viết, hãy cho biếtcó hình chữ nhật, tính chu vi, hạn chế nào trong chtrình của em không? Khi nhập độ dài âm thì cho ra diện tích của hcn đó. - Hãy nêu ra hướng giải quyết của các em . dtích, chu vi âm. Điều này không có trong thực tế - Dùng câu lệnh rẽ nhánh để kiểm tra giá trị độ dài các cạnh. - Y/cầu hs về nhà hoàn thiện chtrình. Nếu độ dài dương thì tính dtích 2. Nêu nội dung, mục đích yêu cầu của bài và chu vi, ngược lại thì thông tập vd2. báo độ dài Sai. Vd2: Tìm nghiệm của pt bậc - Hãy nêu các bước chính để trả lời nghiệm 2. Ghi đề bài, chú ý mục đích, hai: ax2+bx+c=0 pt bậc hai? y/cầu của bài tập .
Giáo viên: Bùi Văn Tú
24
Giáo án tin học11
- Ta cần bao nhiêu lệnh rẽ nhánh để mô tả các bước trên? - Y/cầu hs viết chtrình hoàn thiện (1hs trình bày trên bảng) Gọi hs khác nhận xét, đánh gía - Chuẩn hóa lại chtrình cho cả lớp bằng việc treo bảng chtrình mẫu của gv đã chuẩn bị.
+ Tính delta + Nếu delta<0 thì pt vô nghiệm + Nếu delta >=0 thì kết luận pt có nghiệm: x1=(-b+sqrt(delta))/(2*a) x2=(-b-sqrt(delta))/(2*a) - Hai câu lệnh rẽ nhánh dạng khuyết hoặc 1 lệnh rẽ nhánh dạng đầy đủ. - 1 hs lên bảng viết chtrình Lấy ý kiến của 2-3hs
Program ptbac2; Var a, b, c, d, x1, x2: real; Begin Write(‘nhap a, b, c ‘); Read(a,b,c); D:=b*b-4*a*c; If d<0 then write(‘pt vo nghiem’) else begin x1=(-b+sqrt(delta))/(2*a); x2=-b/a-x1; write(‘x1= ’,x1:6:2,’ x2= ’, x2:6:2) end; readln; End.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học Cấu trúc chung và sơ đồ thực hiện của cấu trúc rẽ nhánh IF 2. Câu hỏi, bài tập về nhà Xem trước bài: Cấu trúc lặp, sgk, trang 42 - Trả lời câu hỏi 1, 2, 4 sgk trang 50, 51 - Viết chtrình nhập vào 3 số a, b, c và in ra màn hình giá trị lớn nhất trong 3 số đó. - Viết chtrình giải pt: ax4 + bx2 + c = 0.
Ngày soạn: 2/10/07 Tiết 12
CẤU TRÚC LẶP (tiết 1/3)
I. MỤC TIÊU 1. Kiến thức Hiểu nhu cầu của cấu trúc lặp trong biễu diễn thuật toán. Biết cấu trúc chung của lệnh lặp với số lần biết trước For trong NNLT Pascal Biết sử dụng đúng 2 dạng lệnh lặp For. 2. Kĩ năng: Bước đầu sử dụng được lệnh lặp For để lập trình giải quyết 1 số bài toán đơn giản. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Máy vi tính, Projector, sgk, sgv 2. Học sinh: sgk III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (7 phút) Kiểm tra bài cũ Hđ của GV 1. Trình bày cấu trúc rẽ nhánh? Sự khác nhau giữa các dạng rẽ nhánh đó? 2. Viết CT nhập vào 2 số a, b và thực hiện đưa ra màn hình giá trị của số lớn hơn. Gọi 2 hs lên bảng trả lời. Nhận xét, đánh giá cho điểm 2. Hoạt động 2: (20 phút)Tìm hiểu ý nghĩa cấu trúc lặp
Giáo viên: Bùi Văn Tú
25
Hđ của HS Hs1: trình bày miệng Hs2: trình bày lên bảng Hs khác nhận xét bài làm của hs2
Giáo án tin học11 a. Mục tiêu: Hs thấy được sự cần thiết của cấu trúc lặp trong lập trình. b. Nội dung: - Bài toán 1: Viết CT tính tổng
S=
1 1 1 1 + + + ... + a a +1 a + 2 a + 100
- Bài toán 2: Ông An có số tiền là S, ông gửi tiết kiệm ngân hàng với lãi suất 1,5%/tháng. Hỏi sau 12 tháng (không rút tiền lãi hàng tháng) ông ta được số tiền là bao nhiêu? c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu bài toán 1 đặt vấn đề 1. Chú ý quan sát bài toán đặt Bài toán 1: vấn đề. Viết CT tính tổng 1 1 1 1 - Hãy xác định công thức toán học để tính - Rất khó xác định S= + + + ... + a a +1 a + 2 a + 100 tổng Gợi ý phương pháp: Ta xem S là một cái xô, các số hạng là những cái ca có dung tích khác nhau, khi đó việc tính tổng trên tương tự như Theo dõi gợi ý. việc đổ các ca nước vào xô S. - Có bao nhiêu lần đổ nước như vậy? - Mỗi lần đổ 1 lượng là bao nhiêu? - Thực hiện 100 lần - Phải viết bao nhiêu lệnh để thể hiện việc này? 2. Nêu bài toán 2 để đặt vấn đề tiếp tục.(treo bảng chứa nội dung bài toán) - Em hiểu như thế nào về cách tính tiền gửi tiết kiệm trong bài toán 2.
- Số tiền thu được sau tháng thứ nhất là bao nhiêu? - Theo y/cầu của bài toán ta cần thực hiện tính bao nhiêu lần như vậy? Dẫn dắt: Chương trình được viết như vậy sẽ rất dài, khó đọc, dễ sai sót. cần có một cấu trúc điều khiển việc lặp lại thực hiện các công việc ở trên. - Trong tất cả mọi NNLT đều có một cấu trúc điều khiển việc thực hiện lặp lại với số lần đã định trước. 3. Chia lớp thành 4 nhóm: 2 nhóm viết t/toán btoán1, 2 nhóm viết t/toán btoán 2.
- Thu kết quả các nhóm, treo lên bảng, gọi hs nhóm khác nhận xét, đánh giá. - Chuẩn hóa lại thuật toán cho hs.
Giáo viên: Bùi Văn Tú
- Mỗi lần đổ
1 a+i
- Viết 100 lệnh.
2. Chú ý quan sát và trả lời các câu hỏi. - Với số tiền S sau mỗi tháng sẽ có số tiền lãi 0.015*S. Số tiền lãi sẽ được cộng vào số tiền ban đầu để tính lãi cho tháng tiếp theo: - S := S + 0.015*S - Thực hiện 12 lần. - Tập trung theo dõi gv trình bày.
3. Thảo luận theo nhóm để viết thuật toán: Btoán 1: B1: N←0; S←1/a; B2: N←N+1; B3: Nếu N>100 thì chuyển sang B5 B4: S←S+1/(a+N), quay lại B2; B5: Đưa ra S, rồi kết thúc. Btoán 2: B1: Nhập S; I←0; B2: I ←I + 1; B3: Nếu I >12 thì chuyển sang B5; B4: S←S + 0.015*S, quay lại B2
26
Bài toán 2: Ông An có số tiền là S, ông gửi tiết kiệm ngân hàng với lãi suất 1,5%/tháng. Hỏi sau 12 tháng (không rút tiền lãi hàng tháng) ông ta được số tiền là bao nhiêu?
Giáo án tin học11 B5: Đưa ra S, rồi kết thúc - Thông báo kết quả viết được. - Nhận xét bài làm của nhóm khác. 3. Hoạt động 3: (15 phút)Tìm hiểu lệnh lặp For trong NNLT Pascal a. Mục tiêu: Hs biết được cấu trúc chung của câu lệnh lặp FOR. Hiểu ý nghĩa các thành phần trong câu lệnh. Biết đượ sự thực hiện của máy khi gặp câu lệnh For. Vẽ được sơ đồ thực hiện đó. b. Nội dung: - Dạng tiến: FOR := TO DO ; - Dạng lùi: FOR := DOWNTO DO ; Trong đó: + phải nhỏ hơn + Biến đếm là kiểu nguyên, kí tự hoặc miền con Giá trị biến đếm tự động tăng(giảm) 1 đơn vị sau khi thực hiện câu lệnh cần lặp. c. Các bước tiến hành: Hđ của GV 1. Y/cầu hs n/cứu sgk vàcho biết cấu trúc chung của lệnh For? Giải thích: - Hỏi: Ý nghĩa của , , kiẻu dữ liệu của chúng? Trong btoán 1:, có giá trị bằng 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 cần đặt sau Do ta phải viết thế nào? - Hỏi: + Trong bài toán tiết kiệm lệnh nào cần lặp lại? + Trong bài toán tính tổng lệnh nào cần lặp lại? - Hãy so sánh giá trị của và ? Dẫn dắt: Khi đó câu lệnh For đgl For tiến, NNLT Pascal còn có dạng ngược lại là For lùi. 2. Y/cầu hs trình bày cấu trúc For lùi.
Hđ của HS 1. Đọc sgk và trả lời FOR := TO DO ; - để làm giới hạn cho biến đếm, cùng kiểu với biến đếm - là 1 là 100 - Sử dụng câu lệnh ghép. S:= S + 0.015*S;
Nd ghi bảng a. Dạng tiến FOR := TO DO ; Sơ đồ: bđếm:=
bđếm<=gtrị Đ Câu lệnh lặp bđếm :=bđếm + 1
S:= S+1/(a+i); ≤ b.Dạng lùi 2. N/cứu sgk, suy nghĩ, so sánh với dạng For tiến rồi trả lời FOR := DOWNTO DO ;
bđếm:= := cuối> DOWNTO DO ; Sơ đồ: bđếm>=gtrị đầu Đ
Hãy so sánh giá trị của và ? - Hai bài toán trên dùng lệnh For nào là phù hợp?
≤ - Sử dụng For tiến
IV. ĐÁNH GIÁ CUỐI BÀI (3phút) 1. Nội dung đã học
Giáo viên: Bùi Văn Tú
S
27
Câu lệnh lặp bđếm :=bđếm - 1
S
Giáo án tin học11 Cấu trúc chung của câu lệnh lặp For. Sơ đồ thực hiện của lệnh lặp For 2. Câu hỏi, bài tập về nhà - Sử dụng câu lệnh For hoàn thành chương trình bài toán 1 và 2 đã nêu ở đầu tiết. - Giải bài tập 5a, 6 sgk/51 - Xem trước phần ví dụ của nội dung cấu trúc lặp có số lần biết trước.
Ngày soạn: 3/10/07 Tiết 13
CẤU TRÚC LẶP (tiết 2/3)
I. MỤC TIÊU 1. Kiến thức Sử dụng đúng lệnh lặp For để giải quyết một bài toán đơn giản. 2. Kĩ năng Vận dụng đúng đắn các dạng của lệnh lặp For Viết đúng lệnh lặp For để mô tả được thuật toán của một số bài toán đơn giản. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Giáo án, sgk, Projector, bảng phụ chứa các chương trình mẫu. 2. Học sinh: sgk III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (7 phút) Kiểm tra bài cũ Hđ của GV 1. Trình bày các dạng cấu trúc câu lệnh lặp với số lần biết trước? - Gọi hs lên trả lời 2. Viết CT nhập vào 2 số nguyên dương a, b (a
Hđ của HS Hs1: trả lời câu hỏi 1 Hs2: trình bày chương trình trên bảng Var a, b, i , S : longint; Begin Write(‘Nhap a va b (a
2. Hoạt động 2: (15 phút) Rèn luyện kĩ năng vận dụng câu lệnh For và câu lệnh rẽ nhánh If Hđ của GV Hđ của HS Nd ghi bảng Dẫn dắt: Từ bài toán KTBC ở trên, nếu ta BÀI TẬP y/cầu tính và đưa ra màn hình tổng các số Bài 1: Viết CT nhập vào 2 số chẵn và tổng các số lẻ trong phạm vi từ a đến nguyên dương a, b (a
Giáo viên: Bùi Văn Tú
28
Giáo án tin học11
- Y/cầu hs cả lớp tự hoàn thành chương trình. Cho 1 hs lên bảng trình bày. * Chuẩn hóa lại bài làm của hs bằng chương trình mẫu (treo chtrình đã chuẩn bị trên bảng phụ)
Đứng tại chổ trả lời: For I:=a To b Do If I mod 2 =0 then S1:=S1+I else S2:=S2+I ; Trình bày trên bảng. Quan sát chtrình của giáo viên và ghi nhớ.
Var a, b, i , S1, S2 : longint; Begin Write(‘Nhap a va b (a
3. Hoạt động 3: (20 phút) Tiếp tục vận dụng câu lệnh lặp For để giải quyết một bài toán đơn giản. Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu đề bài toán (Ghi bảng) 1. Đọc đề bài toán, phân tích Bài 2: Ông Ba có số tiền là S, và trả lời câu hỏi: ông gửi tiết kiệm ngân hàng với - Cách tính tiền gửi tiết kiệm hàng tháng như Tl: Với số tiền S, sau mỗi lãi suất 1.5%/tháng. Hỏi sau 12 thế nào? tháng sẽ có lãi là: 0.015*S. tháng gửi (không rút tiền lãi Số tiền này sẽ cộng vào số hàng tháng), ông ta được số tiền tiền ban đầu để tính lãi cho là bao nhiêu? tháng tiếp theo. Tl: S := S + 0.015*S; - Vậy, công thức tính tiền thu được sau mỗi tháng như thế nào? Tl: 12 lần - câu lệnh lặp này lặp bao nhiêu lần? Tl: gtrị đầu là 1; gtrị cuối là - Xác định giá trị đầu và giá trị cuối của câu 12. lệnh For để thực hiện việc lặp trên? 2. Y/cầu hs viết chương trình vào vở, cho 1 2. Thảo luận và tự viết hs trình bày lên bảng. chương trình Var s:real; i:byte; Begin * Chuẩn hóa lại bài làm của hs bằng chương Write(‘So tien ban dau: ’); trình mẫu (treo chtrình đã chuẩn bị trên bảng Quan sát chtrình của giáo Readln(S); phụ) viên và ghi nhớ. For i:= 1 To 12 Do 3. (Nếu còn thời gian) 3. Suy nghĩ và trả lời S:= S + 0.015*S; Hỏi sau 12 tháng gửi (không rút tiền lãi hàng Writeln(‘So tien nhan duoc tháng), ông ta được số tiền nhiều hơn số tiền la: ’,S:8:3); ban đầu là bao nhiêu? Readln Ta phải sửa lại chtrình trên như thế nào? End. IV. ĐÁNH GIÁ CUỐI BÀI (3phút) Câu hỏi, bài tập về nhà Làm một số bài trong sách bài tập Tin học 11: 3.23, 3.29; 3.31 Xem trước phần nội dung cấu trúc lặp với số lần chưa biết trước While
Giáo viên: Bùi Văn Tú
29
Giáo án tin học11 Ngày soạn: 16/10/07 Tiết 14 CẤU TRÚC LẶP (tiết 3/3) I. MỤC TIÊU 1. Kiến thức - Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa biết trước - Biết được cấu trúc chung của lệnh lặp While trong NNLT Pascal. 2. Kĩ năng - Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While. - Sử dụng đúng lệnh lặp While trong lập trình. - Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết một số bài toán đơn giản. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Sgk, sgv, bảng phụ 2. Học sinh III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (10 phút) Tìm hiểu ý nghĩa của cấu trúc lặp có số lần chưa biết trước a. Mục tiêu: Biết được sự cần thiết phải có của cấu trúc lặp có số lần chưa biết trước trong lập trình b. Nội dung: - Bài toán 1: Viết CT tính tổng
S=
1 1 1 1 1 + + + ... + < 0.001 cho đến khi a a +1 a + 2 a+N a+N
- Bài toán 2: Ông An có số tiền là A đồng, ông gửi tiết kiệm ngân hàng với lãi suất 1,5%/tháng. Hỏi sau bao nhiêu tháng (không rút tiền lãi hàng tháng) ông ta được số tiền lớn hơn B đồng? c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu nội dung bài toán 1 1. Chú ý lắng nghe, quan sát và suy Bài toán 1 nghĩ trả lời -Sự khác nhau của bài toán này với bài toán -Bài trước: cho giới hạn N tính tổng đã học ở tiết trước? Bài này: cho giới hạn S - Lặp bao nhiêu lần? - Chưa xác định được ngay - Lặp đến khi nào? - Cho đến khi điều kiện 2. Nêu nội dung bài toán 2 -Sự khác nhau của bài toán này với bài toán đã giải ở tiết trước? - Lặp bao nhiêu lần? - Lặp đến khi nào?
1 < 0.001 được thõa mãn a+N
2. Chú ý lắng nghe, quan sát và suy nghĩ trả lời - Bài trước: biết số tháng, hỏi số tiền Bài này: biết số tiền, hỏi số tháng - Chưa biết, đó chính là số tháng phải tìm - Đến khi số tiền thu được >B
Bài toán 2
Tóm lại, qua 2 ví dụ trên ta thấy có 1 dạng toán có sự lặp lại của câu lệnh nhưng không biết được số lần lặp. Cần có 1 cấu trúc điều khiển lặp lại 1 công việc nhất định khi thõa mãn 1 điều kiện nào đó. 2. Hoạt động 2: (15 phút) Tìm hiểu cấu trúc lệnh lặp While trong NNLT Pascal a. Mục tiêu:- Biết được cấu trúc chung của lệnh lặp While. Hiểu được ý nghĩa của các thành phần trong câu lệnh. Biết được sự thực hiện của máy khi gặp While. Vẽ được sơ đồ thực hiện. b. Nội dung:
Giáo viên: Bùi Văn Tú
30
Giáo án tin học11 Cấu trúc: While <điều kiện> Do ; Sự thực hiện: Bước 1: Tính giá trị của <điều kiện>. Bước 2: Nếu <điều kiện> có giá trị đúng thì: thực hiện lệnh cần lặp và quay lại B1. c. Các bước tiến hành: Hđ của GV Hđ của HS 1. Y/cầu hs n/cứu sgk và cho biết cấu trúc 1. Tham khảo sgk và trả lời chung của lệnh lặp While. Cấu trúc: While <điều kiện> Do Giải thích: ; <điều kiện>: biểu thức quan hệ hoặc biểu thức logic. : các lệnh cần phải lặp lại Hỏi: - Điều kiện để lặp lại trong 2 bài toán là gì? - Trong 2 bài toán lệnh cần lặp là gì?
- Dựa vào cấu trúc, cho biết máy thực hiện tính <điều kiện> trước hay trước? - Sự khác nhau trong lệnh cần lặp của For và While là gì? 2. Y/cầu hs vẽ sơ đồ thực hiện lên bảng - Gọi hs khác nhận xét. * Treo sơ đồ mẫu và giải thích
Bt1:
1 > 0.001 a+i
Bt2: A < B + Bt1: S := S + 1/(a+I); để tính tổng I := I + 1; để tăng chỉ số + Bt2: A := A + 0.015*A; để tính tiền T := T + 1; để tính số tháng - Suy nghĩ và trả lời: Tính điều kiện trước, thực hiện lệnh lặp sau. - Trong While phải có lệnh thay đổi biến chỉ số. 2. Lên bảng vẽ sơ đồ thực hiện của lệnh While. -Nhận xét đúng sai và bổ sung * Chú ý lắng nghe và ghi nhớ
Nd ghi bảng 3. Câu lệnh While …Do Cấu trúc: While <điều kiện> Do ; Sơ đồ thực hiện: điều
S
Đ
lệnh cần lặp
* Trong phải có lệnh thay đổi biến chỉ số. (để thay đổi giá trị <điều kiện>)
3. Hoạt động 3: (15 phút) Rèn luyện kĩ năng vận dụng lệnh lặp While a. Mục tiêu: Bước đầu biết sử dụng đúng lệnh While để lập trình giải quyết một số bài toán đơn giản. b. Nội dung: Ví dụ 1: Bài toán 2 tìm hiểu ở trên Ví dụ 2: Viết chương trình tìm ước chung lớn nhất của 2 số nguyên dương M, N được nhập từ bàn phím. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Trở lại bài toán 2 1. Quan sát, xác định lại các Ví dụ 1: - Đã xác định <điều kiện>, thành phần và trả lời: hãy viết câu lệnh While hoàn chỉnh? While A< B Do begin Var A, B: extended; T: byte; Begin A := A + 0.015*A; Write(‘So tien ban dau A: ’); T := T + 1; Readln( A); - Chia lớp theo từng bàn. Y/cầu hs từng bàn end; thảo luận và viết chương trình hoàn thiện. - Tập trung làm việc theo bàn Write(‘So tien can co B(B>A): - Cho 1 hs lên bảng trình bày. để viết hoàn chỉnh chương ’); Readln(B); - Gọi 1- 2hs khác n/xét, đánh giá. trình. T := 0; - Lên bảng trình bày While A< B Do * Chính xác hóa chương trình cho cả lớp. - N/xét Đúng–Sai, bổ sung.
Giáo viên: Bùi Văn Tú
31
Giáo án tin học11 (chỉnh sửa lại chtrình của hs) 2. Nêu nội dung ví dụ 2 Phân tích để xác định <điều kiện> và . Minh họa khi tìm ucln của 2 số 15 và 25 M 15 15 5 5 N 25 10 10 5 Trả lời: ucln (15, 25) = 5 Hỏi: - Điều kiện để tiếp tục lặp là gì? - Các lệnh cần lặp là gì? - Y/cầu hs nêu thuật toán tìm ucln của 2 số đó. - Y/cầu hs viết chương trình hoàn thiện bài toán ở nhà. Củng cố: Hãy nêu 2 câu hỏi cần đặt ra khi gặp bài toán dạng này?
* Ghi nhớ những phần sửa chữa của gviên. 2. Tập trung theo dõi để thấy công việc cần thực hiện
begin A := A + 0.015*A; T := T + 1; end; Writeln(‘Phai cho ’,T,’ thang’); Readln End.
- Điều kiện: M<>N - M := M – N; hoặc N := N – M; - T/toán: B1: Nếu m=n thì ucln=m, dừng; B2: Nếu m>n thì m:=m-n ngược lại n:=n-m, qlại B1. Suy nghĩ và trả lời: + Điều kiện nào để lặp lại + Những lệnh nào cần lặp lại
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học - Cấu trúc chung của lệnh lặp While - Sơ đồ thực hiện của lệnh While và sự thực hiện của máy. 2. Câu hỏi, bài tập về nhà - Giải bài tập 5b, 7, 8 sgk trang 51. - Đọc lại bài lệnh rẽ nhánh IF và làm các bài tập liên quan chuẩn bị cho tiết sau thực hành. - Xem trước nội dung bài thực hành số 2: sgk trang 49-50 - Xem thêm nội dung phụ lục B, sgk trang 131: Lệnh rẽ nhánh và lặp (Case ... of Và Repeat ... Until) Ngày soạn: 23/10/07 Tiết 15 - 16
BÀI THỰC HÀNH SỐ 2
I. MỤC TIÊU 1. Kiến thức: Nắm được cấu trúc và sơ đồ thực hiện của cẩu trúc rẽ nhánh 2. Kĩ năng: - Rèn luyện kĩ năng sử dụng cấu trúc rẽ nhánh trong việc lập trình giải một số ài toán cụ thể. - Làm quen với các công cụ phục vụ hiệu chỉnh chương trình 3. Thái độ: Tự giác, tích cực, chủ động trong thực hành II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Phòng máy vi tính, Projector. 2. Học sinh: Sgk, sbt, bài tập đã viết ở nhà. III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (35 phút) Làm quen với một chương trình và các công cụ hiệu chỉnh chtrình. a. Mục tiêu: Hs biết được nội dung chương trình và kết quả sau khi thực hiện chương trình. Biết các công cụ dùng để hiệu chỉnh chương trình khi cần thiết: thực hiện từng bước, xem kết quả trung gian. b. Nội dung: Viết chtrình nhập vào 3 số nguyên dương a, b, c và kiểm tra xem chúng có phải là bộ số Pitago hay không? c. Các bước tiến hành:
Giáo viên: Bùi Văn Tú
32
Giáo án tin học11 Hđ của GV 1. Gợi ý để hs nêu khái niệm bộ số Pitago.
- Y/cầu hs cho ví dụ cụ thể? - Phải sử dụng các đẳng thức nào để kiểm tra 3 số bất kỳ a, b, c là bộ số Pitago? 2. Chiếu chương trình mẫu lên bảng. Thực hiện mẫu các thao tác: lưu, thực hiện từng lệnh chtrình, xem kết quả trung gian, thực hiện chtrình và nhập dữ liệu. - Y/cầu hs gõ chtrình vào máy. - Y/cầu hs lưu chtrình theo hdẫn của sgk. - Y/cầu hs thực hiện từng lệnh chtrình. - Y/cầu hs xem các kết quả trung gian a2, b2, c2 trên của sổ Watches - Y/cầu hs tìm thêm bộ số a, b, c khác để thực hiện chtrình và so sánh
Hđ của HS 1. Theo dõi dẫn dắt của gv để nêu khái niệm về bộ số Pitago: tổng bình phương 2 số bằng bình phương số còn lại. Ví dụ: 4 5 3 a2=b2+c2 b2=a2+c2 c2=a2+b2 2. Soạn chtrình vào máy.
Nhấn F2, gõ tên file, Enter Nhấn F7, nhập giá trị cho a = 3, b = 5, c = 4. Làm theo hdẫn trên bảng
Nd ghi bảng
* Xem kết quả trung gian + Vào Debug\ Watches, + nhấn phím Insert xuất hiện cửa sổ Add watch, nhập tên biến cần theo dõi giá trị, rồi nhấn Enter (lặp lại thao tác này nếu muốn cùng lúc xem giá trị nhiều biến)
Quan sát qua trình rẽ nhánh của từng bộ dữ liệu vào rồi trả lời. 2. Hoạt động 2: (45 phút )Rèn luyện kĩ năng lập trình hoàn thiện một bài toán a. Mục tiêu: Hs đọc hiểu đề, phân tích yêu cầu của đề. Từ đó chọn được cấu trúc dữ liệu và lệnh phù hợp để lập trình. b. Nội dung: Viết chương trình tìm giá trị lớn nhất của 3 số a, b, c được nhập từ bàn phím. c. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu nội dung, mục đích y/cầu của bài 1. Chú ý theo dõi vấn đề đặt ra Bài 2: Viết chương trình tìm toán. của gv. giá trị lớn nhất của 3 số a, b, - Bước đầu tiên để giải bài toán? - Xác định Input, Output và thuật c được nhập từ bàn phím. toán - Y/cầu hs xác định các nội dung đó? -Input: 3 số a, b, c - Nhập a, b, c; Output: Gtln(a,b,c) - Nếu a>b thì - Làm thế nào để xác định gtln của 3 số a, b, - Trả lời theo dạng trình bày ý nếu a>c thì max:=a c? (Nêu các bước tìm ra gtln) tưởng nglại max:=c - Y/cầu hs phát thảo thuật toán. - Hs trình bày trên bảng Nglại nếu b>c thì max:=b - Qua thuật toán ta sẽ sử dụng cấu trúc nào để - Cấu trúc rẽ nhánh nglại max:=c; viết chương trình? - Đưa ra max. 2. Y/cầu hs gõ chương trình vào máy 2. Độc lập từng nhóm soạn chtrình vào máy. Gviên tiếp cận từng máy tính để hướng dẫn Thông báo kết quả viết được. và sửa sai. 3. Nhập dữ liệu theo test cảu gv 3. Y/cầu hs nhập dữ liệu và thông báo kết quả. a = 23, b = 15, c = 23 4. Tìm các bộ test khác và kiểm thử chtrình 4. Y/cầu hs tự xác định các bộ test khác để kiểm tra chtrình IV. ĐÁNH GIÁ CUỐI BÀI (5phút) Câu hỏi, bài tập về nhà: chuẩn bị các bài tập sgk Xem trước bài:
Giáo viên: Bùi Văn Tú
33
Giáo án tin học11 Ngày soạn: 24/10/07 Tiết 17
BÀI TẬP CHƯƠNG 3
I. Mục tiêu: 1. Kiến thức: Củng cố cho học sinh kiến thức về cấu trúc rẽ nhánh và cấu trúc lặp. 2. Kỹ năng: Rèn luyện kỹ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp để giải quyết bài toán đặt ra. 3. 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 trong giải quyết các bài tập.Rèn luyện tư duy khoa học, tư duy logic. II. Chuẩn bị của giáo viên và học sinh: GV: - Soạn giáo án. HS: - Học bài cũ và chuẩn bị bài tập. III. Phương pháp dạy học: Gợi mở và thuyết trình. IV. Tiến trình bài dạy: 1. Hoạt động 1: (7phút) Kiểm tra bài cũ Câu hỏi 1(H1): Trình bày cấu trúc câu lệnh rẽ nhánh và cấu trúc lặp ? Tg
Hoạt động của HS
Hoạt động của GV
- 1 HS lên bảng trả lời.
- GV gọi 1 HS lên trả lời H1.
7’
- Cả lớp theo dõi và nhận xét bổ sung (nếu có).
- GV yêu cầu cả lớp nhận xét câu trả lời của bạn. - GV nhận xét và đánh giá.
2. Hoạt động 2: (15 phút)Giải bài tập 4 Câu hỏi 1(H1): Sử dụng lệnh If này gồm mấy nhánh ? Câu hỏi 2(H2): Hàm lấy giá trị tuyệt đối của biểu thức hay biến ? Tg Hoạt động của HS Hoạt động của GV HĐTP1: - 1 HS lên bảng giải câu 4a) - GV gọi 1 HS lên bảng giải câu 4a) - 1 HS trả lời H1. - GV đặt H1. - Các HS khác theo dõi và - GV yêu cầ cả lớp theo dõi và nhận nhận xét. xét. - GV nhận xét, hoàn chỉnh bài làm và đánh giá. HĐTP2: - GV gọi 1 HS lên bảng giải câu 4b)
20’ - 1 HS lên bảng giải câu 4b) - 1 HS trả lời H2.
Giáo viên: Bùi Văn Tú
- GV đặt H2.
Ghi bảng -Rẽ nhánh If then else ; If then ; - Lặp For For := To Do ; For := Downto Do ; - Lặp While While<điềukiện>Do;
Ghi bảng Câu 4a) If (sqrt(x) + sqrt(y)) <=1 then z:= sqrt(x) + sqrt(y) Else If y>=x then z:= x+y Else z:= 0.5;
Câu 4b)
34
Giáo án tin học11
- GV nhận xét và đánh giá.
If (sqr(x-a) + sqr(y-b)) <= sqr(r) then z:=abs(x) +abs(y) Else z:= x+y;
3. Hoạt động 3: (20 phút) Giải bài tập 5 50
Câu hỏi 1(H1): Hãy khai triển biểu thức Y =
n
∑ n + 1 dưới dạng tường minh ? n =1
Câu hỏi 2(H2): Nhìn vào công thức khai triển, em hãy cho biết n lấy giá trị trong đoạn nào ? Câu hỏi 3(H3): Em hãy thử đưa ra phương pháp tính Y ? Câu hỏi 4(H4): Sử sụng cấu trúc điều khiển lặp nào là phù hợp ? Tg Hoạt động của HS Hoạt động của GV Ghi bảng - 1 HS lên bảng trình bày - GV đặt H1. 1 2 3 Y= + + ++ H1. - GV đặt H2. 2 3 4 - 1 HS trả lời H2. - GV đặt H3. Câu 5a) - 1 HS trả lời H3 - GV đặt H4. Uses crt; 15’ - 1 HS trả lời H4 - GV gọi 1 HS lên bảng giải bài 5a) Var y: real; - 1 HS lên bảng giải bài 5a - GV yêu cầu các HS còn lại theo dõi n: byte; - Các HS còn lại theo dõi và nhận xét. Begin và nhận xét bổ sung (nếu - GV nhận xét, hoàn chỉnh bài làm và Clrscr; có). đánh giá. y:=0; for n:=1 to 50 do y:= y + n/(n+1); writeln(y:14:6); readln; End. V. Củng cố và dặn dò (3’): 1. Nắm được những nội dung đã học: Có 2 cấu trúc lặp: • Lặp For: Số lần lặp đã xác định • Lặp While: Số lần lặp chưa xác định 2. Làm các bài tập còn lại trong SGK trang 51.
50 51
KIỂM TRA MỘT TIẾT I. Mục tiêu đánh giá, yêu cầu của đề 1. Mục tiêu đánh giá: Kiểm tra sự hiểu bài của hs sau khi học xong chương1, 2, 3. 2. Yêu cầu của đề: a. Kiến thức: - Cách khai báo hằng, biến, cách tạo các biểu thức, cách sử dụng lệnh gán, cách sử dụng lệnh vào ra đơn giản. - Khái niệm rẽ nhánh và lặp trong chương trình, khái niệm lập trình có cấu trúc. b. Kĩ năng: - Biết khai báo biến đơn - Biết diễn đạt đúng các câu lệnh,soạn được chương trình các bài toán đơn giản c. Thái độ: - Nghiêm túc ,cố gắng vượt qua những lúng túng. - Tiếp tục rèn luyện phẩm chất cần thiết cho người lập trình II. Ma trận đề: Chương 2 Chương 3 Biết Câu 4, 5, 6, 9 Câu 10
Giáo viên: Bùi Văn Tú
35
Giáo án tin học11 Hiểu Vận dụng
Câu 3, 7 Câu 11
Câu 1, Câu 2, 8, 12, Tự luận
III. Nội dung đề: A. Trắc nghiệm (6đ) (Khoanh tròn vào 1 ý trả lời đúng cho mỗi câu ) 1. Các biến x, n1, n2 phải được khai báo như thế nào thì cấu trúc lặp sau thực hiện được: FOR x := n1 TO n2 DO Begin ………End; A. Var x: integer ; n1, n2: real; B. Var x, n1, n2: integer; C. Var x, n1, n2: real; D. Var n1, n2: char; x: integer; 2. Cho đoạn chương trình sau: end; Kết quả I bằng bao nhiêu? I := 1; S := 0; A. 1 While S < 25 Do begin B. 5 S := S + 3; C. 9 I := I +1 D. 10 3. Chọn từ khoá : A. Writeln B. Integer C. Readln D. ELSE 4. Hàm div dùng để: A. Tính căn bậc B. Chia lấy phần dư C. Làm tròn 1 số D. Chia lấy phần nguyên 5. Từ nào là tên chuẩn: A. END B. Readln C. If D. TYPE 6. Để nhập giá trị vào biến a ta có câu lệnh: A. Readln(a); B. Realn(a); C. Readln('a'); D. Read('a'); 7. Giả sử a là biến có kiểu thực ,chọn lệnh phù hợp khi viết chương trình: A.
a=
1 y
B. a:=b*b
C.
b a := − ; x
D. a :=
1 y+x
8. Để in ra dãy số: 1 2 3 4 5 6 7 8 9 10 A. For i:=1 To 10 do write('1 2 3 4 5 6 7 8 9 10'); B. For i:=1 To 10 do write(i); C. For I : = 1 To 10 Do write(I , ' '); D. For I :=1 To 10 Do write('I '); 9. Kiểu Integer có phạm vi giá trị từ: A. 0 đến 216-1 B. -215 đến 215-1 C. -231 đến 231-1. D. 0 đến 225 10. Cú pháp lệnh If dạng thiếu : A. If <điều kiện> then B. If <điều kiện> then ; C. If then <điều kiện> ; D. If else <điều kiện> ; 11. Cho chương trình pascal sau: End. Chương trình trên tính giá trị của biểu thức nào Program cb1; trong các biểu thức sau: Var x,y: real; Begin A. y=x+2x+3x+4x+5 Write('x= '); readln(x); B. y=x3+5x2+4x+5 Y:=(((x+2)*x+3)*x+4)*x+5; C. y=(x+2)(x+3)(x+4)+5 Writeln('y=',y); D. y= x4+2x3+3x2+4x+5 12. Trong NNLT Pascal, đoạn chương trình sau thực hiện công việc gì? I := 0; While I <>0 Do write(I, ' '); A. Lặp vô hạn việc đưa ra màn hình các chữ số 0 B. Đưa ra màn hình 10 chữ số 0 C. Đưa ra màn hình 1 chữ số 0 D. Không đưa ra thông tin gì. B. Tự luận (4đ)Viết chương trình tính tổng các ước số của một số nguyên dương N được nhậpvào từ bàn phím (không kể ước là chính nó).
Giáo viên: Bùi Văn Tú
36
Giáo án tin học11 Var N, i: word; S: longint; Begin write(‘Nhap N ’); Readln(N); S:= 0; For i:= 1 to N div 2 Do if N mod i = 0 then S:=S+i; writeln(‘Tong tinh duoc la: ’, S); End.
(1đ) (1đ) (0.5đ) (1đ) (0.5đ)
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Ngày soạn: 07/11/07 Tiết 19
KIỂU MẢNG (tiết 1/4)
I. MỤC TIÊU 1. Kiến thức Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. Biết được một loại biến có chỉ số; Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng Biết được các thành phần trong khai báo kiểu mảng một chiều; Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên; Biết cách tham chiếu đến các phần tử của mảng một chiều. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều 2. Học sinh: sgk III. PHƯƠNG PHÁP: Đặt vấn đề, thuyết giảng IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (15 phút) Khởi động bài mới Hđ của GV 1. Nêu bài toán mở đầu. Y/cầu hs đọc, tìm hiểu chtrình giải quyết bài toán đó. Và trả lời các câu hỏi sau: - Các biến: t1, …,t7 thể hiện các giá trị nào? Kiểu của các biến đó thế nào? - Biến dem dùng làm gì? - 7 câu lệnh IF trong chương trình thực hiện việc gì? 2. Mở rộng bài toán từ phạm vi một tuần sang phạm vi N ngày (chẳng hạn một tháng hay một năm) thì chương trình trên có hạn chế như thế nào?
Hđ của HS 1. N/cứu bài toán và chtrình, suy nghĩ trả lời các câu hỏi: - Nhận giá trị nhiệt độ của 7 ngày trong tuần. Cùng kiểu thực (real) - dem: để đếm số ngày tron tuần có nđộ lớn hơn nđộ trung bình. - Để kiểm tra lần lượt các ngày, nđộ ngày nào lớn hơn nđộ trung bình. 2. Bản chất thuật toán không có gì thay đổi nhưng việc viết chương trình gặp khó khăn do cần dùng rất nhiều biến và đoạn các câu lệnh tính toán khá dài.
3. Để khắc phục hạn chế trên người ta thường
Giáo viên: Bùi Văn Tú
37
Nd ghi bảng
Giáo án tin học11 ghép chung 7 biến trên thành một dãy và đặt cho nó chung 1 tên và đánh cho mỗi phần tử một chỉ số. - GV giới thiệu bài mới: Kiểu mảng. Chúng ta chỉ xét hai kiểu mảng thông dụng: Kiểu mảng một chiều và kiếu mảng hai chiều. 4. Y/cầu hs tham khảo sgk và hỏi: Em hiểu như thế nào về mãng một chiều?
3. Lắng nghe
4. N/cứu sgk và trả lời: Mảng một chiều là dãy hữu hạn các phận tử cùng kiểu dữ liệu. Các ptử trong mảng cùngtên và phân biệt nhau bởi chỉ số. - Trả lời: + Kiểu của các p/tử. + Cách đánh số các p/tử.
ξ11. KIỂU MẢNG 1.Kiếu mảng một chiều a. K/n mảng một chiều (sgk)
Hỏi: Để mô tả mảng một chiều, ta cần xác định những yếu tố nào? 2. Hoạt động 2: (20 phút)Tạo kiểu mảng một chiều và khai báo biến mảng Hđ của GV Hđ của HS Nd ghi bảng 1. Y/cầu hs tìm hiểu phần khai báo một lời giải khác cho bài toán trên trong trường hợp tổng quát (N ngày), có sử dụng mảng 1 chiều. Hỏi: Chỉ ra phần khai báo mảng trong phần khi báo của chtrình? - Trả lời * Ghi lại phần khai báo lên bảng Type - Ý nghĩa của các khai báo trên là gì? Trả lời: Kmang1=array [1..Max] of real; Dòng 1: Kbáo kiểu Var Nhietdo: Kmang1; mảng một chiều gồm Max số thực. Dòng 2 : Kbáo biến 2. Giới thiệu cú pháp khai báo kiểu mảng một mảng Nhietdo qua b. Khai báo (Có hai cách) chiều. kiểu mảng + Kbáo gián tiếp: (sgk) -Khái quát hoá, ta có cú pháp khái báo biến + Kbáo trực tiếp: (sgk) mảng một chiều * Lưu ý về cách chọn Lắng nghe và ghi 3. Y/cầu cho ví dụ khai báo mảng? chép Gọi hs khác: Ý nghĩa của khai báo bạn vừa Ví dụ 1: viết? Var Nhietdo: array [1..Max] Of real; 3. Suy nghĩ và trả * Lưu ý hs tránh nhầm lẫn giữa tên kiểu dữ lời liệu mảng và biến kiểu mảng. Var Dhs2: array Ví dụ 2: Khai báo mảng tối đa 100 số nguyên (chỉ số đầu tiên là 1) [1..100] of real; -Hỏi: (Treo bảng) Trong ba cách khai báo ở - Kbáo trực tiếp Ta có các cách sau: mảng có tên Dhs2 Cách 1: ví dụ 2, thì cách nào tốt hơn? gồm 100 p/tử có Var a: Array[1..100] Of Integer; kiều thực. Cách 2: Trả lời: Const Nmax = 100; - Hỏi: Dựa vào ví dụ trang 55 SGK, cho biết: Cách 2 & 3, vì ta dễ Var a: Array[1..Nmax] Of integer; dàng điều chỉnh Cách 3: + Tên kiểu mảng? kích thước của Const Nmax = 100; + Số phần tử của mảng? Type MyArray = Array [1..Nmax] Of mảng + Mỗi phần tử của mảng thuộc kiểu gì? Integer; 4. Cách tham chiếu đến từng phần tử của Var a:MyArray; mảng: Y/cầu hs lấy ví dụ(sử dụng các khbáo ở trên) .ArrayReal .301 phần tử
Giáo viên: Bùi Văn Tú
38
Giáo án tin học11 .Real a[2] p/tử ở vị trí thứ 2 của mảng a a[i] p/tử ở vị trí i của mảng a. 3. Hoạt động 3: (7 phút) Củng cố Hđ của GV (Treo bảng) + Những khai báo nào là đúng? + Biến a trong khai báo trên chiếm dung lượng bộ nhớ là bao nhiêu? (số phần tử của mảng a, kiểu phần tử)
* Tham chiếu tới phần tử cuả mảng Tên_biến[chỉ số]
Hđ của HS + Trả lời: Arrayr=array[1..200] of integer; Arrayb = array[-100..100] of boolean; + Trả lời: a chiếm 400 byte trong bộ nhớ.
Nd ghi bảng Type Arrayr = array[1..200] Of integer; Arrayr = array[byte] of real; Arrayb = array[-100..100] of boolean; Var a : arrayr; B : arrayb;
IV. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ (3phút) 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà Đọc ví dụ 1 và ví dụ 2/ trang 56+57 SGK : − Xem lại thuật toán tìm phần tử lớn nhất của dãy số nguyên và thuật toán sắp xếp dãy số nguyên bằng thuật toán hoán đổi (lớp 10); − Khai báo được mảng, tham chiếu được các phần tử của mảng.
Ngày soạn: 07/11/07 Tiết 20
KIỂU MẢNG (tiết 2/4) BÀI TẬP KIỂU MẢNG MỘT CHIỀU
I. MỤC TIÊU 1. Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: giáo án, bảng phụ, sgk 2. Học sinh: sgk III. PHƯƠNG PHÁP
Giáo viên: Bùi Văn Tú
39
Giáo án tin học11 IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Hđ của HS 1. Trình bày các cách khai báo kiểu mảng trong NNLT Hs1: Đứng tại chổ trả lời Pascal? Hs2: (lên bảng) 2. Khai báo mảng gồm N số nguyên (N≤500). (theo 2 Const N = 500; C1: Var M : array[1..N] of integer; cách: trực tiếp và gián tiếp). C2: Type Mnguyen = array[1..N] of integer; Gọi lần lượt hs trả lời. Var M : Mnguyen; Gọi hs khác nhận xét nội dung trên bảng Đánh giá, cho điểm. 2. Hoạt động 2: (20 phút)Vận dụng kiểu mảng một chiều a. Nội dung: - Bài toán: Tạo mảng A gồm N (N≤100) số nguyên. Tính tổng các phần tử của mảng là bội của một số nguyên dương k cho trước. b. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng
Giáo viên: Bùi Văn Tú
40
Giáo án tin học11 1. Nêu đề bài toán (ghi bảng) Y/cầu hs xác định In/Output của bài toán. 2. Ở lớp 10 ta đã xây dựng t/toán cho bài toán này rồi. Y/cầu hs nhắc lại t/toán. 3. Y/cầu hs cho biết các việc chính cần thực hiện trong chtrình là gì?
4. Y/cầu hs cho biết các biến chính cần sử dụng là gì? - Y/cầu hs khác lên viết phần khai báo các biến đó? 5. Tiếp tục y/cầu hs lên viết phần chtrình tạo giá trị cho các ptử của mảng A. (lưu ý nhập số lượng ptử của mảng trước) Gọi hs khác nhận xét * Chỉnh sửa đoạn chtrình hs vừa hoàn thành. 6. Để viết tiếp đoạn chtrình còn lại (tính tổng) theo thuật toán ta phải kiểm tra lần lượt tất cả các ptử của mảng từ A[1] đến A[n]. vậy ta sử dụng câu lệnh gì ở đây? - Hỏi: trước khi tính tổng, ngoài mảng A trong CT cần có thêm gì không? (GV bổ sung) - Y/cầu hs khác lên viết đoạn chtrình còn lại? ** Chuẩn hoá lại chtrình.
1. Đọc đề bài toán và trả lời: In: mảng A, số k Out: Tổng (S) các p/tử trong mảng A là bội của k.
Bài 1: Viết CT tạo mảng A gồm N (N≤100) số nguyên. Tính tổng các phần tử của mảng là bội của một số nguyên dương k cho trước.
2. 1-2 hs nhắc lại t/toán 3. Trả lời + Cho biết số ptử của mảng A. + Nhập giá trị cho các ptử của mảng A + Tính tổng. 4. suy nghĩ và trả lời - mảng A biến đơn: N, k, S. - Lên bảng trình bày Var S, N, k: integer; A: array[1..100] of integer; 5. Thực hiện tương tự các CT trước (Lên bảng trình bày) Đứng tại chổ n/xét, (bổ sung nếu sai sót) 6. Chú ý sự dẫn dắt vấn đề của gv, suy nghĩ và trả lời: Sử dụng cấu trúc lặp For. -Giá trị k và Biến S := 0
Var
S, n, k, i : integer; A: array[1..100] of integer; Begin Write(‘Nhap n = ’); readln(n); {tao mang} For i:=1 To n Do begin write(‘phan tu thu ’,i,’ =’); readln(A[i]); end; write(‘Nhap k = ’); readln(k); S := 0; {khoi tao S ban dau} {tinh tong} For i:=1 To n Do If A[i] mod k = 0 Then S := S + A[i]; Writeln(‘Tong can tinh la ’, S); End.
- Lên bảng trình bày
* Chạy thử chtrình với 1 bộ giá trị: Chạy thử chtrình N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12 và k =3 A 5 6 -8 13 24 i 1 2 3 4 5 A[i] 2 0 -2 1 0 mod 3 S 0 0 6 6 6 30
7 6
-4 7
- 12 8
1
-1
0
30
30
18
3. Hoạt động 3: (15 phút) Mở rộng bài toán có vận dụng mảng một chiều a. Nội dung: Cho một số câu lệnh: (1) ...... am, duong : integer; (2) ...... am := 0; duong := 0; (3) ...... If A[i] >0 Then duong := duong + 1 Else if A[i]<0 Then am := am + 1; (4) ...... Writeln(duong: 4, am:4); Hãy đưa các câu lệnh đó vào những vị trí thích hợp trong chtrình bài 1, để có được chtrình đưa ra số các số dương và số các số âm trong mảng.
Giáo viên: Bùi Văn Tú
41
Giáo án tin học11 b. Các bước tiến hành: Hđ của GV (Treo bảng) chứa nội dung câu lệnh cần thêm vào chtrình ở bài 1. 1. Y/cầu hs n/cứu nội dung các câu lệnh và hỏi: - Ý nghĩa của biến am, duong? - Chức năng của lệnh (3)? - Lệnh (4) đưa ra thông tin gì? 2. Y/cầu hs tìm vị trí bổ sung các lệnh vào cho phù hợp để chtrình đếm được số dương, số âm. 3. Y/cầu hs lên hoàn chỉnh lại chtrình? ** Chuẩn hoá lại chtrình. * Chạy thử chtrình với 1 bộ giá trị:
Hđ của HS Quan sát các câu lệnh 1. N/cứu ý nghĩa các câu lệnh và trả lời: - Dùng để lưu số lượng đếm được. - Đếm số dương hoặc đếm số âm. - Số các số dương, số các số âm. 2. Chỉ ra vị trí cần bổ sung và các câu lệnh cần loại bỏ bớt. 3. Lên bảng , chỉnh sửa lại chtrình.
Nd ghi bảng n, i : integer; am, duong : integer; A : array[1..100] of integer; Begin Write(‘Nhap n = ’); readln(n); {tao mang} For i:=1 To n Do begin write(‘phan tu thu ’,i,’ =’); readln(A[i]); end; am := 0; duong := 0; {dem} For i:=1 To n Do If A[i] >0 Then duong := duong + 1 Else if A[i]<0 Then am := am + 1; Writeln(duong: 4, am:4); End. Var
Chạy thử chtrình N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12 A 5 6 -8 13 Duong 1 2 2 3 am 0 0 1 1
24 4 1
7 5 1
-4 5 2
- 12 5 3
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học - Tính tổng các phần tử trong mảng thoả mãn một điều kiện. - Đếm số phần tử trong mảng thoả mãn một điều kiện. 2. Câu hỏi, bài tập về nhà - Cho 2 mảng A, B gồm n (n<=250) số nguyên. Hãy viết chương trình xây dựng mảng C[1..n], trong đó C[i] là tổng của 2 phần tử thứ i thuộc mảng A và mảng B. (tức là: C[i] = A[i] + B[i]) - Xem trước vídụ 2 và ví dụ 3/trang 57, 58 sgk. Ngày soạn: 14/11/07 Tiết 21
KIỂU MẢNG (tiết 3/4)
I. MỤC TIÊU 1. Kiến thức: - Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng. - Củng cố và làm hs hiểu sâu hơn thuật toán sắp xếp đã được học ở lớp 10. 2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: giáo án, bảng phụ, sgk 2. Học sinh: sgk III. PHƯƠNG PHÁP IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (10 phút) Kiểm tra bài cũ Hđ của GV Gọi 2 Hs lên bảng trình bày bài tập cho về nhà tiết trước. Gọi hs khác nhận xét Đánh giá cho điểm
Giáo viên: Bùi Văn Tú
42
Hđ của HS 2 hs lên bảng trình bày Nhận xét
Giáo án tin học11 2. Hoạt động 2:(15 phút) Phân tích bài toán trước khi viết chương trình a. Nội dung: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi. b. Các bước tiến hành: Hđ của GV Hđ của HS 1. Nêu bài toán, y/cầu hs xác định In/Output 1. Đọc đề và xác định bài toán. của bài toán. In: N (N≤250), dãy A (A[i]<500). Out: dãy A không giảm 2. Y/cầu hs trình bày lại thuật toán sắp xếp 2.Thuật toán tráo đổi. (Đã học ở lớp 10) B1: Nhập N, dãy A ; B2: jN; B3: nếu j<2 thì đưa ra dãy đã được sắp xếp, KT; B4: jj-1; i1; B5: Nếu i>j thì Qlại B3; B6: Nếu A[i]>A[i+1] thì tráo đổi A[i] và A[i+1]; 3. Y/cầu cả lớp n/cứu lại t/toán và trả lời các B7: Quay lại B5. câu hỏi: - Biến j sẽ nhận các giá trị trong phạm vi nào? Tương tự với biến i? Trả lời: - Có nhận xét gì về 2 biến i,j? + 2 ≤ j ≤ N, 1 ≤ i ≤ j-1 (với mỗi giá trị j, i lần lượt nhận các giá trị từ + i phụ thuộc theo j 1 đến j-1)
Nd ghi bảng Số nguyên dương N (N≤250) và dãy A gồm N số nguyên dương, mỗi số đều không vượt quá 500. Hãy sắp xếp dãy A thành dãy không giảm.
3. Hoạt động 3:(15phút)Vận dụng kiểu dữ liệu mảng một chiều để mô tả t/toán trên trong Pascal Hđ của GV Hđ của HS Nd ghi bảng 1. Y/cầu hs xác định những nội dung 1. Suy nghĩ và trả lời: chính cần viết trong chtrình. +Khai báo biến +Tạo mảng A * Chốt lại các nội dung chính cần viết. +Sắp xếp mảng A tăng dần 2. Yêu cầu từng hs lên bảng viết từng nội +Đưa mảng A đã sắp xếp ra dung của chương trình. màn hình - Khai báo những biến gì? 2. Lên bảng trình bày từng nội Var A: array[1..300] of integer; dung. N, i, j :integer; - Tạo mảng là làm những gì? - mảng A, biến đơn N, i, j Begin - Nhập sl p/tử của mảng và {tao mang} nhập giá trị cho các p/tử trong Write(‘Nhap n = ’); readln(n); For i:=1 To n Do mảng begin write(‘phan tu thu ’,i,’ =’); - Sắp xếp mảng readln(A[i]); Hỏi: Làm thế nào để tráo đổi giá trị 2 biến end; cho nhau (a[i] và a[i+1])? Tl: sử dụng thêm biến trung {sap xep mang} For j := N Downto 1 Do gian t: for i:=1 to j - 1 do t:=a[i]; If a[i] > a[i+1] then - Đưa mảng ra màn hình a[i]:=a[i+1]; begin a[i+1] :=t t:=a[i]; a[i]:=a[i+1]; a[i+1] :=t end; {dua ra mang da sap xep} Viết lại chương trình vào vở. Writeln (‘Mang da duoc sap xep ’); For i :=1 To N Do write (a[i]:4);
Giáo viên: Bùi Văn Tú
43
Giáo án tin học11 Readln End.
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học Cách phân tích và viết chương trình cho một bài toán. 2. Câu hỏi, bài tập về nhà Xem lại các bài tập về mảng đã giải ở tiết 20 Xem trước bài: Bài thực hành số 3 Bài tập: Cho mảng A gồm N phần tử. hãy viết chương trình tạo ra mảng B cũng gồm N phần tử, trong đó B[i] bằng tổng của i phần tử đầu tiên trong mảng A. (B[i]= A[1]+A[2]+ .. +A[i])
Ngày soạn: 15/11/07 Tiết 22 BÀI THỰC HÀNH SỐ 3 (tiết 1) I. MỤC TIÊU: - Về kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng. - Về kỹ năng: + Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá trị của các phần tử mảng. + Duyệt qua phần tử của mảng để xử lý từng phần tử. - Về tư duy và thái độ: Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập trình. II. CHUẨN BỊ: - GV: Phòng máy tính, máy chiếu Projector. - HS: SGK, bài tập. III. PHƯƠNG PHÁP: - Vấn đáp tìm tòi, vấn đáp tái hiện, giải quyết vấn đề. IV. TIẾN TRÌNH BÀI HỌC: 1. Ổn định tổ chức lớp. 2. Kiểm tra bài cũ: Câu hỏi: Khi nào ta nên khai báo biến mảng gián tiếp – thông qua định nghĩa kiểu? 3. Bài mới: Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu qua chương trình có sẵn: HOẠT ĐỘNG CỦA GV GV: Cài đặt và trình chiếu CT mẫu bài 1a. ?1: MyArray là tên kiểu dữ liệu hay tên biến? GV: Nhận xét. ?2: Vai trò của nmax và n khác nhau như thế nào? ?3: Dòng lệnh nào dùng để tạo biến mảng A? GV: Nhận xét. GV: Cho chạy thử CT bài 1a ?4: Lệnh gán A[i]:= random(300) – random(300) có ý nghĩa gì? GV: Nhận xét. ?5: Lệnh For i:=1 to n do Write(A[i]:5); có ý nghĩa gì? GV: Nhận xét. ?6: Lệnh For i:=1 to n do If A[i] mod k = 0 then s:=s + A[i]; thực hiện nhiệm vụ gì? GV: Nhận xét.
Giáo viên: Bùi Văn Tú
44
HOẠT ĐỘNG CỦA HS HS: Xem bài mẫu được trình chiếu. HS1: Trả lời HS2: Trả lời HS3: Trả lời. HS: Xem HS4: Trả lời. HS5: Trả lời. HS6: Trả lời.
Giáo án tin học11 ?7: Lệnh s:=s+A[i]; được thực hiện bao nhiêu lần? GV: Nhận xét. GV: Cho HS chạy thử chương trình để thấy kết quả.
HS7: Trả lời.
GV: Nhắc nhở HS lưu chương trình đã chạy tốt ở câu a. GV: Trình chiếu các câu lệnh của câu 1b. ?8: Đưa biến Posi và Neg vào vị trí nào trong câu 1a? GV: Nhận xét. ?9: Nhiệm vụ của câu lệnh: If A[i]:>0 then Posi:=Posi+1 else If A[i]<0 then Neg:=Neg+1; ? GV: Nhận xét. GV: Yêu cầu HS đưa câu lệnh trên vào chương trình ở câu 1a. GV: Yêu cầu HS chạy chương trình và báo cáo kết quả.
HS: Chạy thử chương trình trên máy của mình. HS: Lưu chương trình. HS: Xem. HS8: Trả lời HS9: Trả lời. HS: Thực hiện. HS: Lưu và chạy chương trình, báo cáo KQ.
4. Củng cố: Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn phím. 5. Dặn dò: - HS về nhà làm bài tập 4.15 trong sách bài tập. - Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK. Ngày soạn: 15/11/07 Tiết 23 BÀI THỰC HÀNH SỐ 3 (tiết 2) I. MỤC TIÊU. 1. Kiến thức: Củng cố lại các kiến thức về kiểu dữ liệu mạng 2. Kĩ năng: - Nâng cao kĩ năng sử dụng một số kiểu lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể: + Khai báo kiểu dữ liệu mảng một chiều + Nhập, xuất dữ liệu cho mảng + Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử. - Biết giải một số bài toán thường gặp: + Tính tổng các phần tử thoả mãn các đ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, nhỏ nhất 3. Thái độ và tư duy: Góp phần rèn luyện tác phong, tư duy lập trình; từ giác, tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức II. ĐỒ DÙNG DẠY HỌC. 1. Chuẩn bị của GV: Phòng máy vi tính, máy chiếu hoặc bảng phụ để minh họa 2. Chuẩn bị của HS: SGK III. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: Ôn lại kiến thức để chuẩn bị làm bài tập và thực hành Hoạt động GV Hoạt động HS Ghi bảng Cách khai báo mảng trực tiếp ? gián - Cách khai báo trực tiếp: tiếp ? var : array[kiểu chỉ số] of ; - Cách khai báo gián tiếp: type = array[kiểu chỉ số] of ; var : 2. Hoạt động 2: Đọc đề và tìm hiểu yêu cầu bài tập 2 SGK Hoạt động GV Hoạt động HS Ghi bảng Yêu cầu HS đọc đề BT2 SGK Đọc đề và tìm hiểu yêu cầu - Tìm phần tử có giá trị lớn nhất Yêu cầu của bài toán là gì? của đề trong mảng Trả lời câu hỏi - In ra màn hình chỉ số nhỏ nhất của phần từ có giá trị lớn nhất
Giáo viên: Bùi Văn Tú
45
Giáo án tin học11 3. Hoạt động 3: Đọc chương trình và chạy chương trình trên giấy để hiểu thuật toán của chương trình Hoạt động GV Hoạt động HS Ghi bảng - Việc tạo mảng dữ liệu được thể hiện ở Thể hiện ở câu lệnh for thứ phần nào trong chương trình ? nhất của chương trình. Treo bảng phụ chương trình của bài - Tìm giá trị lớn nhất và đưa ra màn toán. hình chỉ số nhỏ nhất của phần từ có giá - Từ j:=1 đến cuối chương trị lớn nhất được thể hiện ở phần nào ? trình B1: j=1, i=2, A[i]=2, A[j]=4 - Vai trò của biến j trong chương trình A[i]< A[j] nhằm mục đích gì ? B2: j=1, i=3, A[i] = 5, A[j] =4 - Thực hiện chương trình với giá trị của - Giữ lại chỉ số của phần tử có A[i]>A[j] , j=3 mảng nhập vào cụ thể như sau: giá trị lớn nhất. B3: j=3, i=4, A[i]=7, A[j]=5 4 2 5 7 6 7 A[i]>A[j] j=4 - Thực hiện yêu cầu của GV. B4: j=4, i=5, A[i]=6, A[j]=7 Hãy dựa vào phần tìm giá trị lớn nhất và chạy chương trình trên giấy nháp và A[i]
KIỂU MẢNG (tiết 4/4)
I. MỤC TIÊU 1. Kiến thức - Hiểu được khái niệm mảng hai chiều. - Hiểu cách khai báo và tham chiếu đến các phần tử của mảng hai chiều. 2. Kĩ năng - Thực hiện được khai báo mảng hai chiều, cách tham chiếu đến một phần tử của mảng hai chiều. - Thực hiện được việc tính toán các phần tử trong mảng hai chiều. II. ĐỒ DÙNG DẠY HỌC
Giáo viên: Bùi Văn Tú
46
Giáo án tin học11 1. Giáo viên: Bảng phụ chứa chương trình tạo và in mảng hai chiều gồm 5 hàng, 7 cột. Tính và in ra màn hình tổng các phần tử trong mảng. 2. Học sinh: SGK, vở soạn. III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (8 phút) Kiểm tra bài cũ Hđ của GV Hđ của HS Viết CT tạo và in ra màn hình mảng A gồm n phần tử 10 phần tử. Mỗi phần tử là một số nguyên. Cho biết có bao nhiêu phần tử trong mảng có giá trị bằng số nguyên k. 2. Hoạt động 2: (7 phút)Tìm hiểu ý nghĩa của mảng hai chiều. Đặt vấn đề: Ở tiết trước, chúng ta đã tìm hiểu cách khai báo mảng, cách tạo mảng và truy cập đến một phần tử trong mảng một chiều. Hôm nay, chúng ta sẽ tìm hiểu các vấn đề đó đối với mảng hai chiều. Hđ của GV Hđ của HS Nd ghi bảng - GV yêu cầu HS xem bảng nhân ở SGK. - Xem bảng nhân ở SGK trang §11. KIỂU MẢNG (tt) - Với kiến thức về mảng một chiều đã học, 59.. 2. Kiểu mảng hai chiều: em hãy đưa ra cách sử dụng kiểu mảng đó để - Sử dụng 9 mảng một chiều, a. Xét bài toán: Bảng nhân lưu trữ bảng nhân? mỗi mảng lưu một hàng của (SGK). - Với cách lưu trữ như vậy, ta phải khai báo bảng. bao nhiêu biến mảng? - Khai báo như vậy có những hạn chế nào? - TL: Khai báo 9 biến mảng - Để khắc phục những hạn chế này, ta có thể một chiều. mô tả dữ liệu của bảng nhân là kiểu mảng một chiều gồm 9 phần tử, mỗi phần tử là - TL: Phải khai báo nhiều biến, mảng một chiều có 10 phần tử. Như vậy, ta chương trình phải viết nhiều có thể biểu diễn bảng nhân bằng kiểu dữ liệu lệnh để tạo và in giá trị của mảng hai chiều. mảng. - Yêu cầu HS nhận xét về mảng hai chiều? - Chú ý lắng nghe. - Nêu khái niệm mảng hai chiều. - Để mô tả kiểu mảng hai chiều, cần xác định những yếu tố nào?
- TL: Nếu coi mỗi hàng của mảng hai chiều là một phần tử thì ta có thể coi mảng hai chiều là mảng một chiều mà mỗi phần tử của nó là mảng một chiều. - HS trả lời. - Tham khảo SGK và trả lời.
* Khái niệm mảng hai chiều: (SGK). * Các yếu tố cần xác định để mô tả kiểu mảng hai chiều. (SGK)
3. Hoạt động 3:(10’)Tìm hiểu cách khai báo biến mảng hai chiều và cách tạo/in mảng hai chiều. Hđ của GV Hđ của HS Nd ghi bảng b. Khai báo: ♦ C1: Trực tiếp: - GV đưa ra hai cách khai báo biến mảng - HS chú ý theo dõi. Var :array [kiểu hai chiều. chỉ số hàng, kiểu chỉ số cột] of ; ♦ C2: Gián tiếp: - GV giải thích các thành phần trong khai - Chú ý lắng nghe. Type = báo. array[kiểu chỉ số hàng, kiểu chỉ số cột] of ;
Giáo viên: Bùi Văn Tú
47
Giáo án tin học11
- Gọi HS nêu cách khai báo gián tiếp biến B để lưu trữ bảng nhân ở SGK.
- HS đứng tại chỗ trả lời.
- Gọi HS nhắc lại cách tham chiếu đến một phần tử của mảng một chiều. - TL: Tênbiến[chỉ số] - Gọi HS nêu cách tham chiếu đến số 81 trong bảng nhân? - TL: B[9,9] = 81
4. Hoạt động 4: (17 phút)Tìm hiểu cách viết chương trình đơn giản. Hđ của GV Hđ của HS
- GV hướng dẫn HS cách tạo mảng hai chiều có m hàng, n cột.
- GV hướng dẫn HS cách in mảng hai chiều vừa tạo.
- Gọi HS lên bảng sửa lại phần khai báo và các câu lệnh nhập cho phù hợp với bài này.
- GV hướng dẫn HS cách tính tổng. - GV treo bảng phụ viết sẵn chương trình cho HS tham khảo.
Giáo viên: Bùi Văn Tú
- HS chú ý theo dõi.
- Chú ý lắng nghe và theo dõi.
- HS lên bảng làm. + Không khai báo m,n. + Khai báo thêm biến T. + Viết hai vòng for của lệnh tạo và in mảng là: for i := 1 to 5 do for j := 1 to 7 do - HS chú ý theo dõi. - Theo dõi chương trình trên
48
Var :; Ví dụ: i) var A:array [1..50,1..100] of integer; ii) type mang2c = array [1..9,1..10] of byte; var B: mang2c; c.Tham chiếu đến một phần tử của mảng hai chiều: Tênbiến[chỉ số hàng,chỉ số cột] VD: i) A[i,j] → phần tử ở hàng i, cột j của mảng A. ii) B[9,9] → phần tử ở hàng 9, cột 9 của bảng nhân B. Nd ghi bảng d. Các ví dụ: Ví dụ 1: Viết chương trình tạo và in mảng hai chiều gồm m hàng, n cột. program Tao_in_mang; var i, j, m, n: integer; A: array [1..100,1..100] of integer; begin write ('Nhap so hang m = '); readln (m); write ('Nhap so cot n = '); readln (n); {Tạo mảng} for i := 1 to m do for j := 1 to n do begin write('Nhap A[',i, ',' ,j,']='); readln (A[i , j]); end; {In mảng} for i:= 1 to m do begin for j := 1 to n do write (A[i , j]:4); writeln; end; readln end. Ví dụ 2: Tạo và in mảng hai chiều gồm 5 hàng, 7 cột. Tính và in ra màn hình tổng các phần tử trong mảng. T:= 0;
Giáo án tin học11 bảng phụ.
for i := 1 to 5 do for j := 1 to 7 do T := T + A[i,j];
IV. ĐÁNH GIÁ CUỐI BÀI (3phút) 1. Nội dung đã học - Cách khai báo biến mảng hai chiều. - Cách tạo mảng hai chiều. - Cách tính toán các phần tử trong mảng hai chiều. 2. Câu hỏi, bài tập về nhà : Xem các ví dụ còn lại trong SGK.
Ngày soạn: 25/11/07 Tiết 25 BÀI THỰC HÀNH SỐ 4 (tiết 1) I. Mục tiêu 1. Kiến thức - Củng cố kiến thức về dữ liệu kiểu mảng. - Xây dựng cấu trúc dữ liệu, hiểu thuật toán sắp xếp bằng tráo đổi. 2. Kĩ năng - Biết chỉnh sữa lỗi trong chương trình. - Tự nhập các bộ dữ liệu để hiểu ý nghĩa một số câu lệnh. 3. Thái độ - Nghiêm túc thực hiện đúng nội quy phòng máy, tự giác trong khi lập trình. II.Chuẩn bị - Gv:Bảng phụ viết sẵn chương trình, phòng máy, project. - Hs: Sgk, CT đã được viết sẵn. III. Phương pháp IV. Tiến hành dạy học 1. Hoạt động 1: Nhắc lại kiến thức đã học liên quan bài thực hành. Hđ của GV Hđ của Hs Hỏi 1: Nêu cách khai báo kiểu mảng 1 chiều. Tl: có 2 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 một chiều A có 6 phần tử. TL: For i:= 1 to 6 do Begin Writeln(‘Nhap phan tu thu ’,i,’=’); Readln(A[i]); End; 2. Hoạt động 2: Xác định bài toán và tìm hiểu chương trình. TG Hđ của GV Hđ của HS Ghi bảng 1. Chiếu đề bài lên bảng. 1. Quan sát đề và lằng nghe câu hỏi Đề: Sắp xếp dãy số của gv. nguyên bằng thuật 2. Xác định bài toán 2. Trả lời câu hỏi. toán tráo đổi với Y/cầu hs xác định dữ liệu vào/ra của bài - Vào: mảng A các giá trị khác toán? - Ra: mảng A đã sắp xếp nhau của n số. 3. Gv minh hoạ bài toán: 3. Theo dãy số minh họa, nhớ lại thuật toán sắp xếp đã học. A 5 7 2 8 6 4 1 2 3 4 5 6 Mảng A đã sắp xếp: A 2 4 5 6 7 8 1 2 3 4 5 6 Yêu - Nhắc lại thuật toán. cầu hs nhắc lại ý tưởng thuật toán(Lớp 10)?
Giáo viên: Bùi Văn Tú
49
Giáo án tin học11 - Chiếu thuật toán đã được liệt kê các bước. 4. Tìm hiểu chương trình - Vai trò của biến i, j trong CT? - Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của mảng? - Treo bảng CT chuẩn bị sẵn. Giải thích một số lệnh của CT. 3. Hoạt động 3: Chạy CT câu a. TG Hđ của GV - Yêu cầu hs tự nhập dữ liệu với CT có sẵn. - Giúp hs phát hiện và sữa lỗi. - Thuật toán trên tiến hành đưa số lớn thứ j về đến vị trí j sau mỗi vòng lặp: For i:= 1 to j-1 do 4. Hoạt động 4: Xác định bài toán câu b. TG Hđ của GV 1. Xác định bài toán. - Y/cầu hs xác I/O bài toán? - Biến Dem được tăng lên khi nào? - Cần đưa câu lệnh tăng Dem vào chỗ nào trong CT trên? - Câu lệnh khởi tạo Dem:= 0 được đặt vào vị trí nào trong CT? + Trước CL đầu tiên: For j:= N down to 2 do + Trước CL duyệt: For i:= 1 to j-1 do + Trước 3 CL tráo đổi + Sau 3 CL tráo đổi - Sau CL cuối CT nên đưa CL nào vào để hiển thị giá trị biến Dem ra màn hình. 4. Hoạt động 5: Sữa CT câu a để giải bài toán câu b. TG Hđ của GV - Yêu cầu hs sữa lại CT theo gợi ý đã nêu. - Hướng dẫn hs chỉnh sửa và chạy CT. - Đánh giá kết quả của hs.
- Quan sát, đối chiếu thuật toán liệt kê với CT (SGK). 4. Xem CT và tìm hiểu một số biến, lệnh. - TL: Dùng làm biến chỉ số. - TL:3 lệnh: tg := a[i]; a[i]:= a[i+1]; a[i+1]:= tg; - Chú ý, lắng nghe, quan sát và ghi nhớ.
CT( SGK/65)
Hđ của HS - Chạy CT, nhập dữ liệu, xm kết quả. - Chỉnh sữa CT thông qua các thông báo lỗi. - Chú ý hiểu rõ thêm về CT.
Ghi bảng
Hđ của HS 1. Xác định bài toán: + I: mảng a; +O: mảng a đã sắp xếp, số lần tráo đổi (Dem); TL: Khi A[i] > A[i+1] (tức là biểu thức đk trong CL If đúng) TL: Trong thân CL If: trước hoặc sau 3 lệnh tráo đổi.
Ghi bảng Đề: Khai báo biến đếm nguyên Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem tính số lần tráo đổi trong chương trình.
TL: Chọn một trong hai phương án 3, 4.
Hđ của HS - Thêm các CL như đã hướng dẫn vào CT. - Chạy CT.
Ghi bảng CT(Phụ lục)
Hoạt động 6: Củng cố - Thuật toán sắp xếp bằng tráo đổi. - Đếm số lần tráo đổi. Hoạt động 7: Bài tập về nhà - Tìm thêm các thuật toán sắp xếp khác tối ưu hơn. - Cho mảng A và mảng B (là mảng A đã được sắp xếp). Hãy in ra chỉ số của các phần tử mảng A theo mảng B. Ngày soạn: 25/11/07 Tiết 26
Giáo viên: Bùi Văn Tú
BÀI THỰC HÀNH SỐ 4 (tiết 2)
50
Giáo án tin học11 I. Mục tiêu 1. Kiến thức Tiếp tục củng cố kiến thức khi lập trình với dữ liệu kiểu mảng. 2. Kĩ năng Nhận xét, phân tích và đề xuất các cách giải bài toán sao cho chương trình chạy nhanh hơn. 3. Thái độ Tự giác, chủ động trong khi lập trình. II.Chuẩn bị Gv:Bảng phụ viết sẵn chương trình, phòng máy, project. Hs: Sgk, CT đã được viết sẵn III. Phương pháp IV. Tiến hành dạy học 1. Hoạt động 1:(3') Ôn lại kiến thức chuẩn bị thực hành Hđ của GV Hđ của Hs Hỏi 1: cách khai báo kiểu mảng 1 chiều. Tl: có 2 cách + gián tiếp: + trực tiếp: Hỏi 2: (tuỳ từng lớp) 2. Hoạt động 2:(13') Nêu đề bài toán và tìm hiểu Hđ của GV Hđ của HS Ghi bảng 1. Ghi đề bài lên bảng. 1. Quan sát đề và lắng nghe câu hỏi Đề: Cho mảng A của gv. phần tử. Viết CT 2. Tìm hiểu đề 2. Trả lời câu hỏi. mảng B[1..n], trong Y/cầu hs xác định dữ liệu vào/ra của bài - Vào: là tổng của i phần toán? - Ra: tiên của mảng A. 3. Gv lấy ví dụ minh hoạ 3. Theo dõi ví dụ minh hoạ A 4 5 1 2 3 7 1 2 3 4 5 6 B 1 2 3 4 5 6 Ban đầu: mọi B[i] = 0 Hỏi: mỗi B[i] được tạo mới bằng bao Tl: (2-3hs) nhiêu? Tóm lại: B[i] = A[1] + …+ A[i]
gồm n tạo ra đó B[i] tử đầu
i
=
A[j ] j=1
GV minh hoạ một số phần tử: B[1], B[2], B[3] - Y/cầu hs tìm kết quả mảng B theo ví dụ trên. 4. Viết CT thô - Y/cầu hs cho biết từng phần của CT cần xây dựng? Gv tranh thủ ghi lại trên bảng. H: Bước B2 được cụ thể trong CT như thế nào?
5. Treo bảng CT chuẩn bị sẵn.
Giáo viên: Bùi Văn Tú
Tl: B
4
9
1 1 1 22 0 2 5 1 2 3 4 5 6 Lần lượt cho từng hs trình bày Tl:
4.
Tl: sử dụng 2 vòng for lồng nhau. for i:=1 to n do begin b[i]: =0; for j:=1 to i do b[i]:=b[i]+a[j]; end;
51
Khai báo: + k/báo mảng + biến đơn Phần thân: B1: tạo mảng A. B2: xd mảng B theo A. B3: In mảng B.
Giáo án tin học11 Giải thích từng phần của CT tương ứng với 5. Chú phần trả lời được ghi bảng của hs. nhớ. 3. Hoạt động 3: (5')Tối ưu chương trình Hđ của GV 1. Dựa vào phần phân tích ví dụ thuật toán ở trên. Gv hỏi: So sánh giá trị B[i] và B[i-1]? Đặc biệt: B[1]=? 2. Chta luôn hướng tới thuật toán tối ưu. Đối với bài toán này theo phân tích ở trên ta đã tận dụng được kết quả của việc tính tổng i -1 phần tử có sẵn ở bước trước. - Do vậy ta có được: + Số lượng phép toán '+' ít hơn +Chỉ dùng 1 vòng lặp for -> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B. 3. Cải tiến lại chtrình. Gv treo bảng chtrình được cải tiến.
ý, lắng nghe, quan sát và ghi Hđ của HS Tl: B[i]:=B[i-1]+A[i] Tl: B[1]=A[1] 2. Chú ý theo dõi
{tùy đối tượng hs} 3. Nhìn bảng, tự điều chỉnh hành vi nhận thức.
4. Hoạt động 4: (20') Hs thực hành trên máy theo nhóm Hđ của GV Hđ của HS 1. Y/cầu hs nhập CT cải tiếnvào máy. 1. Hs nhập chtrình vào máy 2. Theo dõi quá trình t/hiện của hs. Giải 2. Tự biên dịch và chạy CT với ví dụ quyết 1 số lỗi nhỏ tại từng nhóm. trên. 3. Tự lấy Input để chạy lại CT 5. Hoạt động 5: (3') Củng cố, uốn nắn những sai sót thường gặp của Hs. 6. Hoạt động 6: (1') Dặn dò: Xem, chuẩn bị trước bài 12: Kiểu xâu.
Giáo viên: Bùi Văn Tú
Ghi bảng
52
Đoạn CT cải tiến: Sgk Ghi bảng
Giáo án tin học11 Ngày soạn: 4/12/07 Tiết 27
KIỂU XÂU (tiết 1/2)
I. MỤC TIÊU 1. Kiến thức - Biết được một kiểu dữ liệu mới, biết được khái niệm kiểu xâu - Phân được sự giông và khác nhau giữa kiểu mảng kí tự với kiểu xâu kí tự - Biết các khai báo biến, nhập xuất dữ liệu, tham chiếu đến từng kí tự của xâu. - Biết các thao tác liên quan đến xâu 2. Kĩ năng - Khai báo được biến xâu trong NNLT Pascal. Sử dụng biến xâu, các phép toán và các hàm thủ tục về xâu để giải quyết một số bài toán đơn giản II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: giáo án, sgk, bảng phụ một số ví dụ 2. Học sinh: sgk III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút )Tìm hiểu ý nghĩa xâu kí tự Hđ của GV ĐVĐ: Dữ liệu trong các bài toán không chỉ thuộc kiểu số mà cả kiểu phi số dạng kí tự. Dãy các kí tự đgl dữ liệu kiểu xâu. Ghi đề bài học Trước tiên tìm hiểu Xâu kí tự là gì? Nêu vài ví dụ xâu: a) ‘HaNoi’ b) ‘lop 11A1’ c) ‘Nguyen Van An’ Hs đã chbị bài ở nhà, y/cầu hs cho biết xâu là gì? Cho hs khác bổ sung (nếu cần)
Hỏi: Số lượng kí tự các xâu ở ví dụ trên là bao nhiêu? Hỏi: Xâu có một kí tự trống được viết như thế nào? số kí tự là bao nhiêu? Hỏi: Xâu rỗng được viết như thế nào?
Giáo viên: Bùi Văn Tú
Hđ của HS
Nd ghi bảng
Lắng nghe
KIỂU XÂU Quan sát, nhận biết 1. Khái niệm Xâu kí tự: (sgk) Tl: Xâu là dãy các kí tự trong bảng mã ASCII, mỗi kí tự là một ptử. Số lượng các kí tự trong xâu là độ dài của xâu. Độ dài xâu bằng 0 gọi là xâu rổng. -Xácđịnh và trả lời: a) 5 kí tự b) 8 kí tự, dấu cách là 1 kí tự c) 13 kí tự - Tl: ‘ ’, có độ dài là 1 - Tl: ‘’, có độ dài là 0
53
- Xâu có một kí tự trống - Xâu rỗng
Giáo án tin học11 2. Hoạt động 2: (10 phút)Tìm hiểu về kiểu xâu Hđ của GV Hđ của HS 1.Y/cầu hs cho biết cách khai báo biến xâu 1. N/cứu sgk và trả lời Hỏi: ý nghĩa của từ khoá string? Var : string Và [<độ dài lớn nhất của xâu>] ? [<độ dài lớn nhất của xâu>] ; Tl: String là tên kiểu xâu - [n] giá trị qui định số lượng kí tự tối đa mà biến xâu có thể chứa. Ví dụ: Hỏi: Nhập xâu hoten chỉ có 20 kí tự được Var hoten: string[30]; Var St: string; không? (t/tự 31 kí tự?) Hỏi: Khi khai báo không có [n] thì số lượng Tl:được (không) kí tự là bao nhiêu? - Số kí tự tối đa là 255 * Y/cầu hs cho ví dụ 2. Tham chiếu đến từng kí tự của xâu Y/cầu hs: Nhắc lại cách tham chiếu đến từng 2. Lắng nghe, quan sát bảng để trả lời. phần tử của mảng? - Giới thiệu cấu trúc chung - Y/cầu hs cho biết ý nghĩa của St[i] Y/cầu hs tìm ví dụ khác Tl: St[i] p/tử thứ i của xâu St 3. Hoạt động 3: (25 phút)Các thao tác xử lí xâu a. Nội dung: - Phép ghép xâu: kí hiệu + - Các phép so sánh: =, <>, >, <, <=, >= - Các thủ tục: delete(), insert(), val(), str(). b. Các bước tiến hành: Hđ của GV Hđ của HS 1. Gợi nhớ các phép toán đã học 1. Chú ý theo dõi, suy nghĩ và Y/cầu hs nhắc lại các phép toán đã học trên trả lời: kiểu dữ liệu chuẩn. P/toán số học P/toán quan hệ (so sánh) P/toán logic 2. Phép ghép xâu: kí hiệu dấu cộng (+) 2. Suy nghĩ cho ví dụ Y/cầu hs cho biết kết quả các ví dụ? độ dài Vd: xâu nhận được? ‘My Computer’ độ dài11 3. Các phép so sánh Y/cầu hs nêu lại các phép so sánh? Ở đây là chta so sánh các xâu với nhau Y/cầu hs cho biết kết quả các phép so sánh Các phép so sánh được thực hiện theo thứ tự từ điển.
Giáo viên: Bùi Văn Tú
St = ‘pho co-Hoi An’ độ dài 11 3. Nhớ lại và trả lời Vd1: A:=’Xa hoi’; B:=’Xa hoi’; A=B True Vd2: A:= ‘Anh’; B:= ‘Ba’ A>B False Vd3: A=’hoa’; B=’hao’ A>B True
54
Nd ghi bảng 2. Khai báo VAR tên_biến: STRING [độ dài lớn nhất của xâu];
Ví dụ: i)Var hoten: string[30]; ii)Var St: string;
* Tham chiếu đến từng kí tự của xâu Tên_biến_xâu[chỉ số]
Nd ghi bảng 3. Các thao tác xử lí xâu a) Phép ghép xâu (+) ghép nhiều xâu thành một Có thể t/hiện ghép đvới các hằng xâu và biến xâu. Vd1: ‘My’+ ‘ ’+ ‘Computer’ Vd2: s1:=‘pho co’ s2:=‘Hoi An’ St:=s1+’-’+s2; b) Các phép so sánh Giả sử A, B là 2 xâu +) A=B: A giống B hoàn toàn +) A>B kí tự đầu tiên khác nhau giữa chúng từ trái sang, mà trong A có mã ASCII lớn hơn
Giáo án tin học11 4. Các thủ tục Vd1: s=’Nui Thanh’ Để s chỉ còn ‘anh’ ta phải viết thủ tục delete() thế nào? Vd2: s2=’Nui Thanh’ Để s2 thành xâu ‘THPT Nui Thanh’ ta phải chèn thêm gì vào xâu? Và chèn như thế nào? * Ý nghĩa: ch/đổi xâu s thành số rồi gán cho biến N, nếu ch/đổi thành công thì code = 0, nglại thì code chứa số chỉ vị trí kí tự đầu tiên xuất hiện lỗi trong xâu s và giá trị N ko xác định * Ý nghĩa: ch/đổi giá trị số N thành kiểu xâu, rồi gán cho biến st. 5. Kiểm tra kiến thức Treo bảng y/cầu hs điền vào chổ trống (…) Hs trả lời: bảng1: Insert(s1,s2,8) Insert(‘CDE’,s2,3) bảng2: Delete(st,7,9) N= kxđ, e=5
4. Chú ý lắng nghe Tl: Delete(s,1,6)
c) Các thủ tục Delete(S,vt,N)
Tl: Insert(‘THPT ’,s2,1)
Code =0, n=3.14 Code =3, n ko xác định
Insert(s1,s2,vt) Trong đó vt, N là các số ngdương Val (s,N,code) Vd: Val(’3.14’,n,code) Val(‘11A1’,n,code)
st=’2008’
Str(N,st) Vd: str(2008,st)
BẢNG 1 Xâu s1 Xâu s2 Thao tác kết quả BẢNG 2 Xâu st Thao tác kết quả
‘cua Me’ ‘Mua xuan’ Insert(…,s2,…) ‘Mua xuacua Me’
‘ABGHI’ Insert(…,s2,…) ‘ABCDEGHI’
‘Mua xuan cua Me’ Delete(st,…,…) st = ‘Mua xu’
‘12.3A+02’ Val (st,n,e) n=…, e=…
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) Nội dung đã học - Khái niệm xâu. Cách khai báo xâu, tham chiếu đến từng kí tự trong xâu. - Các phép ghép, so sánh giữa các xâu, các thủ tục
Ngày soạn: 4/12/07 Tiết 28 KIỂU XÂU (tiết 2/2) I. MỤC TIÊU 1. Kiến thức - Biết được lợi ích của thủ tục và hàm liên quan đến xâu trong NNLT Pascal. - Nắm được cấu trúc chung và chức nằng của một số hàm và thủ tục liên quan đến xâu trong NNLT Pascal. 2. Kĩ năng Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài tập đơn giản liên quan. II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: bảng phụ các ví dụ chbị sẵn, giáo án ,sgv, sgk 2. Học sinh: sgk III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Nêu câu hỏi: 1. Khai báo một xâu có độ dài tối đa là 50 kí tự. 2. Cho s1:=’hoa’; s2:=’Hoa’; Biểu thức s1<s2 cho kết quả là gì?(True hay False ) Gọi 1 hs kiểm tra.
Giáo viên: Bùi Văn Tú
Hđ của HS Lắng nghe câu hỏi và trình bày phần trả lời. 1. Var st:string[50]; 2. False
55
Giáo án tin học11 2. Hoạt động 2: (15 phút)Tìm hiểu ý nghĩa của các hàm xử lí trên xâu a. Nội dung: Các hàm length(), copy(), pos(), upcase() b. Các bước tiến hành: Hđ của GV Hđ của HS + Nêu ý nghĩa hàm length() Length(st) = ?? Length(‘’) =?? +Nêu ý nghĩa hàm copy() +Nêu ý nghĩa hàm pos() Pos(‘51’,s) = ?? + Nêu ý nghĩa hàm Upcase()
Chú ý lắng nghe
Treo bảng * Y/cầu hs n/cứu và điền vào chổ trống trong bảng
Tl: 8
Tl: 9 Tl: 0
Suy nghĩ và lên bảng điền dung còn thiếu vào bảng BẢNG 3 Ví dụ 1 Xâu st ‘Co 25 nu’ Thao tác length(st) kết quả …
kết quả và nội
Nd ghi bảng d) các hàm Length(s) Vd: + length(‘11A2’)=4 + St:=’xuan xanh’ Length(st)=9 Copy(S, vt, N) Vd: Copy(st, 1, 4) = ‘xuan’ Pos(s1,s2) Vd: S=’Lop co 51 hs’ Pos(‘51’,s) = 8 Upcase(ch) , ch là 1 kí tự Vd: upcase(s[5]) s=’Lop Co 51 hs’
Ví dụ 2 Ví dụ 3 ‘Tong so 51 hs’ ‘Tong so 51 hs’ pos(‘51’,st) Copy(st,…,…) … ’51 h’
Ví dụ 4 ’51 hs’ Upcase(st[4]) …
3. Hoạt động3: (20 phút)Vận dụng dữ liệu kiểu xâu để viết chtrình giải 1 số bài toán đơn giản Hđ của GV Hđ của HS Nd ghi bảng 1. 4. Mộtsố ví dụ Nêu bài toán ví dụ 1 (ghi bảng) Ghi lại đề bài, suy nghĩa và trả Vd1: Viết CT nhập vào họ - Bài toán trên cần sử dụng kiểu dữ liệu gì để lời: tên đầy đủ của 2 người và nhận giá trị là họ tên? - Kiểu xâu đưa ra màn hình xâu họ tên - Cần sử dụng mấy biến xâu? - 2 biến lớn hơn. Y/cầu hs viết khai báo các xâu? Lên bảng viết khai báo Var a,b:string; Y/cầu hs viết tiếp lệnh nhập giá trị cho xâu a, Lên bảng Var a,b:string; Begin b Readln(a); Readln(b); Write(‘nhap ten ng 1’); Chỉnh sửa lại phần nội dung hs viết được. Readln(a); - Làm thế nào để xác định xâu lớn hơn? Viết Write(‘nhap ten ng 2’); lệnh gì để đưa dữ liệu xâu ra màn hình? So sánh 2 xâu a và b Readln(b); Tiểu kết: để nhập/xuất dữ liệu kiểu xâu vẫn Dùng lệnh write() If a>b then write(a) sử dụng lệnh read/write như kiểu dữ liệu Else write(b); chuẩn End. 2. Nêu bài toán ví dụ 2 Y/cầu hs khai báo xâu S. Ycầu hs viết lệnh nhậo giá trị cho xâu 2. Ghi lại đề bài toán Vd2: Viết CT nhập vào xâu S Var S:string; bất kì, cho biết trong xâu sử Begin dụng bao nhiêu kí tự ‘A’? Làm thế nào để biết số kí tự ‘A’ có trong xâu? Write(‘nhap xau ’); readln(s); Tl: duyệt qua tất cả các kí tự Xâu S được nhập vào có bao nhiêu kí tự? trong xâu nếu kí tự nào =’A’ thì Var S:string; i,d:byte; Begin Tiểu kết: để duyệt qua tất cả các ptử trong đếm được 1 kí tự Write(‘nhap xau ’); xâu ta vẫn dùng lệnh for Tl: Length(s) kí tự readln(s);d:=0; For i:=1 to length(s) do If s[i]=’A’ then inc(d); Write(d:4);
Giáo viên: Bùi Văn Tú
56
Giáo án tin học11 End. IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học Các hàm xữ lí trên xâu, vận dụng kiểu xâu trong các bài toán đơn giản 2. Câu hỏi, bài tập về nhà Xem trước bài: Bài thực hành sô5 Viết CT nhập vào xâu S bất kì. thực hiện xoá bỏ tất cả các kí tự trắng thừa có trong xâu.(Xâu sau khi loại bỏ không còn 2 kí tự trắng liền kề nhau, đầu và cuối xâu không phải là kí tự trắng)
Ngày soạn: 9/12/07 Tiết 29, 30 BÀI THỰC HÀNH SỐ 5 I. MỤC TIÊU 1. Kiến thức - Khắc sâu thêm phần kiến thức về lí thuyết kiểu xâu kí tự, đặc biệt là các thủ tục và hàm liên quan. - Nắm được một số thuật toán cơ bản: tạo xâu mới, đếm số lần xuất hiện một kí tự, … 2. Kĩ năng - Khai báo biến kiểu xâu - Nhập/xuất dữ liệu cho biến xâu - Duyệt qua tất cả các kí tự của xâu - Sử dụng các hàm thủ tục chuẩn 3. Thái độ: Tích cực chủ động trong thực hành II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên: Phòng máy vi tính, Projector để hướng dẫn 2. Học sinh: Sgk, bài tập ở nhà III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (45 phút) Tìm hiểu chương trình, đề xuất phương án cải tiến a. Mục tiêu: Hiểu được chtrình, tính được kết quả. Biết đề xuất phương án cải tiến. b. Nội dung: Nhập một xâu, kiểm tra xem xâu đó có phải là một Palidrom hay không? c. Các bước tiến hành: Hđ của GV Hđ của HS 1. Tìm hiểu đề bài 1. Quan sát đọc kĩ đề - Giới thiệu đề bài lên bảng Giải thích: Xâu Palidrom -Y/cầu hs cho 2 ví dụ về xâu Palidrom và 1 ví dụ Phải: aabcbaa, 45654 không phải? Không phải: abccda 2. Tìm hiểu chtrình gợi ý 2. Quan sát chtrình suy nghĩ để hiểu - Treo chtrình lên bảng chtrình. - Kiểm tra xâu có phải là Palidrom -Hỏi: Chtrình sau đây có chức năng làm gì? Kết hay không? quả in ra màn hìnhn hư thế nào? Kq: ‘xau la palidrom’ hoặc ‘xau khong la palidrom’ Chạy thử chtrình để hs kiểm nghiệm suy nghĩ -Quan sát gv thực hiện chtrình, nhập của mình dữ liệu và kquả của chtrình. 3. Chú ý theo dõi y/cầu của gv, trả lời 3. Cải tiến chtrình một số cau hỏi dẫn dắt - Nêu y/cầu mới: viết lại chtrình không sử dụng biến trung p? - Kí tự thứ i đối xứng với kí tự thứ Hỏi: kí tự thứ i đối xứng với kí tự vị trí nào? length(s) –i +1 Hỏi: cần so sánh bao nhiêu cặp kí tự trong xâu - Tối đa length(s) div 2 để biết xau đó là palidrom?
Giáo viên: Bùi Văn Tú
57
Nd ghi bảng
Giáo án tin học11 Hỏi: sử dụng cấu trúc nào để so sánh? -Y/cầu hs viết chtrinh hoàn chỉnh. y/cầu hs nhập dữ liệu gv cho sẵn và thông báo kết quả. - xác nhận những bài làm có kết quả đúng.
- For hoặc While - Thực hiện soạn thảo chtrình lên máy theo yêu cầu cải tiến của gv - Nhập dữ liệu và thông báo kết quả.
2. Hoạt động 2: (40 phút) Rèn luyện kĩ năng lập trình a. Mục tiêu: Hs biết phân tích yêu cầu để viết một chtrình hoàn chỉnh b. Nội dung: Viết CT nhập vào một xâu S bất kì và thông báo ra màn hình số lần xuất hiện trong S của mỗi chữ cái tiếng Anh (không phân biệt chữ hoa và thường) c. Các bước tiến hành: Hđ của GV 1. Giới thiệu đề bài - Giới thiệu đề bài lên bảng -Y/cầu hs trả lời các câu hỏi để phân tích bài toán +Dữ liệu vào và dữ liệu ra của bài toán?
+Nhiêm vụ chính cần thực hiện khi giả quyết bài toán? +Cấu trúc dữ liệu cần sử dụng? + Ta phải sử dụng hàm gì? Bổ sung và sửa sai cho hs. 2. Y/cầu hs được lập viết chương trình hoàn chỉnh theo thuật toán phát hiện ở trên - Y/cầu các em lập trình xong trước tìm một số bộ test - Y/cầu hs nhập dữ liệu vào theo test của gv và thông báo kết quả. Xác nhận kết quả đúng của hs và sửa sai cho các em có kết quả sai.
Hđ của HS
+Vào:một xâu S Ra:dãy các số ứng với sự xuất hiện của mỗi loại kí tự trong xâu. +T/toán: Duyệt xâu từ trái sang phải, thêm 1 đơn vị cho kí tự đọc được +Cấu trúc dữ liệu: Dem[‘A’.. ‘Z’] +Upcase() 2. Độc lập soạn chtrình vào máy - Tìm test - Nhập dữ liệu của gv thực hiện chtrình và xem kết quả - Thông báo kết quả
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học: Một số thuật toán cơ bản liên quan đến xâu kí tự 2. Câu hỏi, bài tập về nhà Xem trước bài: Kiểu bản ghi Ngày soạn: 11/12/07 Tiết 31 KIỂU BẢN GHI I. MỤC TIÊU 1. Kiến thức - biết được khái niệm về bản ghi - Phân biệt được sự giống và khác nhau giữa kiểu bản ghi và kiểu mảng 1 chiều 2. Kĩ năng - Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong NNLT Pascal - Nhập/xuất được dữ liệu cho bản ghi - Thamchiếu đến từng trường của bản ghi - Sử dụng kiểu bản ghi để giải quyết một số bài tập đơn giản II. ĐỒ DÙNG DẠY HỌC
Giáo viên: Bùi Văn Tú
58
Nd ghi bảng
Giáo án tin học11 1. Giáo viên: Giáo án, Máy tính 2. Học sinh: sgk III. PHƯƠNG PHÁP: Thuyết trình, nêu vấn đề, hỏi đáp. IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV Viết CT nhập vào một xâu bất kì và cho biết trong xâu có bao nhiêu kí tự số?
Hđ của HS Var S: string; i: integer; Begin write(‘Nhap xau S ’); readln(S); d:=0; For i:=1 to length(s) do If (s[i]>=’0’) and (s[i]<=’9’) then inc(d); Write(d); End. 2. Hoạt động 2: Giới thiệu kiểu bản ghi. Tạo một kiểu bản ghi trong NNLT Pascal. Hđ của GV Hđ của HS Nd ghi bảng 1. Tìm hiểu kiểu bản ghi 1. Quan sát ví dụ sgk, trả lời câu Y/cầu hs quan sát bảng kết quả thi TN hỏi: sgk trang 74. Hỏi: trên bảng có những thông tin gì? - Họ tên, ngày sinh, giới tính, -bảng chứa thông tin của bao nhiêu đối điểm các môn thi. tượng? - 3 đối tượng -Y/cầu hs cho thêm ví dụ tương tụ. - Để mô tả 1 người trong danh bạ điện thoại cần các thông tin: * Mỗi thông tin của đtượng đgl 1 thuộc họ tên, địa chỉ, SĐT. tính hay 1 trường của đtượng. Mỗi đtượng đươc mô tả bằng nhiều thiông tin trên một hàn đgl một bản ghi. * Để mô tả các đtượng như vậy, NNLT cho phép ta xác định kiểu bản ghi. một 1. Khai báo đtượng được mô tả băng một bản ghi. Type =record 2. Y/cầu hs n/cứu sgk và cho biết cách : ; khai báo kiểu bản ghi, khai báo biến ……………. kiểu bản ghi trong Pascal :; Y/cầu: Tìm 1 vídụ để minh hoạ 2. Tham khảo sgk để năm cách End; Để giải quyết bài toán trong mục 1 ta khai báo kiểu và biến kiểu bản Var : ; phải khai báo 1 mảng các bản ghi. Hãy ghi. Ví dụ: tạo kiểu mảng? Type knguoi = record Hoten:string; Độc lập suy nghĩ, tạo kiểu bản Dchi:string; SDT:longint ghi End; Type kieu_hs =record Var nguoi: knguoi; Hten,ngsinh:string; Toan, van:byte; Y/cầu hs so sánh giống và khác nhau Dtb:real; của kiểu bản ghi và kiểu mảng 1 chiều. End; Kieu_m=array[1..50] of kieu_hs; Var Lop:kieu_m; Tl: Giống: được ghép bởi nhiều phần tử Khác: mảng 1 chiều ghép bởi nhiều ptử cùng kiểu,kiểu bản ghi ghép nhiều ptử có kiểu dữ liệu
Giáo viên: Bùi Văn Tú
59
Giáo án tin học11 có thể khác nhau. 3. Hoạt động 3: Tìm hiểu cách sử dụng bản ghi trong NNLT Pascal Hđ của GV Hđ của HS Nd ghi bảng 1. Giới thiệu cấu trúc chung, tham chiếu đến 1. Quan sát cấu trúc gv giới 2. Tham chiếu đến từng từng trường của biến bản ghi thiệu trường của bản ghi Y/cầu hs tìm vídụ về tham chiếu đến từng Tênbiến.têntrường trường của biến bản ghi từ các khai báo ở Vd: Vd: Type knguoi = record trên Nguoi.hoten Hoten:string; Dchi:string; Nguoi.dchi SDT:longint 2. Gới thiệu 2 cách gán giá trị cho biến bản Nguoi.sdt ghi 2. Quan sát 2 cách gán giá trị và End; Var nguoi: knguoi; +Gán nguyên cảu biến bản ghi (1) tìm ví dụ cụ thể 3. Gán giá trị cho biến bản + Gán lần lượt từng trường (2) ghi Hỏi: trường hợp (1) thực hiện trong điều kiện nào? Tl: hai biến A, B được khai báo (1) A:=B (2) A.ht:=B.ht; cùng 1 kiểu bản ghi. A.toan:=9; 3. Nhập/xuất dữ liệu chó biến bản ghi * ta phải nhập/xuất giá trị cho từng trường. 3. Chú ý theo dõi sự dẫn dắt của A.dtb:=(A.toan+A.li)/2; Y/cầu hs viết lệnh nhập giá trị cho 3 trường gv, ghi nhớ và tìm ví dụ. của biến nguoi; lệnh in giá trị của trường Readln(Nguoi.hoten); hoten của bản ghi nguoi Readln(Nguoi.dchi); Readln(Nguoi.sdt); Writeln(nguoi.hoten;) 4. Hoạt động 4: Rèn luyện kĩ năng lập trình a. Nội dung: Viết CT giải quyết bài toán quản lí sau: Nhập họ và tên, điểm toán(toan) và điểm lý (ly) của 30 học sinh trong lớp. In ra màn hình họ tên và điểm trung bình (dtb) của 30 học sinh đó (dtb=(toan+ly)/2) b. Các bước tiến hành: Hđ của GV Hđ của HS Nd ghi bảng 1. Nêu nội dung đề bài 1. Đọc đề, phân tích để trả lời Hỏi: Sử dụng kiểu dữ liệu như thế nào để câu hỏi. giải quyết bài toán? -Một mảng các bản ghi -Y/cầu hs mô tả thông tin của 1 hs bằng Type hs=record Type hs=record kiểu bản ghi. Ten:string;Toan,li,tb:real; Ten:string;Toan,li,tb:real; - Tạo mảng các bản ghi đó end; end; Manghs=array[1..30] of hs; Manghs=array[1..30] of hs; Var Lop:manghs; Var Lop:manghs; - Y/cầu hs nếu các bước gải quyết bài toán
2. chia lớp thành 3 nhóm. y/cầu viết CT lên bìa con. Thu bìa và treo lên bảng, gọi hs nhóm khác nhận xét và đánh giá. 3. Thông báo chtrình mẫu để hs chuẩn hoá lại.
Các bước: B1:Tạo kiểu dữ liệu, kbáo biến. B2: Nhập dliệu cho mảng các bản ghi, tính giá trị trường tb. B3: đưa các t/tin theo y/cầu ra màn hình. (ten, tb) 2. Thảo luận nhóm và hoàn tất CT,Nộp kết quả Nhận xét, đánh giá và bổ sung nhữ sau sót của nhóm khác. 3. Quan sát và ghi nhớ
IV. ĐÁNH GIÁ CUỐI BÀI (5phút)
Giáo viên: Bùi Văn Tú
60
BEGIN For i:=1 to 30 do begin write(‘Hoc sinh ’,i); readln(lop[i].ten); write(‘diem toan, ly ‘’); readln(lop[i].toan,lop[i].li); lop[i].tb:=(lop[i].toan+lop[i].li)/2 ; end; writeln(‘ Ho va ten |Diemtb ’); For i:=1 to 30 do Writeln(lop[i].ten:30, lop[i].tb:8:2); END.
Giáo án tin học11 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà Xem nội dung phụ lục B, sgk, trang 134: Câu lệnh With.
Ngày soạn: 15/12/07 Tiết 32-33
ÔN TẬP
I. MỤC TIÊU 1. Kiến thức 2. Kĩ năng II. ĐỒ DÙNG DẠY HỌC 1. Giáo viên 2. Học sinh III. PHƯƠNG PHÁP IV. HOẠT ĐỘNG DẠY HỌC 1. Hoạt động 1: (5 phút) Kiểm tra bài cũ Hđ của GV
Hđ của HS
2. Hoạt động 2: a. Mục tiêu: b. Nội dung: c. Các bước tiến hành: Hđ của GV
Hđ của HS
Nd ghi bảng
3. Hoạt động 3: a. Mục tiêu: b. Nội dung: c. Các bước tiến hành: Hđ của GV
Hđ của HS
Nd ghi bảng
4. Hoạt động 4: a. Mục tiêu: b. Nội dung: c. Các bước tiến hành: Hđ của GV
Hđ của HS
Nd ghi bảng
IV. ĐÁNH GIÁ CUỐI BÀI (5phút) 1. Nội dung đã học 2. Câu hỏi, bài tập về nhà Xem trước bài: KIỂM TRA HỌC KỲ I I.TRẮC NGHIỆM (Hs khoanh tròn vào một phương án trả lời đúng cho mỗi câu) 1. Biểu diễn nào dưới đây là Hằng? A. begin B. E58 C. 12.4E-5 2. Kiểu dữ liệu nào dưới đây thuộc loại kiểu dữ liệu chuẩn: A. Kiểu kí tự B. Kiểu xâu C. Kiểu mảng D. Kiểu bản ghi 3. Phép toán nào sử dụng trong biểu thức trả về giá trị True hoặc False A. Phép toán số học B. Phép toán quan hệ và phép toán số học C. Phép toán số học và phép toán logic D. Phép toán quan hệ và phép toán logic 4. Chương trình sau đây Đúng hay Sai? Vì sao?
Giáo viên: Bùi Văn Tú
61
D. type
Giáo án tin học11 Begin Writeln(‘Chuc cac em thi tot!’); A. Sai, vì CT này không có phần khai báo Write(‘Dat ket qua cao’); B. Đúng, vì CT này không cần khai báo Readln C. Sai, vì CT này thiếu phần nhập giá trị End. D. Sai, vì CT này thiếu phần tính toán 5. Chương trình dịch Pascal cấp phát bao nhiêu Byte bộ nhớ cho các biến trong khai báo sau: Var A: array[1..10] of integer; A. 28 B. 36 I, N: real; q, b: word; C.5 D. 18 6. Giá trị của các biểu thức boolean sau đây là gì với N = 300, p = - 0.001, q = 0.001, c = ‘5’ (1) 2*N <=500 (2) (abs(p) = q) and (c < ‘4’) (3) Not (c > ‘7’) A. False – False – True B. False – True – False C. False – True – True D. False – False – False 7. Sau khi thực hiện đoạn chương trình sau thu được kết quả xâu S là gì? begin S := ‘GBCDEFA’; T := S[1]; S[1] := S[length(S)]; S[length(S)] := T; A. ‘GBCDEFA’ B. ‘ABCDEFG’ end; C. ‘AGBCDEF’ D. ‘BCDEFAG’ 8. Trong NNLT Pascal, hai xâu kí tự được so sánh dựa trên? A. Độ dài tối đa của hai xâu B. Mã của từng kí tự trong các xâu lần lượt từ trái sang phải C. Độ dài thực sự cảu hai xâu D. Số lượng các kí tự khác nhau trong xâu Hãy đọc kỹ đoạn chương trình sau: Program timkiem; Var m: array[1..100] of integer; i, n, k: integer; Begin Write('Ban can nhap bao nhieu so:'); Readln (n); For i:=1 to n do Begin Write('Nhap so thu ',i,':'); Readln(m[i]); End; Write('Nhap so can tim:'); Readln(k); i:=1; While (m[i]<>k)and (i<=n)Do i:=i+1; If i>n then Writeln ('Trong day ban da nhap khong co so nguyen nao bang ',k) else Writeln('Trong day ban da nhap co so bang',k); Readln; End. Và hãy trả lời các câu hỏi 9 và 10: 9. Trong chương trình trên có đoạn lệnh có sử dụng vòng lặp While …Do, chương trình trên thoát khỏi vòng lặp khi: A. m[ i ]=k B. (m[ i ]=k) hoặc( i>n) C. i>n D. (m[ i ]=k) và (i>n) 10. Giả sử khi chạy chương trình, ta tạo dữ liệu cho mảng m gồm các phần tử lần lượt là: 7, 5, 19, 54 và 20. Và gán cho biến k mang giá trị 54. Vậy sau khi thực hiện xong chương trình, trên màn hình sẽ có dòng thông báo: A. Trong dãy bạn đã nhập có số bằng k B. Trong dãy bạn đã nhập có số bằng 54 C. Trong day ban da nhap co so bang k D. Trong day ban da nhap co so bang 54 II. TỰ LUẬN 1. Cho chương trình Var i: byte;
Giáo viên: Bùi Văn Tú
62
Giáo án tin học11 Begin
For i:=1 to 35 do If i mod 3 = 0 then write (i:4); Readln
End. a. Hãy viết lại chương trình bằng cách thay đổi cấu trúc FOR bằng cấu trúc WHILE. b. Cho biết chương trình trên thực hiện công việc gì? 2. Viết CT tạo mảng A có N (N≤200) phần tử là số nguyên. In ra màn hình mảng vừa tạo. Tính và đưa ra màn hình giá trị trung bình của các số nguyên dương lẻ có trong mảng A.
Giáo viên: Bùi Văn Tú
63