Что такое регулярный тип данных
Что такое регулярный тип данных? Что такое массив?
Обсуждение вопроса:
Регулярный тип — это структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин.
Массив — переменная величина регулярного типа.
Регулярный тип — это структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин.
Массивом в Паскале называют переменную величину регулярного типа.
В общем случае массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Массив – это составной объект, образованный из элементов (компонент) одного и того же типа. Такой тип данных применяется в программировании для обозначения объектов, аналогичных числовым последовательностям в математике, где сразу целая группа чисел обозначается одним именем (чаще всего буквой), а для обращения к каждому отдельному числу данной последовательности используются различные индексы (номера элементов).
Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
Что такое регулярный тип данных
Массивы.
Массив это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
В качестве элементов массива можно использовать и любой другой ранее описанный тип, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк и т.д. Элементами массива могут быть данные любого типа, включая структурированные. Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов фиксируется при описании и в процессе выполнения программы не меняется.
Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Индекс представляет собой выражение любого порядкового типа. Чтобы обратиться к элементу массива, надо указать его базовое имя и индекс (номер).
Описание массива.
Массивы можно описать 2-мя способами: через описание типа массива и простое описание:
Описание через тип:
Простое описание:
Общий вид описания массива
правильный идентификатор; | |
ARRAY, OF | служебные слова (массив, из); |
список из одного или нескольких индексных типов, разделённых запятыми; | |
любой тип Паскаля. |
Если в форме описания массива задан один индекс, массив называется одномерным, если два индекса двумерным, если n индексов n-мерным. Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный понятию прямоугольной таблицы (матрицы).
Примеры описаний массивов разной размерности:
В место числа, точной ссылки на элемент, можно подставить переменную (математическое выражение) порядкового типа, значение которой(ого) не выходят за пределы диапазона массива.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах FOR, WHILE, REPEAT, CASE, входить в качестве параметров в операторы READ, READLN, WRITE, WRITELN; им можно присваивать любые значения, соответствующие их типу.
Заполнение массива
Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора FOR.
Заполнение одномерного массива: | Заполнение двумерного массива (использование вложенного цикла): Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и вывод значений производится поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с помощью оператора READ или READLN с использованием оператора цикла FOR (см. выше). Операции над массивамиДля работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения «равно», «не равно» и в операторе присвоения. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т.е. иметь одинаковые типы индексов и одинаковые типы компонентов. Например, если массивы описаны так то применение к ним допустимых операций даст следующий результат:
Если массивы описаны следующим образом то к ним не применимы перечисленные выше операции (т.е. возникнет ошибка при попытке их использования). Урок 20. Описание массиваУрок из серии: «Язык программирования Паскаль» В предыдущем уроке мы ввели понятие структурированных данных. Изучение данных структурированного типа начнем с регулярного типа данных — массивов. Название регулярный тип массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. Массив — структурированный тип данных, состоящий из фиксированного числа однотипных элементов, объединённых одним именем, где каждый элемент имеет свой номер (индекс). Когда возникает необходимость использовать массивы? Рассмотрим следующую задачу: ввести с клавиатуры 30 целых чисел и вычислить их сумму, при этом каждое из чисел сохранить в памяти для последующей обработки. Мы будем вынуждены ввести 30 имен переменных, что, естественно, очень неудобно. Как быть? В этом случае лучше организовать массив. Имя у всех элементов будет общее. Чтобы получить доступ к элементу, достаточно будет указать имя массива и его порядковый номер. И так, массивы будем использовать тогда, когда нужно обработать большой объем однотипной информации, которую необходимо сохранить в памяти для последующей обработки. Определим еще несколько понятий, связанных с массивами. Элемент массива — отдельная переменная, входящая в массив. Размерность массива — количество индексов, по которым определяется положение элемента в массиве. Индексы элемента массива — совокупность номеров, определяющих его местоположение в массиве. Чтобы лучше понять, что такое размерность массива, сравним их с таблицами. Одномерный массив сравним с таблицей, состоящей из одной строки. Для определения положения элемента в строке достаточно знать порядковый номер ячейки, в которой находится элемент. Поэтому в одномерном массиве один индекс — порядковый номер элемента. Двумерный массив — прямоугольная таблица. Для определения положения элемента в прямоугольной таблице нужно знать порядковый номер строки и столбца, на пересечении которых находится ячейка. Поэтому в двумерном массиве — два индекса, номер строки и номер столбца. И так, потребность использовать массив возникает всякий раз, когда при решении задачи приходится иметь дело с большим, но конечным количеством однотипных данных, которые необходимо хранить в памяти. Переходим к изучению массивов. Описание массиваПрежде чем использовать массив в программе, его необходимо предварительно описать. Описать массив — значит выделить в памяти место, достаточное для хранения всех его элементов. Для этого надо указать имя массива и длину массива — количество элементов в нем. В большинстве случаев при задании размеров массива используются диапазоны изменения значений индекса. При описании массива используется зарезервированное слово array (массив), указываются диапазон изменения для индексов и тип компонентов массива. Способ 1. Описание массива с определением типа. Способ 2. Описание массива без определения типа. Двумерный массив описывается так же, как и одномерный. Различие состоит в том, что вы должны указать диапазон для двух индексов массива — положение каждого элемента массива A[i, j] определяется номером строки и номером столбца. Например, описание двумерного массива натуральных чисел размера N x М может быть задано следующей строкой: Вернемся к нашей задаче. У нас 30 целых чисел, выделим для них 30 ячеек, объединим их общим именем А.
Опишем одномерный массив из 30 целых чисел для этой задачи следующим образом: Напомним, что раздел типов начинается со служебного слова type, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак «равно» (в разделе переменных между именем переменной и её описанием ставится двоеточие). myarray — это имя нового типа; array — служебное слово (в переводе с английского означает «массив», «набор»); [1..30] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, в этом примере первый элемент имеет номер 1, а последний — номер 30; Of — служебное слово (в переводе с английского — «из»); Integer — тип всех элементов массива. Так как каждый элемент имеет свой номер, то к каждому элементу можно обращаться непосредственно. Для того чтобы получить доступ к i-му элементу этого массива, необходимо записать: A[i] — сначала имя массива, а в квадратных скобках указывается номер элемента, к которому обращаемся, — i. Например, обращаемся к первому элементу массива А — А[1], а к пятому — А[5]. Тот же самый массив может быть задан и при определении соответствующей переменной: Особенность языка Паскаль Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Это считается недостатком языка, так как не во всех программах можно заранее предсказать необходимый размер массива (который может определяться в зависимости от тех или иных условий, возникающих в процессе исполнения). Для решения этой проблемы используют прием, позволяющий имитировать работу с массивами переменной длины, который заключается в следующем: в разделе описания предварительно определяют возможное максимальное значение размера массива, а затем в программе запрашивают текущее значение размера и используют это значение далее при заполнении и обработке массива. На следующем уроке мы рассмотрим основные алгоритмы, которые используются при обработке данных, хранящихся в массиве. Что такое регулярный тип данныхУрок 48. Массивы. Описание массивов на Паскале. Правила организации ввода и вывода значений массива Массивы
ОглавлениеМассивыВсе простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип. С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений. Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем. Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. Массиву присваивается имя, посредством которого можно ссылаться на него как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента: Чтобы использовать массивы в программах, нужно их описать в разделе описаний. Тип массива не является стандартным, поэтому его необходимо описать в части описания типов. Описание типа массива определяет его имя, размер массива и тип данных: 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]); 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],‘ ’); 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; writeln(‘t-макс.= ’,max,‘ в ’,n, ‘день’); 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]); 2.2. Вывод матрицы на экранВывести на экран матрицу 5 ´ 6 можно следующим образом: for i:=1 to 5 do begin for j:=1 to 6 do 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; 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); writeln; for i:=1 to 10 do s:=s*b[i,11-i]; writeln(‘Произведение = ’,s); Пример 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]); for i:=1 to 5 do begin for j:=1 to 5 do write(b[i,j]:4); writeln; for i:=1 to 5 do begin s:=b[i,1]; b[i,1]:=b[i,5]; b[i,5]:=s; writeln; writeln(‘Изменённая матрица’);
|