Элементарные конструкции.
Из основных символов непосредственно образуются элементарные конструкции языка, которые являются минимальными неделимыми синтаксическими единицами. К ним относятся: идентификаторы, константы, переменные, указатели стандартных функций.
Различные объекты программы должны иметь имена. В качестве имен используются идентификаторы. Идентификатор- последовательность букв и цифр, а также знака подчеркивания, начинающаяся с буквы. Длина идентификатора может быть до 63 символов. Желательно выбирать значащие идентификаторы, например, MAX, MIN, SUMMA и т.д. Зарезервированные слова нельзя использовать в качестве идентификаторов.
Константы – это данные, значения которых не изменяются в процессе работы программы. Константы могут быть поименованными (с типом и без типа) и явно заданными.
Арифметические константы предназначены для представления целых и вещественных числовых данных.
Для вещественных констант используется форма записи с фиксированной точкой и экспоненциальная форма. В форме с фиксированной точкой целая и дробная части разделяются точкой, при экспоненциальной форме число представляется в виде мантиссы и порядка, между которыми стоит буква Е.
<мантисса>Е{ }<порядок>
Тип константы
| Диапазон
| Объем памяти
| Примечания
| Shortint
| -128..127
| 1 байт
| Со знаком
| Byte
| 0..255
| 1 байт
| Без знака
| Integer
| -32768..32767
| 2 байта
| Со знаком
| Word
| 0..65535
| 2 байта
| Без знака
| Longint
| -2147483648..2147483647
| 4 байта
| Со знаком
| Single
| 1.5E-45..3.4E38
| 4 байта
| 7-8 значащих цифр, со знаком
| Real
| 2.9E-39..1.7E38
| 6 байт
| 11-12 значащих цифр, со знаком
| Double
| 5.0E-324..1.7E308
| 8 байт
| 15-16 значащих цифр, со знаком
| Extended
| 3.4E-4932..1.1E4932
| 10 байт
| 19-20 значащих цифр, со знаком
| Сomp
| 9.2E18..9.2E18
| 8 байт
| 19-20 значащих цифр, со знаком
|
В Турбо Паскале определены некоторые именованные константы, использовать которые можно без объявления.
MAXINT=32767, MAXLONGINT=2147483647.
Логические константы могут принимать одно из двух значений: True(истина) или False(ложь). В языке предусмотрены следующие логические типы констант: Boolean(1 байт), Bytebool(1 байт), Wordbool(2 байта), Longbool(4 байта).
Константы символьного типа Char представляют собой 1 символ кодового набора ASCII (американский стандартный код обмена информацией). Занимает в памяти 1 байт. Символьная константа заключается в апострофы ‘’. Существует упорядоченность символов в соответствии с их кодами. Для цифр и букв латинского алфавита коды символов удовлетворяют соотношению: ‘0’<…<’9’<‘A’<…<’Z’<’a’<…<’z’.
Константы строкового типа String представляют собой последовательность символов, заключенную в апострофы. Длиной строки называется количество символов в ней. Если среди символов константы строкового типа имеется хотя бы один апостроф, он изображается двумя апострофами. Длина строки может быть от 0 до 255 символов.
Переменная – это наименование, данное некоторому значению. Обозначается с помощью идентификатора переменной. Переменные стандартных типов принимают значения из диапазонов значений, указанных для констант соответствующего вида.
Типы данных.
Каждая переменная и константа в программе на языке Паскаль имеет свой тип данных. Тип определяет набор операций, которые могут быть к ней применимы, а также тип результата выполнения этих операций. Имеются типы стандартные и типы, описанные пользователем.
Все переменные, используемые в программе должны быть описаны в разделе описания переменных VAR.
VAR<идентификатор> [,<идентификатор>,…]: <тип>;
[<идентификатор> [,<идентификатор>,…]: <тип>;…]
Например,
VAR A : Integer;
B, C: Real;
Здесь описана переменная А целого типа и две переменные В и С вещественного типа.
Тип, в свою очередь, может быть предварительно определен в разделе описания типов TYPE.
TYPE<идентификатор типа> = <тип> ;
Например,
TYPE I = Integer;
R = Real;
После такого описания типов описания переменных А, В и С могут быть следующими:
VAR A : I;
B, C: R;
Порядковый стандартный тип обозначает конечное линейное множество значений. К нему обычно относят целые типы, байтовые, символьные и логические.
Перечисляемый тип – определяет упорядоченное множество значений путем перечисления идентификаторов, выражающих эти значения как постоянные. Для каждого такого элемента выделяется один байт памяти. Используется в качестве индексов массивов и имеет порядковую нумерацию, начиная с нуля.
TYPE <идент-тор типа> = (<идентификатор>
[,<идентификатор>,…]);
Интервальный тип определяет некоторое подмножество значений, которые может принимать данная переменная. Задаются наименьшее и наибольшее значения порядкового типа. Для каждого элемента выделяется один байт памяти.
TYPE <идентификатор типа> = <константа>. .<константа>;
В качестве констант могут использоваться значения любых простых типов кроме вещественных типов.
Например,
TYPE GR = (DS101, DS102, DS201, DS202, DS301, DS302);
SPEC = DS101. . DS302;
DIGIT = 0. .9;
VAR A : DIGIT;
B : SPEC;
D : 100. .200;
Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255. Строковые переменные, как и строковые константы, занимают количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной. Важной особенностью Турбо Паскаля является то, что к каждому символу строки возможен доступ по его номеру.
TYPE <идент-тор типа> = String[<максимальная длина>];
Например,
TYPE TString = String[100];
TS = String;
VAR S,S1 : Tstring;
S2 : String[20];
SS : TS;
Массив – это упорядоченная совокупность однотипных переменных, обладающих одинаковыми свойствами. Отношение порядка между элементами массива задается с помощью индексирования. Каждому элементу массива ставится в соответствие один или несколько индексов. Если каждому элементу ставится в соответствие один индекс, то это - одномерный массив (вектор). При наличии двух индексов – двумерный массив (матрица), причем, обычно первый индекс обозначает номер строки, а второй – номер столбца, где находится соответствующий элемент.
TYPE<идентификатор типа> = ARRAY [<список типов индексов>]
OF<тип>;
<тип индексов> :: = <простой тип>
<простой тип>:: = <идентификатор типа>|<идентификатор>
[,<идентификатор>]| <константа>. .<константа>
В качестве типа индекса может быть любой простой тип, кроме вещественных. Чаще всего используется интервальный тип индекса от целых типов.
Например,
TYPE T1 = ARRAY [-10 .. 20,1..30] OF BYTE;
T2 = ARRAY [0..50] OF BOOLEAN;
T3 = ARRAY [BYTE] OF INTEGER;
VAR A, B: T1;
C: T2;
Z: ARRAY[1..100] OF REAL;
MAS: T3;
Здесь в разделе описания типов приводятся три различных типа массивов. T1 – это тип двумерного массива, в котором номера строк могут принимать значения от –10 до 20, а номера столбцов – от 1 до 30. Элементами массива типа T1 должны быть целые числа без знака от 0 до 255. Тип T2 определяет одномерный массив с элементами логического типа, номера элементов могут быть от 0 до 50. Тип T3 определяет одномерный массив с элементами целого типа со знаком, при этом диапазон изменения индексов массива от 0 до 255. В разделе описания переменных определяются переменные А и В типа T1, С – типа Т2 и MAS – типа Т3. Помимо предварительного описания типа возможно определять массивы непосредственно в разделе описания переменных, как это сделано для переменной Z.
Обращение к элементам массивов осуществляется с помощью переменных с индексами. Число индексов в переменной с индексами равно числу измерений массива. Индексы могут задаваться целыми числами, простыми переменными, арифметическими выражениями. Если массивы имеют одинаковое описание, их можно копировать В:= А.
Например,
…
S := S + Z [I] ;
P := P * A [I] [J] ;
C[6] := TRUE ;
P := P * A[I,J] ;
R := B [I+5,J] ;
MAS [I] := MAS [I-1] * MAS [I] ;
…
Рассмотрим различные способы описания массивов.
Пусть требуется описать матрицу A, содержащую 10 строк и 50 столбцов, с элементами целого типа.
1) CONST N = 10;
M = 50;
TYPE TMATR = ARRAY [1..N, 1..M] OF INTEGER;
VAR A : TMATR;
2) TYPE TSTR = ARRAY [1..50] OF INTEGER;
TMATR = ARRAY [1..10] OF TSTR;
VAR A : TMATR;
3) VAR A : ARRAY[1..10,1..50] OF INTEGER;
4) VAR A : ARRAY[1..10] OF ARRAY[1..50] OF INTEGER;
Операторы языка Паскаль.
Оператор присваивания.
Наиболее простым и часто используемым оператором языка является оператор присваивания:
<переменная> : = <выражение>;
Выражение – это формула для вычисления значения. Она образуется из операндов, соединенных знаками операций и круглыми скобками. В качестве операндов могут выступать переменные, константы, указатели функций.
Тип переменной в левой части оператора присваивания обычно должен совпадать с типом значения выражения в правой части. Возможны случаи несовпадения типов, например, когда слева переменная вещественного типа, а справа выражение целого типа. Выражения являются составной частью операторов.
В Паскале приоритеты выполнения операций следующие (в порядке убывания):
- одноместный минус;
- операция NOT;
- операции типа умножения ;
- операции типа сложения;
- операции сравнения (отношения).
Одноместный минус применим к операндам арифметического типа. Операция NOT– к операндам логических и целых типов. Если в одном выражении несколько операций одного приоритета, то они выполняются, начиная слева. Приоритеты можно изменить, поставив скобки. В логических выражениях необходимы скобки во избежание конфликта типа по приоритету.
Например, если в выражении … (X > 5) AND (Y > 10) … не поставить скобки, то будет синтаксическая ошибка, так как приоритет операции AND выше приоритета операций сравнения >.
<операции типа умножения> :: = * | / | div | mod | and
<операции типа сложения> :: = + | - | or | xor
<операции сравнения> :: = = | <> | < | > | <= | >= | in
Операции сравнения применимы для всех стандартных простых типов. Причем в одном выражении возможно использование операндов различных типов. Результат сравнения всегда имеет логический тип.
Например, (5 + 6) < (5 - 6) = TRUE в результате даст FALSE, а NOT(8.5 < 4) будет равно TRUE.
Сравнение строк символов выполняется слева направо посимвольно. Более короткие строки дополняются пробелами справа.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|