Файл: Энциклопедия учителя информатики. Выпуск 5 Е. В. Андреева, И. Н. Фалина Окончание. Начало см в 142007 10. Операторы языка программирования Оператор.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.10.2023
Просмотров: 706
Скачиваний: 6
оператор присваивания.В общем виде оператор присваивания записывается так:<переменная> <знак присваивания> <выражение>Например, в языке Pascal в качестве знака присваивания используется комбинация символов :=. В ряде других языков — знак равенства.Результатом выполнения оператора присваивания является изменение состояния данных: все переменные, отличные от переменной, стоящей в левой части оператора присваивания, не меняют своего значения, а указанная переменная получает значение выражения, стоящего в правой части оператора присваивания. В большинстве случаев требуется, чтобы тип выражения совпадал с типом переменной. Если это не так, то оператор либо считается синтаксически некорректным, либо производится преобразование типа выражения к типу переменной (см. “Типы данных” ).Операторы выбораПо-другому эти операторы называют условными операторами. Условные операторы используются для программирования алгоритмов, содержащих алгоритмическую конструкцию ветвление.В языках программирования имеется несколько видов условных операторов. Полный условный оператор соответствует алгоритмической структуре полного ветвления:В языке программирования соответствующий условный оператор имеет вид:if B then S1 else S2Если выражение B, которое вычисляется в начале выполнения условного оператора, имеет значение “истина”, то будет выполняться оператор S1, в противном случае — оператор S2. Операторы S1 и S2 могут быть составными.Алгоритмическая структура неполного ветвления реализуется с помощью неполного условного оператора, который имеет вид:if B then SЗдесь B — логическое выражение, а S — произвольный оператор. Оператор S будет выполняться, если выражение B окажется истинным.Если условный оператор реализует всего две ветви выбора (“да” и “нет”), то с помощью оператора варианта (case-оператора) можно запрограммировать многоветвящуюся структуру. Оператор варианта имеет вид:case E ofV1: S1;…Vn: Sn;endВыполняется данный оператор так: значение выражения
E ищется среди перечисленных в записи оператора значений V1, V2, …, Vn, и если такое значение находится, то выполняется соответствующий оператор S1, S2, …, Sn.В разных языках программирования синтаксис и даже семантика перечисленных операторов могут отличаться, но возможности, предоставляемые программисту подобными конструкциями, примерно одинаковы.Пример 1. В статье “Алгоритмические конструкции”2 был приведен пример записи алгоритма решения обобщенного квадратного уравнения с помощью конструкций ветвления. Приведем фрагмент программы на языке Pascal, реализующий этот же алгоритм:readln(a,b,c);if a = 0 then if b = 0 then if c = 0 then writeln('x — любое') else writeln('нет корней') else writeln(—c/b)else beginD := b*b — 4*a*c; if D < 0 then writeln('нет корней') else begin x1 := -b + sqrt(D); x2 := -b - sqrt(D); writeln(x1:0:2,''', x2:0:2) endend;Операторы циклаОператоры цикла реализуют циклические алгоритмические конструкции, они используются для действий, повторяющихся многократно. Во многих языках программирования существуют три вида операторов цикла: “c предусловием”, “c постусловием”, “с параметром”.Необходимой и достаточной алгоритмической структурой для программирования циклов является цикл “с предусловием”, поэтому его можно назвать основным типом цикла. Оператор цикла с предусловием имеет вид:while B do SОператор S, для многократного выполнения которого создается цикл, называется телом цикла. Выполнение оператора цикла сводится к повторному выполнению тела цикла, пока значение логического выражения B истинно (до тех пор, пока оно не станет ложным). Фактически подобные операторы цикла реализуют повторное выполнение условных операторов if B then S, пока истинно условие B.Пример 2. Рассмотрим применение такого оператора цикла для подсчета суммы цифр натурального числа N:S := 0;while N > 0 do beginS := S + N mod 10;N := N div 10end;writeln(S);В цикле с постусловием тело цикла предшествует условию В. В отличие от цикла с предусловием здесь В — это условие окончания цикла. Оператор цикла с постусловием в Паскале имеет вид:repeat S until BПри такой организации цикла тело цикла
S хотя бы один раз обязательно выполнится.Практически во всех процедурных языках существует оператор цикла c параметром. Схематично его можно представить так:for <переменная>
<метка>
Метка в данном случае соответствует началу того оператора, с которого должно продолжиться выполнение программы. Такой оператор позволяет записывать в языке программирования алгоритмы, имеющие сколь угодно сложную структуру. Но зачастую использование безусловного перехода неоправданно, т.к. ведет к запутанной, плохо читаемой программе. Практически единственным осмысленным применением оператора goto является выход сразу из нескольких вложенных циклов, например, при обработке двухмерных массивов.
Пример 4. Пусть нам требуется определить, есть ли в двухмерном массиве a элемент, равный 0:
b := false;
for i := 1 to N do
for j := 1 to N do
if a[i,j] = 0 then begin
b := true;
goto 1
end;
1: if b then write('есть') else write('нет');
Программа, разработанная по правилам структурного программирования, не должна содержать операторов безусловного перехода. Приведенную выше программу без использования оператора goto можно переписать следующим образом:
b := false;
i := 0;
while not b and (i < N) do begin
i := i + 1
j := 0;
while not b and (j < N) do begin
j := j + 1
if a[i,j] = 0 then b := true;
end;
end;
if b then write('есть') else write('нет');
В данном случае структурная программа менее наглядна, чем программа с goto.
В языках программирования могут быть определены и другие операторы перехода. Например, в языке Pascal: break (досрочное прерывание цикла, переход на оператор, который должен выполняться после завершения цикла), continue (досрочное завершение текущей итерации цикла и переход к следующей), exit (досрочное прерывание подпрограммы, выход из нее), halt (досрочное прерывание программы, переход на ее конец). Аналогичные операторы существуют и в языках С, С++, Java.
Составной оператор
Составной оператор — это группа операторов, заключенных в операторные скобки (в Pascal — begin … end; в C, C++ — {…}).
Составной оператор введен в языки программирования для облегчения описания конструкций языка. Так, например, в Pascal исполняемая часть каждого блока (программа, процедура, функция) представляет собой один составной оператор. Ровно так же тело любого оператора цикла состоит только из одного оператора, быть может, составного. Альтернативой составному оператору может быть служебное слово, обозначающее окончание того или иного оператора, например,