TRƯỜNG THPT HƯƠNG THỦY GIÁO ÁN CHI TIẾT Giáo viên hướng dẫn: Nguyễn Văn Cường Người soạn: Nguyễn Quốc Lý Ngày soạn: 19/02/2011 Ngày giảng: 24/02/2011 Trường THPT Hương Thủy Lớp giảng: 11/1 Tiết 3 Phòng: 1 Tên bài giảng: Bài 11: KIỂU MẢNG (Tiết 24) I. MỤC ĐÍCH, YÊU CẦU 1. Mục đích Giúp học sinh biết được một kiểu dữ liệu mới là kiểu mảng hai chiều. Biết được cách khai báo biến, tham chiếu đến từng phần tử của mảng. 2. Yêu cầu Tạo được kiểu mảng hai chiều và khai báo biến mảng hai chiều trong ngôn ngữ lập trình Pascal. Vận dụng để giải quyết một số bài toán cụ thể. 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong học tập. II. CHUẨN BỊ 1. Giáo viên: Giáo án, sách giáo khoa, sách giáo viên, bảng. 2. Học sinh: vở ghi bài, sách giáo khoa. III. PHƯƠNG PHÁP Thuyết trình, vấn đáp, gợi mở. IV. HOẠT ĐỘNG DẠY HỌC 1. Ổn định lớp (3 phút) : Cán bộ lớp báo cáo sĩ số. 2. Kiểm tra bài cũ (7 phút): Hoạt động của GV và HS Nội dung bài GV: Tiết trước chúng ta đã tìm hiểu kiểu mảng một chiều bây giờ thầy kiểm tra bài cũ. HS: trả lời GV: nhận xét cho điểm học sinh. Câu hỏi: 1. Em hãy nêu khái niệm, cách khai báo kiểu mảng một chiều, cách tham chiếu đến các phần tử của mảng. 3. Ni dung bi mi (30 phỳt): Hot ng 1(10 phỳt): Khỏi nim mng hai chiu Hot ng ca GV v HS Ni dung bi GV: Ta thy bng nhõn cú dng bng gm cỏc giỏ tr cựng kiu.Nhỡn bng trờn thỡ em cú nhn xột gỡ v mi hng (cụt) ca bng. HS: Tr li cõu hi:. GV: nhn xột v kt lun v vớ d. Em no cú th a ra khỏi nim v mng hai chiu theo cỏch hiu ca mỡnh? HS: tr li v a ra khỏi nim mng hai chiu GV: nhc li khỏi nim mt ln na. Tng t vi mng mt chiu thỡ mng hai chiu cng cú quy tc sau: + Tờn kiu mng hai chiu; + S lng phn t cu mi chiu; + Kiu d liu ca phn t; + Cỏch khai bỏo bin; + Cỏch tham chiu n phn t ca mng hai chiu. HS: nghe v ghi bi GV: Nh vy t vớ d trờn thỡ em no cú th khai bỏo mng hai chiu t mng mt chiu c. HS: nghe v tr li cõu hi. Tit 24. Đ11. KIU MNG (Tit 4/4) 2. Kiu mng hai chiu Bi toỏn tớnh v a ra mn hỡnh bng nhõn. 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 28 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 Bng nhõn Nh vy, ta cú th mụ t d liu bng nhõn l mng mt chiu gm 10 phn t, mi phn t l mng mt chiu cú 9 phn t, mi phn t l mt s nguyờn. - Nếu xem mỗi hàng của mảng hai chiều là một phần tử thì ta có thể nói mảng hai chiều là mảng một chiều mà mỗi phần tử là mảng một chiều. - Tng t nh kiu mng mt chiu, vi kiu mng hai chiu, cỏc ngụn ng lp trỡnh cng cú quy tc, cỏch thc cho phộp xỏc nh: + Tờn kiu mng hai chiu; + S lng phn t ca mi chiu; + Kiu d liu ca phn t; + Cỏch khai bỏo bin; + Cỏch tham chiu n phn t ca mng hai chiu. VD: Bin mng hai chiu B lu tr bng nhõn cú th c khai bỏo trong Pascal: Type A=array[1 . . 9] of integer; B=array[1 . . 10] of A Hoc: Var B: array[1 . . 9, 1 . . 10] of integer; Hoạt động 2 (10 phút): Khai báo mảng 2 chiều Hoạt động của GV và HS Nội dung bài GV: Từ khái niệm nói trên ta có cách khai báo mảng 2 chiều như sau: viết cách khái báo lên bảng, phân tích cho HS thấy sự khác nhau của mảng 2 chiều. HS: nghe và ghi bài. GV: lấy ví dụ về cách khai báo mảng 2 chiều, phân tích cho học sinh thấy rõ. gọi một hai HS lên bảng lấy VD khác. HS: nghe, quan sát, ghi bài, suy nghĩ và lên bảng viết ví dụ GV: gọi HS khác nhận xét về VD của bạn vừa làm và kết luận lại. HS: quan sát bạn làm và nhận xét a. Khai báo mảng hai chiều Tổng quát: Cách 1: khai báo trực tiếp biến mảng hai chiều: Var <tên biến mảng> : array[kiểu chỉ số hàng, kiểu chi số cột] of <kiểu phần tử>; Cách 2: khai báo gián tiếp biến mảng qua kiểu mảng hai chiều: Type <tên kiểu mảng> = array[kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu phần tử>; Var <tên biến mảng> : <tên kiểu mảng>; Cách truy xuất đến phần tử của mảng hai chiều: <Tên Mảng>[chỉ số dòng, chỉ số cột] VD: các khai báo mảng sau đây là hợp lệ: (sgk) Hoạt động 3 (12 phút): tìm ví dụ Hoạt động của GV và HS Nội dung bài GV: chuyển mục và lấy ví dụ cụ thể, thể hiện thông qua chương trình có sẵn. HS: quan sát, suy nghĩ và chuẩn bị trả lời các câu hỏi do GV đặt ra. GV: Em nào chỉ cho thầy và các bạn trong VD này những câu lệnh nào dùng để khai báo mảng hai chiều? mời một, hai HS trả lời. HS: Lên bảng chỉ các câu lệnh dùng để khai báo mảng hai chiều. GV: Những câu lệnh nào dùng để tính và đưa ra bảng nhân? HS: lên bảng chỉ rõ và giải thích các câu lệnh đó. b. Một số ví dụ Ví dụ 1: Chương trình đưa bảng nhân ra màn hình. Program Bang_nhan; uses crt; Var B: array[1 10,1 9] of integer; i, j: integer; Begin clrscr; for i := 1 to 10 do for j := 1 to 9 do B[i,j] := i*j; for i := 1 to 10 do begin for j := 1 to 9 do write(B[i,j]:4); writeln; end; GV: Đưa ra VD 2 và hướng dẫn cho học HS tìm hiểu và đưa ra khai báo mảng. HS: Nghe, và suy nghĩ để thực hiện khai báo mảng hai chiều. GV: Gọi một HS lên bảng viết khai báo về mảng. HS: Lên bảng viết khai báo. GV: Gọi một học khác lên viết câu lệnh nhập các phần tử của mảng 2 chiều. HS: Lên bảng viết đoạn lệnh dùng để nhập các phần tử của mảng 2 chiều. reeadln End. Ví dụ 2: chương trình sau nhập vào từ phím các phần tử của mảng hai chiều B gồm 5 hàng, 7 cột với các phần tử là các số nguyên và một số nguyên k. Đưa ra màn hình các phần tử của mảng có giá trị nhỏ hơn k. Program Mang_hai_chieu; uses crt; Var B: array[1 5,1 7] of integer; d, i, j, k: integer; Begin clrscr; writeln(‘Nhap cac phan tu cua mang theo dong: ’); for i := 1 to 5 do begin for j := 1 to 7 do readln(B[i,j]); writeln; end; write(‘Nhap vao gia tri k = ’); readln(k); d := 0; writeln(‘DS cac phan tu mang nho hon’,k,’:’); for i := 1 to 5 do for j := 1 to 7 do if B[i,j] < k then begin write(B[i,j]); writeln; d := d + 1; end; if d = 0 then writeln(‘Khong co phan tu nao nho hon’, k); readln End. 4. Củng cố và nhắc nhở: (3 phút) Nhắc lại các kiến thức cơ bản - Mảng hai chiều là bảng các phần tử cùng kiểu. - Khai báo mảng hai chiều Cách 1: khai báo trực tiếp biến mảng hai chiều: Var <tên biến mảng> : array[ kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu phần tử>; Cách 2: khai báo gián tiếp biến mảng qua kiểu mảng hai chiều: Type <tên kiểu mảng> = array[kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu phần tử>; Var <tên biến mảng> : <tên kiểu mảng>; 5. Nhắc nhở về nhà chuẩn bị giờ sau Các em về hoàn thiện các bài tập trong sách bài tập. Xem tiếp bài thực hành. Hương Thủy, Ngày 19/02/2011 Nhận xét của GVHD Sinh viên thực tập Nguyễn Văn Cường Nguyễn Quốc Lý . gián tiếp biến mảng qua kiểu mảng hai chiều: Type <tên kiểu mảng& gt; = array [kiểu chỉ số hàng, kiểu chỉ số cột] of < ;kiểu phần tử>; Var <tên biến mảng& gt; : <tên kiểu mảng& gt;; Cách. chỉ số cột] of < ;kiểu phần tử>; Cách 2: khai báo gián tiếp biến mảng qua kiểu mảng hai chiều: Type <tên kiểu mảng& gt; = array [kiểu chỉ số hàng, kiểu chỉ số cột] of < ;kiểu phần tử>; Var. 19/02/2011 Ngày giảng: 24/02/2011 Trường THPT Hương Thủy Lớp giảng: 11/1 Tiết 3 Phòng: 1 Tên bài giảng: Bài 11: KIỂU MẢNG (Tiết 24) I. MỤC ĐÍCH, YÊU CẦU 1. Mục đích Giúp học sinh biết được một kiểu dữ