- •Конспект лекций
- •1.4 Общая структура программы
- •1.5 Стандартные процедуры и функции
- •1.6 Процедуры ввода/вывода
- •2. Простые типы данных
- •2.1 Целые типы
- •2.2 Вещественные типы
- •2.3 Cимвольный тип данных
- •2.4 Логический тип данных.
- •2.5 Ограниченные типы
- •2.6 Перечислимые типы
- •2.7 Описание типов
- •2.8 Преобразование типов
- •2.9 Порядок вычисления выражений
- •3. Операторы языка Паскаль
- •3.1 Оператор присваивания
- •3.2 Составной оператор
- •3.3 Условный оператор
- •3.4 Оператор выбора case
- •3.5 Оператор цикла с параметром (цикл for)
- •3.6 Оператор цикла с предусловием (цикл while)
- •1 Вариант:
- •2 Вариант:
- •3 Вариант:
- •3.7 Оператор цикла с постусловием (цикл repeat)
- •3.8 Вложенные циклы
- •3.9 Оператор перехода goto
- •4. Массивы
- •4.2 Сортировка элементов массива
- •4.3 Многомерные массивы
- •5. Подпрограммы (процедуры и функции)
- •5.1 Процедуры
- •5.2 Функции
- •5.3 Области действия имен
- •5.4 Параметры процедур и функций
- •5.5 Побочные эффекты при использовании подпрограмм
- •5.6 Передача массивов в подпрограммы
- •5.7 Параметры-костанты
- •5.8 Массивы открытого типа
- •5.9 Рекурсия в подпрограммах
- •6. Строковый тип данных
- •6.1 Описание строк
- •6.2 Операции со строками
- •6.3 Процедуры и функции для работы со строками
- •7. Стандартные модули Турбо-Паскаля
- •7.1 Модули турбо3 и graph3
- •7.2 Модуль overlay
- •7.3 Модуль dos
- •7.4 Модуль system
- •7.5 Модуль printer
- •7.6 Модуль crt
- •7.7 Модуль graph
- •8. Записи
- •8.1 Определение записи
- •8.2 Оператор над записями
- •8.3 Вложенные записи
- •8.4 Массив записей
- •8.5 Записи с вариантами
- •9. Файлы
- •9.1 Определение файла
- •9.2 Процедуры и функции для работы с файлами
- •9.3 Нетипизированные файлы
- •10. Интегрированная среда Турбо Паскаля
- •10.1 Как начать работу с Турбо Паскалем
- •10.2 Ваша первая программа
2.4 Логический тип данных.
Описание: var n: boolean;
Данные логического типа boolean могут принимать только два значения: true (истина) и false (ложь). Для значений логического типа допустимы операции сравнения, причем true>false.Также применяются 4 логических операции:
and логическое умножение
or логическое сложение
xor исключающее «или»
not отрицание
Правила выполнения логических операций определяются с помощью следующих таблиц истинности:
X |
Y |
X and Y |
X or Y |
X xor Y |
true |
true |
true |
true |
false |
true |
false |
false |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
false |
false |
X |
Not X |
true |
false |
false |
true |
Пример 1:
not (5>2) = false
(5>2) and (3<10) = true
(8<>9) or (4>5) = true
not (5=2) xor (3>2) = false
Пример 2:
var test: boolean; a, b: integer; begin writeln (‘Введите а и b’); readln (a,b); test:=a>b; writeln (‘а > b - ’, test); end. |
Пусть, например, введены числа: 5 16 тогда test:=5>16; на экране: а > b - False |
При сравнении данных типа BOOLEAN учитывается внутреннее соглашение Турбо Паскаля, в соответствии с которым FALSE есть нулевой байт, a TRUE - байт с единицей в младшем разряде. Заметим, что функция ORD преобразует к целому не только символы, но и логические величины, поэтому
ord(false) = 0,
ord(true) = 1.
2.5 Ограниченные типы
На основе стандартных типов можно строить собственные типы, ограничивая диапазон возможных значений: 1..10, -100..10, ‘a’..’z’ и т.п.
Пример:
var a: 2..5;
b: ‘a’..’z’;
begin
a:=3;
b:=0; {ошибка: несоответствие типов – переменной символьного типа присваивается целое число}
a:=0; {ошибка: выход за границы диапазона 2..5}
end.
2.6 Перечислимые типы
Образуются путем явного перечисления всех возможных значений, задаваемых именами. Например, для программы управления светофором, может быть определен следующий тип:
var svet: (red, yellow,green);
oper: (plus, minus);
Тип boolean – частный случай перечислимого типа.
2.7 Описание типов
Новые типы данных в Паскаль определяются посредством описаний, начинающихся со слова TYPE. Описание состоит из имени типа и значения типа, между которыми ставится знак «=».
Пример:
Type dec=1..10;
abc=’A’..’z’;
int=integer;
-
var a: dec;
b: abc;
c: int;
{в разделе описания переменных var можно использовать не только стандартные типы данных, но и новые типы, описанные программистом в разделе Type }
2.8 Преобразование типов
Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые выполняются над ней в программе. Контроль над использованием переменных еще на этапе компиляции программы - важное преимущество Турбо Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. В Турбо Паскале почти невозможны неявные (автоматические) преобразования типов. Исключение сделано только в отношении констант и переменных типа INTEGER (целые), которые разрешается использовать в выражениях типа REAL (вещественные). Если, например, переменные X и Y описаны следующим образом:
var х: integer;
у: Real;
то оператор
у:=х + 2;
будет синтаксически правильным: хотя справа от знака присваивания стоит целочисленное выражение, а слева - вещественная переменная, компилятор сделает необходимые преобразования автоматически. В то же время оператор
х:=2.0;
будет неверным, так как автоматическое преобразование типа REAL (константа 2.0 содержит десятичную точку и, следовательно, принадлежит к типу REAL) в тип INTEGER в Турбо Паскале запрещено.
Таким образом, переменным можно присваивать значения только своего типа; единственное исключение: переменная вещественного типа, а значение – целого (в этом случае целое число будет преобразовано в вещественное с дробной частью, равной 0).
Разумеется, запрет на автоматическое преобразование типов еще не означает, что в Турбо Паскале нет средств преобразования данных. Они, конечно же, есть, но их нужно использовать явно. Для преобразования данных в языке существуют встроенные функции, которые получают в качестве параметра значение одного типа, а возвращают результат в виде значения другого типа. В частности, для преобразования REAL в INTEGER имеются даже две встроенные функции такого рода: ROUND округляет REAL до ближайшего целого, a TRUNC усекает REAL путем отбрасывания дробной части (см. п.1.5).
Например, ошибочным будет оператор
х := у/х;
но правильным
х := round(у/х);
(объявления переменных см. выше).
Например, для преобразования данных типа CHAR (символ) в целое число предназначена функция ORD, обратное преобразование INTEGER в CHAR осуществляет функция CHR.
Наличие двух операций деления есть еще одно проявление основополагающего принципа Турбо Паскаля: программист должен явно подтверждать компилятору, что он готов к возможным последствиям преобразования типов. Если, например, в языке Фортран используется выражение 1/2 , то результат этого выражения будет зависеть от того, переменной какого типа он будет присвоен: если N есть переменная целого типа, а Х- вещественного, то в программе на Фортране присваивания
N = 1/2
X = 1/2
дадут значения 0 для N и 0.5 для X. В Турбо Паскале такой двусмысленности нет: выражение 1/2 всегда имеет значение 0.5 и поэтому оператор
var N :integer;
begin
N := 1/2;
просто недопустим. В то же время допустимые в Турбо Паскале операторы:
var X : Real;
N: integer;
begin
N := 1 div 2;
X := 1 div 2;
И, наконец, об операциях отношения и логических операциях.
Над данными типа REAL, INTEGER, CHAR, STRING определены следующие операции отношения (сравнения):
= - равно;
<> - не равно;
< - меньше;
> - больше;
<= - меньше или равно,
>= - больше или равно.
В операциях сравнения должны участвовать однотипные операнды. Исключение сделано опять-таки в отношении REAL и INTEGER, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет тип BOOLEAN.