Ваша первая программа на JavaScript - несколько вариантов
Некоторые особенности и фишки, которые можно применять при редактировании файла в Dev-C++
Перевод русских букв на латиницу с возможностью удаления пробелов и преобразования в маленькие буквы
Как переименовать файл в Паскале
[АП 2023/02] - свежий номер журнала

Как стать успешным фрилансером
Операторные скобки
![]() |
Что делать, чтобы стать программистом
Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее... |
Мы с вами изучили простейшие применения условного оператора и оператора выбора. Однако в реальных программах обычно встречаются более сложные случаи.
Например, в нашем калькуляторе в случае выбора операции деления и в случае, если пользователь ввёл в качестве второго числа 0, мы выдаём сообщение об ошибке и завершаем программу. Это очень плохо, потому что мы не предоставили пользователю шанса исправить ошибку. Пользователь может на нас обидеться.
Как быть? Ведь после оператора if можно записать только одно выражение. То есть, если мы напишем
if y = 0 then WriteLn('!!! Error: Division by ZERO !!!'); Write('y = '); ReadLn(y);
То мы предоставим пользователю возможность повторно ввести значение y. Но есть одна проблема.
Строка кода
Write('y = ');
будет выполняться в любом случае, независимо от того, был ли y равен нулю или нет. То есть мы заставим пользователя повторно вводить значение, даже если он с первого раза ввёл его правильно.
Но и это ещё не всё. Нам придётся снова проверять значение y, так как пользователь может и второй раз ошибиться.
В общем у нас появился вопрос: как можно “впихнуть” в оператор if несколько выражений.
Ответ есть: надо поместить все выражения между словами begin и end. То есть в нашем примере это будет выглядеть так:
if y = 0 then begin WriteLn('!!! Error: Y must not be ZERO !!!'); WriteLn('!!! Re-type Y !!!'); Write('y = '); ReadLn(y); end;
Итак, полный вариант синтаксиса конструкции if...then...else:
if Условие then begin Оператор_1; Оператор_2; … Оператор_N; end else begin Оператор_1; Оператор_2; … Оператор_N; end;
Если используется только один оператор, то слова begin и end можно не использовать. Если более одного оператора, то использование этих слов ОБЯЗАТЕЛЬНО.
Обратите внимание, что перед словом else нет точки с запятой. А в конце конструкции if...then...else всегда должна быть точка с запятой.
Надеюсь, вы уже догадались, что слова begin и end используются не только для обозначения начала и конца программы. Эти слова ещё называют операторными скобками. Операторные скобки объединяют какой-либо блок кода. И в таком случае этот блок кода используется в программе как один оператор.
Слова begin и end - это не единственные операторные скобки в Паскале. Например, рассмотренная нами ранее конструкция с оператором case сама по себе также является операторными скобками, то есть между словами case и end не нужно вставлять слова begin и end.
Однако, если после константы следует несколько операторов, то слова begin и end также необходимы. Полный вариант конструкции case выглядит так:
Case ПорядковаяПеременная of Значение_1 : Begin Операторы; End; Значение_2 : Begin Операторы; End; … Значение_N : Begin Операторы; End; Else Begin Операторы; End; End;
О других операторных скобках мы будем говорить далее.
А сейчас ещё немного усовершенствуем наш многострадальный калькулятор.
program mycalc; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var x, y : integer; op : char; begin Write('x = '); ReadLn(x); Write('y = '); ReadLn(y); Write('Operation (+, -, *, /): '); ReadLn(op); case op of '+' : WriteLn('x + y = ', x + y); '-' : WriteLn('x - y = ', x - y); '*' : WriteLn('x * y = ', x * y); '/' : if y = 0 then begin WriteLn('!!! Error: Y must not be ZERO !!!'); WriteLn('!!! Re-type Y !!!'); Write('y = '); ReadLn(y); if y = 0 then WriteLn('!!! Error: Y must not be ZERO !!!') else WriteLn('x div y = ', x div y); end else WriteLn('x div y = ', x div y); else WriteLn('!!! Error: Unsupported operation !!!'); end; ReadLn; end.
Итак, здесь мы даём возможность пользователю исправить свою ошибку. Однако он может совершить её ещё раз. Как решить эту проблему, мы будем думать дальше.
А пока разберитесь и усвойте сегодняшний материал.