Bài 11. Kiểu mảng
Chia sẻ bởi Võ Minh Hoàng |
Ngày 10/05/2019 |
68
Chia sẻ tài liệu: Bài 11. Kiểu mảng thuộc Tin học 11
Nội dung tài liệu:
Chào mừng quí Thầy (Cô) về dự giờ thăm lớp
GV thực hiện: Võ Minh Hoàng
Giáo án điện tử Tin học 11
Chương IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Thời lượng: 15 tiết (7LT-6TH-2BT)
Giáo án điện tử tin học lớp 11
GV Võ Minh Hoàng
Bài 11. KIỂU MẢNG 8 tiết (4LT-4TH) từ tiết 18-25
Trong đó:
- Tiết 18-20 kiểu mảng một chiều (mục 1a. Khai báo, 1b. Một số ví dụ)
Tiết 21-22 bài tập và thực hành 3
- Tiết 23 kiểu mảng (mục 2)
- Tiết 24-25 bài tập và thực hành 4
Chuong IV: KI?U D? LI?U Cể C?U TRC
Bài 11: Ki?u M?ng
Tiết 18: TÌM HIỂU KHAI BÁO BIẾN
MẢNG MỘT CHIỀU
Giáo án điện tử tin học lớp 11
GV Võ Minh Hoàng
Mục tiêu:
Kiến thức:
Hiểu khái niệm mảng 1 chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
2. 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 1 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
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
II. N?i dung
Bài toán đặt vấn đề:
Xác định Input, Output của bài toán và viết chương trình giải bài toán trên ?
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7.
* Dữ liệu cần tính và in ra (OUTPUT): tb, dem.
Bài toán đặt vấn đề:
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
Viết phần khai báo và câu lệnh nhập?
Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(‘ Nhap vao nhiet do 7 ngay : ’);
readln(t1,t2,t3,t4,t5,t6,t7);
Bài toán đặt vấn đề:
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
Tính nhiệt độ trung bình và kiểm tra điều kiện để tìm ra số ngày có nhiệt độ lớn hơn nhiệt độ trung bình?
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;
Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(` Nhap vao nhiet do 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;
Writeln(` Nhiet do trung binh trong tuan = `,tb : 6 : 2);
Writeln(` so ngay co nhiet do cao hon nhiet do tb `, dem);
Readln;
END.
Chương trình tổng quát
Quan sát chương trình hãy cho biết nếu muốn tính nhiệt độ trung bình của N ngày trong năm (VD: N=365) thì sẽ gặp khó khăn gì?
Khai báo quá lớn (t1,t2,t3,...,t365) và chương trình quá dài (với 365 lệnh IF) !!!!!
Để khắc phục khó khăn ta thực hiện như thế nào?
Để giải quyết vấn đề đó, ta sử dụng kiểu dữ liệu mảng 1 chiều để mô tả dữ liệu
Khái niệm: Mảng 1 chiều là dãy hữu hạn các phần tử có cùng kiểu
A
1 2 3 4 5 6 7
Trong đó:
Khi tham chiếu đến phần tử thứ i ta viết A[i].
Ví dụ: A[5] = 19.
Tên mảng : A.
Số phần tử của mảng: 7.
Ví dụ:
Kiểu dữ liệu của các phần tử: Kiểu nguyên.
19
1. Kiểu mảng một chiều
a. Khai báo mảng một chiều trong PASCAL
* Cách 1: Khai báo gián tiếp
TYPE = array[..] of ;
Var : ;
Ví dụ: TYPE nhietdo = array[1..365] of integer;
Var A: nhietdo;
Trong đó : Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên;
Chỉ số đầu chỉ số cuối;
Giữa 2 chỉ số là dấu . .
* Cách 2: Khai báo trực tiếp
Var : array[..] of ;
Var A,B : array[1..100] of real;
Ví dụ: Var nhietdo : array[1..365] of integer;
* Các thao tác xử lý trong mảng một chiều
A
n
1. Nhập số phần tử của mảng (n).
Write(‘ Nhap vao so ngay:’);
Readln(n);
2. Nhập vào giá trị của các phần tử trong mảng (A[i]).
For i:=1 to n do
Begin
write(‘nhiet do ngay thu’ ,i, ’ : ’);
readln(A[i]);
end;
Các bước
Thể hiện bằng pascal
- Nhập mảng một chiều
víi n = 7
19
17
19
21
18
20
17
Ví dụ: Nhập nhiệt độ n ngày.
- In mảng một chiều
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do Write(A[i]:5);
Mang vua nhap:
- Thông báo
- In giá trị của các phần tử
17 20 18 21 19 17 19
Kết quả in ra màn hình:
Ví dụ: In mảng vừa nhập.
* Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
- Các thao tác xử lý khác
Ví dụ: Đếm số ngày có nhiệt độ cao hơn nhiệt độ TB của tuần.
TB = 18.7
Dem=0
7
6
5
4
3
2
1
i
0
1
1
2
3
3
4
20
21
19
19
+1
+1
+1
+1
Program vd1;
Uses crt;
Var
A: Array[1..366] of integer;
i,n,dem: integer;
S,TB : real ;
BEGIN
Clrscr;
write(` Nhap vao so ngay : `) ;
readln(n) ;
S := 0 ;
For i := 1 to n do
Begin
write(` Nhap nhiet do ngay thu `,i,` : `) ;
readln(A[i]) ;
S:=S+A[i] ;
End;
TB := S/n ; dem := 0 ;
For i := 1 to n do
If A[i]>TB Then dem := dem+1;
Writeln(` Nhiet do trung binh ` ,n,` ngay = `,TB : 6 : 2) ;
Writeln(` So ngay co nhiet do cao hon nhiet do TB la: `, dem) ;
Readln ;
END.
Khai báo mảng 1 chiều
Nhập mảng 1 chiều
Tính tổng
Đếm số phần tử thỏa mãn điều kiện
Nhap vao so ngay :
7
Nhap nhiet do ngay thu 1 :
17
Nhap nhiet do ngay thu 2 :
20
Nhap nhiet do ngay thu 3 :
18
Nhap nhiet do ngay thu 4 :
21
Nhap nhiet do ngay thu 5 :
19
Nhap nhiet do ngay thu 6 :
17
Nhap nhiet do ngay thu 7 :
19
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4
Chương trình chạy và cho kết quả như sau:
Thông thường, các thao tác xử lý trong mảng một chiều đều dùng câu lệnh FOR...DO.
* Tính tổng các phần tử trong mảng thỏa mãn điều kiện cho trước
Ví dụ: Tính tổng các phần tử trong mảng chia hết cho 3.
S :=0;
For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];
S = 45
Hãy nhớ!
Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
Khai báo: tên mảng, chỉ số đầu, chỉ số cuối, kiểu phần tử.
Tham chiếu phần tử mảng:
Tên biến mảng[chỉ số phần tử]
Nhiều thao tác xử lý mảng dùng cấu trúc lặp FOR ..TO.. DO.
15 20 19 25 18 12 16
Var A:ARRAY[1..100] OF integer;
A[5] = 18
TRƯỜNG THPT HUỲNH THÚC KHÁNG
TỔ : TOÁN - TIN
GV: Võ Minh Hoàng
Câu hỏi và bài tập về nhà:
Làm các bài tập số 1, 2, 3, 4 sách giáo khoa trang, 79 SGK
Xem trước nội dung của bài 11, phần b. một số ví dụ SGK trang 56.
To be Continue
GV thực hiện: Võ Minh Hoàng
Giáo án điện tử Tin học 11
Chương IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Thời lượng: 15 tiết (7LT-6TH-2BT)
Giáo án điện tử tin học lớp 11
GV Võ Minh Hoàng
Bài 11. KIỂU MẢNG 8 tiết (4LT-4TH) từ tiết 18-25
Trong đó:
- Tiết 18-20 kiểu mảng một chiều (mục 1a. Khai báo, 1b. Một số ví dụ)
Tiết 21-22 bài tập và thực hành 3
- Tiết 23 kiểu mảng (mục 2)
- Tiết 24-25 bài tập và thực hành 4
Chuong IV: KI?U D? LI?U Cể C?U TRC
Bài 11: Ki?u M?ng
Tiết 18: TÌM HIỂU KHAI BÁO BIẾN
MẢNG MỘT CHIỀU
Giáo án điện tử tin học lớp 11
GV Võ Minh Hoàng
Mục tiêu:
Kiến thức:
Hiểu khái niệm mảng 1 chiều
Hiểu cách khai báo và truy cập đến các phần tử của mảng
2. 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 1 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
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
II. N?i dung
Bài toán đặt vấn đề:
Xác định Input, Output của bài toán và viết chương trình giải bài toán trên ?
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7.
* Dữ liệu cần tính và in ra (OUTPUT): tb, dem.
Bài toán đặt vấn đề:
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
Viết phần khai báo và câu lệnh nhập?
Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(‘ Nhap vao nhiet do 7 ngay : ’);
readln(t1,t2,t3,t4,t5,t6,t7);
Bài toán đặt vấn đề:
Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần, tính và đưa 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 của tuần ?
Tính nhiệt độ trung bình và kiểm tra điều kiện để tìm ra số ngày có nhiệt độ lớn hơn nhiệt độ trung bình?
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;
Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(` Nhap vao nhiet do 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;
Writeln(` Nhiet do trung binh trong tuan = `,tb : 6 : 2);
Writeln(` so ngay co nhiet do cao hon nhiet do tb `, dem);
Readln;
END.
Chương trình tổng quát
Quan sát chương trình hãy cho biết nếu muốn tính nhiệt độ trung bình của N ngày trong năm (VD: N=365) thì sẽ gặp khó khăn gì?
Khai báo quá lớn (t1,t2,t3,...,t365) và chương trình quá dài (với 365 lệnh IF) !!!!!
Để khắc phục khó khăn ta thực hiện như thế nào?
Để giải quyết vấn đề đó, ta sử dụng kiểu dữ liệu mảng 1 chiều để mô tả dữ liệu
Khái niệm: Mảng 1 chiều là dãy hữu hạn các phần tử có cùng kiểu
A
1 2 3 4 5 6 7
Trong đó:
Khi tham chiếu đến phần tử thứ i ta viết A[i].
Ví dụ: A[5] = 19.
Tên mảng : A.
Số phần tử của mảng: 7.
Ví dụ:
Kiểu dữ liệu của các phần tử: Kiểu nguyên.
19
1. Kiểu mảng một chiều
a. Khai báo mảng một chiều trong PASCAL
* Cách 1: Khai báo gián tiếp
TYPE
Var
Ví dụ: TYPE nhietdo = array[1..365] of integer;
Var A: nhietdo;
Trong đó : Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên;
Chỉ số đầu chỉ số cuối;
Giữa 2 chỉ số là dấu . .
* Cách 2: Khai báo trực tiếp
Var
Var A,B : array[1..100] of real;
Ví dụ: Var nhietdo : array[1..365] of integer;
* Các thao tác xử lý trong mảng một chiều
A
n
1. Nhập số phần tử của mảng (n).
Write(‘ Nhap vao so ngay:’);
Readln(n);
2. Nhập vào giá trị của các phần tử trong mảng (A[i]).
For i:=1 to n do
Begin
write(‘nhiet do ngay thu’ ,i, ’ : ’);
readln(A[i]);
end;
Các bước
Thể hiện bằng pascal
- Nhập mảng một chiều
víi n = 7
19
17
19
21
18
20
17
Ví dụ: Nhập nhiệt độ n ngày.
- In mảng một chiều
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do Write(A[i]:5);
Mang vua nhap:
- Thông báo
- In giá trị của các phần tử
17 20 18 21 19 17 19
Kết quả in ra màn hình:
Ví dụ: In mảng vừa nhập.
* Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
- Các thao tác xử lý khác
Ví dụ: Đếm số ngày có nhiệt độ cao hơn nhiệt độ TB của tuần.
TB = 18.7
Dem=0
7
6
5
4
3
2
1
i
0
1
1
2
3
3
4
20
21
19
19
+1
+1
+1
+1
Program vd1;
Uses crt;
Var
A: Array[1..366] of integer;
i,n,dem: integer;
S,TB : real ;
BEGIN
Clrscr;
write(` Nhap vao so ngay : `) ;
readln(n) ;
S := 0 ;
For i := 1 to n do
Begin
write(` Nhap nhiet do ngay thu `,i,` : `) ;
readln(A[i]) ;
S:=S+A[i] ;
End;
TB := S/n ; dem := 0 ;
For i := 1 to n do
If A[i]>TB Then dem := dem+1;
Writeln(` Nhiet do trung binh ` ,n,` ngay = `,TB : 6 : 2) ;
Writeln(` So ngay co nhiet do cao hon nhiet do TB la: `, dem) ;
Readln ;
END.
Khai báo mảng 1 chiều
Nhập mảng 1 chiều
Tính tổng
Đếm số phần tử thỏa mãn điều kiện
Nhap vao so ngay :
7
Nhap nhiet do ngay thu 1 :
17
Nhap nhiet do ngay thu 2 :
20
Nhap nhiet do ngay thu 3 :
18
Nhap nhiet do ngay thu 4 :
21
Nhap nhiet do ngay thu 5 :
19
Nhap nhiet do ngay thu 6 :
17
Nhap nhiet do ngay thu 7 :
19
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4
Chương trình chạy và cho kết quả như sau:
Thông thường, các thao tác xử lý trong mảng một chiều đều dùng câu lệnh FOR...DO.
* Tính tổng các phần tử trong mảng thỏa mãn điều kiện cho trước
Ví dụ: Tính tổng các phần tử trong mảng chia hết cho 3.
S :=0;
For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];
S = 45
Hãy nhớ!
Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
Khai báo: tên mảng, chỉ số đầu, chỉ số cuối, kiểu phần tử.
Tham chiếu phần tử mảng:
Tên biến mảng[chỉ số phần tử]
Nhiều thao tác xử lý mảng dùng cấu trúc lặp FOR ..TO.. DO.
15 20 19 25 18 12 16
Var A:ARRAY[1..100] OF integer;
A[5] = 18
TRƯỜNG THPT HUỲNH THÚC KHÁNG
TỔ : TOÁN - TIN
GV: Võ Minh Hoàng
Câu hỏi và bài tập về nhà:
Làm các bài tập số 1, 2, 3, 4 sách giáo khoa trang, 79 SGK
Xem trước nội dung của bài 11, phần b. một số ví dụ SGK trang 56.
To be Continue
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Võ Minh Hoàng
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)