I. Mục tiêu:
1. Kiến thức:
- Biết được một kiểu dữ liệu mới là kiểu mảng hai chiều
- Biết được cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần tử của mảng.
2. Kỹ năng:
- 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. Sử dụng đúng biến mảng để giải quyết một số bài toán cụ thể
Giáo án lý thuyết Bài 11: Kiểu mảng (Tiết 4) Mục tiêu: Kiến thức: 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 tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần tử của mảng. Kỹ năng: 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. Sử dụng đúng biến mảng để giải quyết một số bài toán cụ thể Hoạt động dạy học: ổn định tổ chức lớp: Kiểm tra sĩ số: Tổng số: Vắng: Có phép: Không phép: Kiểm tra bài cũ: Câu hỏi: - a) Cách khai báo mảng một chiều và cách tham chiếu tới phần tử của mảng? (7đ) - b) Vận dụng: Cho dãy số A = (a1, a2, , an), (ai – nguyên, i = 1, , n và 3 < n <= 100). Viết đoạn chương trình khai báo biến cần sử dụng? (2đ) Trả lời: a) Cách khai báo mảng một chiều: Cách 1: Khai báo trực tiếp biến mảng một chiều: Var : array [kiểu chỉ số] of ; Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều: Type = array [kiểu chỉ số] of ; Var : ; b) Var n : byte; A : array[1..n] of integer; Bài mới: Đặt vấn đề: Trong bài trước chúng ta đã được biết kiểu dữ liệu có cấu trúc và đã di tìm hiểu về mảng một chiều. Hôm nay chúng ta tiếp tục tìm hiểu về cấu trúc dữ liệu kiểu mảng và tìm hiểu về mảng hai chiều. Ta vào bài hôm nay: Kiểu mảng hai chiều Nội dung Hoạt động của thầy và trò t 1. Bài toán: Tính và đưa ra màn hình bảng cửu chương 1 2 3 4 5 6 7 8 9 10 2 4 6 4 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 18 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 GV: Sử dụng kiến thức về mảng một chiều, hãy đưa ra cách sử dụng kiểu mảng đó để lưu trữ bảng cửu chương? HS: Sử dụng 9 mảng một chiều, mỗi mảng lưu một hàng của bảng GV: Với cách lưu trữ như vậy ta phải khai báo bao nhiêu biến? HS: Khai báo 9 biến mảng một chiều GV: Với cách khai báo như vậy thì chương trình nhập xuất dữ liệu dài và phải khai báo nhiều biến. Để khắc phục khó khăn này, ta xem một mảng một chiều là một phần tử, ta ghép 9 mảng một chiều trên thành mảng hai chiều GV: Vậy có nhận xét gì về mảng hai chiều? HS: Nếu xem mỗi hàng của mảng hai chiều là 1 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. 2. Các yếu tố để xác định mảng hai chiều: Tương tự như với kiểu mảng một chiều, với kiểu mảng hai chiều, các ngôn ngữ lập trình cũng có quy tắc, cách thức cho phép xác định: Tên kiểu mảng hai chiều Số lượng phần tử của mỗi chiều Kiểu dữ liệu của phần tử Cách khai báo biến Cách tham chiếu đến phần tử GV: Để mô tả kiểu mảng hai chiều ta cần xác định các yếu tố chính nào? HS: Các yếu tố để xây dựng mảng hai chiều: - Tên kiểu mảng hai chiều - Số lượng phần tử của mỗi chiều - Kiểu dữ liệu của phần tử 3. Tìm hiểu về kiểu mảng hai chiều: a. Khai báo: Tổng quát, khai báo biến mảng hai chiều trong Pascal như sau: Cách 1: Khai báo trực tiếp biến mảng hai chiều: Var : array [kiểu chỉ số hàng, kiểu chỉ số cột] of ; Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng hai chiều: Type = array [kiểu chỉ số GV: Với bài toán tính và đưa ra màn hình bảng cửu chương ta sử dụng biến mảng hai chiều B để lưu trữ, biến mảng hai chiều B lưu trữ bảng nhân được khai báo trong Pascal như sau: Var B : array [1..9] of array [1..10] of integer; Hoặc có thể khai báo ngắn gọn: Var B : array[1..9, 1..10] of integer; hàng, kiểu chỉ số cột] of ; Var : ; Chú ý: Các biến mảng thường gồm số lượng lớn các phần tử nên cần lưu ý phạm vi sử dụng chúng để khai báo kích thước và kiểu dữ liệu sao cho tiết kiệm bộ nhớ. GV: Qua cách khai báo như trên em hãy cho biết cách tạo kiểu dữ liệu mảng hai chiều (cách khai báo mảng hai chiều)? HS: Trả lời câu hỏi của GV Ví dụ: Các khai báo sau đây là hợp lệ: Type arrayReal = array[-100..200, 100..200] of real; arrayBoolean = array[-n+1..n+1, n..2*n] of boolean; Var arrayInt : array[1..10, 1..15] of integer; arrayLong : array[0..3*(n+1), 0..n] of Longint; trong đó n là hằng số GV: Hãy cho biết đâu là tên biến mảng, kiểu chỉ số hàng, kiểu chỉ số cột, kiểu phần tử của các khai báo trên? HS: Trả lời câu hỏi của GV GV: ý nghĩa của câu lệnh “Type arrayReal = array [-100 .. 200, 100 .. 200] of real;”? HS: Lệnh trên dùng để tạo một kiểu mảng hai chiều có tên là arrayReal gồm 300 dòng và 100 cột, các phần tử có kiểu dữ liệu là real. b. Cách tham chiếu tới từng phần tử của mảng: Tham chiếu tới phần tử của mảng hai chiều được xác định bởi tên mảng cùng với hai chỉ số được phân cách bởi dấu phẩy và viết trong cặp ngoặc [ và ] [chỉ số hàng, chỉ số cột] GV: Yêu cầu học sinh quan sát cấu trúc chung và suy nghĩ tìm ví dụ GV: Ví dụ a[i, j] là phần tử ở dòng i, cột j của mảng a. HS: Ví dụ: a[2, 9] là phần tử ở dòng số 2, cột số 9 của mảng a 4. Rèn luyện kỹ năng sử dụng mảng hai chiều: Ví dụ 1: Chương trình tính và đưa ra màn hình bảng nhân Để nhập dữ liệu ta dùng hai vòng For: For i:=1 to 9 do For j:=1 to 10 do B[i, j] := i*j; In ra mảng: For i:=1 to 9 do Begin For j:=1 to 10 do Write(B[i, j]:4); Writeln; End; GV: Yêu cầu học sinh theo dõi chương trình trong SGK – Tr61, 62 GV: Khai báo Uses crt; có ý nghĩa gì? HS: Khai báo thư viện chương trình con Crt để sử dụng được thủ tục Clrscr; GV: Giải thích chương trình Để thực hiện chương trình tính và đưa ra màn hình bảng nhân ta phải sử dụng 3 biến, đó là: biến kiểu mảng hai chiều có tên là B gồm 9 dòng và 10 cột, các phần tử có kiểu dữ liệu là integer. Và 2 biến chỉ số i và j để lưu trữ chỉ số hàng và chỉ số cột của mảng hai chiều B Hai vòng for với i, j lồng nhau để gán giá trị của bảng cửu chương cho các phần tử của B Sau đó in bảng đó ra màn hình GV: ý nghĩa của lệnh Writeln; trong chương trình này? HS: Để xuống dòng khi in đủ 10 cột. Ví dụ 2: Nhập vào từ bàn 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. Sau đó đưa ra màn hình các phần tử của mảng có giá trị nhỏ hơn k. GV: Nêu ví dụ 2 và yêu cầu học sinh về nhà chạy thử chương trình Củng cố: Những nội dung đã học: + Cách khai báo mảng hai chiều + Cách tham chiếu đến từng phần tử của mảng + Nhập và in dữ liệu của mảng Bài tập về nhà: + Viết chương trình nhập vào từ bàn phím một mảng hai chiều A[1..10, 1..10] với các phần tử là các số nguyên và một số nguyên x. Đếm số lượng số trong A có giá trị bằng x. + Xem nội dung của bài thực hành số 4 (SGK – Tr65). Nhận xét của giáo viên hướng dẫn
Tài liệu đính kèm: