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

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

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

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

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

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

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

ПОСТ
  нынешнийГод = 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 года рождения - дитя

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


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