Калькулятор "Школьная доска 3"

Операторы ветвления




Это единственная конструкция ветвления, доступная в калькуляторе "Школьная доска". Она является общепринятой:

if(логическое_выражениеf)
    блок
elseif(логическое_выражение)
    блок
else
    блок
endif

Ключевые слова if, elseif, else и endif ограничивают блоки формул,  из которых выполняется только один. А именно, выполняется первый сверху блок, для которого логическое выражение  является истинным. Если все логические выражения ложны, то выполняется блок else. 
Блоков elseif может быть несколько, а может не быть вовсе. Блок else может быть только один или, вообще, отсутствовать. 

Рассматриваемые конструкции ветвления могут быть вложенными друг в друга.

Пример. Игроки Борис и Аркадий играют в следующую игру. Каждый из них бросает игральную кость и добавляет к своим очкам выпавшее количество очков. Но, если набрано в точности 15, 30 или 45 очков, то все очки "сгорают". Игра идет до 50.

А = 0
Б = 0
while(А<=50 And Б<=50)
    А = А+random(5)+1
    if(А = 15 Or А = 30 Or А = 45)
        А = 0
    endif
    export(А)
    Б = Б+random(5)+1
    if(Б = 15 Or Б = 30 Or Б = 45)
        Б = 0
    endif
    export(Б)
wend

Здесь роль игральной кости играет выражение random(5)+1, принимающее с равной вероятностью значения 1, 2, ..., 6. Ветвление использовано в самом простом виде: присутствуют только обязательные ключевые слова if  и endif.

Усложним этот пример. Пусть, как и раньше, игрокам добавляется выпавшее при бросании игральной кости количество очков. Но, если какой-либо из игроков вырывается вперед, он получает бонус в одно очко. Если же у игроков оказывается равное количество очков, то они штрафуются на пять очков. Вот соответствующие этой игре формулы:

А = 0
Б = 0
while(А<=50 And Б<=50)
    А = А+random(5)+1
    Б = Б+random(5)+1
    if(А>Б)
        А = А+1
    elseif(А<Б)
        Б = Б+1
    else
        А = А-5
        Б = Б-5
    endif
    export(А)
    export(Б)
wend