- Массивы
- Оглавление
- Массивы
- 1. Одномерные массивы
- 1.1. Заполнение массива
- 1.2. Вывод массива на экран
- 1.3. Работа с массивами
- 2. Двумерные массивы
- 2.1. Заполнение матрицы
- 2.2. Вывод матрицы на экран
- 2.3. Работа с матрицами
- Одномерные массивы. Способы описания и заполнения одномерных массивов
- Ключевые слова:
- Описание и заполнение одномерного массива
- 1 Описание массива в разделе переменных VAR:
- 2 Описание массива в разделе описания типов TYPE:
Массивы
Сайт: | Электронные курсы ТПУ |
Курс: | Информационные технологии 1 |
Книга: | Массивы |
Напечатано:: | Гость |
Дата: | Суббота, 20 Ноябрь 2021, 07:35 |
Оглавление
Массивы
Все простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип.
С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений.
Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем.
Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
Массиву присваивается имя, посредством которого можно ссылаться на него как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента:
Чтобы использовать массивы в программах, нужно их описать в разделе описаний. Тип массива не является стандартным, поэтому его необходимо описать в части описания типов. Описание типа массива определяет его имя, размер массива и тип данных:
type =array[ ] of ;
Далее, в перечне переменных указывается имя массива и через двоеточие указывается имя нового типа данных:
Массив может быть описан и без представления типа в разделе описания типов данных:
var :array[ ] of ;
Этот вариант описания короче, но в некоторых случаях, когда описание переменных типа массив встречается несколько раз в различных частях программы, необходимо описание этого типа отдельно, как приведено в первом варианте.
Чаще всего в качестве типа индекса используется интервальный целый тип.
1. Одномерные массивы
Линейный (одномерный) массив – массив, у которого в описании задан только один индекс; если два индекса, то это двумерный массив и т. д. Одномерные массивы часто называют векторами, т. е. они представляют собой конечную последовательность пронумерованных элементов. Пример описания одномерного массива:
type vec=array[1..5] of real;
var x:vec;
var x: array[1..5] of real;
Оба из вариантов описывают одномерный массив x, состоящий из 5 вещественных элементов.
Присваивание начальных значений (заполнение массива) заключается в присваивании каждому элементу массива некоторого значения заданного типа. Наиболее эффективно эта операция осуществляется при помощи оператора for. Ввод данных может осуществляться: с клавиатуры, из файла данных, при помощи различных формул, в том числе и датчика случайных чисел.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу, и т. д.
Алгоритм решения задач с использованием массивов:
- описание массива;
- заполнение массива;
- вывод (распечатка) массива;
- выполнение условий задачи;
- вывод результата.
1.1. Заполнение массива
Рассмотрим типичные варианты заполнения массива х, описанного выше.
Заполнение всех элементов массива числом 1 :
for i:=1 to 5 do x[i]:=1;
Заполнение всех элементов массива случайными числами из диапазона 0–9 :
for i:=1 to 5 do x[i]:=random(9);
Заполнение всех элементов массива при помощи ввода с клавиатуры:
for i:=1 to 5 do
begin
readln(x[i]);
end;
1.2. Вывод массива на экран
Вывод массива на экран в одну строку без пояснений:
for i:=1 to 5 do writeln(x[i]:6:1);
Вывод массива на экран в столбец с пояснениями. Этот вариант гораздо нагляднее. Старайтесь использовать его:
for i:=1 to 5 do writeln(‘x[’,i,‘]=’,x[i]:6:1);
1.3. Работа с массивами
Пример 6.1. Определить самую высокую температуру и самый теплый день в мае.
program massiv;
uses crt;
var t:array[1..31] of integer;
i,max,n:integer;
begin
Clrscr;
for i:=1 to 31 do
begin
t[i]:=random(20);
write(t[i],‘ ’);
end;
writeln;
max:=t[1]; n:=1;
for i:=2 to 31 do
begin
if t[i]>max then
begin max:=t[i]; n:=i; end;
end;
writeln(‘t-макс.= ’,max,‘ в ’,n, ‘день’);
end.
2. Двумерные массивы
Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
var a:array [1..5] of array [1..6] of real;
var a:array [1..5,1..6] of real;
Чаще всего при описании двумерного массива используют второй способ. Так же как и для одномерных массивов, для двумерных можно использовать отдельно описание нового типа массива, а затем описывать переменную, используя этот тип:
type matr=array [1..5,1..6] of integer;
var a:matr;
Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется конструкция, когда один цикл for вложен в другой. Например:
for i:=1 to 5 do
for j:=1 to 6 do
a[i,j]:=0;
При организации вложенных (сложных) циклов необходимо учитывать:
- Все правила, присущие простому циклу, должны соблюдаться.
- Имена параметров для циклов, вложенных один в другой, должны быть различными.
- Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо.
2.1. Заполнение матрицы
Рассмотрим типичные варианты заполнения матрицы a, описанной выше.
Заполнение всех элементов матрицы случайными числами из диапазона 1 – 9 :
for i:=1 to 5 do
for j:=1 to 6 do
a[i,j]:=random(9);
Заполнение всех элементов матрицы при помощи ввода с клавиатуры:
for i:=1 to 5 do
for j:=1 to 6 do
begin
readln(a[i,j]);
end;
2.2. Вывод матрицы на экран
Вывести на экран матрицу 5 ´ 6 можно следующим образом:
for i:=1 to 5 do
begin
for j:=1 to 6 do
end;
2.3. Работа с матрицами
Работа с матрицами осуществляется также поэлементно.
Пример 6.2. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.
program pifagor;
uses crt;
var p:array [1..9,1..9] of integer;
i,j:integer;
begin
Clrscr;
for i:=1 to 9 do
for j:=1 to 9 do
p[i,j]:=i*j;
for i:=1 to 9 do
begin
for j:=1 to 9 do
write(p[i,j]:4);
writeln;
end;
end.
Пример 6.3. Задан двумерный массив В(10, 10), заполненный случайными числами из диапазона -10 – 10. Найти и вывести на экран произведение элементов побочной диагонали.
program massiv;
uses crt;
var b:array[1..10,1..10] of integer;
i,j,s:integer;
begin
Clrscr;
for i:=1 to 10 do
begin
for j:= 1 to 10 do
begin
b[i,j]:=random(20)-10;
write(b[i,j]:4);
end;
writeln;
end;
s:=1;
for i:=1 to 10 do
s:=s*b[i,11-i];
writeln(‘Произведение = ’,s);
end.
Пример 6.4. Ввести с клавиатуры матрицу В(5, 5) и поменять местами первый и последний столбец.
program mest;
var b:array[1..5,1..5] of integer;
i,j,s:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
begin
readln(b[i,j]);
end;
for i:=1 to 5 do
begin
for j:=1 to 5 do
write(b[i,j]:4);
writeln;
end;
for i:=1 to 5 do
begin
s:=b[i,1]; b[i,1]:=b[i,5]; b[i,5]:=s;
end;
writeln;
writeln(‘Изменённая матрица’);
Источник
Одномерные массивы. Способы описания и заполнения одномерных массивов
Ключевые слова:
Массив -это
1) о бласть машинной памяти, в которой могут размещаться совокупности значений одного и того же типа (англ.- array);
2) упорядоченный набор переменных, объединенных общим назначением и имеющих одно имя.
Элемент массива – отдельная переменная, входящая в массив.
Индекс элемента — номер элемента массива, обозначаемый числом или буквой (англ.- индекс).
Размер массива — количество элементов в массиве.
Размерность – число индексов в массиве (1-мерный,2-мерный, N-мерный).
Описание и заполнение одномерного массива
Массив — это структурированный тип для резервирования в памяти места под большое количество однородных элементов ( общий размер – не более 65.52 кБайт). Оперировать можно как с отдельными элементами массива, так и с массивом в целом.
- В математике обычно элемент записывается в виде:A(1), A(2),…A(n) или А1, А2,… Аn,
- в языкеPascal индекс заключается в квадратные скобки:А[1],A[2].A[n].
ARRAY – зарезервированное слово Pascal, оно указывает, что данная переменная является массивом.
Возможны 2 способа описания массива:
1 Описание массива в разделе переменных VAR:
|
i1..i2 – диапазон индексов (любой порядковый тип, кроме longint);
t – тип элемента.
Например:
VAR A: array [1..10] of byte;
VAR ENTER: array [1998..2002] of integer ;
VAR y: array[-3..5] of real ;
VAR FIO: array [1..30] of string ;
VAR mas: array [1..M] of real;
CONST b: array [1..5] OF byte = ( 1,4,3,2,0);
Заполнение одномерного массива возможно несколькими способами, основные из которых:
2 с помощью генератора случайных чисел;
3 объявление массива как CONST;
Упражнение arr1: Описать в разделе VAR и заполнить массив А из 5 целых элементов с клавиатуры. Вывести массив в строчку.
var a: array[1..5] of integer;
write(‘Введите элемент массива А[‘,i,’]= ‘);
ReadLn (a[i]);
writeLn(‘Результирующий массив А:’);
2 Описание массива в разделе описания типов TYPE:
|
Например:
TYPE mas = array[1..20] of integer;
TYPE m = array[1..5] of string[3];
Const mes: m =(’jan’,’feb’,’mar’,’apr’,’may’);
Упражнение arr2: Описать в разделе TYPE и заполнить массив MAS из 5 целых случайных чисел. Вывести массив в столбик.
TYPE a= array[1..5] of integer;
VAR mas: a;
randomize;
mas[i]:= random(100);
Упражнение arr3: Заполнить массив – CONST из 12 чисел.
const a: array[1..12] of byte=(1,3,2,3,0,0,4,5,6,7,8,2);
for i:=1 to 10 DO
Упражнение arr4: Заполнить массив – символьную CONST из 12 английских наименований месяцев года длиной в 3 символа, например: JAN, FEB и т. д.
Упражнение arr5: Заполнить массив по формуле: y = x2 в диапазоне [0; 1] с шагом 0.1.
Источник