Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Правила записи оператора IF




 

 

У каждого человеческого языка есть своя грамматика, включающая в себя правила, по которым должны выстраиваться в цепочку элементы языка, чтобы получилось правильное предложение. Совокупность этих правил образует часть грамматики, называемую синтаксисом. В языках программирования тоже есть предложения. Такими предложениями здесь являются операторы. Следовательно, у языков программирования тоже должен быть свой синтаксис, который описывает правила, по которым записываются операторы языка и из операторов составляется программа. После того, как человек запускает программу на выполнение, любая порядочная среда программирования прежде, чем действительно выполнять ее, сначала проверит, нет ли в ней синтаксических ошибок, и если есть, то программу выполнять не будет, а выдаст сообщение, указывающее человеку, в чем ошибка.

Пока мы не готовы воспринять полный синтаксис оператора ifПаскаля (вы найдете его в 14.8), однако уже сейчас нам хотелось бы писать без ошибок. Для этого, скрепя сердце, будем использовать сокращенный синтаксис. Поясним его в виде синтаксической схемы:

IFусловие THEN оператор ELSE оператор

Как понимать эту схему? Ее следует понимать, как образец, шаблон записи оператора, указывающий порядок, в котором оператор записывается из отдельных слов. Слова, которые в схеме я записал жирными заглавными буквами, при записи оператора просто копируются. Вместо слов, которые в схеме записаны строчными буквами, нужно при записи оператора подставить то, что они означают. Поясним, что обозначают эти слова.

оператор любой оператор Паскаля
условие пока под условием будем понимать два арифметических выражения, соединенных знаком сравнения, или условие равенства или неравенства строк, как это показано на примере в 5.1
выражение что такое выражение, было пояснено в 4.9
знак сравнения знаков сравнения шесть: > больше >= больше или равно = равно < меньше <= меньше или равно <> не равно

 

Пример: if5*a+4 <= a*b then WriteLn (b) else a:=b+5 Здесь

 

WriteLn (b) - один оператор,

a:=b+5 - другой оператор,

5*a+4 <= a*b - условие,

5*a+4 - одно выражение,

a*b - другое выражение,

<= - знак сравнения.

 

Вспомним правило расстановки точек с запятыми. Они применяются для того, чтобы отделять друг от друга операторы, выполняющиеся друг за другом. Поэтому и после оператора if мы тоже ставили точку с запятой, если после него шел какой-нибудь оператор. Распространенная привычка начинающих программистов - автоматически ставить точку с запятой после любого оператора, независимо от того, что после него стоит - другой оператор или же служебное слово, например else или end. Так вот, перед end точку с запятой ставить не возбраняется, а



перед ELSE точку с запятой ставить запрещено.

В п.5.1 вы уже видели, что оператор if можно записывать в краткой форме:

IFусловиеTHENоператор

Таким образом, это уже вторая синтаксическая схема, касающаяся одного оператора. Удобно же весь синтаксис оператора иметь перед глазами в одной схеме. Соединим две схемы в одну. Вот эта схема:

IF условие THEN оператор [ ELSE оператор ]

Квадратные скобки здесь означают, что их содержимое можно писать, а можно и не писать в операторе.

Полезное замечание: Вычисляя выражения, стоящие в условии оператора if, Паскаль не записывает их значения в память. Например, после выполнения фрагмента - b:=6; if b+1>0 then s:=20 - в ячейке b будет храниться 6, а не 7. То же относится и к выражениям из оператора WriteLn. Например: b:=6; WriteLn (b+1) . И здесь тоже в ячейке b останется храниться 6, а не 7. И вообще, информация в ячейках памяти не меняется при вычислении выражений.

Примеры работы оператора if:

ФРАГМЕНТ ПРОГРАММЫ ЧТО НА ЭКРАНЕ
a:=10; if a>2 then WriteLn ('!!!') else WriteLn ('!') !!!
a:=4; if a>5 then a:=a+10 else a:=a-1; WriteLn (a)
s:=6; if s-8<0 then s:=s+10; WriteLn (s)
s:=6; if s<0 then s:=s+10; s:=s+1; WriteLn (s)

Пояснение: Обратите внимание, что в последнем примере оператор if кончается оператором s:=s+10, а не s:=s+1. Поэтому оператор s:=s+1 будет выполняться всегда, независимо от величины s.



Задания 18-20:

Определить без компьютера, что будет напечатано при выполнении следующих фрагментов программ:

18. k:=20; k:=k+10; if k+10<>30 then k:=8 elsek:=k-1; WriteLn (k)

19. k:=20; k:=k+10; if k+10 = 30 thenk:=8 else k:=k-1; WriteLn (k)

20. p:=1; if p>0 then p:=p+5; Write (p); if p>10 then p:=p+1; Write (p)

Задания 21-23:

21. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе - произведение. После этого компьютер должен напечатать текст ЗАДАЧА РЕШЕНА.

22. В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, правда ли, что первый отрезок не слишком длинен, чтобы образовать с другими двумя отрезками треугольник.

Указание: Для этого его длина должна быть меньше суммы длин двух других отрезков. Замечание: Пока не думайте о том, что слишком длинными могут быть второй или третий отрезки. Об этом – задание из 5.5.

23. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет - только по две. Сколько голов и глаз у дракона, которому N лет?


mylektsii.ru - Мои Лекции - 2015-2018 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал