Mảng là gì tin học 11

Bạn đang xem tài liệu "Giáo án Tin học 11 - Bài 11: Kiểu mảng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

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 Mục tiêu: Kiến thức: Hiểu được khái niệm mảng 1 chiều. Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều. Kỹ năng: Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều. Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. Thái độ 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 bằng Power Point. Phương pháp: nêu – giải quyết vấn đề. III. Nội dung: 1. Ổn định lớp(1’) 2. Kiểm tra bài cũ() 3. Giới thiệu bài mới 4. Nội dung bài mới Tg Hoạt động của GV Hoạt động của HS Nội dung Nêu các kiểu dữ liệu mà em đã được học? Sử dụng các kiểu dữ liệu đã học để giải bài toán sau: 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? -Xác định Input và Output? -Nêu các bước để giải? -Chương trình minh họa Program nhiet do tuan; Var t1, t2, t3, t4, t5, t6, tb:real; dem:integer; Begin Write(‘Nhap vao nhiet do cua 7 ngay:’); Readln(t1, t2, t3, t4, t5, t6, t7); 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 do trung binh tuan:’,tb); Writeln(‘So ngay nhiet do cao hon nhiet do trung binh tuan:’,dem): readln; End. - Hỏi: Khi muốn tính nhiệt dộ trung bình của 1 tháng hay 1 năm 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ỗi phần tử một chỉ số. 1. Kiểu mảng 1 chiều. 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? - Hỏi: Để mô tả mảng một chiều, ta cần xác định những yếu tố nào? HS trả lời: - byte, integer, longint, real, char, boolean,... -Input: nhiệt độ 7 ngày trong tuần (t1, t2, t3, t4, t5, t6, t7). -Output: nhiệt độ trung bình trong tuần (tb) và số ngày có nhiệt độ cao hơn 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á trị lớn hơn trung bình cộng tính được. -Xuất ra nhiệt độ trung bình và số ngày có nhiệt độ lớn hơ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 rất dài. 1. 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: +Kiểu của các phần tử +Số phần tử trong mảng +Cách đánh số các phần tử của nó. I. Kiểu mảng một chiều 1. 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 1 2 3 4 5 6 7 Trong đó: - Tên mảng là : A - Số phần tử của mảng : 7 - Kiểu dữ liệu của các phần tử: kiểu nguyên. IV. Củng cố và dặn dò(1’) 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 của phần tử cách khai báo biến mảng,.. V. Rút kinh nghiệm .......................................................................................................................................................................................................................................................................... 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 Mục tiêu: Kiến thức: Hiểu được khái niệm mảng 1 chiều. Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều. Kỹ năng: Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều. Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. Thái độ 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 bằng Power Point. Phương pháp: nêu – giải quyết vấn đề. III. Nội dung: 1. Ổn định lớp(1’) 2. Kiểm tra bài cũ() 3. Giới thiệu bài mới 4. Nội dung bài mới Tg Hoạt động của GV Hoạt động của HS Nội dung a)Khai báo -GV dẫn: Vậy trong Pascal, để tạo ra 1 mảng 1 chiều ta phải khai báo như thế nào? -Có 2 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 dữ liệu mảng một chiều trong ngôn ngữ lập trình Pascal bằng trực tiếp GV chốt lại cách khai báo trực tiếp và giải thích về 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 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 bằng gián tiếp -GV chốt lại cách khai báo và ý nghĩa các thành phần trong đó. -Ví dụ: Type A=array[1..100] of integer; Trong đó: +Kiểu dữ liệu mới 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 1 kiểu dữ liệu mảng có tên Nhietdo, gồm 7 phần tử,các phần tử có kiểu số thực? - Cho 1 số VD khai báo kiểu mảng một 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à một ví dụ khai báo một biến mảng ứng với kiểu dữ liệu vừa tạo. Ví dụ: - Gọi học sinh khác, tạo ra một 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 về cách đặt tên kiểu dữ 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 1 biến mảng có tên T, gồm 7 phần tử, các phần tử có kiểu số thực? 3. Nhập, xuất mảng 1 chiều Để nhập, xuất mảng 1 chiều ta dùng 1 vòng lặp for với 1 chạy từ 1 đến n phần tử. - 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 một ví dụ. HS trả lời: Var : array [..]of ; Type = array [..] of ; Var :; 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 : ; - Var T : Nhietdo; -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 của giáo viên và độc lập suy nghĩ để trả lời. a[1] là phần tử ở vị trí 1 của mảng a. a[i] là phần tử ở vị trí i của mảng a. 2. Khai báo mảng một chiều Cách 1: Trực tiếp VAR : ARRAY [..] OF ; VD: Var nhietdo: array [1..366] of real; Cách 2: Gián tiếp TYPE = ARRAY [..] OF ; VAR :; VD: Type A= array [1..366] of real; Var nhietdo: A; Trong đó: F Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên F Chỉ số đầu <= chỉ số cuối F Kiểu phần tử là kiểu dữ liệu của các phần tử mảng VD: Khai báo mảng một 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; 3. Nhập, xuất mảng một chiều. * Nhập mảng 1 chiều: - Nhập số phần tử của mảng (N) Writeln(‘Nhap so phan tu N=’); Readln(N); - Nhập giá trị của các phần tử trong mảng (A[i]) For i:=1 to n do Begin Writeln(‘Nhap phan tu thu’,i,’: ’); Readln(A[i]); End; * Xuất mảng 1 chiều Writeln(‘Mang vua nhap la: ’); For i:= 1 to n do Write(A[i]:5); • Tham chiếu đến phần tử trong mảng Tên mảng[chỉ số]; VD: A[3] =18 IV. Củng cố và dặn dò(1’) 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 của phần tử cách khai báo biến mảng,.. V. Rút kinh nghiệm .......................................................................................................................................................................................................................................................................... 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 Mục tiêu: Kiến thức: Hiểu được khái niệm mảng 1 chiều. Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều. Kỹ năng: Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều. Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. Thái độ 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 bằng Power Point. Phương pháp: nêu – giải quyết vấn đề. III. Nội dung: 1. Ổn định lớp(1’) 2. Kiểm tra bài cũ() 3. Giới thiệu bài mới 4. Nội dung bài mới Tg Hoạt động của GV Hoạt động của HS Nội dung * Xác định input, output của bài toán. Nêu thuật toán giải bài toán trên. Input: số N và dãy số nguyên Output: max,csmax Gán max:=A1, csmax=1 i chạy từ 1 tới n Nếu Ai >max thì max:= Ai Csmax:=i . Một số ví dụ VD1: Tìm giá trị lớn nhất của một 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ị của 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:= 1 to n do Begin Writeln(‘A[’,i,’]=’); Readln(A[i]); End; Max:=A[1]; csmax:=1; For i:=1 to n do 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 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 của phần tử cách khai báo biến mảng,.. V. Rút kinh nghiệm .......................................................................................................................................................................................................................................................................... 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 Mục tiêu: Kiến thức: Hiểu được khái niệm mảng 1 chiều. Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều. Kỹ năng: Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều. Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. Thái độ 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 bằng Power Point. Phương pháp: nêu – giải quyết vấn đề. III. Nội dung: 1. Ổn định lớp(1’) 2. Kiểm tra bài cũ() 3. Giới thiệu bài mới 4. Nội dung bài mới Tg Hoạt động của GV Hoạt động của HS Nội dung Xác định Input và Output của bài toán? Phần tử như thế nào được gọi là phần tử chẵn? Ta phải làm sao để kiểm tra số đó có chia hết cho 2 hay không? Làm sao để tính được TBC của một dãy số? Với những yêu cầu của bài toán trên ta phải dùng những biến nào? Yêu cầu 3 học sinh lên làm thử những nội dung: Khai báo và nhập mảng. Đếm và xuất ra những phần tử chẵn. Tính TBC các phần tử. Nhắc lại: Beginend; đặt trong vòng for hay câu lệnh kiểm tra điều kiên if khi có từ 2 câu lệnh trở lên trong đó. Nhận xét từng bài làm và sửa lỗi. Input: N: số lượng phần tử của 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 2. àDùng phép chia lấy dư (mod). àTính tổng của dãy số đó rồi đem chia cho số lượng phần tử. àBiến: N: lưu số phần tử có trong mảng. A: biến mảng. Dem: số lượng phần tử chẵn. Tong: tổng của các phần tử trong mảng. TBC: giá trị TBC của các phần tử trong mảng. HS lên bảng làm bài. VD2. Nhập vào 1 mảng n số nguyên (N <= 50). Đếm và xuất ra những phần tử chẵn của mảng. Tính TBC các phần tử của 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 do Begin Write(‘Nhap phan tu thu ’,i,’:’); Readln(A[i]); End; Dem:=0; For i:=1 to n do If(A[i] mod 2=0) then Begin Dem:=dem+1; Writeln(A[i]); End; Writeln(‘So luong phan tu chan la: ’,dem); Tong:=0; For i:=1 to n do 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 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 của phần tử cách khai báo biến mảng,.. V. Rút kinh nghiệm ..........................................................................................................................................................................................................................................................................