Giáo án Tin học 11 Trường THPT Lâm Hà Ngày soạn: / /2008 Ngày dạy: / /2008 CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC §11. KIỂU MẢNG (tiết 4/4) I- Mục tiêu. 1. Kiến thức - Hiểu được khái niệm mảng hai chiều. - Hiểu cách khai báo và tham chiếu đến các phần tử của mảng hai chiều. 2. Kĩ năng. - Thực hiện được khai báo mảng hai chiều, cách tham chiếu đến một phần tử của mảng hai chiều. - Thực hiện được việc tính toán các phần tử trong mảng hai chiều. 3. Thái độ. - Tiếp tục gợi lòng ham muốn giải toán bằng lập trình trên máy tính; - Tiếp tục hình thành và xây dựng phẩm chất cần thiết của người lập trình. II- Chuẩn bị đồ dùng phương tiện dạy – học: 1- Giáo viên: - Giáo viên chuẩn bị: Giáo án, phòng máy nối mạng LAN, cài đặt Turbo Pascal; Netop school; 2- Học sinh: Đọc trước nội dung bài, sách giáo khoa, vở ghi. III. Phương pháp: - Thuyết trình, nêu câu hỏi, gợi mở, thảo luận nhóm, tóm tắt và ghi ý chính; IV- Các bước lên lớp: 1- Ổn định lớp: 2- Kiểm tra bài cũ: 8 Hđ của GV Hđ của HS Viết CT tạo và in ra màn hình mảng A gồm n phần tử 10 phần tử. Mỗi phần tử là một số nguyên. Cho biết có bao nhiêu phần tử trong mảng có giá trị bằng số nguyên k. 3- Bài mới: a. Đặt vấn đề: Giới tiệu mục tiêu bài b. Nội dung bài: Hoạt động 1: (7 phút)Tìm hiểu ý nghĩa của mảng hai chiều. Đặt vấn đề: Ở tiết trước, chúng ta đã tìm hiểu cách khai báo mảng, cách tạo mảng và truy cập đến một phần tử trong mảng một chiều. Hôm nay, chúng ta sẽ tìm hiểu các vấn đề đó đối với mảng hai chiều. Hđ của GV Hđ của HS Nd ghi bảng - GV yêu cầu HS xem bảng nhân ở SGK. - Với kiến thức về mảng một chiều đã học, em hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng nhân? - Với cách lưu trữ như vậy, ta phải khai báo bao nhiêu biến mảng? - Khai báo như vậy có những hạn chế nào? - Để khắc phục những hạn chế này, ta có thể mô tả dữ liệu của bảng nhân là kiểu mảng một chiều gồm 9 phần tử, - Xem bảng nhân ở SGK trang 59 - Sử dụng 9 mảng một chiều, mỗi mảng lưu một hàng của bảng. - TL: Khai báo 9 biến mảng một 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 §11. KIỂU MẢNG (tt) 2. Kiểu mảng hai chiều: a. Xét bài toán: Bảng nhân (SGK). Giáo viên: TRUONG – LAN Trang 57 Tuaàn thöù:…………… Tieát thöù: 22 Giáo án Tin học 11 Trường THPT Lâm Hà mỗi phần tử là mảng một chiều có 10 phần tử. Như vậy, ta có thể biểu diễn bảng nhân bằng kiểu dữ liệu mảng hai chiều. - Yêu cầu HS nhận xét về mảng hai chiều? - Nêu khái niệm mảng hai chiều. - Để mô tả kiểu mảng hai chiều, cần xác định những yếu tố nào? giá trị của mảng. - Chú ý lắng nghe. - TL: Nếu coi mỗi hàng của mảng hai chiều là một phần tử thì ta có thể coi mảng hai chiều là mảng một chiều mà mỗi phần tử của nó là mảng một chiều. - HS trả lời. - Tham khảo SGK và trả lời. * Khái niệm mảng hai chiều: (SGK). * Các yếu tố cần xác định để mô tả kiểu mảng hai chiều. (SGK) Hoạt động 2:(10’)Tìm hiểu cách khai báo biến mảng hai chiều và cách tạo/in mảng hai chiều. Hđ của GV Hđ của HS Nd ghi bảng - GV đưa ra hai cách khai báo biến mảng hai chiều. - GV giải thích các thành phần trong khai báo. - Gọi HS nêu cách khai báo gián tiếp biến B để lưu trữ bảng nhân ở SGK. - Gọi HS nhắc lại cách tham chiếu đến một phần tử của mảng một chiều. - Gọi HS nêu cách tham chiếu đến số 81 trong bảng nhân? - HS chú ý theo dõi. - Chú ý lắng nghe. - HS đứng tại chỗ trả lời. - TL: Tênbiến[chỉ số] - TL: B[9,9] = 81 b. Khai báo: ♦ C1: Trực tiếp: Var <tênbiếnmảng>:array [kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu phần tử>; ♦ C2: Gián tiếp: Type <tên kiểu mảng> = array[kiểu chỉ số hàng, kiểu chỉ 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 [1 9,1 10] of byte; var B: mang2c; c.Tham chiếu đến một phần tử của mảng hai chiều: Tênbiến[chỉ số hàng,chỉ số cột] VD: i) A[i,j] → phần tử ở hàng i, cột j của mảng A. ii) B[9,9] → phần tử ở hàng 9, cột 9 của bảng nhân B. Giáo viên: TRUONG – LAN Trang 58 Giáo án Tin học 11 Trường THPT Lâm Hà Hoạt động 3: (17 phút)Tìm hiểu cách viết chương trình đơn giản. Hđ của GV Hđ của HS Nd ghi bảng - GV hướng dẫn HS cách tạo mảng hai chiều có m hàng, n cột. - GV hướng dẫn HS cách in mảng hai chiều vừa tạo. - Gọi HS lên bảng sửa lại phần khai báo và các câu lệnh nhập cho phù hợp với bài này. - GV hướng dẫn HS cách tính tổng. - GV treo bảng phụ viết sẵn chương trình cho HS tham khảo. - HS chú ý theo dõi. - Chú ý lắng nghe và theo dõi. - HS lên bảng làm. + Không khai báo m,n. + Khai báo thêm biến T. + Viết hai vòng for của lệnh tạo và in mảng là: for i := 1 to 5 do for j := 1 to 7 do - HS chú ý theo dõi. - Theo dõi chương trình trên bảng phụ. d. Các ví dụ: Ví dụ 1: Viết chương trình tạo và in mảng hai chiều gồm m hàng, n cột. program Tao_in_mang; var i, j, m, n: integer; A: array [1 100,1 100] of integer; begin write ('Nhap so hang m = '); readln (m); write ('Nhap so cot n = '); readln (n); {Tạo mảng} for i := 1 to m do for j := 1 to n do begin write('Nhap A[',i, ',' ,j,']='); readln (A[i , j]); end; {In mảng} for i:= 1 to m do begin for j := 1 to n do write (A[i , j]:4); writeln; end; readln end. Ví dụ 2: Tạo và in mảng hai chiều gồm 5 hàng, 7 cột. Tính và in ra màn hình tổng các phần tử trong mảng. T:= 0; for i := 1 to 5 do for j := 1 to 7 do T := T + A[i,j]; V- Củng cố bài - Cách khai báo biến mảng hai chiều. - Cách tạo mảng hai chiều. - Cách tính toán các phần tử trong mảng hai chiều VI- Bài tập về nhà và dặn dò: Xem các ví dụ còn lại trong SGK. VII- Rút kinh nghiệm: Giáo viên: TRUONG – LAN Trang 59