Связано это с неправильным описанием данных.
Рассмотрим, какие целочисленные типы кроме integer возможны в Паскале и какое кол-во разрядов отводится под каждый тип:
Shortint (короткое целое) | 8 бит (старший левый разряд знаковый) | -128 ≤ а ≤ 127 |
Integer (целое) | 16 бит (ст. разряд знаковый) | -32768 ≤ а ≤ 3276 |
Longint (длинное целое) | 32 бит (ст. разряд знаковый) | -2147483648 ≤ а ≤ 2147483647 |
Byte (байт) | 8 бит (без знака) | 0 ≤ а ≤ 255 |
Word | 16 бит | 0 ≤ а ≤ 65535 |
Вещественное число в ПЭВМ представлено в экспоненциальной форме
N = m*E ± p,
где m – мантисса числа (диапазон от 1 до 9).
В следующей таблице приведены возможные вещественные типы языка Паскаль и диапазон изменения.
Длина байт | Название типа | Кол-во значащих цифр | Диапазон десятичного порядка |
4 | Single | 7..8 | -45..+38 |
6 | Real | 11..12 | -39..+38 |
8 | Double | 15..16 | -324..+308 |
10 | Extended | 19..20 | -4951..+4932 |
8 | comp | 19..20 | -2-63 +1..2+63 -1 |
Структурированные типы
Структура – строение, расположение, порядок, совокупность устойчивых связей объекта, обеспечивающих его целостность и тождественность самому себе, т.е. сохранение основных свойств при различных внешних и внутренних изменениях.
Переменные структурного типа состоят не из одного элемента, а из нескольких. К ним относятся массивы, записи, множества и файлы.
Массивы
Массив – область машинной памяти, в которой могут размещаться совокупности значений одного и того же типа, а также, набор переменных, объединенных общим назначением и имеющих одно имя.
В информатике различают массивы одномерные и двумерные. К одномерным массивам относятся числовые и символьные последовательности. К двумерным – матрицы (либо их ещё называют таблицами).
Элемент массива – отдельная переменная, входящая в массив.
Размерность массива – кол-во элементов, которое содержит массив.
Индекс – числовой или буквенный указатель, указывающий порядковый номер данного элемента в массиве.
При назначении имени массиву соблюдаются те же требования, какие предъявляются к именам переменных простых типов.
Пример: Дан массив А, состоящий из n элементов.
А[1] A[2] A[3] A[4] … A[n]
2 7,5 14 8 … -2
A[i] – элемент массива А, стоящий на i-ом месте.
Каждая переменная в Паскале должна быть объявлена, в том числе и переменная указывающая индекс. В качестве индексных типов можно использовать любые порядковые типы, кроме longint.
Описывать тип «массив» нужно с помощью служебного слова TYPE.
Рассмотрим описание типа «массив» на примере целочисленного массива А, состоящего из 25 элементов. Прежде чем приступить к описанию типа, назначим имена – имя типа «массив» и имя переменной, которая относится к типу «массив». Пусть mas – имя типа, а – имя переменной типа «массив». В описании типа указывается, что объявляется тип «массив», для этого используется служебное слово array, и указываются границы изменения индексов. Синтаксически это записывается следующим образом 1..25; такая запись называется диапазон.
В программе на языке Паскаль это выглядит следующим образом:
TYPE mas = array [1..25] of integer;
VAR
а: mas;
где первая строка расшифровывается как «объявляется тип пользователя – массив, все элементы массива являются целыми числами», а последняя как «объявляется переменная, относящаяся к типу массив».
Необходимо помнить, что значением переменной а является весь массив.
Массив может быть объявлен как константа. В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки.
Например:
Const
Mas: array [1..8] of byte = (28, 30, 25, 26, 15, 31, 30, 29);
Чаще всего массив объявляют следующим образом:
VAR <имя массива>: array [1..8] of <тип данных>;
Например: VAR a: array [1..8] of real;
Ввод элементов одномерного массива
Заполнить элементы одномерного массива значениями можно:
- вводя значения с клавиатуры;
- случайным образом;
- по формуле.
Необходимо помнить, что во всех трех случаях нельзя обойтись без организации цикла.
Пример: Ввести массив, состоящий из десяти элементов (тип значения не имеет).
1 способ: ввод с клавиатуры.
FOR I: = 1 TO 10 DO
BEGIN
writeln (‘введите значение ‘I’ элемента массива’);
read (a [i]);
END;
2 способ: задание массива случайным образом.
Для этого подключается датчик случайных чисел.
FOR I: = 1 TO 10 DO
a [i] : = random (n); - значение n задается заранее.
В данном случае для наглядности пользователю рекомендуется распечатать заданный массив.
3 способ: заполнение по формуле. Используется, когда каждый элемент массива должен рассчитываться по заранее заданной формуле.
Например: ai = sin i + 1
FOR I : = 1 TO 10 DO
a [I] : = sin (I) + 1;