Nhấn mạnh: Khái niệm mảng một chiều Để người lập trình có thể xây dựng và sử dụng mảng 1 chiều NNLT có cách thức cho phép xác định: tên kiểu mảng 1 chiều, số lượng phần tử, kiểu dữ liệu [r]
(1)Ngày soạn: 25 / 12 /2014 Ngày dạy:29 /12 /2014 Lớp: 11CB2 Tuần: 20 Tiết CT: 19 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: Kiến thức: - Hiểu khái niệm mảng chiều - Hiểu cách khai báo và truy cập cập đến phần tử mảng chiều Kỹ năng: - Cài đặt thuật toán số bài toán đơn giản với kiểu liệu mảng chiều - Thực khai báo mảng, truy cập, tính toán các phần tử mảng Thái độ II Phương tiện, phương pháp Phương tiện - Máy tính, máy chiếu, phông chiếu, bảng phấn - Đính kèm Slide bài giảng Power Point Phương pháp: nêu – giải vấn đề III Nội dung: Ổn định lớp(1’) Kiểm tra bài cũ() Giới thiệu bài Nội dung bài Tg Hoạt động GV Nêu các kiểu liệu mà em đã học? Sử dụng các kiểu liệu đã học để giải bài toán sau: Ví dụ: Nhập vào nhiệt độ (trung bình) ngày tuần Tính và in màn hình nhiệt độ trung bình tuần và số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình tính được? -Xác định Input và Output? -Nêu các bước để giải? -Chương trình minh họa Program nhiet tuan; Var t1, t2, t3, t4, t5, t6, tb:real; dem:integer; Begin Write(‘Nhap vao nhiet cua ngay:’); Readln(t1, t2, t3, t4, t5, t6, t7); Hoạt động HS Nội dung HS trả lời: - byte, integer, longint, I Kiểu mảng chiều real, char, boolean, Khái niệm: Mảng môt chiều là dãy hữu hạn các phần tử cùng kiểu VD: 17 20 18 25 19 12 19 A Trong đó: -Input: nhiệt độ ngày - Tên mảng là : A tuần (t1, t2, t3, t4, - Số phần tử mảng : t5, t6, t7) - Kiểu liệu các phần -Output: nhiệt độ trung tử: kiểu nguyên bình tuần (tb) và số ngày có nhiệt độ cao nhiệt độ trung bình - Nhập giá trị nhiệt độ 7ngày - Tính trung bình cộng - Đếm số phần tử có giá Lop11.com (2) tb:=(t1+t2+t3+t4+t5+t6+t7)/7 ; dem:=0; if t1>tb then dem:=dem+1; if t2>tb then dem:=dem+1; if t3>tb then dem:=dem+1; if t4>tb then dem:=dem+1; if t5>tb then dem:=dem+1; if t6>tb then dem:=dem+1; if t7>tb then dem:=dem+1; Write(‘nhiet trung binh tuan:’,tb); Writeln(‘So nhiet cao hon nhiet trung binh tuan:’,dem): readln; End - Hỏi: Khi muốn tính nhiệt dộ trung bình tháng hay năm thì chương trình trên có hạn chế nào? - Dẫn dắt: Để khắc phục hạn chế trên, người ta 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ố Kiểu mảng chiều Yêu cầu học sinh tham khảo sách giáo khoa và hỏi: Em hiểu nào mảng chiều? - Hỏi: Để mô tả mảng chiều, ta cần xác định yếu tố nào? trị lớn trung bình cộng tính -Xuất nhiệt độ trung bình và số ngày có nhiệt độ lớn nhiệt độ trung bình đó - Quan sát, suy nghĩ và trả lời + Phải khai báo quá nhiều biến + Chương trình phải viết dài Nghiên cứu sách giáo khoa để trả lời - Mảng chiều là dãy hữu hạn các phần tử có cùng kiểu liệu Các phần tử mảng có cùng chung tên và phân biệt số - Để mô tả mảng chiều cần xác định: +Kiểu các phần tử +Số phần tử mảng +Cách đánh số các phần tử nó IV Củng cố và dặn dò(1’) - Nhấn mạnh: Khái niệm mảng chiều Để người lập trình có thể xây dựng và sử dụng mảng chiều NNLT có cách thức cho phép xác định: tên kiểu mảng chiều, số lượng phần tử, kiểu liệu phần tử cách khai báo biến mảng, Lop11.com (3) V Rút kinh nghiệm Lop11.com (4) Ngày soạn: 25 / 12 /2014 Ngày dạy:29 /12 /2014 Lớp: 11CB2 Tuần: 20 Tiết CT: 19 CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG III Mục tiêu: Kiến thức: - Hiểu khái niệm mảng chiều - Hiểu cách khai báo và truy cập cập đến phần tử mảng chiều Kỹ năng: - Cài đặt thuật toán số bài toán đơn giản với kiểu liệu mảng chiều - Thực khai báo mảng, truy cập, tính toán các phần tử mảng Thái độ IV Phương tiện, phương pháp Phương tiện - Máy tính, máy chiếu, phông chiếu, bảng phấn - Đính kèm Slide bài giảng Power Point Phương pháp: nêu – giải vấn đề III Nội dung: Ổn định lớp(1’) Kiểm tra bài cũ() Giới thiệu bài Nội dung bài Tg Hoạt động GV a)Khai báo -GV dẫn: Vậy Pascal, để tạo mảng chiều ta phải khai báo nào? -Có cách: Trực tiếp và gián tiếp +Cách 1: Khai báo trực tiếp -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 liệu mảng chiều ngôn ngữ lập trình Pascal trực tiếp GV chốt lại cách khai báo trực tiếp và giải thích các thành phần Ví dụ: Var a=array[1 100] of integer; Trong đó: Tên biến mảng là a , có 100 phần tử, các phần tử kiểu nguyên +Cách 2: Khai báo gián tiếp Hoạt động HS HS trả lời: Var <tên biến mảng> : array [<chỉ số đầu> <chỉ số cuối>]of <kiểu phần tử>; Type <tên kiểu mảng> = array [<chỉ số đầu> <chỉ dố cuối>] of <kiểu phần tử>; Var <tên biến mảng>:<tên kiểu mảng>; Nội dung Khai báo mảng chiều Cách 1: Trực tiếp VAR <tên biến mảng>: ARRAY [<chỉ số đầu> <chỉ số cuối>] OF <kiểu phần tử>; VD: Var nhietdo: array [1 366] of real; Cách 2: Gián tiếp TYPE <tên kiểu mảng> = ARRAY [<chỉ số Lop11.com (5) 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 liệu mảng chiều ngôn ngữ lập trình Pascal gián tiếp -GV chốt lại cách khai báo và ý nghĩa các thành phần đó -Ví dụ: Type A=array[1 100] of integer; Trong đó: +Kiểu liệu có tên A +Gồm 100 phần tử +Các phần tử có kiểu nguyên - Gọi học sinh, nêu cách khai báo kiểu liệu mảng có tên Nhietdo, gồm phần tử,các phần tử có kiểu số thực? - Cho số VD khai báo kiểu mảng chiều Type Arrayr=array[1 200] of real; Arrayr=array[byte] of real; Arrayb=array[-100 0] of boolean; - Hỏi: Những khai báo nào đúng? - Yêu cầu học sinh cho biết cách khai báo biến và ví dụ khai báo biến mảng ứng với kiểu liệu vừa tạo Ví dụ: - Gọi học sinh khác, tạo biến T với kiểu là Nhietdo đã tạo trên -GV hỏi:Vậy thì biến mảng T này có bao nhiêu phần tử và các phần tử này có kiểu gì? - Chú ý cho học sinh cách đặt tên kiểu liệu và tên biến, tránh nhầm lẫn - Gọi học sinh, nêu cách khai báo biến mảng có tên T, gồm phần tử, các Type Nhietdo=array[1 7] of real; - Quan sát bảng và chọn khai báo đúng +Arrayr=array[1 200] of real; +Arrayb=array[-100 0] of boolean; -Var <ten_bien_mang>: <ten_kieu_mang>; - Var T : Nhietdo; đầu> <chỉ dố cuối>] OF <kiểu phần tử>; VAR <tên biến mảng>:<tên kiểu mảng>; VD: Type A= array [1 366] of real; Var nhietdo: A; Trong đó: Chỉ số đầu, số cuối thường là các biểu thức nguyên Chỉ số đầu <= số cuối Kiểu phần tử là kiểu liệu các phần tử mảng VD: Khai báo mảng chiều có tên A gồm 10 phần tử, các phần tử là kiểu nguyên Var A: array[1 100]of integer; Hoặc: Type mang= array[1 100] of integer; Var A: mang; -7 phần tử -Các phần tử có kiểu thực -Var T: array[1 7] of real; -Theo dõi hướng dẫn giáo viên và độc lập suy nghĩ để trả lời a[1] là phần tử vị trí mảng a a[i] là phần tử vị trí i mảng a Nhập, xuất mảng chiều * Nhập mảng chiều: - Nhập số phần tử mảng (N) Writeln(‘Nhap so phan tu N=’); Readln(N); - Nhập giá trị các phần tử mảng (A[i]) Lop11.com (6) phần tử có kiểu số thực? For i:=1 to n Begin Writeln(‘Nhap phan tu thu’,i,’: ’); Readln(A[i]); End; * Xuất mảng chiều Writeln(‘Mang vua nhap la: ’); For i:= to n Write(A[i]:5); • Tham chiếu đến phần tử mảng Tên mảng[chỉ số]; VD: A[3] =18 Nhập, xuất mảng chiều Để nhập, xuất mảng chiều ta dùng vòng lặp for với chạy từ đến n phần tử - Giới thiệu cách tham chiếu đến phần tử mảng chiều Yêu cầu học sinh lấy ví dụ IV Củng cố và dặn dò(1’) - Nhấn mạnh: Khái niệm mảng chiều Để người lập trình có thể xây dựng và sử dụng mảng chiều NNLT có cách thức cho phép xác định: tên kiểu mảng chiều, số lượng phần tử, kiểu liệu phần tử cách khai báo biến mảng, V Rút kinh nghiệm Lop11.com (7) Ngày soạn: 25 / 12 /2014 Ngày dạy:29 /12 /2014 Lớp: 11CB2 Tuần: 20 Tiết CT: 19 CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG V Mục tiêu: Kiến thức: - Hiểu khái niệm mảng chiều - Hiểu cách khai báo và truy cập cập đến phần tử mảng chiều Kỹ năng: - Cài đặt thuật toán số bài toán đơn giản với kiểu liệu mảng chiều - Thực khai báo mảng, truy cập, tính toán các phần tử mảng Thái độ VI Phương tiện, phương pháp Phương tiện - Máy tính, máy chiếu, phông chiếu, bảng phấn - Đính kèm Slide bài giảng Power Point Phương pháp: nêu – giải vấn đề III Nội dung: Ổn định lớp(1’) Kiểm tra bài cũ() Giới thiệu bài Nội dung bài Tg Hoạt động GV Hoạt động HS * Xác định input, output Input: số N và dãy số bài toán nguyên Nêu thuật toán giải bài toán Output: max,csmax trên Gán max:=A1, csmax=1 i chạy từ tới n Nếu Ai >max thì max:= Ai Csmax:=i Lop11.com Nội dung Một số ví dụ VD1: Tìm giá trị lớn dãy số nguyên Input: Số nguyên dương N (N<=250) và dãy số nguyên Ai (i=1 n) Output: Chỉ số và giá trị phần tử max Program timmax; Var A : array[1 250] of integer; i, n, max,csmax : integer; Begin Writeln(‘Nhap n= ’); Readln(n); For i:= to n Begin Writeln(‘A[’,i,’]=’); Readln(A[i]); End; Max:=A[1]; csmax:=1; For i:=1 to n (8) If A[i] > max then Begin max:=A[i]; csmax:=i; End; Writeln(‘max = ’, max); Writeln(‘chi so cua phan tu max:’, csmax); Readln End IV Củng cố và dặn dò(1’) - Nhấn mạnh: Khái niệm mảng chiều Để người lập trình có thể xây dựng và sử dụng mảng chiều NNLT có cách thức cho phép xác định: tên kiểu mảng chiều, số lượng phần tử, kiểu liệu phần tử cách khai báo biến mảng, V Rút kinh nghiệm Lop11.com (9) Ngày soạn: 25 / 12 /2014 Ngày dạy:29 /12 /2014 Lớp: 11CB2 Tuần: 20 Tiết CT: 19 CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: KIỂU MẢNG VII Mục tiêu: 10 Kiến thức: - Hiểu khái niệm mảng chiều - Hiểu cách khai báo và truy cập cập đến phần tử mảng chiều 11 Kỹ năng: - Cài đặt thuật toán số bài toán đơn giản với kiểu liệu mảng chiều - Thực khai báo mảng, truy cập, tính toán các phần tử mảng 12 Thái độ VIII Phương tiện, phương pháp Phương tiện - Máy tính, máy chiếu, phông chiếu, bảng phấn - Đính kèm Slide bài giảng Power Point Phương pháp: nêu – giải vấn đề III Nội dung: Ổn định lớp(1’) Kiểm tra bài cũ() Giới thiệu bài Nội dung bài Tg Hoạt động GV Xác định Input và Output bài toán? Phần tử nào gọi là phần tử chẵn? Hoạt động HS Input: N: số lượng phần tử mảng Giá trị các phần tử Output: Số phần tử chẵn và xuất phần tử TBC Phần tử đó phải chia hết cho Ta phải làm để kiểm tra số đó có chia hết cho hay không? Dùng phép chia lấy dư (mod) Làm để tính TBC dãy số? Với yêu cầu bài toán trên ta phải dùng Tính tổng dãy số đó đem chia cho số lượng phần tử Lop11.com Nội dung VD2 Nhập vào mảng n số nguyên (N <= 50) a) Đếm và xuất phần tử chẵn mảng b) Tính TBC các phần tử mảng Program songuyen; Uses crt; Var A:array[1 100] of integer; N.i,dem,tong:integer; TBC:real; Begin Clrscr; Write(‘Nhap n= ’); Readln; For i:=1 to n (10) biến nào? Yêu cầu học sinh lên làm thử nội dung: Khai báo và nhập mảng Đếm và xuất phần tử chẵn Tính TBC các phần tử Nhắc lại: Begin…end; đặt vòng for hay câu lệnh kiểm tra điều kiên if có từ câu lệnh trở lên đó Nhận xét bài làm và sửa lỗi Biến: N: lưu số phần tử có mảng A: biến mảng Dem: số lượng phần tử chẵn Tong: tổng các phần tử mảng TBC: giá trị TBC các phần tử mảng Begin Write(‘Nhap phan tu thu ’,i,’:’); Readln(A[i]); End; Dem:=0; For i:=1 to n If(A[i] mod 2=0) then Begin HS lên bảng làm bài Dem:=dem+1; Writeln(A[i]); End; Writeln(‘So luong phan tu chan la: ’,dem); Tong:=0; For i:=1 to n Tong:=tong+A[i]; TBC:=tong/n; Writeln(‘TBC cua day so la: ’,TBC:4:2); Readln IV Củng cố và dặn dò(1’) - Nhấn mạnh: Khái niệm mảng chiều Để người lập trình có thể xây dựng và sử dụng mảng chiều NNLT có cách thức cho phép xác định: tên kiểu mảng chiều, số lượng phần tử, kiểu liệu phần tử cách khai báo biến mảng, V Rút kinh nghiệm Lop11.com (11) Lop11.com (12)