Условный оператор
Формат условного оператора на языке Паскаль: If <условие> Then <оператор 1> Else <оператор 2>;
Чтобы решить задачу, в которой по выполнению или невыполнению условия нужно совершить не одно, а несколько действий применяют составной оператор:
Вариант условного оператора в этом случае: If <условие> Then Begin <группа операторов 1> end Else Begin < группа операторов 2> end;
Знак ";" не ставится перед служебным словом Else, но операторы в группах, естественно, отделяются друг от друга этим знаком.
Пример: "Из двух чисел выбрать наибольшее". Program Example; Var a,b,c : Real; {a,b - для хранения аргументов, c - результат} Begin
Writeln('Введите два числа'); Readln(A,B); {Вводим аргументы с клавиатуры} If A>B Then C:=A Else C:=B; {Если A>B, то результат - A, иначе результат - B} Writeln(C); {Выводим результат на экран}
End.
Оператор выбора (варианта)
Полная форма:
Case ключ of
Значение 1: выражение 1 (оператор1);
Значение 2: выражение 2 (оператор2);
…..
Значение n: выражение n (оператор n);
Else выражение (оператор n);
End.
Неполная форма:
Case ключ of
Значение 1: выражение 1 (оператор1);
Значение 2: выражение 2 (оператор2);
…..
Значение n: выражение n (оператор n);
End.
В качестве ключа м.б. имя переменной любого порядкового типа, кроме вещественного и строкового, или выражение (арифметическое с целыми значением, или логическое). Тип параметра значение должен совпадать с типом ключа, при этом параметр значение – константа (можно задавать или список, или диапазон констант).
Цикл. Виды Циклов.
Циклом называется многократное повторение однотипных действий. Телом же цикла будем называть те самые действия, которые нужно многократно повторять.
Как вы понимаете, повторять одни и те же действия можно и при помощи оператора безусловного перехода. Если записать эти действия в программе одно за другим, а в конце поставить оператор перехода к началу этого блока. Однако таким образом можно получить только программу, которая работает вечно (зацикливается). Этого можно избежать, используя совместно с оператором перехода условный оператор, поставив выполнение перехода в зависимость от выполнения некого условия. Таким образом, мы получим структуру условного перехода и возможность организации конечного цикла. Вообще говоря, так мы можем решить практически любую задачу, требующую реализации циклического алгоритма. Создатель языка Паскаль Никлаус Вирт также задался этими вопросами и решил их в пользу расширения языка тремя специальными возможностями организации циклов. Для чего? - Для удобства, краткости, простоты чтения программы и, не побоюсь этого слова, красоты. Итак, существует три вида цикла, имеющих собственные операторы на языке Паскаль для их записи. Эти виды имеют собственные условные названия: "Пока", "До", "С параметром". Друг от друга они несколько отличаются и используются каждый для своего класса задач
Цикл "ПОКА"
Группа операторов, называемая "телом цикла", судя по этой схеме, будет выполняться пока истинно условие цикла. Выход из цикла произойдет, когда условие перестанет выполняться.
Если условие ложно изначально, то тело цикла не будет выполнено ни разу. Если условие изначально истинно и в теле цикла нет действий, влияющих на истинность этого условия, то тело цикла будет выполняться бесконечное количество раз. Такая ситуация называется "зацикливанием". Прервать зациклившуюся программу может либо оператор (нажав Ctrl+C), либо аварийный останов самой программы, в случае переполнения переменной, деления на ноль и т.п., поэтому использовать структуру цикла следует с осторожностью, хорошо понимая, что многократное выполнение должно когда-нибудь заканчиваться.
На языке Pascal структура цикла "Пока" записывается следующим образом: While <условие> Do <оператор>;
Можно прочитать так: "Пока истинно условие, выполнять оператор". Здесь, так же как в формате условного оператора, подразумевается выполнение только одного оператора. Если необходимо выполнить несколько действий, то может быть использован составной оператор. Тогда формат оператора принимает такой вид:
While <условие> Do begin
<оператор #1>; <оператор #2>; <оператор #3>; . . .
End;
Цикл "ДО"
Этот вид цикла отличается от предыдущего в основном тем, что проверка условия повторения тела цикла находится не перед ним, а после. Поэтому цикл "До" называют циклом "с постусловием", а "Пока" - "с предусловием".
Обратите также внимание на то, что новая итерация (повторное выполнение тела цикла) происходит не тогда, когда условие справедливо, а как раз тогда, когда оно ложно. Поэтому цикл и получил свое название (выполнять тело цикла до выполнения соответствующего условия).
Интересно, что в случае, когда условие цикла изначально истинно, тело цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" от "пока" привело к тому, что в программировании они не подменяют друг друга, а используются для решения задач, к которым они более подходят.
Формат цикла на языке Pascal:
Repeat
<оператор #1>; <оператор #2>; <оператор #3>; . . .
Until <условие>;
Читается так: "Выполнять оператор #1, оператор #2. : до выполнения условия".
Здесь не требуется использование составного оператора, потому, что сами слова Repeat и Until являются операторными скобками.
Цикл "С параметром".
В данном случае параметром будет являться целочисленная переменная, которая будет изменяться на единицу при каждой итерации цикла. Таким образом, задав начальное и конечное значения для такой переменной, можно точно установить количество выполнений тела цикла. Нарисовать блок-схему такой структуры вы сможете сами после некоторых пояснений.
Форматов у этого вида цикла предусмотрено два: For <И.П.>:=<Н.З.> To <К.З.> Do <оператор>; For <И.П.>:=<Н.З.> Downto <К.З.> Do <оператор>;
Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение, К.З. - соответственно конечное значение параметра. В качестве начального и конечного значений
Читается данная структура так: "Для переменной (далее следует ее имя) от начального значения до конечного выполнять оператор (являющийся телом цикла)". Иногда цикл с параметром даже называют "Для" или "For". В первом случае параметр с каждой итерацией увеличивается на единицу, во втором - уменьшается.
Выполняется этот цикл по следующему алгоритму
переменной-параметру присваивается начальное значение;
выполняется тело цикла;
переменная-параметр автоматически увеличивается на 1 (в первом случае формата);
если параметр превышает конечное значение, то происходит выход из цикла, иначе - переход к пункту 2.
Примечание: при использовании Downto параметр автоматически уменьшается на 1, а выход из цикла происходит тогда, когда параметр становится меньше конечного значения.
Таким образом, в отличие от первых двух видов цикла, этот цикл используется тогда, когда известно необходимое количество выполнений тела цикла.
Вообще говоря, цикл "Пока" является универсальным, то есть любая задача, требующая использования цикла, может быть решена с применением этой структуры. Циклы "До" и "С параметром" созданы для удобства программирования.
Примеры решения задач.
№ 1. Найти сумму квадратов всех натуральных чисел от 1 до 100.
Решим эту задачу с использованием всех трех видов циклов.
I. С использованием цикла "Пока".
Program Ex1; Var A : Integer; S : Longint; Begin
A:=1; S:=0; While A<=100 Do begin
S:=S+A*A; A:=A+1
End;
Writeln(S);
End.
II. С использованием цикла "До".
Program Ex2; Var A : Integer; S : Longint; Begin
A:=1; S:=0; Repeat
S:=S+A*A;
A:=A+1
Until A>100; Writeln(S)
End.
III. С использованием цикла "С параметром".
Program Ex3; Var A : Integer; S : Longint; Begin
S:=0; For A:=1 To 100 Do S:=S+A*A; Writeln(S)
End.
