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

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

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

 

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

ПОСТ        (* действия *)
  дНастройки=1;

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

(******************************************************************************)
ЗАДАЧА Выполнить-(окружение:Поле.Доступ);
ПОСТ
          (* цепочки для кнопок *)
  цДалее ="[ Далее ]";
  цОтмена="[ Отмена ]";
  длДалее =ДЛИНА(цДалее);
  длОтмена=ДЛИНА(цОтмена);
  промежуток=2; (* промежуток между кнопками *)
  занято=длДалее + промежуток + длОтмена;
  колонок=42;
  позДалее=1 + (колонок-занято-1) ДЕЛИТЬ 2;
  позОтмена=позДалее + длДалее + промежуток;
ПЕР
  поле:Поле.Доступ;
  подложка:Подложка.Доступ;
  памятка:Памятка.Доступ;
  черта1,черта2,черта3:Черта.Доступ;
  холст:Холст.Доступ; 
  крестик:Крестик.Доступ;
  метка:Метка.Доступ;
  кнДалее,кнОтмена,кнНастройки:Кнопка.Доступ;
УКАЗ
  памятка:=Памятка.Найти("Приложение");
          (* создаём поле *)
  поле:=Поле.Создать(0,0,17,колонок,окружение,ВКЛ,Приём);
          (* создаём наделы *)
  подложка:=Подложка.Создать (0,0,0,0,"Приложение");
  холст:=Холст.СоздатьСтроку (3,2,-2,памятка);
  метка:=Метка.Создать       (2,2,"~Головной отдел",холст); 
  черта1:=Черта.Создать      (5,0,1,0);
  крестик:=Крестик.Создать   (7,2,"~Малый Преобразователь Глагола"); 
  черта2:=Черта.Создать      (9,0,1,0);
  кнНастройки:=Кнопка.Создать(11,12,"[ ~Настройки (М)ПГ ]",дНастройки,ОТКЛ); 
  черта3:=Черта.Создать      (-3,0,1,0);
  кнДалее:=Кнопка.Создать    (-2,позДалее,цДалее,Поле.сДалее,ВКЛ); 
  кнОтмена:=Кнопка.Создать   (-2,позОтмена,цОтмена,Поле.сОтмена,ВКЛ); 
          (* заполняем наделы *)
  крестик.отмечен:=ПолеНастройки.МПГ;
          (* добавляем наделы в порядке отрисовки и получения ввода *)
  Поле.ДобавитьНадел(поле,подложка);
  Поле.ДобавитьНадел(поле,холст);
  Поле.ДобавитьНадел(поле,черта1);
  Поле.ДобавитьНадел(поле,метка);
  Поле.ДобавитьНадел(поле,черта2);
  Поле.ДобавитьНадел(поле,крестик);
  Поле.ДобавитьНадел(поле,черта3);
  Поле.ДобавитьНадел(поле,кнНастройки);
  Поле.ДобавитьНадел(поле,кнДалее);
  Поле.ДобавитьНадел(поле,кнОтмена);
          (* основная работа *)
  Поле.Рисовать(поле);
  ПОВТОРЯТЬ
    Поле.Проверить(поле);
    ЕСЛИ поле.состояние = дНастройки ТО
      Холст.СтрокуВПамятку(холст);
      ПолеНастройки.МПГ:=крестик.отмечен;
      ПолеНастройки.Выполнить(поле);
      поле.состояние:=Поле.сРабота
    КОН
  ДО поле.состояние # Поле.сРабота;
          (* восстанавливаем окружение *)
  Поле.Рисовать(окружение);
          (* перебрасываем данные *)
  ЕСЛИ поле.состояние = Поле.сДалее ТО
    Холст.СтрокуВПамятку(холст);
    ПолеНастройки.МПГ:=крестик.отмечен
  КОН
КОН Выполнить;

КОН ПолеПриложение.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы