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