Bài 11. Kiểu mảng
Chia sẻ bởi Cop Cop |
Ngày 10/05/2019 |
86
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:
Với những kiểu dữ liệu chuẩn làm thế nào để :
Lưu trữ và xử lý một dãy số ?
Lưu trữ và xử lý họ và tên của một người ?
Lưu trữ và xử lý bảng kết quả thi tốt nghiệp ?
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Các kiểu dữ liệu chuẩn không đủ để
biểu diễn dữ liệu các bài toán trong
thực tế . Các ngôn ngữ lập trình có
các quy tắc cách thức cho phép người
lập trình xây dựng những kiểu dữ
liệu phức tạp từ những kiểu dữ liệu
đã có.
Kiểu mảng ;
Kiểu xâu ;
Kiểu bản ghi .
Bài 11: KIỂU MẢNG
KIỂU MẢNG MỘT CHIỀU
1 2 3 4 5
1
2
3
4
5
1 2 3 4 5
KIỂU MẢNG HAI CHIỀU
Program nhietdo_tuan;
Var t1 , t2 , t3 , t4 , t5 , t6 , t7 , Tb :real ;
dem : integer ;
Begin
Writeln(‘nhap vao nhiet do của 7 ngày:’);
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 tuan:’, tb:4:2);
Writeln(‘so ngay nhiet do cao hon trung binh:’, dem);
readln
End.
Khi cần giải bài toán này với N ngày(N khá lớn) thì làm cách tương tự có những hạn chế nào ?
Kiểu mảng một chiều.
Xét ví dụ sau:
Để khắc phục những hạn chế trên, người ta thường ghép chung n biến lưu trữ nhiệt độ n gày trên thành một dãy và đặt cho chúng chung một tên đồng thời đánh cho mỗi phần tử trong dãy một chỉ số .
1 2 3 4 5 6
Xét một dãy A gồm các số nguyên dương sau :
Dãy A gồm 6 phần tử đều có là số nguyên dương,
mỗi một phần tử trong dãy A đều có chỉ số riêng.
Chỉ số của từng phần tử dãy A
Giá trị của từng phần tử của dãy A
Khái niệm :
Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mổi phần tử của nó có một chỉ số.
Những yếu tố cần xác định để mô tả mảng một chiều:
- Xác định kiểu của các phần tử.
- Cách đánh số của các phần tử.
Khai báo: có 2 cách.
Cách 1: Khai báo trực tiếp biến mảng một chiều:
Cú pháp: Var:array[kiểu chỉ số] of ;
Trong đó:
- Tên biến mảng: do người lập trình đặt không quá 127 kí tự, bao gồm chữ số, chữ cái, hoặc dấu gạch dưới.
- Kiểu chỉ số :thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1,n2 là các hằng hoặc kiểu biểu thức nguyên, xác định chỉ số đầu và chỉ số cuối(n1<=n2).
- Kiểu phần tử là kiểu các phần tử của mảng.
Ví dụ: var nhietdo: array[1..365] of integer;
Khai báo :có 2 cách.
Cách 2: khai báo gián tiếp mảng một chiều:
Cú pháp:
Type=array[kiểu chỉ số] of ;
Var: ;
Trong đó: tên kiểu mảng, tên biến mảng, kiểu chỉ số, kiểu phần tử được đặt theo quy tắc giống như ở cách 1.
Ví dụ: type nhietdo = array [1..365] of integer;
Var A : nhietdo;
Một số ví dụ về khai báo mảng một chiều
Arrayreal = array[-100..200] of real;
Arrayboolean = array[-n+1 .. n+1]of boolean;
ArrayInt = array[-100 .. 0] of integer;
Trong đó n là hằng nguyên .
- Cho biết tên của biến mảng trong các mảng trên ?
- Kiểu mảng trên có bao nhiêu phần tử ?
- Mỗi phần tử của mảng thuộc kiểu gì ?
Một học sinh định viết một chương trình tính trung bình điểm tổng kết môn toán các năm học từ lớp 1 đến lớp 10 của chính mình , nếu dùng một mảng để ghi nhận dữ liệu về điểm tổng kết môn toán các năm học đó thì cần khai báo kiểu dữ liệu này ra sao ? (tên biến mảng là dtb , tên kiểu mảng là dtbreal).
Đáp án:
Cách 1:
Var dtb = array[1..10] of real;
Cách 2 :
Type dtbreal = array[1..10] of real;
Var dtb= dtbreal;
2 3 4 5 6 7
Cú pháp :[chỉ số phần tử]
Ví dụ :Tham chiếu đến phần tử thứ 6 và in ra màn hình mảng giá trị phần tử thứ 6 của mảng Nhietdo trên :
Đáp án:
Nhietdo[6]
Writeln(nhietdo[6]);
Xét mảng Nhietdo:
In ra màn hình kết quả là 31
Cú pháp nhập mảng một chiều :
For:= to do
Readln([chỉ số phần tử]);
Cú pháp xuất mảng một chiều :
For:= to do
Writeln([chỉ số phần tử]);
Program Nhietdo_Nngay;
const Max = 366;
Type kmang1= array[1..Max] of real;
Var Nhietdo : kmang1;
dem , i , N : integer;
Tong , Trung_binh: real;
Begin
write(‘Nhap so ngay: ’) ; reaadln(N);
Tong:= 0;
for i:= 0 to N do
Begin
write(‘Nhap nhiet do ngay ’ , i , ‘: ’);
readln(Nhietdo[i]);
Tong:= Tong + Nhietdo[i];
End;
Dem:= 0 ;
Trung_binh:= Tong / N ;
For i:= 1 to N do
if Nhietdo[i]> Trung_binh then dem:= dem +1;
Writeln(‘Nhiet do trung binh ’, N , ‘ ngay: ’, Trung_binh:8:3);
Writeln(‘So ngay nhiet do cao hon trung binh: ’, dem);
Readln
End.
{khai báo mảng một chiều
nhập mảng một chiều
Tính tổng
{xuất nhiệt độ TB
Và tổng
CỦNG CỐ BÀI HỌC
MẢNG MỘT CHIỀU
KHÁI NIỆM
KHAI BÁO
THAM CHIẾU
NHẬP VÀ XUẤT
TRỰC TIẾP
GIÁN TIẾP
Lưu trữ và xử lý một dãy số ?
Lưu trữ và xử lý họ và tên của một người ?
Lưu trữ và xử lý bảng kết quả thi tốt nghiệp ?
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Các kiểu dữ liệu chuẩn không đủ để
biểu diễn dữ liệu các bài toán trong
thực tế . Các ngôn ngữ lập trình có
các quy tắc cách thức cho phép người
lập trình xây dựng những kiểu dữ
liệu phức tạp từ những kiểu dữ liệu
đã có.
Kiểu mảng ;
Kiểu xâu ;
Kiểu bản ghi .
Bài 11: KIỂU MẢNG
KIỂU MẢNG MỘT CHIỀU
1 2 3 4 5
1
2
3
4
5
1 2 3 4 5
KIỂU MẢNG HAI CHIỀU
Program nhietdo_tuan;
Var t1 , t2 , t3 , t4 , t5 , t6 , t7 , Tb :real ;
dem : integer ;
Begin
Writeln(‘nhap vao nhiet do của 7 ngày:’);
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 tuan:’, tb:4:2);
Writeln(‘so ngay nhiet do cao hon trung binh:’, dem);
readln
End.
Khi cần giải bài toán này với N ngày(N khá lớn) thì làm cách tương tự có những hạn chế nào ?
Kiểu mảng một chiều.
Xét ví dụ sau:
Để khắc phục những hạn chế trên, người ta thường ghép chung n biến lưu trữ nhiệt độ n gày trên thành một dãy và đặt cho chúng chung một tên đồng thời đánh cho mỗi phần tử trong dãy một chỉ số .
1 2 3 4 5 6
Xét một dãy A gồm các số nguyên dương sau :
Dãy A gồm 6 phần tử đều có là số nguyên dương,
mỗi một phần tử trong dãy A đều có chỉ số riêng.
Chỉ số của từng phần tử dãy A
Giá trị của từng phần tử của dãy A
Khái niệm :
Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mổi phần tử của nó có một chỉ số.
Những yếu tố cần xác định để mô tả mảng một chiều:
- Xác định kiểu của các phần tử.
- Cách đánh số của các phần tử.
Khai báo: có 2 cách.
Cách 1: Khai báo trực tiếp biến mảng một chiều:
Cú pháp: Var
Trong đó:
- Tên biến mảng: do người lập trình đặt không quá 127 kí tự, bao gồm chữ số, chữ cái, hoặc dấu gạch dưới.
- Kiểu chỉ số :thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1,n2 là các hằng hoặc kiểu biểu thức nguyên, xác định chỉ số đầu và chỉ số cuối(n1<=n2).
- Kiểu phần tử là kiểu các phần tử của mảng.
Ví dụ: var nhietdo: array[1..365] of integer;
Khai báo :có 2 cách.
Cách 2: khai báo gián tiếp mảng một chiều:
Cú pháp:
Type
Var
Trong đó: tên kiểu mảng, tên biến mảng, kiểu chỉ số, kiểu phần tử được đặt theo quy tắc giống như ở cách 1.
Ví dụ: type nhietdo = array [1..365] of integer;
Var A : nhietdo;
Một số ví dụ về khai báo mảng một chiều
Arrayreal = array[-100..200] of real;
Arrayboolean = array[-n+1 .. n+1]of boolean;
ArrayInt = array[-100 .. 0] of integer;
Trong đó n là hằng nguyên .
- Cho biết tên của biến mảng trong các mảng trên ?
- Kiểu mảng trên có bao nhiêu phần tử ?
- Mỗi phần tử của mảng thuộc kiểu gì ?
Một học sinh định viết một chương trình tính trung bình điểm tổng kết môn toán các năm học từ lớp 1 đến lớp 10 của chính mình , nếu dùng một mảng để ghi nhận dữ liệu về điểm tổng kết môn toán các năm học đó thì cần khai báo kiểu dữ liệu này ra sao ? (tên biến mảng là dtb , tên kiểu mảng là dtbreal).
Đáp án:
Cách 1:
Var dtb = array[1..10] of real;
Cách 2 :
Type dtbreal = array[1..10] of real;
Var dtb= dtbreal;
2 3 4 5 6 7
Cú pháp :
Ví dụ :Tham chiếu đến phần tử thứ 6 và in ra màn hình mảng giá trị phần tử thứ 6 của mảng Nhietdo trên :
Đáp án:
Nhietdo[6]
Writeln(nhietdo[6]);
Xét mảng Nhietdo:
In ra màn hình kết quả là 31
Cú pháp nhập mảng một chiều :
For
Readln(
Cú pháp xuất mảng một chiều :
For
Writeln(
Program Nhietdo_Nngay;
const Max = 366;
Type kmang1= array[1..Max] of real;
Var Nhietdo : kmang1;
dem , i , N : integer;
Tong , Trung_binh: real;
Begin
write(‘Nhap so ngay: ’) ; reaadln(N);
Tong:= 0;
for i:= 0 to N do
Begin
write(‘Nhap nhiet do ngay ’ , i , ‘: ’);
readln(Nhietdo[i]);
Tong:= Tong + Nhietdo[i];
End;
Dem:= 0 ;
Trung_binh:= Tong / N ;
For i:= 1 to N do
if Nhietdo[i]> Trung_binh then dem:= dem +1;
Writeln(‘Nhiet do trung binh ’, N , ‘ ngay: ’, Trung_binh:8:3);
Writeln(‘So ngay nhiet do cao hon trung binh: ’, dem);
Readln
End.
{khai báo mảng một chiều
nhập mảng một chiều
Tính tổng
{xuất nhiệt độ TB
Và tổng
CỦNG CỐ BÀI HỌC
MẢNG MỘT CHIỀU
KHÁI NIỆM
KHAI BÁO
THAM CHIẾU
NHẬP VÀ XUẤT
TRỰC TIẾP
GIÁN TIẾP
 
Hãy thử nhiều lựa chọn khác
* 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ẻ: Cop Cop
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)