Б. А сколько Вам лет?

АВГ | МАР | апр
| 6 |
2011 | 2012 | 2013

4 captures 18 июл 11 - 6 мар 12 |

Close Help

Б. А сколько Вам лет?

Теперь напишем приложение, которое будет выводить текст уже в зависимости от значения некоторой переменной. Для этого в приложении будет использоваться указание ВЫБРАТЬ ИЗ.

Объявляем название отдела приложения:

    ОТДЕЛ Возраст+;

Указываем используемые отделы. В нашем случае используется только отдел "Вывод", который нам будет нужен для вывода на экран текста:

    ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\";

Объявляем постоянную, общую для всего отдела:

    ПОСТ
      нынешнийГод = 2006;

Объявляем задачу "Положение", на вход которой поступает целое значение в переменной "годРождения":

    ЗАДАЧА Положение(годРождения:ЦЕЛ);

В задаче объявляем переменную для хранения цепочки из 7 знаков:

    ПЕР
      положение:РЯД 7 ИЗ ЗНАК;

И переменную для хранения целого числа:

      возраст:ЦЕЛ;

Начинаем выполняемые указания данной задачи:

    УКАЗ

Сначала вычислим возраст:

      возраст:=нынешнийГод-годРождения;

В одной старинной рукописи приводится такое описание:

ДЕТИЩЬДОСЕДМЬЛЕТЪ ОТРОЧАДОДВОЮСЕДМИЦЬЛЕТЪ ОТРОКЪДОТРЕХЪСЕДМИЦЬ ЮНОШАДОЧЕТЫРЕХЪСЕДМИЦЬ МУЖЬДООСМИСЕДМИЦЬ ИОТТОЛЕСТАРЕЦЬ

При помощи указания ВЫБРАТЬ ИЗ выполним соответствующее присваивание переменной "положение":

      ВЫБРАТЬ возраст ИЗ
          0 .. 7*1-1: положение:="дитя"
      | 7*1 .. 7*2-1: положение:="отрок"
      | 7*2 .. 7*3-1: положение:="юноша"
      | 7*3 .. 7*8-1: положение:="муж"
      | 60,70,80,90:  положение:="юбиляр"

Если текущее значение переменной "возраст" не совпадает ни с одним из заранее заданных наборов значений, то выполняется особое присваивание:

      ИНАЧЕ
        положение:="старец"

Заканчиваем указание ВЫБРАТЬ ИЗ:

      КОН;

Выводим на экран с новой строки такую фразу: "мужчина N года рождения -", где N будет текущим значением переменной "годРождения". Для этого мы воспользуемся задачей "ЧЦел" из отдела "Вывод". Эта задача может выводить на экран до четырех значений целых переменных вместе с сопровождающим их текстом.

      Вывод.ЧЦел("^мужчина %d года рождения - ",годРождения,0,0,0);

После выводим на экран значение переменной "положение":

      Вывод.Цепь(положение)

Объявляем конец задачи "Положение".

    КОН Положение;

Начинаем последовательность указаний, выполняющихся при запуске приложения:

    УКАЗ

Последовательно вызываем задачу "Положение" с разными значениями для входной переменной "годРождения":

      Положение(1917);
      Положение(1991);
      Положение(2004)

Завершаем отдел "Возраст":

    КОН Возраст.

В итоге в файле "Возраст.отд" мы должны получить текст следующего содержания:

    ОТДЕЛ Возраст+;
    ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\";

    ПОСТ
      нынешнийГод = 2006;

    ЗАДАЧА Положение(годРождения:ЦЕЛ);
    ПЕР
      положение:РЯД 7 ИЗ ЗНАК;
      возраст:ЦЕЛ;
    УКАЗ
      возраст:=нынешнийГод-годРождения;
      ВЫБРАТЬ возраст ИЗ
          0 .. 7*1-1: положение:="дитя"
      | 7*1 .. 7*2-1: положение:="отрок"
      | 7*2 .. 7*3-1: положение:="юноша"
      | 7*3 .. 7*8-1: положение:="муж"
      | 60,70,80,90:  положение:="юбиляр"
      ИНАЧЕ
        положение:="старец"
      КОН;
      Вывод.ЧЦел("^мужчина %d года рождения - ",годРождения,0,0,0);
      Вывод.Цепь(положение)
    КОН Положение;

    УКАЗ
      Положение(1917);
      Положение(1991);
      Положение(2004)
    КОН Возраст.

Чтобы получить исполняемый EXE-файл этого примера, просто запустите командный файл "Построить.bat" с параметром Возраст.

После запуска приложения на экране должно появиться:

    В 2006 году:
    мужчина 1917 года рождения - старец
    мужчина 1991 года рождения - юноша
    мужчина 2004 года рождения - дитя

Теперь у вас достаточно опыта, чтобы самостоятельно разбираться в примерах из папки \Глагол\Приложения\Иное\.

Сделано в России