Bài 11. Kiểu mảng
Chia sẻ bởi Vũ Văn Sáng |
Ngày 10/05/2019 |
198
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ương IV:
Kiểu dữ liệu có cấu trúc
Tiết 19
Kiểu mảng
1. Kiểu mảng một chiều. ?
2. Kiểu mảng hai chiều. ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều. ?
a) Khai báo. ?
b) Một số ví dụ. ?
* Củng cố bài: ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
- Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu.
- Mảng được đặt tên và mỗi phần tử của mảng có một chỉ số.
- Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của mảng.
- Các NNLT ( trong đó có Pascal) có các quy tắc, cách thức cho phép xác định:
+ Tên kiểu mảng một 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.
+ Cách tham chiếu đến phần tử của mảng
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
- 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à đưa ra màn hình nhiệt độ trung bình của cả 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.
- Chương trình viết trong Pascal:
*CT dùng các biến đơn: ?
* Chương trình có sử dụng kiểu dữ liệu mảng một chiều để mô tả dữ liệu. CT giải bài toán với N ngày:?
Program Nhietdo_tuan;
Uses crt;
Var t1, t2, t3, t4, t5, t6, t7, Tb: real;
dem: integer ;
BEGIN
Write(` Nhap nhiet do cho 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 TB cua tuan:`, Tb :6:2);
Writeln(` So ngay co nhiet do cao hon TB:`, dem);
Readln;
END.
?
Program Nhietdongay;
Const max=366;
Type Kmang = array[1..max] of real;
Var Nhietdo: Kmang;
dem, i, N: Byte;
Tong; Tbinh: real;
BEGIN
Write(` Nhap so ngay:`); Radln(N);
Tong:=0;
For i:= 1 to N do
Begin
Write(` Nhiet do ngay thu`, i,`:`); Readln(Nhietdo[i]);
Tong:= Tong +Nhietdo[i];
end;
dem:=0;
Tbinh:= Tong/N;
For i:= 1 to N do
If Nhietdo[i] > Tbinh then dem:= dem+1;
Writeln(` Nhiet do TB cua `, N,` ngày la:`, Tbinh: 8:3);
Writeln(` So ngay co nhiet do cao hon nhiet do TB la:`, dem);
Readln;
END. ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
Trong phần khai báo của chương trình trên đã khai báo (định nghĩa) kiểu mảng một chiều (sau từ khoá Type), sau đó khai báo biến mảng một chiều là Nhietdo ( sau từ khoá var):
Type Kmang = array[1..max] of real;
Var Nhietdo: Kmang;
Khai báo (đn) kiểu mảng
một chiều gồm
max số thực
Khai báo biến mảng
Nhietdo qua kiểu mảng
1. Kiểu mảng một chiều.
a) Khai báo:
* Cách 1: Khai báo trực tiếp biến mảng một chiều:
Cú pháp:
var < tên biến mảng>: array [kiểu chỉ số] of < kiểu phần tử>
* Cách 2: Khai báo gián tiếp biến mảng sau khi khai báo kiểu mảng một chiều:
Cú pháp:
Type = array [kiểu chỉ số] of < kiểu phần tử>;
var < tên biến mảng> : < tên kiểu mảng>;
* Giải thích:
- kiểu chỉ số: Thường là đoạn số nguyên liên tục dạng n1..n2 ; n1, n2 là hằng hoặc biểu thức nguyên xác định chỉ số đầu (n1) và chỉ số cuối (n2); n1- kiểu phần tử: là kiểu của các phần tử của mảng.
- tên kiểu mảng; tên biến mảng: Do người lập trình đặt, tuân theo quy tắc đặt tên.
? ?
1. Kiểu mảng một chiều.
a) Khai báo:
Vận dụng :
1.Khai báo biến mảng nào sau đây là đúng?
A. Var a, b: array[1..100] of integer ;
B. Var c= Array [ 1..20] of byte;
C. Var d : array [ 1...20] of real;
D. Var x.y: array [ 1..50] of integer ;
2. Khai báo như sau đúng hay sai vì sao?
Type mang = array [ 1..50] of integer ;
Var x, y= mang;
?
1. Kiểu mảng một chiều.
a) Khai báo:
* Tham chiếu tới phần tử của mảng một chiều:
xác định bởi tên biến mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ].
Ví dụ:
Nhietdo[15]
Nhietdo[146]
Củng cố bài và công việc về nhà.
1. Có thể khai báo biến mảng một chiều theo những cách nào? ?
2. Giả thiết a và b là hai mảng một chiều đã được khai báo như sau:
Var a,b: array[1..20] of integer;
Giả thiết a[i] và b[i] ( I nhận giá trị từ 1 đến 20) đã được xác định . Xét đoạn chương trình sau:
dem := 0;
For i:=1 to 20 do
if a[i] <> b[i] then dem:=dem+1;
Writeln(dem);
Khẳng định nào sau đây là đúng?
A. Đoạn chương trình trên đếm số phần tử của a khác các phần tử của b.
B. Đoạn chương trình trên đếm số phần tử khác nhau của a và b.
C. Đoạn chương trình trên đếm số cặp phần tử tương ứng khác nhau của a và b.
D. Cả A, B, C đều sai.
Củng cố bài và công việc về nhà.
+ Nắm vững cú pháp khai báo biến mảng một chiều.
+ Ôn lại các thuật toán sắp xếp, tìm kiểm đã học ở lớp 10.
+ Tìm hiểu trước bài tập trong ví dụ 1, 2, 3 và phần mảng 2 chiều.
+ Làm các bài tập : 4.1; 4.4; 4.6; 4.7; 4.9 SBTTin11.
Stop
Kiểu mảng một chiều.
b. Một số ví dụ.
1. Ví dụ 1: Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN, mỗi số đều không vượt quá 500. Đưa ra màn hình chỉ số của phần tử lớn nhất trong dãy đã cho? ( nếu có nhiều phần tử lớn nhất thì chỉ cần đưa ra một trong số chúng).
1. Ví dụ 1:
Thuật toán:
B1: Nhập N và dãy số nguyên, dương A1, A2.AN.
B2: Max?A1; i?2;
B3: Nếu i>N thì đưa ra max rồi kết thúc.
B4:
B4.1: Nếu Ai> max thì max?Ai.
B4.2: i?i+1;
Stop - Xem CTVD1
2. Ví dụ 2: ( Sắp xếp dãy số nguyên bằng thuật toán tráo đổi).
Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN, mỗi số đều không vượt quá 500. Đưa ra màn hình dãy A không giảm.
( * Nhắc lại thuật toán lớp 10?)
Stop - Xem CTVD2.
Ví dụ 3: ( Thuật toán tìm kiếm nhị phân)
Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN,và số nguyên k. Đưa ra màn hình chỉ số i mà Ai=k hoặc thông báo " Khong tim thay" nếu không có số hạng nào của A bằng k.
Ví dụ 3:
Thuật toán: Xem SGKTin học 10 hoặc SGKTin lớp 11 (58).
Stop - Xem CTVD3
Củng cố bài.
+ Tại sao tham chiếu tới mảng một chiều hay sử dụng cấu trúc lặp For - do?
+
Kiểu dữ liệu có cấu trúc
Tiết 19
Kiểu mảng
1. Kiểu mảng một chiều. ?
2. Kiểu mảng hai chiều. ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều. ?
a) Khai báo. ?
b) Một số ví dụ. ?
* Củng cố bài: ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
- Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu.
- Mảng được đặt tên và mỗi phần tử của mảng có một chỉ số.
- Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của mảng.
- Các NNLT ( trong đó có Pascal) có các quy tắc, cách thức cho phép xác định:
+ Tên kiểu mảng một 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.
+ Cách tham chiếu đến phần tử của mảng
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
- 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à đưa ra màn hình nhiệt độ trung bình của cả 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.
- Chương trình viết trong Pascal:
*CT dùng các biến đơn: ?
* Chương trình có sử dụng kiểu dữ liệu mảng một chiều để mô tả dữ liệu. CT giải bài toán với N ngày:?
Program Nhietdo_tuan;
Uses crt;
Var t1, t2, t3, t4, t5, t6, t7, Tb: real;
dem: integer ;
BEGIN
Write(` Nhap nhiet do cho 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 TB cua tuan:`, Tb :6:2);
Writeln(` So ngay co nhiet do cao hon TB:`, dem);
Readln;
END.
?
Program Nhietdongay;
Const max=366;
Type Kmang = array[1..max] of real;
Var Nhietdo: Kmang;
dem, i, N: Byte;
Tong; Tbinh: real;
BEGIN
Write(` Nhap so ngay:`); Radln(N);
Tong:=0;
For i:= 1 to N do
Begin
Write(` Nhiet do ngay thu`, i,`:`); Readln(Nhietdo[i]);
Tong:= Tong +Nhietdo[i];
end;
dem:=0;
Tbinh:= Tong/N;
For i:= 1 to N do
If Nhietdo[i] > Tbinh then dem:= dem+1;
Writeln(` Nhiet do TB cua `, N,` ngày la:`, Tbinh: 8:3);
Writeln(` So ngay co nhiet do cao hon nhiet do TB la:`, dem);
Readln;
END. ?
1. Kiểu mảng một chiều.
* Giới thiệu tổng quát về mảng một chiều:
Trong phần khai báo của chương trình trên đã khai báo (định nghĩa) kiểu mảng một chiều (sau từ khoá Type), sau đó khai báo biến mảng một chiều là Nhietdo ( sau từ khoá var):
Type Kmang = array[1..max] of real;
Var Nhietdo: Kmang;
Khai báo (đn) kiểu mảng
một chiều gồm
max số thực
Khai báo biến mảng
Nhietdo qua kiểu mảng
1. Kiểu mảng một chiều.
a) Khai báo:
* Cách 1: Khai báo trực tiếp biến mảng một chiều:
Cú pháp:
var < tên biến mảng>: array [kiểu chỉ số] of < kiểu phần tử>
* Cách 2: Khai báo gián tiếp biến mảng sau khi khai báo kiểu mảng một chiều:
Cú pháp:
Type
var < tên biến mảng> : < tên kiểu mảng>;
* Giải thích:
- kiểu chỉ số: Thường là đoạn số nguyên liên tục dạng n1..n2 ; n1, n2 là hằng hoặc biểu thức nguyên xác định chỉ số đầu (n1) và chỉ số cuối (n2); n1
- tên kiểu mảng; tên biến mảng: Do người lập trình đặt, tuân theo quy tắc đặt tên.
? ?
1. Kiểu mảng một chiều.
a) Khai báo:
Vận dụng :
1.Khai báo biến mảng nào sau đây là đúng?
A. Var a, b: array[1..100] of integer ;
B. Var c= Array [ 1..20] of byte;
C. Var d : array [ 1...20] of real;
D. Var x.y: array [ 1..50] of integer ;
2. Khai báo như sau đúng hay sai vì sao?
Type mang = array [ 1..50] of integer ;
Var x, y= mang;
?
1. Kiểu mảng một chiều.
a) Khai báo:
* Tham chiếu tới phần tử của mảng một chiều:
xác định bởi tên biến mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ].
Ví dụ:
Nhietdo[15]
Nhietdo[146]
Củng cố bài và công việc về nhà.
1. Có thể khai báo biến mảng một chiều theo những cách nào? ?
2. Giả thiết a và b là hai mảng một chiều đã được khai báo như sau:
Var a,b: array[1..20] of integer;
Giả thiết a[i] và b[i] ( I nhận giá trị từ 1 đến 20) đã được xác định . Xét đoạn chương trình sau:
dem := 0;
For i:=1 to 20 do
if a[i] <> b[i] then dem:=dem+1;
Writeln(dem);
Khẳng định nào sau đây là đúng?
A. Đoạn chương trình trên đếm số phần tử của a khác các phần tử của b.
B. Đoạn chương trình trên đếm số phần tử khác nhau của a và b.
C. Đoạn chương trình trên đếm số cặp phần tử tương ứng khác nhau của a và b.
D. Cả A, B, C đều sai.
Củng cố bài và công việc về nhà.
+ Nắm vững cú pháp khai báo biến mảng một chiều.
+ Ôn lại các thuật toán sắp xếp, tìm kiểm đã học ở lớp 10.
+ Tìm hiểu trước bài tập trong ví dụ 1, 2, 3 và phần mảng 2 chiều.
+ Làm các bài tập : 4.1; 4.4; 4.6; 4.7; 4.9 SBTTin11.
Stop
Kiểu mảng một chiều.
b. Một số ví dụ.
1. Ví dụ 1: Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN, mỗi số đều không vượt quá 500. Đưa ra màn hình chỉ số của phần tử lớn nhất trong dãy đã cho? ( nếu có nhiều phần tử lớn nhất thì chỉ cần đưa ra một trong số chúng).
1. Ví dụ 1:
Thuật toán:
B1: Nhập N và dãy số nguyên, dương A1, A2.AN.
B2: Max?A1; i?2;
B3: Nếu i>N thì đưa ra max rồi kết thúc.
B4:
B4.1: Nếu Ai> max thì max?Ai.
B4.2: i?i+1;
Stop - Xem CTVD1
2. Ví dụ 2: ( Sắp xếp dãy số nguyên bằng thuật toán tráo đổi).
Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN, mỗi số đều không vượt quá 500. Đưa ra màn hình dãy A không giảm.
( * Nhắc lại thuật toán lớp 10?)
Stop - Xem CTVD2.
Ví dụ 3: ( Thuật toán tìm kiếm nhị phân)
Lập trình nhập một dãy A gồm N (N được nhập từ bàn phím và N? 250) số nguyên, dương A1, A2.AN,và số nguyên k. Đưa ra màn hình chỉ số i mà Ai=k hoặc thông báo " Khong tim thay" nếu không có số hạng nào của A bằng k.
Ví dụ 3:
Thuật toán: Xem SGKTin học 10 hoặc SGKTin lớp 11 (58).
Stop - Xem CTVD3
Củng cố bài.
+ Tại sao tham chiếu tới mảng một chiều hay sử dụng cấu trúc lặp For - do?
+
* 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ũ Văn Sáng
Dung lượng: |
Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)