
Лекции Информатика_заочн / Лекция2.3информатика
.docЛекция 3.
«Условный оператор. Оператор варианта. Операторы цикла».
3.1. Условный оператор.
Часто возникает проблема выбора действий в зависимости от некоторых условий. Для того чтобы решить эту проблему в программировании существует специальный оператор, который называется условным.
Структура условного оператора:
if <Условие> then <Оператор1>
else <Оператор2>;
В переводе на русский язык это означает: «Если Условие верно, то выполняется Оператор1, в противном случае (если условие ложно) выполняется Оператор2».
NB! Перед словом else символ «;» не ставится.
Структура неполного условного оператора:
if <Условие> then <Оператор>;
Очень часто после then и else используется составной оператор. Составной оператор – объединение нескольких операторов в одну группу. Составной оператор начинается служебным словом begin и заканчивается, словом end. Составной оператор также называют операторными скобками. Например,
if <Условие> then begin
<Оператор1>;
<Оператор2>;
<Оператор3>;
end
else begin
<Оператор4>;
<Оператор5>;
<Оператор6>;
end;
Графически условные операторы изображаются следующим образом:
Для объединения нескольких условий можно использовать логические операции: and, or, not. Например,
if (<Условие1>) and (<Условие2>) then <Оператор1> else <Оператор2>;
При этом условия берутся в круглые скобки.
3.2. Оператор варианта
Оператор варианта необходим в том случае, когда в зависимости от значений какой-либо переменной нужно выполнить те или иные операторы. Если вариантов всего два то можно обойтись и условным оператором, но если их десять? Вот в этом случае и оптимален оператор варианта case.
Структура оператора:
case Управляемая переменная (выражение) of
набор значений 1: оператор_1;
набор значений 2: оператор_2;
набор значений 3: оператор_3;
набор значений 4: оператор_4;
…
набор значений n: оператор_n
else
Альтернативный всем наборам оператор;
end;
Тип управляемой переменной (выражения) должен совпадать с типом значений из набора.
NB! Они могут быть любого типа, кроме real.
Пример 1: Ввести номер дня недели и вывести соответствующий день недели на русском языке.
Блок-схема |
Программа |
|
program Pr1; var n:integer; begin writeln (‘введите n дня недели’); readln (n); case n of 1: writeln(‘Понедельник’); 2: writeln(‘Вторник’); … 7: writeln(‘Воскресенье’) else writeln(‘некорректное число’); end; end. |
3.3. Операторы цикла.
Допустим, дано задание составить программу, печатающую числа, например от 1 до 3. Для этой задачи программу составить просто. А если от 1 до 1000? Одни и те же действия будут записаны тысячу раз.
Существуют специальные операторы цикла, которые позволяют выполнить одни и те же действия многократно, и при этом текст программы записывается более компактно. Имеется три вида оператора цикла:
-
Оператор цикла «Для» имеет две формы: с шагом равным единице и с шагом равным минус единице.
Структура опера тора с шагом равным единице:
for <параметр>:=<нач. значение> to <кон. значение>do <тело цикла>;
Читается оператор так: «Для i от начального значения до конечного значения выполнять тело цикла с шагом равным 1».
Тело цикла содержит один оператор или группу операторов составляющих составной оператор. В этом операторе начальное значение параметра меньше или равно конечного значения параметра.
Структура опера тора с шагом равным минус единице:
for <параметр>:=<нач. значение> downto <кон. значение>do <тело цикла>;
Читается оператор так: «Для i от начального значения до конечного значения выполнять тело цикла с шагом равным минус 1».
Начальное значение параметра больше или равно конечного значения параметра.
NB! Параметр цикла, начальное значение параметра и конечное значение параметра могут быть только целого или символьного типа.
Графическое изображение оператора:
В задачах на циклы, где требуется вычислить сумму или произведение, переменной суммы первоначально присваивается значение нуль, переменной произведения – единица.
Пример 2: Определить сумму и произведение чисел от 1 до n.
Блок-схема |
Программа |
|
program Pr2; var n, S, P, i: integer; begin writeln(‘введите n’); readln(n); S:=0; P:=1; for i:=1 to n do begin S:=S+i; P:=P*i; end; writeln(‘S=’,S,’ P=’,P); end. |
-
Оператор цикла «Пока».
Структура оператора:
while <Условие> do <тело цикла>;
Читается оператор следующим образом: «Пока условие истинно выполнять тело цикла».
В блок-схеме изображается так:
Тело цикла может содержать один оператор или группу операторов заключенных в операторные скобки.
Работает оператора так: проверятся условие и пока условие истинно выполняется тело цикла, когда условие становится ложным, происходит выход из цикла и переход к следующему после тела цикла оператору. В теле цикла этого оператора обязательно должно быть действие, влияющее на условие, иначе может произойти зацикливание программы. Данный оператор называют оператором цикла с предусловием.
Пример 3: Определить сумму и произведение чисел от 1 до n.
Блок-схема |
Программа |
|
program Pr2; var n, S, P, i: integer; begin writeln(‘введите n’); readln(n); S:=0; P:=1; i:=1; while i<=n do begin S:=S+i; P:=P*i; i:=i+1;{действие влияющее на условие} end; writeln(‘S=’,S,’ P=’,P); end. |
-
Оператор цикла «Повтори».
Структура оператора:
repeat <тело цикла> until <Условие>;
Читается оператор следующим образом: «Повторять тело цикла до тех пор, пока условие не станет истинным».
Тело цикла может содержать любое количество операторов, при этом операторные скобки не нужны. Условие ставится заведомо ложное.
Графическое изображение оператора:
Оператор работает следующим образом: выполняется тело цикла, потом проверяется условие и так до тех пор, пока условие не станет истинным. Когда условие становится истинным, происходит выход из цикла и переход к следующему оператору. В теле цикла этого оператора обязательно должно быть действие, влияющее на условие, иначе может произойти зацикливание программы. Данный оператор называют оператором цикла с постусловием.
Тело цикла оператора с постусловием всегда хотя бы один раз выполняется в отличие от оператора с предусловием.
NB! Перед словом until символ «;» не ставится.
Пример 3: Определить сумму и произведение чисел от 1 до n.
Блок-схема |
Программа |
|
program Pr2; var n, S, P, i: integer; begin writeln(‘введите n’); readln(n); S:=0; P:=1; i:=1; repeat S:=S+i; P:=P*i; i:=i+1 {действие влияющее на условие} until i>n; writeln(‘S=’,S,’ P=’,P); end. |