Программирование на языке Delphi/§3
Содержание |
Логический тип данных [править]
Логический тип данных в Delphi называется boolean, его размер 1 байт, и он может принимать только два значения True или False.
Логические операции:
- Логическое умножение(конъюкция): AND
- Логическое сложение(дизъюнкция): OR
- Отрицание: NOT
- Исключающее ИЛИ: XOR
- Логическое повторение: =
Пример программы:
{$APPTYPE CONSOLE} var b:boolean; begin b:=2=2; end.
Подумайте, чему будет равна переменная b.
Оператор безусловного перехода goto [править]
Оператор безусловного перехода - печально известный goto. Оператор goto состоит из двух частей:
goto <метка>.
Метка - это специальный индентификатор, после которого стоит двоеточие; Оператор goto передает управление оператору, который стоит после метки, также есть некоторые ограничения:
- Нельзя передавать управление в другую процедуру или функцию.
- Нельзя передавать управление в тело опертора try...except(finally).
Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как способствует созданию малопонятных и трудномодифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. Поэтому рекомендуется минимальное использование оператора goto.
{$APPTYPE CONSOLE} label mylabel; //Создаем метку var a:integer; begin myLabel: a:=20; goto myLabel; end.
В примере показано создание бесконечного цикла при помощи оператора goto.
Оператор условного перехода If [править]
Оператор условного перехода позволяет проверить некоторое условие, и в зависимости от результатов проверки выполнить то или иное действие. Простой вид Условного оператора:
If <Условие> Then <Оператор1> Else <Оператор 2>
Если условие истинно, то выполянется оператор1, в противном случае выполняется оператор2. После оператора 1, не нужно ставить точку с запятой. Если требуется выполнение более одного условия, то необходима конструкция begin...end. Если после end идет Else, то точка с запятой не ставится.
Пример:
{$APPTYPE CONSOLE} var a,b:integer; begin readln(a,b); //Считываем с клавиатуры 2 числа if a>b then //Сравниваем их writeln('a>b') //Если первое больше, то сообщаем пользователю об этом else writeln('a<b'); readln; end.
else не является обязательной частью условного оператора.
var a:byte; begin if (a=2) then a:=10; end.
При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:
if условие1 then if условие2 then <оператор1> else <оператор2>
Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда ассоциируется с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else.
Стоит отметить, что приоритет операций отношения меньше, чем логических, так что для сложных условий мы должны брать операции отношения в скобки.
if a>b and b>c then... //Неверно! if (a>b)and(b>c) then... //Это правильно
Оператор условного перехода Case [править]
Оператор Case называют оператором выбора. Он позволяет выбирать один из возможных вариантов продолжения программы. Расмотрим его структуру:
case <ключ выбора> of <константа выбора>:<оператор1> else <операторы> end;
Ключом выбора может быть только выражение, которое относится к простому типу данных. Сначала идет вычисление ключа выбора, а затем идет сравнение с константой выбора(их число не ограничено). Если существует такая константа выбора, которая равна ключу выбора, то выполяется оператор, следующий за константой, а затем оператор выбора завершает свою работу(т.е. управление передается оператору, следующему за end;).
Пример:
{$APPTYPE CONSOLE} var a:byte; begin readln(a); //Считываем с клавиатуры число а case a of 1: writeln('case1'); //Если число а равно 1, то выводим строку case1 2: writeln('case2'); else writeln('CaseElse'); end; readln; end.