Азбука Глагола
 
 glagol.png Программируем по-русски
 

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

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

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

 

Азбука программирования на Глаголе

Аз да буки, да и конец науки

 
 

▼ Предисловие



Условные обозначения



А) ▼ Здравствуйте!
Б) ▼ А сколько Вам лет?
В) ▼ Время, вперёд!



Азъ Буки Веде Глаголь Добро Есте Живите Зело Земля
И Иже Како Люди Мыслите Нашь Онъ Покой
Рцы Слово Твердо Укъ Фърътъ Херъ Цы Черве Шта Ъра Юсь Яти.

Глаголь Добро – говори, делай добро.
Помните у Пушкина: «Глаголом жечь сердца людей».
Глагол – это и слово, и дело одновременно.
Говорю – значит делаю. И делаю добро.
http://www.dunmers.com

 
 

Предисловие


Рассмотрим последовательность разработки приложений на Глаголе.

Свои программы лучше создавать в Оболочке Глагола или при помощи текстового редактора, поддерживающего кодировку УниКод (UTF16 = UCS2-Little Endian), например, в русском редакторе Булычова О.И. и Егорова Н.А. Bred3 (брэд3) с модулем расцветки синтаксиса Колорер-5 от Игоря Русских (скачать архив
Bred3_plugin_colorer5_Glagol-ARM-Mod-Ob2-ob7-cp-Strannik.rar),

Возраст.отд в Bred3

а также в безплатных текстовых редакторах Notepad++ (нотепад++) или SciTE (скайт). Подробнее о Total Commander и редакторе Bred3 изложено на странице Среда разработки приложений на Глаголе [для Windows].

Исходные тексты своих приложений лучше хранить в папке \Глагол\Приложения\Свои\. Преобразователь Глагола (ПГ.exe) будет переводить исходные тексты приложений в машинные команды и помещать их в промежуточные .obj файлы в папке \Глагол\Приложения\Свои\Код\, а редактор связей из полученных .obj файлов будет собирать окончательный EXE-файл. Подробнее о создании приложений можно ознакомиться на странице ответов на часто задаваемые вопросы.

Ниже мы разберём несколько небольших примеров приложений Windows.

Однако, если же вы будете переносить исходные тексты примеров из этого файла Azbuka.htm в текстовый файл при помощи буфера обмена, то в полученном текстовом файле могут оказаться особые знаки (неделимые пробелы), на которые ПГ будет выдавать ошибку. Для успешной работы необходимо будет подправить текстовый файл, удалив или заменив эти знаки.

Теперь приступим к написанию приложений.


 
 

А) Здравствуйте!


Где как приветствуют:
в Москве - "Здравствуйте!"
в Варшаве - "Як ся маетэ?"
в Киеве - "Шоб Вы здоровэньки булы!"
в Одессе - "Ну и как Вы себя имеете?"
Анекдот ХХІ Р.Х.

Наше первое приложение будет всего лишь выводить на экран фразу "Привѣтъ, мiръ!".

Перейдём в папку \Глагол\Приложения\Оболочка\, где храняться исходные тексты и EXE-файлы приложения Оболочка и посмотрим файл "\Глагол\Приложения\Оболочка\Привет.отд":

ОТДЕЛ Привет+;
ИСПОЛЬЗУЕТ
  Вывод ИЗ "...\Отделы\Обмен\";
УКАЗ
  Вывод.Цепь("Привѣтъ, мiръ!")
КОН Привет.

В этом файле 1-я строка

ОТДЕЛ Привет+;

объявляет название отдела приложения. Строка

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

разрешает использовать в нашем отделе переменные, задачи и другие понятия из отдела с именем Вывод. Причём, исходный текст этого отдела Преобразователь Глагола будет искать в файле "...\Отделы\Обмен\Вывод.отд". Следующая строка

УКАЗ
начинает последовательность указаний на выполнение, а строка
  Вывод.Цепь("Привѣтъ, мiръ!")

является единственным указанием в нашем отделе. По этому указанию вызывается задача Цепь для вывода на экран цепочки знаков "Привѣтъ, мiръ!" (слово Вывод, стоящее до точки, указывает на используемый отдел, из которого берётся задача Цепь). Последняя строка

КОН Привет.
заканчивает текст нашего отдела.

Теперь нужно получить исполняемый файл приложения "\Глагол\Приложения\Оболочка\Привет.отд", т.е. преобразовать исходные тексты всех используемых (явно и неявно) отделов нашего приложения в машинный код и собрать из него исполняемый EXE-файл. Для этого создаём в текущей папке \Оболочка\ (или берём из неё) командный файл "\Глагол\Приложения\Оболочка\Построить.bat" следующего содержания:

@Echo ON
rem Для вызова Построить.bat [приложение консоли Windows или в Консольном Окне] необходимо, чтобы:
rem %1        - имя приложения (без расширения .отд)

rem %slujput% - Путь к папке \Глагол\Службы\ относительно текущей папки \Оболочка с приложением %1
set slujput=..\..\Службы
rem %tekput%  - Путь к папке \Оболочка с приложением %1 из папки \Глагол\Службы\
set tekput=..\Приложения\Оболочка
pause;
call %slujput%\Построить.bat %1
и запускаем его с параметром Привет (без расширения .отд):
c:\Глагол\Приложения\Оболочка> Построить Привет

Если при преобразовании и сборке не будет выявлено никаких ошибок, то после окончания работы этого командного файла будет создан файл "Привет.exe".

Если запустить этот файл в проводнике Windows или в Total Commander, то можно и не успеть увидеть результата его работы. Эту трудность можно разрешить путём использования системной консольной оболочки:
    — в Win NT/XP/7/8 перейдите в Пуск>Выполнить>cmd или запустите файл C:\Windows\System32\CMD.exe;
    — в Win 9x вызовите 'Сеанс MS-DOS'
и перейдите в папку с файлом "Привет.exe" по команде

>cd \Глагол\Приложения\Оболочка

Теперь запустите EXE-приложение Привет.exe по команде

c:\Глагол\Приложения\Оболочка> Привет

После запуска приложения на экране появится слово "Привѣтъ, мiръ!". Всё, первое приложение создано.

Запуск приложения Привет.exe в консоле Windows — c:\Глагол\Приложения\Оболочка> Привет

Привѣтъ, мiръ! из \Приложения\Оболочка


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

Привет.отд в Оболочке


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

Привет.отд в Оболочке


 
 

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


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

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

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

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

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

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

ПОСТ
  нынешнийГод = 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" следующую строчку:

call %slujput%\Построить.bat Возраст

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

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

Открытие и редактирование приложения Возраст.отд в Оболочке Глагола в Графическом Окне

Возраст.отд в Оболочке


Тоже самое в диспетчере Файлов и Архивов Рошаля ФАР (3-я версия, 2014г.) с ФарКолорер-5 Игоря Русских

Far3.0b4130_36x90_Lucida8x14.lnk

Возраст.отд в Far3

или
Far2.0.1807_36x90_Lucida8x14.lnk

Возраст.отд в Far2

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

 
 

В) Время, вперёд!


Приступим к рассмотрению последнего примера. Это приложение будет взаимодействовать с человеком не через командную строку, а через обычные экранные кнопки. Нажатие на эти кнопки можно осуществлять как при помощи мышки, так и при помощи клавиатуры (клавиши "пробел" и "ввод", если кнопка принимает ввод). Стоит отметить, что это приложение можно выполнять и без файловой оболочки, т.к. оно работает в Графическом Окне Windows и заканчивает свою работу не сразу после запуска, а только по команде пользователя.

Наше приложение является секундомером. Вот так оно будет выглядеть в работе:

Запуск приложения Секундомер в Графическом Окне:

Вид секундомера в Графическом Окне

Запуск приложения Секундомер в Консольном Окне:

Вид консольного секундомера

Рассмотрим строение данных этого приложения. На экране определяется рабочее поле, а на поле выделяются наделы, в которые можно вводить и выводить данные. Координаты левого верхнего угла поля отсчитываются относительно левого верхнего угла экрана, а координаты наделов — от левого верхнего угла поля. Причем координата X увеличивается справа налево, а координата Y — сверху вниз. В нашем примере используются только два вида наделов: текстовая метка и экранная кнопка. Метка служит для вывода на экран однострочного текста, а кнопка — для передачи в приложение действий от человека.

Объявляем название отдела нашего приложения Секундомер и названия отделов, которые он использует:

ОТДЕЛ Секундомер+;

ИСПОЛЬЗУЕТ
  Ввод   ИЗ "...\Отделы\Обмен\",
  ОС     ИЗ "...\Отделы\Обмен\",
  Поле   ИЗ "...\Отделы\Поле\",
  Надел  ИЗ "...\Отделы\Поле\",
  Метка  ИЗ "...\Отделы\Поле\",
  Кнопка ИЗ "...\Отделы\Поле\";

Объявляем постоянные, соответствующие номерам действий, которые вырабатываются при нажатии соответствующих кнопок:

ПОСТ           (* действия кнопок [Пуск], [Стоп], [Сброс], [Выход] *)
  дПуск  = 1;
  дСтоп  = 2;
  дСброс = 3;
  дВыход = 4;

Заводим логическую переменную, которая будет принимать значение ВКЛ, если секундомер в данный момент ведёт измерения:

ПЕР
  идётИзмерение:КЛЮЧ;  (* ВКЛ, если идёт измерение времени *)

И целую переменную, которая будет хранить измеренный промежуток времени:

  измеренноеВремя:ЦЕЛ; (* промежуток времени в мс          *)

Далее объявляем задачу, которая выводит через экранную метку "мВремя" обновлённые показания времени в привычном для человека виде (часы:минуты:секунды.сотые):

ЗАДАЧА ОбновитьПоказания(номерЧасов:ЦЕЛ);
(* обновить показания секундомера *)
ПЕР
  сотые,секунды,минуты,часы:ЦЕЛ;
  сейчас:ЦЕЛ;
  прошлоВремени:ЦЕЛ;
УКАЗ
  сейчас:=ОС.Время();
  прошлоВремени:=сейчас - моментОбновления;
  моментОбновления:=сейчас;
  ЕСЛИ идётИзмерение ТО
    УВЕЛИЧИТЬ(измеренноеВремя,прошлоВремени)
  КОН;
  сотые:=измеренноеВремя ДЕЛИТЬ 10;
  секунды:=сотые ДЕЛИТЬ 100;
  минуты:=секунды ДЕЛИТЬ 60;
  часы:=минуты ДЕЛИТЬ 60;
  Записка.ИзЧЦел(
  зВремя,"%.2d:%.2d:%.2d.%.2d",
    часы,минуты ОСТАТОК 60,
        секунды ОСТАТОК 60,
          сотые ОСТАТОК 100
                )
КОН ОбновитьПоказания;

Следующая задача будет принимать и обрабатывать действия пользователя в экранном поле поле. Причем посылка от пользователя на входе задачи содержит или действие от экранной кнопки (1,2,3,4) или код клавиши клавиатуры (1,2,3,4) или данные о перемещении мышки:

ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка);
(* получить и обработать управляющие послания от пользователя *)
УКАЗ

Разные виды переменной посылка имеют разные наборы данных. Поэтому для разных видов этой переменной мы будем выполнять разную последовательность указаний. Для переменной посылка вида Кнопка.Посылка:

  ДЛЯ посылка ВИДА
  | Кнопка.Посылка:

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

      ВЫБРАТЬ посылка.кнопка.действие ИЗ (* действия кнопок [Пуск],[Стоп],[Сброс],[Выход] *)
      | дПуск:  идётИзмерение:=ВКЛ
      | дСтоп:  идётИзмерение:=ОТКЛ
      | дСброс: измеренноеВремя:=0
      | дВыход: поле.состояние:=Поле.сДалее  (* встроенные состояния поля (<= 0): *)
      КОН

Учитывая, что в наборе посылка вида Ввод.ОтКлавиш есть переменные "код", "упрКнопки", мы сможем выполнить следующее указание: при нажатии на клавишу "Esc" или клавишу "X" совместно с "Alt" сообщим через состояние поля, что требуется выход из приложения:

  | Ввод.ОтКлавиш:
      ЕСЛИ посылка.упрАльт И (посылка.код = 58H) (* Alt+'X' *)
         ИЛИ
          (посылка.код = 1BH)                    (* Esc     *)
      ТО
        поле.состояние:=Поле.сДалее  (* встроенные состояния поля (<= 0): *)
      КОН

Так как нам не нужно, чтобы приложение аварийно завершало свою работу при получении посылки вида, отличного от Кнопка.Посылка и Ввод.ОтКлавиш, то отработаем это условие как пустую последовательность указаний:

  ИНАЧЕ
  КОН

Заканчиваем задачу Приём и начинаем задачу Главная.

КОН Приём;

ЗАДАЧА Главная;

Определяем в задаче Главная переменные для поля (экрана), наделов (кнопок), списка наделов и переменную для хранения момента времени, в который произошло обновление показаний секундомера:

ПЕР
  поле:Поле.Доступ;                             (* рабочее поле экрана     *)
  подложка:Подложка.Доступ;                     (* подложка поля           *)
  кнСтоп,кнПуск,кнСброс,кнВыход:Кнопка.Доступ; (* управляющие кнопки      *)
  черта1,черта2:Черта.Доступ;                   (* разделительные чёрточки *)
  часы:ЦЕЛ;

Затем в задаче Главная объявляем подзадачу СоздатьПоле, в которой сначала создаём соответствующие наделы с заданными координатами:

  ЗАДАЧА СоздатьПоле;     (* создаёт рабочее поле экрана с кнопками-наделами *)
  УКАЗ                                                 (* создаём поле *)
                                  (* задача Приём *)
    поле:=Поле.Создать(0,0,8,17,ПУСТО,ОТКЛ,Приём);
                                                     (* создаём наделы *)
    подложка:=Подложка.Создать(0,0,0,0,"");
    зВремя:=Записка.Создать(1,3,1,11,"00:00:00.00");
    черта1:=Черта.Создать(2,0,1,0);
    кнПуск:=Кнопка.Создать(3,2,"[~Пуск]",дПуск,ВКЛ);
    кнСтоп:=Кнопка.Создать(3,9,"[~Стоп]",дСтоп,ВКЛ);
    кнСброс:=Кнопка.Создать(4,4,"[ С~брос ]",дСброс,ВКЛ);
    черта2:=Черта.Создать(5,0,1,0);
    кнВыход:=Кнопка.Создать(6,4,"[ ~Выход ]",дВыход,ВКЛ);

Далее заносим эти наделы в список получения ввода. Этот список определяет порядок обхода наделов при нажатии пользователем клавиши "Tab". В начале работы приложения первому наделу из этого списка, вид которого способен воспринимать ввод (в нашем случае это только кнопки, а не метки), будет предоставлена возможность получать ввод от человека.

                            (* добавляем наделы в порядке получения ввода *)
    Поле.ДобавитьНадел(поле,подложка);
    Поле.ДобавитьНадел(поле,зВремя);
    Поле.ДобавитьНадел(поле,черта1);
    Поле.ДобавитьНадел(поле,кнПуск);
    Поле.ДобавитьНадел(поле,кнСтоп);
    Поле.ДобавитьНадел(поле,кнСброс);
    Поле.ДобавитьНадел(поле,черта2);
    Поле.ДобавитьНадел(поле,кнВыход)
  КОН СоздатьПоле;

Далее начинается последовательность указаний задачи Главная. В начале мы проводим следующие подготовительные действия: выставляем начальные значения рабочих переменных, вызываем подзадачу для создания поля, рисуем поле со всеми наделами:

УКАЗ                                       (* задача ОбновитьПоказания *)
  Окно.Графическое("Секундомер","Lucida Console",30,ОбновитьПоказания);
(*
  Окно.Текстовое(ОбновитьПоказания);
 *)
  СоздатьПоле;
  Поле.ОкноНаВсёПоле(поле);
  Поле.Рисовать(поле);
  часы:=Окно.СоздатьЧасы(1,100); (* обновляем показания через 100мс *)
  Окно.Показать;

И, наконец, цикл, который будет выполняться всё основное время работы приложения (пока состояние поля будет рабочим):

                                   (* проверяем и обрабатываем ввод от человека *)
  ПОКА поле.состояние = Поле.сРабота ВЫП  (* встроенные состояния поля (<= 0): *)
    Поле.Проверить(поле)
  КОН;
  Окно.УдалитьЧасы(часы)

Заканчиваем задачу Главная, затем указываем на её выполнение при запуске приложения (после УКАЗ) и завершаем отдел "Секундомер":

КОН Главная;

УКАЗ
  измеренноеВремя:=0;
  идётИзмерение:=ОТКЛ;
  Главная
КОН Секундомер.

Полный текст данного приложения см. ниже или в "\Глагол\Приложения\Иное\Секундомер.отд":


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

ПОСТ           (* действия кнопок [Пуск],[Стоп],[Сброс],[Выход] *)
  дПуск  = 1;
  дСтоп  = 2;
  дСброс = 3;
  дВыход = 4;

ПЕР
  идётИзмерение:КЛЮЧ;    (* ВКЛ, если идёт измерение времени  *)
  измеренноеВремя:ЦЕЛ;   (* промежуток времени в мс           *)
  моментОбновления:ЦЕЛ;  (* показаний                         *)
  зВремя:Записка.Доступ; (* записка с показаниями секундомера *)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА ОбновитьПоказания(номерЧасов:ЦЕЛ);
(* обновить показания секундомера *)
ПЕР
  сотые,секунды,минуты,часы:ЦЕЛ;
  сейчас:ЦЕЛ;
  прошлоВремени:ЦЕЛ;
УКАЗ
  сейчас:=ОС.Время();
  прошлоВремени:=сейчас - моментОбновления;
  моментОбновления:=сейчас;
  ЕСЛИ идётИзмерение ТО
    УВЕЛИЧИТЬ(измеренноеВремя,прошлоВремени)
  КОН;
  сотые:=измеренноеВремя ДЕЛИТЬ 10;
  секунды:=сотые ДЕЛИТЬ 100;
  минуты:=секунды ДЕЛИТЬ 60;
  часы:=минуты ДЕЛИТЬ 60;
  Записка.ИзЧЦел(
  зВремя,"%.2d:%.2d:%.2d.%.2d",
    часы,минуты ОСТАТОК 60,
        секунды ОСТАТОК 60,
          сотые ОСТАТОК 100
                )
КОН ОбновитьПоказания;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка);
(* получить и обработать управляющие послания *)
УКАЗ
  ДЛЯ посылка ВИДА
  | Кнопка.Посылка:
      ВЫБРАТЬ посылка.кнопка.действие ИЗ (* действия кнопок [Пуск],[Стоп],[Сброс],[Выход] *)
      | дПуск:  идётИзмерение:=ВКЛ
      | дСтоп:  идётИзмерение:=ОТКЛ
      | дСброс: измеренноеВремя:=0
      | дВыход: поле.состояние:=Поле.сДалее  (* встроенные состояния поля (<= 0): *)
      КОН
  | Ввод.ОтКлавиш:
      ЕСЛИ посылка.упрАльт И (посылка.код = 58H) (* Alt+'X' *)
         ИЛИ
          (посылка.код = 1BH)                    (* Esc     *)
      ТО
        поле.состояние:=Поле.сДалее  (* встроенные состояния поля (<= 0): *)
      КОН
  ИНАЧЕ
  КОН
КОН Приём;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Главная;
ПЕР
  поле:Поле.Доступ;                             (* рабочее поле экрана   *)
  подложка:Подложка.Доступ;                     (* подложка поля         *)
  кнСтоп,кнПуск,кнСброс,кнВыход:Кнопка.Доступ; (* управляющие кнопки    *)
  черта1,черта2:Черта.Доступ;                   (* разделительные черты  *)
  часы:ЦЕЛ;

  (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  ЗАДАЧА СоздатьПоле;     (* создаёт рабочее поле экрана с кнопками-наделами *)
  УКАЗ                                           (* создаём поле экрана *) 
                                  (* задача Приём *)
    поле:=Поле.Создать(0,0,8,17,ПУСТО,ОТКЛ,Приём);
                                                     (* создаём наделы *)
    подложка:=Подложка.Создать(0,0,0,0,"");
    зВремя:=Записка.Создать(1,3,1,11,"00:00:00.00");
    черта1:=Черта.Создать(2,0,1,0);
    кнПуск:=Кнопка.Создать(3,2,"[~Пуск]",дПуск,ВКЛ);
    кнСтоп:=Кнопка.Создать(3,9,"[~Стоп]",дСтоп,ВКЛ);
    кнСброс:=Кнопка.Создать(4,4,"[ С~брос ]",дСброс,ВКЛ);
    черта2:=Черта.Создать(5,0,1,0);
    кнВыход:=Кнопка.Создать(6,4,"[ ~Выход ]",дВыход,ВКЛ);
                            (* добавляем наделы в порядке получения ввода *)
    Поле.ДобавитьНадел(поле,подложка);
    Поле.ДобавитьНадел(поле,зВремя);
    Поле.ДобавитьНадел(поле,черта1);
    Поле.ДобавитьНадел(поле,кнПуск);
    Поле.ДобавитьНадел(поле,кнСтоп);
    Поле.ДобавитьНадел(поле,кнСброс);
    Поле.ДобавитьНадел(поле,черта2);
    Поле.ДобавитьНадел(поле,кнВыход)
  КОН СоздатьПоле;

УКАЗ                                       (* задача ОбновитьПоказания *)
  Окно.Графическое("Секундомер","Lucida Console",30,ОбновитьПоказания);
(*
  Окно.Текстовое(ОбновитьПоказания);
 *)
  СоздатьПоле;
  Поле.ОкноНаВсёПоле(поле);
  Поле.Рисовать(поле);
  часы:=Окно.СоздатьЧасы(1,100); (* обновляем показания через 100мс *)
  Окно.Показать;
                                  (* проверяем и обрабатываем ввод от человека *)
  ПОКА поле.состояние = Поле.сРабота ВЫП  (* встроенные состояния поля (<= 0): *)
    Поле.Проверить(поле)
  КОН;
  Окно.УдалитьЧасы(часы)
КОН Главная;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
УКАЗ
  измеренноеВремя:=0;
  идётИзмерение:=ОТКЛ;
  Главная
КОН Секундомер. 

Преобразование приложения Секундомер.отд на Глаголе в исполняемый EXE-файл в консоле Windows

ПГ Секундомер


Для улучшения рабочего вида секундомера в Win NT необходимо в свойствах ярлыка файла Секундомер.exe на закладке "Расположение" установить "Размер" на ширину 17 и высоту 11. Также можно увеличить и размер шрифта.

Отметим, что в примерах игр (папка \Глагол\Приложения\Игры\) взаимодействие приложения с человеком организовано точно так же, как и в разобранном выше примере.



 
 

▲ Предисловие



Условные обозначения



А) ▲ Здравствуйте!
Б) ▲ А сколько Вам лет?
В) ▲ Время, вперёд!



Азъ Буки Веде Глаголь Добро Есте Живите Зело Земля
И Иже Како Люди Мыслите Нашь Онъ Покой
Рцы Слово Твердо Укъ Фърътъ Херъ Цы Черве Шта Ъра Юсь Яти.

Глаголь Добро – говори, делай добро.
Помните у Пушкина: «Глаголом жечь сердца людей».
Глагол – это и слово, и дело одновременно.
Говорю – значит делаю. И делаю добро.
http://www.dunmers.com

 

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

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

 


 

буквы | Вѣщій лѣсъ


Чей язык древней?

В древние времена х’Арийская Руника послужила основной базой для создания упрощенных форм письма: древнего Санскрита, Черт и Резов, Деванагари, германо-скандинавской Руникии многих других. Она совместно с другими письменами Славяно-Арийских Родов также стала основой всех современных алфавитов, начиная с древнесловенского и заканчивая кириллицей и латиницей.

Пробуждение родовой памяти посредством арийской азбуки.

Единый Пра-язык существовал на основе 4-х основных и 2-х вспомогательных видов письменности:

1) да’Арийские Тьраги. Это Образные Символы, которые соединяют в себе сложные объёмные знаки, передающие многомерные величины и многообразные Руны. Часть этих криптоиероглифических символов легла в основу криптограмм критомикенской культуры, иероглифического письма Древнего Египта и Междуречья, китайских, корейских, японских и других видов иероглифического письма.

2) х’Арийская Каруна (Союз из 256 Рун). В просторечии называется жреческим письмом. Каруна легла в основу древнего санскрита, деванагари, и использовалась жрецами Индии и Тибета. В упрощённом виде с меньшим количеством Рун Каруна использовалась западными Славянами и Ариями, населявшими в древности Скандинавию, Исландию (48 Рун), территорию нынешней Германии (19 Рун), Франции, Шотландии (33 Руны), Дании, Ирландии (38 Рун) и других Славяно-Арийских стран.

3) Расенские Молвицы (Образно-зеркальное письмо). Данную письменность называли Этрусским письмом, так как им писали Расены или Этруски – Славяне и Арии, населявшие в древние времена Италию. Сие письмо легло в основу древнего финикийского алфавита. Впоследствии, древние греки взяли финикийскую письменность за основу, выхолостили её и выдали за свою, на основе которой, позже, появилась “латынь”.

4) Святорусские Образы (Буквица). Данное письмо было самым распространённым среди всех Славяно-Арийских Родов в древности. Письмо применялось для межродовых и междержавных договоров. Известны различные варианты сокращённой Буквицы: византийский унициал, церковнославянский алфавит, древлесловенская (древнерусская) азбука. Сюда же можно отнести Велесовицу или шрифт Велесовой книги, и шрифт Святорусских Волхварей – текстов, записанных на дощечках из священных древ: дуба, берёзы, кедра и ясеня.

Древлесловенский или древнерусский язык лег в основу многих европейских языков, в том числе, английского, слова которых писались “латиницей”, а по звучанию и смыслу слов были Славяно-Арийскими.

5) Глаголица или Торговое письмо, использовалась для ведения реестров, подсчётов, оформления сделок и торговых договоров. Впоследствии Глаголица стала использоваться наравне с другими языками для записи былин, сказок, исторических событий, написания Священных Книг.

6) Словенское народное письмо было самым простым. Оно использовалось для передачи кратких сообщений. Впоследствии стало называться “берестяное письмо” или “Черты и Резы“. Это письмо постоянного обихода. Каждый Русич владел этим письмом и на куске бересты мог написать сообщение на бытовую тему своему родственнику.

Наиболее сложными для изучения и написания являются да-’Арийские Тьраги, которыми пользуются Жрецы-Хранители Древней Мудрости для написания Харатьий. Харатьи – это свитки пергамента с текстами, написанными Тьрагами.


Русский язык – сокральная (геометния) основа создания мира.

Русичи записывали Древнюю Мудрость и на более прочных материалах, например, на камнях или на листах из различных металлов (серебра, золота, платины). Наиболее удобными были Сантьи – пластины из платины, золота, и серебра, на которых выдавливались Руны, заполняемые потом несмываемой краской (подобной киновари). Пластины сшивались кольцами из названных металлов в дубовый оклад, который обрамлялся красной материей. Первоисточники Ведических Знаний хранятся в Общинах Староверов Сибири по настоящее время.

Русский Язык, Азбука | Ключи для понимания Себя, Мiроздания, Здоровья.


Древнерусский язык. Забытые Глубинные образы древних буквиц. Часть 1
Древнерусский язык. Забытые Глубинные образы древних буквиц. Часть 2

Русский – язык мироздания, ч.1

Русский – язык мироздания, ч.2

Русский язык самый древний язык на планете.

Сила Русского слова и языка [Игры Богов]

Обрезание памяти или для чего уничтожают Русский язык.

Смысловая матрица Славяно-Арийски х слов.

Истинное значение слова язычник

Русский язык 5 000 000 слов.

Русский язык – сокральная основа.

Исследование русского языка – язык слово образ

Древнерусский язык – Патер Дий


Язык общения во Вселенной – образ.

В древности, у славяно-арийских народов существовало четыре основных письма по числу основных Родов Белой Расы. Самые древние из сохранившихся документов, т. е. сантии, были записаны Древними х’Арийскими Рунами или Руникой, как их еще называют. Древние Руны это не буквы и не иероглифы в нашем современном понимании, а своего рода тайные образы, передающие огромный объем Древних Знаний.
Они включают в себя десятки знаков, записываемых под общей чертой, называемой поднебесной.
Знаки обозначают и цифры, и буквы, и отдельные предметы или явления либо часто используемые, либо очень важные.

В древние времена х’Арийская Руника послужила основной базой для создания упрощенных форм письма: древнего Санскрита, Черт и Резов, Деванагари, германо-скандинавской Руники и многих других. Она совместно с другими письменами Славяно-Арийских Родов также стала основой всех современных алфавитов, начиная с древнесловенского и заканчивая кириллицей и латиницей. Так что не Кирилл с Мефодием придумали наше письмо они лишь создали один из его удобных вариантов, что было вызвано необходимостью распространения христианства на славянских языках.

ВсеЯСветная ГРаМота известна на планете Земля в плоскостном отображении уже более 7500 лет. Данная Информация предназначена Всем интересующимся Русской Культурой.
Вы узнаете о ПраЯзыке Носителей Разума, об истории письменности и происхождении Азбук Народов Мiра; об истинном Смысле Слов; о принципах Создания и Развития Материи и о многом другом!

За Русским словом стоит Образ – целостная обьёмная мыслеформа. [Игры Богов — Азубчные истины]
Образность письма унаследованна от Рун, которыми наши Предки отображали окружающую их действительность.
Руна это не буква и не слог – это ключь к тайной, глубинной сути явления.
Скачать Фильм Игры Богов – Акт 7.4 – Азбучные истины (Сергей Стрижак) [2009 г., Просветительский, dvdrip]

Образарь
Здрав буди, Светичь – малая искра Родова!

Перед тобой лежит не совсем обычная книга, хотя название её «Образарь» может показаться тебе знакомым – похоже на слово «букварь». Не правда ли? Да, это, в своём роде, тоже «букварь», однако он не учит звуковому (фонетическому) прочтению букв и слов, и в нём ничего не говорится о правилах грамматики. Он учит другому: понимать изначальный, истинный смысл слова, то есть его образ. Учит тому, что именуют ныне «образным мышлением», на словесных примерах из древнерусского языка, возвращая начальный смысл слову «образование» – образотварение (создание образа). Эта книга поможет тебе вспомнить, какую информацию хранят в себе с виду «обычные» буквы, изведать глубину языка Русского. Познав же суть ваяния Образа, ты сможешь володеть Словом Живым ( а не загубленным, изроченным), кое имеет в себе силу великую: соединять ныне разъединённое, помочь Руси Быть!

Речь Русича
Въ цѣляхъ прѣдоставленiя всему населенiю республики возможность сознательнаго участiя въ политической жизни страны населенiе въ возрастѣ 8-50 лѣтъ не умеющему читать альбо писать обязано обучиться грамоте по родному альбо русскому языку. Уклоняющихся отъ установленныхъ декретомъ повинностей и прѣпятствующихъ неграмотнымъ посещать школы привлекать къ уголовной отвѣтствѣнности. Вотъ такъ населенiе молодой республики совѣтовъ возглавленное большевиками сдѣлало шагъ въ новый русскiй язык. Причёмъ потерявъ при симъ несколько буковъ и орфографiю коей до сего не одно столѣтiе пользовались. Въ частности была потеряна I (И десятеричная) и Ѣ (Ять) а также Ѳ (Фита) и Ѵ (Ижица) и того четыре буковы.


Смысловая матрица Русского языка.

Матрица современного языка

Думаю, здесь комментарии излишни. Достаточно сопоставить сегодняшний алфавит с древлесловенской Буквицей, чтобы понять во что превратился наш Язык (Дом Бытия по Хайдеггеру), наше сознание, наше Мировидение и Мироведание. Насколько они не совпадают, настолько же, и даже в большей степени, различаются наши персональные образ(ц)ы миров и Действительный Образ Мiра, в котором мы пребываем. Реформация языка — это всегда деформация сознания. Изроченность на одном уровне притягивает к себе изроченность на другом. Так что незачем удивляться тому, что многие, желая жить по правде, на самом деле, живут по кривде: кривой глаз не видит прямых путей.

Буквица – таблица значений

Славянская Азбука — Азбука Здоровья!

Аз, Буки, Веди… О смысле древнего славянского алфавита
Рассмотрим три первые буквы азбуки – Аз, Буки, Веди.

Азъ – “я”. Буки (букы) – буквы, письмена. Веди (веде) – “познал”, совершенное прошедшее время от “ведити” – знать, ведать.

Объединяя акрофонические названия первых трёх букв Азбуки, получаем следующую фразу: Аз, Буки, Веди – Я знаю буквы. Объединяются во фразы и все последующие буквы Азбуки:

Глагол – “слово”, причём не только изречённое, но и написанное.

Добро – ”достояние, нажитое богатство”.

Есть (есте) – 3-е л. ед. ч. от глагола “быть”.

Глагол добро есте: слово – это достояние.

Живите (вместо второго “и” раньше писалась буква “ять”, произносилось живёте) – повелительное наклонение, множественное число от “жить” – “жить в труде, а не прозябать”.

Зело (передавало сочетание дз = звонкое ц) – “усердно, со рвением”.

Земля – “планета Земля и её обитатели, земляне”.

И – союз “и”.

Иже – “те, которые, они же”.

Kaко – “как”, “подобно”. Люди – “существа разумные”.

Живите зело, земля, и иже како люди: живите трудясь усердно, земляне, и, как подобает людям.

Мыслите (писалось с буквой “ять”, произносилось “мыслёте”, так же, как и “живёте”) – повелительное наклонение, мн. ч. от “мыслить, постигать разумом”.

Нашъ – “наш” в обычном значении.

Онь – “оный” в значении “единственный, единый”.

Покои (покой) – “основа (мироздания)”. Ср. “покоиться” – “основываться на…”.

Мыслите наш онъ покой: постигайте наше мироздание.

Рцы (рци) – повелительное наклонение: “говори, изрекай, читай вслух”. Ср. “речь”.

Слово – “передающее знание”.

Твёрдо – “уверенно, убеждённо”.

Рцы слово твёрдо – неси знания убеждённо.

Укъ – основа знания, доктрина. Ср. наука, учить, навык, обычай.

Фертъ, ф(ъ)рътъ – “оплодотворяет”. Азбука зафиксировала различие звуков “п” и “ф”, так же, как их звонких аналогов “б” и “в”. В средние века южноевропейцев, произносивших “ф” вместо “п”, на Руси звали фрягами именно из-за особенностей речи: этим, например, отличали южных франков от северных пруссов, фракийцев от персов и т.д.

Херъ – “божественный, данный свыше”. Ср. нем. “Негг” (господин, Бог), греч. “иеро-” (божественный), англ. “hero” (герой), а также русское имя Бога – Хорс.

Укъ фърътъ Херъ: знание оплодотворяет Всевышний, знание – дар Божий.

Цы (ци, цти) – “точи, проникай, вникай, дерзай”.

Червь (черве) – “тот, кто точит, проникает”.

Ш(т)а (Ш, Щ) – “что” в значении “чтобы”.

Ъ, Ь (еръ/ерь, ъръ) – представляет собой варианты одной буквы, означавшей неопределённый краткий гласный, близкий к "э".

Раскатистый звук “р” произносится с обязательным первоначальным придыханием (начальный “ъ”) и отзвуком (конечный “ъ”). Слово “ъръ”, по-видимому, означало сущее, вечное, сокровенное, пространство-время, недоступное человеческому разуму, светоч, Солнце. По всей вероятности, “Ъръ” – одно из наиболее древних слов современной цивилизации, ср. египетское Ра – Солнце, Бог.

Само слово “время” содержит тот же корень, поскольку начальное “в” развилось именно из “ъ”. Многие исконно русские слова содержат этот корень, например: утро – “от Солнца” (корень ут – оттуда, там); вечер (векъ-рь) – “век Ра, истекающее время Солнца”. В смысле “пространство, Вселенная” от того же корня происходит русское “рама”. Слово “рай” означает: “множество Солнц” = “обиталище богов (Бога Ра)”. Самоназвание цыган “ром, рома” – “свободный (-ая)”, “Бог во мне”, “я – Вселенная”, отсюда же индийская Рама. В смысле “свет, светило, источник света”: клич “ура!” означает – “к Солнцу!”, яркий – “подобный солнечному свету”, “радуга” и т. д. В Азбуке, по всей вероятности, слово “Ър(а)” стоит в родительном падеже со значением “Сущего”.

Юсь (юс малый) – “свет, старорусское яс”. В современном русском языке корень “яс” сохранился, например, в слове “ясный”.

Ять (яти) – “постичь, иметь”. Ср. изъять, взять и т. д.

Цы, черве, шта Ъра юсъ яти! Расшифровывается как : ” Дерзай, точи, червь, чтобы сущего свет постичь!”

Совокупность приведённых выше фраз и составляет азбучное Послание:

Азъ Буки Веде Глаголь Добро Есте Живите Зело Земля И Иже Како Люди Мыслите Нашь Онъ Покои Рцы Слово Твердо Укъ Фърътъ Херъ Цы Черве Шта Ъра Юсь Яти.

В современном переводе это звучит так:

Вариант первый:

Я знаю буквы: письмо это достояние. Трудитесь усердно,
земляне, как подобает разумным людям – постигайте мироздание!
Несите слово убеждённо: знание – дар Божий!
Дерзайте, вникайте, чтобы Сущего свет постичь!

Вариант другой, по-моему более правильный:

Аз Буки Веди – Я Бога ведаю. Аз – основа, начало, Я. Я – с меня начинается мой мир. А сейчас Я – последняя буква алфавита. Основа всему – знание Бога и предков своих, то есть родителей, корней своих.

Глаголь Добро – говори, делай добро. Помните у Пушкина: «Глаголом жечь сердца людей». Глагол – это и слово, и дело одновременно. Говорю – значит делаю. И делаю добро.

Добро есть Жизнь – только добро создаёт жизнь.

Живёте зело земля – живите землёю, она кормилица наша.

И како люди мыслите – наш он покой. Т.е. как вы, люди, думаете, таков и ваш мир.

Рци слово твёрдо. Говори слово твёрдо. Сказал – сделал.

Я Бога Ведаю.

Говорю и делаю Добро.

Добро Есть Жизнь.

Живите Землёю, она кормилица наша.

И Как мы Люди Мыслим таков и Наш мир.

ВсеЯСветная ГРаМота



Русский язык самый древний язык на планете.

Вѣщій лѣсъ

http://forum-vorota.ru/

От куда взялись буквы – слова

Александр Скороходов. Русские руны 3 — откуда появились русские буквы

Форум Волшебников » Различные учения и практики » Славянские традиции » Славянские руны

История » История Славянских рун.

Славянские руны

Руны — черты и резы

Главная » Книги » Григоренко Анатолий Маркович » Откуда пришли славяне » Страница 21


 

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

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