ПолеСВосклицанием.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                          ОТДЕЛ ПолеСВосклицанием;
(*============================================================================* 
 * НАЗНАЧЕНИЕ: вывод записки
 *============================================================================*)
ИСПОЛЬЗУЕТ
  Надел,
  Поле,
  Подложка,
  Записка,
  Черта,
  Кнопка,
  Ввод ИЗ "..\Обмен\";

(******************************************************************************)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка);
(* получить и обработать управляющие послания *)
УКАЗ
  ДЛЯ посылка ВИДА
  | Ввод.ОтКлавиш:
      ЕСЛИ (посылка.код = 1BH) (* Esc *)
       ИЛИ (посылка.код = 79H) (* F10 *)
      ТО
        поле.состояние:=Поле.сДалее;
        посылка.код:=0
      КОН
  | Кнопка.Посылка:
      поле.состояние:=посылка.кнопка.действие
  ИНАЧЕ
  КОН             
КОН Приём;

(******************************************************************************)
ЗАДАЧА Выполнить-(
(* Цель:  осуществить вывод текста *)
(******************************************************************************)
(* До: *)   
    заголовок-:ЦЕПЬ;      (* заголовок подложки     *)
    строк:ЦЕЛ;            (* желаемая высота текста *)
    колонок:ЦЕЛ;          (* желаемая ширина текста *)
    окружение:Поле.Доступ;(* окружающее поле        *)
    текст-:ЦЕПЬ           (* выводимый текст        *)
);
(******************************************************************************)
ПОСТ
  (* цепочки для кнопок *)
  цДалее="[ Далее ]";
  длДалее=ДЛИНА(цДалее);
ПЕР
  поле:Поле.Доступ;
  подложка:Подложка.Доступ;
  записка:Записка.Доступ;
  черта:Черта.Доступ;
  кнДалее:Кнопка.Доступ;
УКАЗ
  (* вычисление местоположения кнопок *)
  ЕСЛИ длДалее > колонок ТО
    колонок:=длДалее
  КОН;
  (* создаём поле *)
  поле:=Поле.Создать(0,0,строк+4,колонок+4,окружение,ВКЛ,Приём);
  (* создаём наделы *)
  подложка:=Подложка.Создать(0,0,0,0,заголовок);
  записка:=Записка.Создать(1,2,-3,-2,текст);
  черта:=Черта.Создать(-3,0,1,0);
  кнДалее:=Кнопка.Создать(-2,1+(колонок-длДалее+1) ДЕЛИТЬ 2,цДалее,Поле.сДалее,ВКЛ); 
  (* добавляем наделы в порядке отрисовки и получения ввода *)
  Поле.ДобавитьНадел(поле,подложка);
  Поле.ДобавитьНадел(поле,записка);
  Поле.ДобавитьНадел(поле,черта);
  Поле.ДобавитьНадел(поле,кнДалее);
  (* основная работа *)
  Поле.Рисовать(поле);
  ПОВТОРЯТЬ
    Поле.Проверить(поле)
  ДО поле.состояние # Поле.сРабота;
  (* восстанавливаем окружение *)
  Поле.Рисовать(окружение)
КОН Выполнить;

КОН ПолеСВосклицанием.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы