Массивы
Содержание
- 1. Что такое массив?
- 2. Какие типы данных могут быть элементами массива?
- 3. Как описывается одномерный массив?
- 4. Как осуществляется доступ к элементам одномерного массива?
- 5. Пример фрагмента кода обнуления массива с именем M, содержащего 100 целых (integer) чисел.
- 6. Пример подсчета суммы элементов массива Mas, содержащего 50 вещественных (real) чисел.
- 7. Пример поиска максимального элемента в массиве из 100 целых чисел.
- 8. Пример определения наличия заданного элемента в массиве из 100 целых чисел.
- 9. Пример сортировки одномерного массива Mas вещественных чисел методом вставки.
- 10. Как в языке Паскаль осуществляется присвоение значения одного массива другому?
- 11. Как осуществляется инициализация одномерного массива?
- 12. Пример описания и использования двумерного массива в программе?
- 13. Пример описания и использования двумерного массива в программе?
- 14. Пример инициализации двумерного массива.
- 15. Пример инициализации многомерного массива.
- 16. Пример обнуления двумерной матрицы целых чисел размером 10*10.
- 17. Пример поиска заданного элемента в матрице размером 20*20 целых чисел.
- 18. Пример определения минимального значения в матрице вещественных чисел.
- 19. Пример вычисления суммы элементов матрицы вещественных чисел.
- 20. Пример описания и использования одномерного массива структур типа BOOK (КНИГА).
- 21. Пример описания и использования массива строк (тип string).
- 22. Пример описания и использования массива классов
1. Что такое массив?
Массивы представляют собой ограниченное упорядоченное множество однотипных величин. Каждая отдельная величина называется элементом (компонентной) массива.
⇑
2. Какие типы данных могут быть элементами массива?
Тип элементов массива может быть любым, принятым в языке Паскаль, кроме файлового типа. Этот тип называется базовым типом.
⇑
3. Как описывается одномерный массив?
Согласно синтаксису языка Паскаль, массив можно описывать двумя способами. Первый способ – в разделе описания переменных var. Второй способ – с использованием описания собственного типа в разделе type.
Способ 1. Описание одномерного массива в разделе описания переменных var.
var m1:array [1..100] of integer; // массив из 100 целых чисел m2:array [1..50] of real; // массив из 50 вещественных чисел m3:array [-20..30] of char; // массив из 51 символа m4:array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean
Способ 2. Описание одномерного массива с использованием раздела описания type.
type TM1 = array [1..100] of integer; // массив из 100 целых чисел TM2 = array [1..50] of real; // массив из 50 вещественных чисел TM3 = array [-20..30] of char; // массив из 51 символа TM4 = array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean var m1:TM1; m2:TM2; m3:TM3; m4:TM4;
⇑
4. Как осуществляется доступ к элементам одномерного массива?
Пусть имеем следующее описание:
var m1:array [1..100] of integer; // массив из 100 целых чисел m2:array [1..50] of real; // массив из 50 вещественных чисел m3:array [-20..30] of char; // массив из 51 символа m4:array [5..5] of boolean; // массив, который содержит 1 элемент типа boolean
Тогда чтобы присвоить значение конкретному элементу массива можно написать:
m1[15] := 289; // в 15-й элемент массива заносится число 289 m2[50] := -3.85; // в 50-й элемент массива заносится число -3.85 m3[-8] := 'k'; m4[5] := true;
⇑
5. Пример фрагмента кода обнуления массива с именем M, содержащего 100 целых (integer) чисел.
var M:array [1..100] of integer; i:integer; begin for i := 1 to 100 do M[i]:=0; end;
⇑
6. Пример подсчета суммы элементов массива Mas, содержащего 50 вещественных (real) чисел.
var Mas:array [1..50] of real; // описание массива i:integer; sum:real; begin ... sum := 0; // обнуление суммы for i:=1 to 50 do // поиск суммы sum := sum + Mas[i]; ... end;
⇑
7. Пример поиска максимального элемента в массиве из 100 целых чисел.
var Mas:array [1..100] of integer; i:integer; max:integer; // max - максимальное значение begin ... max:=Mas[1]; for i:=2 to 100 do if max<Mas[i] then max:=Mas[i]; ... end;
⇑
8. Пример определения наличия заданного элемента в массиве из 100 целых чисел.
В примере массив элементов содержится в переменной Mas, искомый элемент содержится в переменной num.
var Mas:array [1..100] of integer; i:integer; num:integer; // искомый элемент f_is:boolean; begin ... f_is:=false; for i:=1 to 100 do if num=Mas[i] then f_is:=true; ... end;
⇑
9. Пример сортировки одномерного массива Mas вещественных чисел методом вставки.
Фрагмент кода, который сортирует массив целых чисел, в котором максимальное количество элементов равно MaxItems. Элементы сортируются в порядке убывания.
const MaxItems = 100; var M:array [1..MaxItems] of integer; i,j:integer; t:integer; begin ... for i:=1 to MaxItems-1 do for j:=i downto 1 do if M[j]<M[j+1] then begin t:=M[j]; // обмен местами элементов M[j] и M[j+1] M[j]:=M[j+1]; M[j+1]:=t; end; ... end;
⇑
10. Как в языке Паскаль осуществляется присвоение значения одного массива другому?
Фрагмент кода, в котором массиву M2 присваивается значение массива M1. Массивы должны быть одного типа.
var M1, M2:array [1..MaxItems] of integer; begin ... M2:=M1; ... end;
⇑
11. Как осуществляется инициализация одномерного массива?
Инициализация одномерного массива осуществляется в разделе описания констант const.
В следующем фрагменте кода инициализируются два массива:
- массив из 3 элементов, которые являются вещественными числами;
- массив из 5 элементов, которые являются целыми числами.
const mr:array [1..3] of real = (0.45, 9.56, 3.7); // массив вещественных чисел mi:array [1..5] of integer = (2, -30, 0, -100, 23); // массив целых чисел
⇑
12. Пример описания и использования двумерного массива в программе?
Как и в случае с одномерными массивами существует два способа описания двумерных массивов.
Пример 1. Описание двумерного массива непосредственно в разделе var.
var Matr1:array [1..5, 1..6] of real; // матрица вещественных чисел размером 5*6 Matr2:array [1..20, -5..10] of real; // матрица вещественных чисел Matrix:array[1..10,1..10] of integer; // матрица целых чисел размером 10*10
Пример 2. Описание с использованием раздела type.
type TMatrReal_5_6 = array [1..5, 1..6] of real; TMatrReal = array [1..20, -5..10] of real; TMatrInt = array [1..10, 1..10] of integer; var Matr1:TMatrReal_5_6; // матрица вещественных чисел размером 5*6 Matr2:TMatrReal; // матрица вещественных чисел Matrix:TMatrInt; // матрица целых чисел размером 10*10
Пример присвоения значений элементам двумерного массива
Matr1[2, 3]:=2.93; // 2-я строка и 3-й столбец Matr2[20,-3]:=3.23; // строка с индексом 20 и столбец с индексом -3 Matrix[2,8]:=209;
При обращении в квадратных дужках первым указывается номер строки, вторым – номер столбца.
⇑
13. Примеры описания многомерных массивов.
В данном примере описывается трехмерный и четырехмерный массивы чисел.
type TM3 = array[1..5, 1..10, 1..20] of integer; // трехмерный массив целых чисел TM4 = array[1..2, 1..3, 1..5, 1..10] of real; // четырехмерный массив вещественных чисел var M3:TM3; // переменная типа TM3 M4:TM4; // переменная типа TM4 begin ... M3[2,3,6]:=23; M4[2,1,3,9]:=398.93; ... end;
⇑
14. Пример инициализации двумерного массива.
В следующем примере инициализируются двумерные массивы целых чисел которые описываются разными способами. Согласно синтаксису языка Паскаль инициализация массивов должна осуществляться в разделе описания констант (const).
type TMatr_2_2 = array [1..2, 1..2] of integer; const Matr23:array[1..2,1..3] of integer = ( (33, -6, 55), (20, 18, -9) ); Matr22:TMatr_2_2 = ((4, -6), (-3, 7));
⇑
15. Пример инициализации многомерного массива.
Инициализация трехмерного массива целых чисел:
type TM3 = array [1..2,1..3,1..4] of integer; const Mas3 : TM3 = ( (( 1, 2, 3, 4), ( 2, 1, 6, 5), ( 1, 4, 2, 3)), (( 1, 2, 0, 3), (-1,-2, 5, 2), ( 3, 1, 2, 4)) );
⇑
16. Пример обнуления двумерной матрицы целых чисел размером 10*10.
В данном примере обнуляется матрица с именем Matr.
var Matr:array [1..10, 1..10] of integer; // описание матрицы i, j:integer; begin ... // обнуление матрицы for i := 1 to 10 do for j := 1 to 10 do Matr[i,j]:=0; ... end;
⇑
17. Пример поиска заданного элемента в матрице размером 20*20 целых чисел.
В данном примере num – искомый элемент, f_is – флажок, который определяет наличие элемента в матрице. Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..20, 1..20] of integer; f_is:boolean; num:integer; // искомое число i, j:integer; begin ... f_is:=false; // сначала, считаем что элемента нет в матрице for i := 1 to 20 do for j := 1 to 20 do if Matr[i,j]=num then f_is:=true; // элемент найден ... end;
⇑
18. Пример определения минимального значения в матрице вещественных чисел.
В данном примере искомое минимальное значение сохраняется в переменной min. Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..10, 1..10] of real; min:real; // искомое минимальное значение i, j:integer; begin ... min:=Matr[1,1]; // принять, что min - это один из элементов матрицы for i := 1 to 10 do for j := 1 to 10 do if Matr[i,j]<min then min:=Matr[i,j]; ... end;
⇑
19. Пример вычисления суммы элементов матрицы вещественных чисел.
В данном примере сумма элементов матрицы сохраняется в переменной sum. Считается, что матрица Matr уже заполнена значениями.
var Matr:array [1..10, 1..10] of real; suma:real; // искомая сумма элементов матрицы i, j:integer; begin ... suma := 0; for i := 1 to 10 do for j := 1 to 10 do suma := suma + Matr[i,j]; ... end;
⇑
20. Пример описания и использования одномерного массива структур типа BOOK (КНИГА).
Пусть имеем следующее описание:
type // описание структуры типа TBOOK (КНИГА) TBOOK = record Title:string; // Название книги Author:string; // Имя автора книги year:integer; // год издания price:real; // стоимость книги end; var BOOKS:array [1..100] of TBOOK; // массив из 100 структур типа TBOOK
Пример доступа к элементам массива структур BOOKS. В данном примере в элемент с индексом 3 массива BOOKS заносятся данные.
... begin ... BOOKS[3].Title := 'Title of book 3'; BOOKS[3].Author := 'Author of book 3'; BOOKS[3].year := 1993; BOOKS[3].price := 23.45; ... end;
⇑
21. Пример описания и использования массива строк (тип string).
var MasStr:array [1..10] of string; // описание массива строк begin ... // в 3-й элемент массива записать текст MasStr[3] := 'Array of text'; ... end;
⇑
22. Пример описания и использования массива классов.
В данном примере описывается класс с именем TMyClass. В классе объявлены две переменные с именами x и y. Доступ к этим переменным есть общедоступным (public).
type // описание класса TMyClass = class public x:integer; // внутренние переменные класса y:integer; end; // описание массива классов TArrayClass = array [1..10] of TMyClass; ... var MasClass:TArrayClass; ... begin ... // заполнить значения класса с индексом 2 MasClass[2].x:=25; MasClass[2].y:=30; ... end;