3. Массивы в Pascal
Массив — это множество величин, имеющих одно и то же имя и номер по порядку.
В математике подобное называется последовательностью, можно сказать, что последовательность — это одномерный массив. В математической последовательности каждый следующий элемент записывается по определённому правилу (формуле), в одномерном массиве могут быть произвольные числа (либо символы, либо слова).
Размер массива — это количество элементов в массиве.
Размерность массива определяется количеством входящих в него индексов.
Массивы бывают: одномерные, двумерные, многомерные.
Индекс определяет положение элемента в массиве (нумерация начинается с \(1\)).
Рис. \(1\). Индекс и значение массива
Примеры массивов
Массивы в Pascal
Переменные стандартного типа можно изобразить отдельными маленькими ячейками. То же самое относится и к переменным перечисляемого и интервального типов:
В данных ячейках могут содержаться любые значения из диапазона, определяемого их типами. Например, в ячейке month может быть любое одно значение от 1 до 12, а в ячейке x любое натуральное число в диапазоне примерно от -32000 до 32000.
Помимо этого, имеется также возможность объявлять переменные, которые являются массивами таких маленьких ячеек.
Ячейки массива можно назвать элементами; в квадратных скобках стоят индексы. Базовый тип массива – это тип элементов, из которых составлен массив (в каждом массиве все компоненты одного типа).
В ячейки массива можно помещать значения аналогично тому, как выполняется присваивание обычным переменным. Только здесь кроме имени переменной надо также указать номер (индекс) ячейки, в которую производится запись значения элемента:
nums[3] := 115.58; read(nums[1]);
Однако такое использование элементов массива в качестве обычных переменных не дает никакой выгоды. Массивы ценны тем, что индексы могут быть переменными или выражениями, с помощью которых выполняется последовательный доступ ко всем элементам массива.
Во фрагменте кода ниже записывается 0 во все элементы массива nums :
for i := 1 to 3 do nums := 0;
Одномерные массивы
Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.
Есть более простое решение. Это использование такой структуры (типа) данных как массив. Массив представляет собой последовательность ячеек памяти, в которых хранятся однотипные данные. При этом существует всего одно имя переменной связанной с массивом, а обращение к конкретной ячейке происходит по ее индексу (номеру) в массиве.
Следует понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них. Действия в программе над массивом осуществляются путем использования имени переменной, связанной с областью данных, отведенной под массив.
Итак, массив – это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы (хотя в языке программирования Pascal чаще всего именно с нее). Порядковый номер элемента массива называется индексом этого элемента.
Помним, все элементы определенного массива имеют один и тот же тип. У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer , а другой – из чисел типа real .
Индексы элементов массива обычно целые числа, однако могут быть и символами, а также описываться другими порядковыми типами. То есть для индекса можно использовать тип, в котором определена дискретная последовательность значений, и все эти значения можно пересчитать по порядку. Индексировать можно как константами и переменными, так и выражениями, результат вычисления которых дает значение перечислимого типа.
Если индекс массива может приобретать все допустимые значения определенного перечислимого типа, то при описании массива возможно задание имени типа вместо границ изменения индекса. При этом границами индекса будут первое и последнее значения в описании типа индекса. Границы изменения индексов могут задаваться с помощью ранее объявленных констант. Рекомендуется предварительно объявлять тип массива в разделе описания типов.
Массив можно создать несколькими способами.
const N = 200; type months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec); years = 1900..2100; people = array[years] of longint; var growth: array[months] of real; hum: people; notes: array[1..N] of string;
Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента.
Простой массив является одномерным. Он представляет собой линейную структуру.
var ch: array [1..11] of char; h: char; i: integer; begin for i := 1 to 11 do read(ch[i]); for i := 1 to 11 do write(ch[i]:3); end.
В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, ‘q’, ’w’, ’e’, ’2’, ’t’, ’9’, ’u’, ’I’, ’I’, ’o’, ’p’), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экран.
Функция sizeof, примененная к имени массива или имени массивного типа, возвращает количество байтов, отводимое под массив.
Массивы в Паскаль.
Сентябрь 25th, 2013 admin
Построение структур данных
Данные бывают двух видов:
- Простейшие данные – элементы данных, являющиеся неделимыми (числа, строки, знаки). Для простейших данных существуют стандартные типы (Integer,Real, Char, String, Boolean).
- Структурированные данные – это структуры, состоящие из нескольких простейших данных. Определяются пользователем в программе при помощи двух конструкций:
- Массив – структура однотипных данных с индексированным доступом.
- Запись – структура данных с доступом по идентификатору.
Массивы
Массив – структура однотипных данных с индексированным доступом. Каждый элемент массива получает один или несколько номеров, называемых индексами. Индексы записываются в квадратных скобках через запятую.
Массивы бывают следующих видов:
- Одномерные – каждый элемент массива получает два индекса (пр. [2,3]).
- Многомерные – каждый элемент получает более 2-х индексов (пр. [1,1,k]).
Описание массивов
Каждый из индексов массива находится в некотором диапазоне (…). Причем конечный элемент больше либо равен начальному элементу. В качестве диапазона можно использовать: Integer, Char, Boolean.
Массив в языке Паскаль это сложный тип данных, поэтому чаще всего его описывают в разделе переменных.
Пример: список студентов группы
Var Spisok: array[1..40] String[20];
Получение элементов массива
Каждый элемент массива — это переменная, которой можно присваивать значения в операторах и функциях. Для того, чтобы указать элемент массива, необходимо записать все его индексы.
Ввод массива с клавиатуры
Массив нельзя ввести с клавиатуры одной командой, для этого организовывается цикл с параметром. Для того чтобы обеспечить правильный ввод массива, необходимо соблюдать следующий алгоритм:
WriteLn (‘ввод списка студентов’);
WriteLn (‘введите количество студентов’);
For i:=1 to kolvo do
Вывод массива на экран
- Вывод в строку. При выводе массива в строку нужно использовать Write, которая будет находиться в цикле с параметром, а после цикла нужно поставить WriteLn.
For i:=1 to kolvo do
- Вывод массива в столбец. При выводе в столбец в цикле указывается WriteLn, причем для массивов, содержащих числа, следует также указывать количество знаков при выводе на экран.
For i:=1 to kolvo do
Write (i:2,’. ’,spisok[i]);
Действия с массивами
Над массивами нельзя выполнять арифметические действия (вычитать, складывать и др.). Все действия выполняются поэлементно.
Пример: Написать программу, которая выполняет поэлементное суммирование массивов A и B.
Var A,B Array [1..10] of Integer;
C: Array [1..10] of Integer;
WriteLn (‘введите количество элементов массивов’);
WriteLn (‘введите элементы маcсива A’);
For i:=1 to Kolvo do
WriteLn (‘введите элементы маcсива B’);
For i:=1 to Kolvo do
For i:=1 to Kolvo do
For i:=1 to Kolvo do
Двухмерные массивы
Ввод построчно
Ввод по столбцам
. двухмерные и трехмерные массивы паскаль вывод одномерного массива в паскале вывод значений элементов паскаль pascal.сложные типы переменных.массивы массив char паскаль
. виды массивов для чайников в паскале ввести числа массиву в паскале в var как нумеруются элементы двумерного массива в паскольэ мегапаскаль это как написать двумерный макссив в паскале
Опубликовано в рубрике Pascal
Pascal — Arrays
Pascal programming language provides a data structure called the array, which can store a fixed-size sequential collection of elements of the same type. An array is used to store a collection of data, but it is often more useful to think of an array as a collection of variables of the same type.
Instead of declaring individual variables, such as number1, number2, . and number100, you declare one array variable such as numbers and use numbers[1], numbers[2], and . numbers[100] to represent individual variables. A specific element in an array is accessed by an index.
All arrays consist of contiguous memory locations. The lowest address corresponds to the first element and the highest address to the last element.
Please note that if you want a C style array starting from index 0, you just need to start the index from 0, instead of 1.
Declaring Arrays
To declare an array in Pascal, a programmer may either declare the type and then create variables of that array or directly declare the array variable.
The general form of type declaration of one-dimensional array is −
type array-identifier = array[index-type] of element-type;
- array-identifier − indicates the name of the array type.
- index-type − specifies the subscript of the array; it can be any scalar data type except real
- element-type − specifies the types of values that are going to be stored
type vector = array [ 1..25] of real; var velocity: vector;
Now, velocity is a variable array of vector type, which is sufficient to hold up to 25 real numbers.
To start the array from 0 index, the declaration would be −
type vector = array [ 0..24] of real; var velocity: vector;
Types of Array Subscript
In Pascal, an array subscript could be of any scalar type like, integer, Boolean, enumerated or subrange, except real. Array subscripts could have negative values too.
type temperature = array [-10 .. 50] of real; var day_temp, night_temp: temperature;
Let us take up another example where the subscript is of character type −
type ch_array = array[char] of 1..26; var alphabet: ch_array;
Subscript could be of enumerated type −
type color = ( red, black, blue, silver, beige); car_color = array of [color] of boolean; var car_body: car_color;
Initializing Arrays
In Pascal, arrays are initialized through assignment, either by specifying a particular subscript or using a for-do loop.
type ch_array = array[char] of 1..26; var alphabet: ch_array; c: char; begin . for c:= 'A' to 'Z' do alphabet[c] := ord[m]; (* the ord() function returns the ordinal values *)
Accessing Array Elements
An element is accessed by indexing the array name. This is done by placing the index of the element within square brackets after the name of the array. For example −
a: integer; a: = alphabet['A'];
The above statement will take the first element from the array named alphabet and assign the value to the variable a.
Following is an example, which will use all the above-mentioned three concepts viz. declaration, assignment and accessing arrays −
program exArrays; var n: array [1..10] of integer; (* n is an array of 10 integers *) i, j: integer; begin (* initialize elements of array n to 0 *) for i := 1 to 10 do n[ i ] := i + 100; (* set element at location i to i + 100 *) (* output each array element's value *) for j:= 1 to 10 do writeln('Element[', j, '] = ', n[j] ); end.
When the above code is compiled and executed, it produces the following result −
Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109 Element[10] = 110
Pascal Arrays in Detail
Arrays are important to Pascal and should need lots of more details. There are following few important concepts related to array which should be clear to a Pascal programmer −
Sr.No | Concept & Description |
---|---|
1 | Multi-dimensional arrays |
Pascal supports multidimensional arrays. The simplest form of the multidimensional array is the two-dimensional array.
In this type of arrays, the initial length is zero. The actual length of the array must be set with the standard SetLength function.
These arrays are bit-packed, i.e., each character or truth values are stored in consecutive bytes instead of using one storage unit, usually a word (4 bytes or more).
You can pass to a subprogram a pointer to an array by specifying the array’s name without an index.
Kickstart Your Career
Get certified by completing the course