I- MỤC TIÊU:
1. Kiến thức;
- Biết được một kiểu dữ liệu mới là mảng một chiều. Biết được một số loại biến có chỉ số.
- Biết cấu trúc tạo kiểu mảng một chiều và cách khai báo biến kiểu mảng một chiều.
2. Kĩ năng:
- Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể.
II- ĐỒ DÙNG DẠY HỌC:
1. Chuẩn bị của giáo viên:
- Máy chiếu projector, máy vi tính để giới thiệu ví dụ và minh hoạ
- Nghiên cứu bài và soạn bài chu đáo.
2. Chuẩn bị của học sinh:
- Sách giáo khoa.
Tiết 18: Ngày soạn: 09/11/2009 Chương IV: Kiểu dữ liệu có cấu trúc Bài 11: Kiểu mảng I- Mục tiêu: 1. Kiến thức; - Biết được một kiểu dữ liệu mới là mảng một chiều. Biết được một số loại biến có chỉ số. - Biết cấu trúc tạo kiểu mảng một chiều và cách khai báo biến kiểu mảng một chiều. 2. Kĩ năng: - Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập trình Pascal để giải quyết một số bài toán cụ thể. II- Đồ dùng dạy học: 1. Chuẩn bị của giáo viên: - Máy chiếu projector, máy vi tính để giới thiệu ví dụ và minh hoạ - Nghiên cứu bài và soạn bài chu đáo. 2. Chuẩn bị của học sinh: - Sách giáo khoa. III- Hoạt động dạy – học: Hoạt động 1: Tìm hiểu ý nghĩa của mảng một chiều. a) Mục tiêu: Biết được ý nghĩa và sự cần thiết của kiểu mảng một chiều trong việc giải quyết một số bài toán. Biết được khái niệm kiểu mảng một chiều. b) Nội dung: - Ví dụ: Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần. Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. - Chương trình minh họa: Program Nhiệt_độ_tuần; Uses crt; Var t1, t2, t3, t4, t5, t6, t7, tb: real; đếm: integer; Begin Write(‘ nhập vào nhiệt độ của 7 ngày;’); Readln( t1, t2, t3, t4, t5, t6, t7); Tb:= (t1 + t2 +t3 + t4 + t5 + t6 + t7)/ 7; đếm:= 0; if t1 > tb then đếm := đếm + 1; if t2 > tb then đếm := đếm + 1; if t3 > tb then đếm := đếm + 1; if t4 > tb then đếm := đếm + 1; if t5 > tb then đếm := đếm + 1; if t6 > tb then đếm := đếm + 1; if t7 > tb then đếm := đếm + 1; Writeln(‘ nhiệt độ trung bình tuần:’, tb); Writeln(‘ số ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình là:’, đếm); Readln End. - Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu. Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số. Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó. - Hầu hết các ngôn ngữ lập trình đều có quy tắc cho phép xác định: Tên kiểu mảng, số lượng phần tử, kiểu dữ liệu của từng phần tử của mảng. c) Các bước tiến hành: Hoạt động của giáo viên Hoạt động của học sinh 1. Chiếu đề bài và chương trình ví dụ lên bảng. ? Khi N lớn thì chương trình trên có những hạn chế như thế nào? ? Dẫn dắt: Để khắc phục những hạn chế trên, người ta thường ghép chung 7 biến trên thành một dãy và đặt cho nó chung một tên và đánh cho một phần tử chỉ số. 2. Yêu cầu học sinh tham khảo sách giáo khoa và hỏi: Em hiểu như thế nào về mảng một chiều? ? Để mô tả mảng một chiều, ta cần xác định những yếu tố nào? 1. Quan sát trên màn hình, suy nghĩ và trả lời: - Phải khai báo quá nhiều biến, chương trình viết phải rất dài. 2. Nghiên cứu sách giáo khoa để trả lời: Ä Mảng một chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu. Các phần tử trong mảng có cùng chung một tên và phân biệt nhau bởi chỉ số. Ä Để mô tả mảng một chiều cần xác định được kiểu của các phần tử và cách đánh số các phần tử của nó. Hoạt động 2: Tạo kiểu mảng một chiều và khai báo biến mảng: a) Mục tiêu: - Học sinh biết được cách tạo kiểu dữ liệu mảng một chiều trong ngôn ngữ lập trình Pascal, biết cách khai báo biến và tham chiếu đến từng phần tử của mảng. b) Nội dung: - Tạo kiểu dữ liệu mảng một chiều một cách gián tiếp. TYPE tên_kiểu_mảng = Array [[kiểu_chi_số] OF Kiểu_phần_tử; VAR Tên_biến_mảng: tên_kiểu_mảng; + Kiểu chỉ số: thường là một đoạn số nguyên (hoặc đoạn kí tự) liên tục, có dạng n1..n2 với n1, n2 là các biến kiểu nguyên (hoặc kí tự) xác định chỉ số đầu và chỉ số cuối của mảng. + Kiểu thành phần: là kiểu dữ liệu chung của mọi phần tử trong mảng. - Khai báo biến mảng một chiều một cách trực tiếp: VAR tên_biến_mảng: Array [[kiểu_chi_số] OF Kiểu_phần_tử; - Tham chiếu đến từng phần tử: Tên_biến[ chỉ số] c) Các bước tiến hành: Hoạt động của giáo viên Hoạt động của học sinh 1. Yêu cầu học sinh nghiên cứu sách giáo khoa và cho biết cách tạo kiểu dữ liệu mảng một chiều trong ngôn ngữ lập trình Pascal. @ Tìm một số ví dụ để minh hoạ ? ý nghĩa các câu lệnh vừa viết trên? - Chiếu lên bảng một số khai báo kiểu mảng một chiều. TYPE Mang1= Array[1..200] of real; Mảng 2 = Array[byte] of real; Mảng 3= Array[ -100..0] of boolean; ? Những khai báo nào đúng? 2. Yêu cầu học sinh cho biết cách khai báo biến và một số ví dụ khai báo một biến mảng ứng với kiểu dữ liệu vừa tạo ? ý nghĩa của câu lệnh vừa viết? ? Dung lượng của bộ nhớ của biến a đã chiếm bao nhiêu? Ä Chú ý cho học sinh về cách đặt tên kiểu dữ liệu và tên biến, tránh nhầm lẫn. @ Tóm lại để khai báo mảng một chiều ta có mấy cách? 3. Giới thiệu cách tham chiếu đến từng phần tử của mảng một chiều. Yêu cầu học sinh lấy ví dụ 1. Tham khảo sách giáo khoa và trả lời: - TYPE tên_kiểu_mảng= Array[Kiểu_chỉ_ số] OF Kiểu_phần_tử; Ví dụ: TYPE Mang= array[1..n]]of Integer; TYPE thực = Array[ 1..n] of real; ÄTạo ra một kiểu dữ liệu mới có tên là mang, thực. Gồm 1 đến N phần tử, có kiểu nguyên, kiểu thực. - Quan sát bảng và chọn khai báo đúng TYPE Mang1= Array[1..200] of real; Mảng 3= Array[ -100..0] of boolean; 2. Tham khảo sách giáo khoa và trả lời. Ä VAR tên_biến_mảng: tên_kiểu_mảng; - Ví dụ: A: mảng 1; B: mảng 2; Ä Khai báo một biến mảng một chiều Ä A đã chiếm 200 byte trong bộ nhớ. F có hai cách đó là: Ä Trực tiếp: VAR tên_biến_mảng: Array [kiểu_chi_số] OF Kiểu_phần_tử; Ä Gián tiếp: TYPE tên_kiểu_mảng = Array [kiểu_chi_số] OF Kiểu_phần_tử; VAR Tên_biến_mảng: tên_kiểu_mảng; 3. Theo dõi hướng dẫn của giáo viên và độc lập suy nghĩ để trả lời. A[1] là phần tử ở vị trí thứ 1 của mảng A A[i] là phần tử ở vị trí thứ i của mảng A Hoạt động 3: Rèn luyện kĩ năng sử dụng kiểu mảng một chiều. a) Mục tiêu: - Học sinh sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản. b) Nội dung: Bài toán: Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần. Tính và in ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được. c) Các bước tiến hành: Hoạt động của giáo viên Hoạt động của học sinh 1. Giới thiệu đề bài: Chiếu đề bài lên bảng. - Yêu cầu học sinh xác định dữ liệu vào, dữ liệu ra. ? Nếu không sử dụng biến mảng một chiều, ta có thể giải quyết được bài toán không? Khó khăn gì không? 2. Định hướng: Sử dụng kiểu mảng một chiều để giải quyết bài toán. ? Yêu cầu học sinh khai báo biến mảng? ? Yêu cầu học sinh tìm nhiệm vụ chính cần giải quyết? 3. Chia lớp làm 4 nhóm yêu cầu viết chương trình. Lên bảng trình bày. Chuẩn hoá chương trình cho học sinh. Program BTVD; Uses CRT; Var A : Array[1..7] of Real; I,d: Integer; S, TB : Real; Begin Clrscr; For i:=1 TO 7 DO Begin Writeln(‘Nhap phan tu thu ‘,i); Readln(A[i]); End; S:=0; For i:= 1 TO 7 Do S := S + A[i]; TB:= S/7; D := 0; For i := 1 TO 7 DO If A[i] > TB Then d := d+1; Writeln(‘So ngay la’,d); Readln; End. 1. Quan sát đề bài, theo dõi những yêu cầu cần giải quyết của đề bài. - INPUT: nhiệt độ của các ngày trong tuần. - OUTPUT: nhiệt độ trung bình trong tuần và số ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình. Ä Được, nhưng chương trình dài dòng, khó sửa đổi. 2. Theo dõi sự hướng dẫn của giáo viên Ä TYPE tuần = Array[ 1..7] of real; VAR T: tuần; - Nhập giá trị cho mảng T; - Tính trung bình cộng, giá trị lớn hơn trung bình cộng tính được. 3. Thảo luận theo nhóm để viết chương trình. - Báo cáo kết quả viết được - Nhận xét, đánh giá và bổ sung những thiếu sót nếu có. 4. Quan sát và ghi nhớ F Lưu ý: Cách nhập các phần tử cho mảng một chiều: For i:=1 TO n DO Begin Writeln(‘Nhap phan tu thu ‘,i); Readln(A[i]); End; @ Hiển thị các phần tử của mảng: For i:=1 TO 7 DO Begin Write(a[i]:4); Writeln; End; IV- Đánh giá cuối bài; Những nội dung đã học: - Cách tạo kiểu mảng một chiều và cách khai báo biến. TYPE tên_kiểu_mảng = Array[ kiểu_chỉ_ số] of kiểu_phần_tử; VAR tên_biên_mang: tên_kiểu_mảng; Hoặc bằng cách trực tiếp: VAR tên_biến_ mảng: Array[ kiểu_chỉ_ số] of kiểu_phần_ tử; Ví dụ: VAR A: array[1..n] of integer; - Tham chiếu đến từng phần tử: Tên biến[ chỉ số]. Câu hỏi và bài tập về nhà: - Viết chương trình nhập vào một mảng gồm n số nguyên ( 1 <= n <=100). Mỗi số có giá trị tuyệt đối không quá 300. Tính tổng giá trị các phần tử có giá trị chia hết cho k. 1. Viết chương trình nhập mảng 10 số nguyên. Tính tổng các số chẵn. Tính tổng các số lẻ In các phần tử trong mảng ra màn hình? Viết Chương trình nhập mảng N số thực. Tính tổng các số thực dương. Tìm Phần tử lớn nhất và nhỏ nhất cử mảng. In ra màn hình các số thực dương của mảng. Viết chương trình nhập mảng N số nguyên Đếm và in ra màn hình các số nguyên tố trong mảng. - Làm các bài tập sau bài học - Chuẩn bị bài mới chu đáo cho tiết ví dụ sau. V- Rút kinh nghiệm:
Tài liệu đính kèm: