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

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

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

 

Программница на Глаголе

коллекция приложений на языке Глагол
Август 2014 г.

Расположение отделов с приложениями

 
 

\Глагол\Приложения\Игры\


Шашки64.отд игра с машиной в русские шашки
Тетрис.отд игра "Тетрис"
КрНолики.отд пример игры "Крестики-нолики"



ОТДЕЛ Шашки64;

(* Программа игры в русские шашки на языке Глагол.
       НАЗНАЧЕНИЕ: создание экранных надписей и кнопочек *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ОбновитьСекундомер(номерЧасов:ЦЕЛ); 
(* обновить секундомер *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ПредУровень; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СледУровень; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА НачатьЗаново(поле:Поле.Доступ); 
(* начать новую игру *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СоздатьПоле():Поле.Доступ; 
(* создает рабочее поле экрана *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Поехали; 


ОТДЕЛ Тетрис;

(* НАЗНАЧЕНИЕ: игра "Тетрис" *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Случ(до:ЦЕЛ):ЦЕЛ; 
(* Цель:  выдать случайное число *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА рисоватьКлетку(x,y,цвет:ЦЕЛ); 
(* прорисовка на экране клетки ящика, 
 * передаётся в распоряжение отделу Ящик *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА НачатьЗаново; 
(* подготовка к новой игре *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Показания; 
(* обновляет показания на экране *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ПредУровень; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СледУровень; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СоздатьПоле():Поле.Доступ; 
(* создаёт рабочее поле экрана *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Пауза(мс:ЦЕЛ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Переход(номерЧасов:ЦЕЛ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Поехали; 


ОТДЕЛ КрНолики;

(* НАЗНАЧЕНИЕ: пример игры "Крестики-нолики" *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА РисоватьПозицию; 
(* Цель:  прорисовка на экране всей позиции игры
 * До:    <Игра.позиция> - позиция со значками ('+' и 'о')
 * Прим:  каждая клетка занимает два знакоместа в ширину *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА НачатьЗаново; 
(* Цель:  подготовиться к новой игре *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА МышкаВКлетку(x,y:ЦЕЛ); 
(* Цель:  сообразить, что делать, если человек загнал мышку в эту клетку
 * До:  - координаты клетки *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СоздатьПоле():Поле.Доступ; 
(* создаёт рабочее поле экрана *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Поехали; 
 
 

\Глагол\Приложения\Иное\


Привет.отд вывод на экран слова "Привет!"
УниВин.отд перекодировка текстовых файлов в УНИкод и в кодировку ВИН (1251)
РусЛат.отд транслитерация в латиницу файла, содержащего русские буквы
ОберГла.отд перевод служебных слов Оберона в служебные слова Глагола и обратно
Слова.отд основные задачи для отдела ОберГла.отд
ЧислоЕ.отд вычисление 1024 цифр числа "e" после запятой
ЧислоПи.отд приближенное вычисление числа "Пи"
Секундомер.отд пример использования времени и наделов (кнопок и полей в окнах)



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

(* НАЗНАЧЕНИЕ: вывод на экран слова "Привет!" *)

Запуск приложения Привет в консоле Windows - c:\Глагол\Приложения\Иное >Привет

Привет! из \Приложения\Иное



ОТДЕЛ УниВин;

(* НАЗНАЧЕНИЕ: перекодировка текстовых файлов в УНИкод и в кодировку ВИН (1251) *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Работа(ч:Читать.Поток; п:Писать.Поток); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова(); 


ОТДЕЛ РусЛат;

(* НАЗНАЧЕНИЕ: транслитерация в латиницу файла, содержащего русские буквы *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Работа(ч:Читать.Поток; п:Писать.Поток); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова(); 


ОТДЕЛ ОберГла;

(* НАЗНАЧЕНИЕ: перевод служебных слов Оберона в служебные слова Глагола и обратно *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова(); 


ОТДЕЛ Слова;

(* НАЗНАЧЕНИЕ: основные задачи для отдела ОберГла.отд *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Сравнить(с1-,с2-:Ряд.Вид):ЦЕЛ; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Перевод-(ч:Читать.Поток; п:Писать.Поток); 
  ЗАДАЧА Пропуск;               (* Пропуск знака без обработки *)
  ЗАДАЧА ЧитатьСлово(ц+:ЦЕПЬ);  (* Чтение слова в цепочку знаков *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ВводСл(г-,о-:ЦЕПЬ); 


ОТДЕЛ ЧислоЕ;

(* НАЗНАЧЕНИЕ: вычисление 'ЗНАКОВ'=1024 числа "e" после запятой *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Разделить(X+:Число; i,п0+:ЦЕЛ);  (* X:=X/i *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Добавить(E+,X-:Число; п0:ЦЕЛ);   (* E:=E+X *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ВыводЧисла(E-:Число);  (* Вывод на экран числа E *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Расчёт; (* Распределение памяти, расчёт по алгоритму и вывод ответа на экран *)


ОТДЕЛ ЧислоПи;

(* НАЗНАЧЕНИЕ: приближенное вычисление числа "Пи" *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; (* Расчёт по алгоритму и вывод ответа на экран *)


(* НАЗНАЧЕНИЕ: пример использования времени и наделов (кнопок и полей в окнах) *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ОбновитьПоказания(номерЧасов:ЦЕЛ);  (* обновить показания секундомера *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Главная; 
  ЗАДАЧА СоздатьПоле;   (* создаёт рабочее поле экрана *)

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

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

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

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

 
 

\Глагол\Приложения\Календарь\


Дата.отд работа с календарём
Пасха.отд вычисление даты православной Пасхи для заданного года



ОТДЕЛ Дата;

(* НАЗНАЧЕНИЕ: работа с календарём *)

(****************************************************************************** 
 * Переводит дату в число дней, прошедших от начала 1 года н. э. (числовое 
 * представление даты)
 ******************************************************************************) 
ЗАДАЧА ВЧисло-(дата-:Вид):ЦЕЛ; 

(****************************************************************************** 
 * Переводит число дней, прошедших от начала 1 года н.э. в дату
 ******************************************************************************) 
ЗАДАЧА ИзЧисла-(n:ЦЕЛ; дата+:Вид); 

(****************************************************************************** 
 * Вычисляет, является ли год високосным 
 ******************************************************************************) 
ЗАДАЧА Високосный-(год:ЦЕЛ):КЛЮЧ; 

(****************************************************************************** 
 * Возвращает число дней в указаном месяце данного года
 ******************************************************************************) 
ЗАДАЧА ДнейВМесяце-(месяц,год:ЦЕЛ):ЦЕЛ; 

(****************************************************************************** 
 * Возвращает число дней, которое необходимо прибавить к дате, чтобы перевести её 
 * из даты Григорианского календаря в дату Юлианского календаря (старый стиль), 
 * используя числовое представление текущей даты
 ******************************************************************************) 
ЗАДАЧА СтарыйСтиль-(n:ЦЕЛ):ЦЕЛ; 

(****************************************************************************** 
 * Возвращает номер текущего дня недели (1-понедельник, ... , 7-воскресенье),
 * используя числовое представление текущей даты
 ******************************************************************************) 
ЗАДАЧА ДеньНедели-(дата-:Вид):ЦЕЛ; 


ОТДЕЛ Пасха;

(* НАЗНАЧЕНИЕ: вычисление даты православной Пасхи для заданного года *)

ЗАДАЧА ПравославнаяПасха(год:ЦЕЛ); 
 
 

\Глагол\Приложения\Математика\


ПроФункц.отд проверка точности вычисления специальных функций
ПроМатем1.отд проверка точности вычисления трансцендентных функций
ПроМатем2.отд проверка скорости вычисления математических функций 1-го аргумента
ПроКомпл.отд проверка вычислений с комплексными числами
ПроКомплLU.отд проверка решения систем линейных уравнений (A*x=b) методом LU разложения для комплексных чисел
ПроБПФ.отд проверка сравнением вычисления быстрого преобразования Фурье (БПФ) и вычисления обычного ПФ
ВещОселок.отд проверка скорости при двойной точности / Double precision Whetstone
ЦелОселок.отд проверка скорости при одинарной точности / Single precision Dhrystone



ОТДЕЛ ПроФункц;

(* ПРОВЕРКА: точности вычисления специальных функций *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Значений(метка-:ЦЕПЬ; п+:Читать.Поток):ЦЕЛ; 
(* Цель:  1) открыть поток, содержащий проверочные данные
 *        2) найти в нём данные для заданной функции
 *        3) прочитать число проверочных значений этой функции
 * До:    <метка> - строка-метка с названием функции
 * После: <п>     - поток, открытый и установленный в начало данных
 *                  для этой функции
 * Ответ: число проверочных значений этой функции *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Факториал; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА БиномКоэф; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Г;      (* Гамма-функция *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА НепГ;   (* Неполная Гамма-функция *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Бета; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА НепБета; (* Неполная Бета-функция *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА erf;    (* функция ошибок *)


ОТДЕЛ ПроМатем1;

(* ПРОВЕРКА: точности вычисления трансцендентных функций *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СлучАрг(x+:Вектор; от,до:Вещ); 
(* Заполняет вектор аргументов случайными числами от <от> до <до>,
 * округляет до 4-го знака после запятой и располагает в возрастающем порядке. *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Оборот(прямИмя-,обрИмя-:ЦЕПЬ; прямФ,обрФ:Функция; от,до:Вещ); 


ОТДЕЛ ПроМатем2;

(* ПРОВЕРКА: скорости вычисления математических функций 1-го аргумента *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Расчет(f:Функция):ВЕЩ; 


ОТДЕЛ ПроКомпл;

(* ПРОВЕРКА: вычислений с комплексными числами *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Арифметика; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Корень; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Оборот(прямИмя-,обрИмя-:ЦЕПЬ; прямФ,обрФ:Функция); 


ОТДЕЛ ПроКомплLU;

(******************************************************************************
 * ПРОВЕРКА: 
 *   решение систем линейных уравнений (A*x=b) методом LU-разложения для
 *   комплексных чисел
 ******************************************************************************)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроБПФ;

(******************************************************************************
 * ПРОВЕРКА: 
 *   сравнением вычисления быстрого преобразования Фурье (БПФ) и
 *              вычисления обычного ПФ
 ******************************************************************************)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА f(t:Вещ):Вещ;     (* сигнал в определенный момент времени *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ВещОселок;

(* ПРОВЕРКА: скорости при двойной точности / Double precision Whetstone (A001) *)

ЗАДАЧА PA(E+:ARRAY4); 
ЗАДАЧА P0; 
ЗАДАЧА P3(X,Y,Z+:ШИРВЕЩ); 
ЗАДАЧА POUT(N,J,K:ЦЕЛ; X1,X2,X3,X4:ШИРВЕЩ); 
ЗАДАЧА Work; 
ЗАДАЧА Голова; 


ОТДЕЛ ЦелОселок;

(* ПРОВЕРКА: скорости при одинарной точности / Single precision Dhrystone *)

ЗАДАЧА Proc7(IntParI1,IntParI2,IntParOut+:OneToFifty); 
ЗАДАЧА Proc3(inRecIdx+:ЦЕЛ); 
ЗАДАЧА Func3(EnumParIn:Enumeration):КЛЮЧ; 
ЗАДАЧА Proc6(EnumParIn,EnumParOut+:Enumeration); 
ЗАДАЧА Proc1(inIdx:ЦЕЛ); 
ЗАДАЧА Proc2(IntParIO+:OneToFifty); 
ЗАДАЧА Proc4; 
ЗАДАЧА Proc5; 
ЗАДАЧА Proc8(Array1Par+:Array1Dim;
             Array2Par+:Array2Dim; IntParI1,IntParI2:OneToFifty);
ЗАДАЧА Func1(CharPar1,CharPar2:CapitalLetter):Enumeration; 
ЗАДАЧА Func2(StrParI1+,StrParI2+:String30):КЛЮЧ; 
ЗАДАЧА Proc0; 
ЗАДАЧА Голова; 
 
 

\Глагол\Приложения\Матрицы\


ПроLL.отд Проверка разложения симметрической положительно определённой матрицы A на две треугольные матрицы L и L', где L - это нижняя треугольная матрица, а L'- матрица, транспонированная к L
ПроLU.отд Проверка решения систем линейных уравнений (A*x=b) методом LU-разложения
ПроQR.отд Проверка решения систем линейных уравнений (A*x=b) методом QR-разложения
ПроSV.отд Проверка решения систем линейных уравнений (A*x=b) методом SV-разложения
ПроГаусс.отд Проверка решения систем линейных уравнений (A*x=b) методом исключений Гаусса
ПроОпред.отд Проверка вычисления определителя и обратной матрицы
ПроСВект.отд Проверка поиска тех собственных векторов квадратной матрицы, которые соответствуют вещественным собственным значениям
ПроСЗнач.отд Проверка поиска собственных значений квадратной матрицы
ПроССим.отд Проверка поиска собственных значений симметричной матрицы рекуррентным методом Якоби



ОТДЕЛ ПроLL;

(******************************************************************************
 * ПРОВЕРКА: 
 *   разложение симметрической положительно определенной матрицы A на две
 *   треугольные матрицы L и L', где L - это нижняя треугольная матрица,
 *   а L' - матрица, транспонированная к L
 ******************************************************************************)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Перемножить(L-,A+:Матр.Вид); (* A=L*L' *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроLU;

(* ПРОВЕРКА: решение систем линейных уравнений (A*x=b) методом LU-разложения *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроQR;

(* ПРОВЕРКА: решение систем линейных уравнений (A*x=b) методом QR-разложения *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроSV;

(* ПРОВЕРКА: решение систем линейных уравнений (A*x=b) методом SV-разложения *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроГаусс;

(* ПРОВЕРКА: решение систем линейных уравнений (A*x=b) методом исключений Гаусса *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Гильберт(A+:Матр.Вид; b+:Вект.Вид); 
(* Построение системы Гильберта n-го порядка
 
  A[0..n-1,0..n-1] = матрица системы: 
 
        ( 1      1/2     1/3     1/4     ... 1/n      ) 
        ( 1/2    1/3     1/4     1/5     ... 1/(n+1)  ) 
    A = ( 1/3    1/4     1/5     1/6     ... 1/(n+2)  ) 
        ( ........................................... ) 
        ( 1/n    1/(n+1) 1/(n+2) 1/(n+3) ... 1/(2N-1) ) 
 
  b[0..n-1] = вектор свободных членов: 
 
            n 
    b[i] = Sum A[i,j] 
           j=1 
 
  Тогда вектор решения будет x = [1 1 1 ... 1]  *) 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроОпред;

(* ПРОВЕРКА: вычисление определителя и обратной матрицы *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроСВект;

(******************************************************************************
 * ПРОВЕРКА: 
 *   нахождение тех собственных векторов квадратной матрицы, которые
 *   соответствуют вещественным собственным значениям
 ******************************************************************************)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроСЗнач;

(* ПРОВЕРКА: нахождение собственных значений квадратной матрицы *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 


ОТДЕЛ ПроССим;

(******************************************************************************
 * ПРОВЕРКА: нахождение собственных значений симметричной матрицы
 *   рекуррентным методом Якоби
 ******************************************************************************)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Гильберт(М+:Матр.Вид); 
(* Построение матрицы Гильберта <порядок>-го порядка 
     ( 1      1/2     1/3     1/4     ... 1/порядок      ) 
     ( 1/2    1/3     1/4     1/5     ... 1/(порядок+1)  ) 
 М = ( 1/3    1/4     1/5     1/6     ... 1/(порядок+2)  ) 
     ( ........................................... ) 
     ( 1/порядок    1/(порядок+1) 1/(порядок+2) 1/(порядок+3) ... 1/(2N-1) ) *) 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Голова; 
 
 

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


Клавиши.отд показать нажата клавиша или мыша
Оболочка.отд ввод и преобразование программ на Глаголе в графическом окне
ПолеНастройки.отд ввод настроек Преобразователя Глагола
ПолеПоискЗамена.отд ввод строки поиска и замены
ПолеПриложение.отд выбор головного отдела приложения
Положение.отд отрисовка положения указки на холсте
Привет.отд вывод на экран "Привѣтъ, мiръ!"
Возраст.отд возраст от заданного года



ОТДЕЛ Клавиши;

(* НАЗНАЧЕНИЕ: показать нажата клавиша или мыша *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Показать; 


ОТДЕЛ Оболочка;

(* НАЗНАЧЕНИЕ: ввод и преобразование программ на Глаголе в графическом окне *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДПолеНаВесьЭкран; 
(* Расширяет поле на весь экран или восстанавливает его исходный размер *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДПомощь;   (* Неотложная помощь F1 *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДСправка;  (* Справка по отделам Ctrl-F1 *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДОткрытьФайл; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДСохранитьКак(холст:Холст.Доступ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДСохранитьХолст(холст:Холст.Доступ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДЗакрытьХолст(холст:Холст.Доступ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДИскать(заменить,сПолем,наоборот:КЛЮЧ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДНастроить; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА БылаОшибка(файлОбмена-:ЦЕПЬ):КЛЮЧ; 
(* Цель:  отработать сообщение об ошибке преобразования 
 * До:    <файлОбмена> - имя файла, в котором находятся сообщения от ПГ
 * Ответ: ВКЛ, если ошибка была найдена *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДЗапуск; 
   (* Файл Оболочка.exe обязательно должен находится в папке \Глагол\Службы\ *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДВыход; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ДПерейти; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СоздатьПоле; 
(* создает рабочее поле экрана *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Поехали; 


(* НАЗНАЧЕНИЕ: ввод настроек Преобразователя Глагола *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СписатьИмяФайла-(имя+:ЦЕПЬ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА РазобратьЦепь(цепь+:ЦЕПЬ); 
(* Цель:  обработать <цепь>, содержащую одну настройку
 * До:    <настройки>
 * После: <срдПуть> <настройки> *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА РазобратьФайлНастроек-; 
(* Цель:  обработать построчно файл с настройками
 * После: <настройки> и <срдПуть> *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СобратьФайлНастроек; 
(* Цель:  вывести настройки в файл ПГ *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Выполнить-(окружение:Поле.Доступ); 


(* НАЗНАЧЕНИЕ: ввод строки поиска и замены *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(поле:Поле.Доступ; посылка+:Ввод.Посылка); 
(* получить и обработать управляющие послания *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Выполнить-(окружение:Поле.Доступ; холст:Холст.Доступ):ЦЕЛ; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ЧитатьНастройки-(поток:Читать.Поток); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ПисатьНастройки-(поток:Писать.Поток); 


(* НАЗНАЧЕНИЕ: выбор головного отдела приложения *)

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


ОТДЕЛ Положение;

(* НАЗНАЧЕНИЕ: отрисовка положения указки на холсте *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Создать-(вс,лк:ЦЕЛ):Доступ; 


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

(* НАЗНАЧЕНИЕ: вывод на экран "Привѣтъ, мiръ!" *)

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

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

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

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

Запуск консольного приложения Привет из Оболочки

Привѣтъ, мiръ! из Оболочки



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

(* НАЗНАЧЕНИЕ: возраст от заданного года *)

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

\Глагол\Приложения\Упорядочивание\


Вставкой.отд упорядочивание ряда простой вставкой
Вставкой2.отд упорядочивание ряда двоичной вставкой
Выбором.отд упорядочивание ряда простым выбором
ИзФайла.отд пример упорядочивания чисел из внешнего файла быстрым обменом
Обменом.отд упорядочивание ряда простым обменом ("пузырьковая сортировка")
ОбменомБ.отд упорядочивание ряда быстрым обменом ("быстрая сортировка")
Упорядочивание.отд проверка упорядочивания рядов



ОТДЕЛ Вставкой;

(* НАЗНАЧЕНИЕ: упорядочивание ряда простой вставкой *)

ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); 
(* Цель:  упорядочивание ряда целых чисел простой вставкой
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд *)


ОТДЕЛ Вставкой2;

(* НАЗНАЧЕНИЕ: упорядочивание ряда двоичной вставкой *)

ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); 
(* Цель:  упорядочивание ряда целых чисел двоичной вставкой
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд *)


ОТДЕЛ Выбором;

(* НАЗНАЧЕНИЕ: упорядочивание ряда простым выбором *)

ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); 
(* Цель:  упорядочивание ряда целых чисел простым выбором
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд *)


ОТДЕЛ ИзФайла;

(* НАЗНАЧЕНИЕ: пример упорядочивания чисел из внешнего файла быстрым обменом *)

(******************************************************************************)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ); 
(******************************************************************************)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ); 
(******************************************************************************)
ЗАДАЧА Упорядочивание; 


ОТДЕЛ Обменом;

(* НАЗНАЧЕНИЕ: упорядочивание ряда простым обменом ("пузырьковая сортировка") *)

ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); 
(* Цель:  упорядочивание ряда целых чисел простым обменом
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд *)


ОТДЕЛ ОбменомБ;

(* НАЗНАЧЕНИЕ: упорядочивание ряда быстрым обменом ("быстрая сортировка") *)

ЗАДАЧА Упорядочить-(ряд+:РЯД ИЗ ЦЕЛ); 
(* Цель:  упорядочивание с помощью разделения на участки (Ч.Хоар)
 * До:    <ряд> - исходный ряд
 * После: <ряд> - упорядоченный ряд *)


(* НАЗНАЧЕНИЕ: проверка упорядочивания рядов *)

(******************************************************************************)
ЗАДАЧА Вывести(ряд+:РЯД ИЗ ЦЕЛ); 
(* вывод на экран всех слагаемых ряда *)
(******************************************************************************)
ЗАДАЧА Заполнить(ряд+:РЯД ИЗ ЦЕЛ); 
(* заполнение ряда случайными числами *)
(******************************************************************************)
ЗАДАЧА Испытание(Алгоритм:ЗАДАЧА(ряд+:РЯД ИЗ ЦЕЛ)); 
(* испытание заданного алгоритма упорядочивания *)
(******************************************************************************)
ЗАДАЧА Испытания; 
(* испытание всех алгоритмов упорядочивания *)
 
 

\Глагол\Приложения\Свои\


Привет.отд вывод на экран слова "Привет!"



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

(* НАЗНАЧЕНИЕ: вывод на экран слова "Привет!" *)

Запуск приложения Привет в консоле Windows - c:\Глагол\Приложения\Свои >Привет

Привет! из \Приложения\Свои

 
 

\Глагол\Приложения\Заграница\


Редактор.отд демо-версия текстового редактора
Biblioteka.отд динамически подключаемая библиотека для отдела "ИспБиблиотеки.отд"
ИспБиблиотеки.отд пример использования ДПБ - динамически подключаемой библиотеки "Biblioteka"
Окно.отд вывод фразы "Открытое окно" через ГОС - Графическую Оконную Систему



ОТДЕЛ Редактор;

(* НАЗНАЧЕНИЕ: демо-версия текстового редактора *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА SetStatusText(Num:ЦЕЛ; Text-:string); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА SelectFile(FName-:TFileName; Open+:КЛЮЧ):КЛЮЧ; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА SaveText; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА AskSave; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА LoadText; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА NewText; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА SelectFont; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА WindowProc(
         Window:HWnd; 
         AMessage:UINT; 
         WParam:WPARAM; 
         LParam:LPARAM):LRESULT;   stdcall;  export; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА WinRegister:КЛЮЧ;
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА EditCreate(ParentWindow,Status:HWnd):HWnd; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА WinCreate:HWnd; 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА StatusCreate(parent:hwnd):HWnd; 


ОТДЕЛ Biblioteka;

(* НАЗНАЧЕНИЕ: динамически подключаемая библиотека для отдела "ИспБиблиотеки.отд" *)

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА GetModuleFileName(
     hModule:ЦЕЛ; 
     lpFilename+:ЦЕПЬ; 
     nSize:ЦЕЛ):ЦЕЛ;     ВЫЗОВ "GetModuleFileNameW" ИЗ "kernel32.dll"; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА* Zadacha1-(адрЦепи:ЦЕЛ); 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА* Zadacha2-(набор+:Набор); 


(******************************************************************************)
(* НАЗНАЧЕНИЕ: пример использования ДПБ -                                     *)
(*             динамически подключаемой библиотеки "Biblioteka"               *)
(******************************************************************************)
ЗАДАЧА Задача1(цепь-:ЦЕПЬ);   ВЫЗОВ  "Zadacha1" ИЗ "Biblioteka.dll"; 
ЗАДАЧА Задача2(набор+:Набор); ВЫЗОВ  "Zadacha2" ИЗ "Biblioteka.dll"; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Проба; 


ОТДЕЛ Окно;

(* НАЗНАЧЕНИЕ: вывод фразы "Открытое окно" через графическую оконную систему *)

 
 
ЗАДАЧА GetModuleHandle(lpModuleName:LPCSTR):HMODULE;     ВЫЗОВ  "GetModuleHandleW"  ИЗ "kernel32.dll"; 
ЗАДАЧА GetStartupInfo(lpStartupInfo+:STARTUPINFO);       ВЫЗОВ  "GetStartupInfoW"   ИЗ "kernel32.dll"; 
ЗАДАЧА GetStockObject(_para1:ЦЕЛ):HGDIOBJ;               ВЫЗОВ  "GetStockObject"    ИЗ "gdi32.dll"; 
ЗАДАЧА BeginPaint(hWnd:HWND; lpPaint+:PAINTSTRUCT):HDC;  ВЫЗОВ  "BeginPaint"        ИЗ "user32.dll"; 
ЗАДАЧА GetClientRect(hWnd:HWND; lpRect+:RECT);           ВЫЗОВ  "GetClientRect"     ИЗ "user32.dll"; 
ЗАДАЧА EndPaint(hWnd:HWND; lpPaint+:PAINTSTRUCT);        ВЫЗОВ  "EndPaint"          ИЗ "user32.dll"; 
ЗАДАЧА PostQuitMessage(nExitCode:ЦЕЛ);                   ВЫЗОВ  "PostQuitMessage"   ИЗ "user32.dll"; 
ЗАДАЧА LoadIcon(hInstance:HINST; lpIconName:ЦЕЛ):HICON;  ВЫЗОВ  "LoadIconW"         ИЗ "user32.dll"; 
ЗАДАЧА LoadCursor(hInstance:HINST; lpCursorName:ЦЕЛ):HCURSOR;  ВЫЗОВ  "LoadCursorW" ИЗ "user32.dll"; 
ЗАДАЧА RegisterClass(lpWndClass+:WNDCLASS):КЛЮЧ;         ВЫЗОВ  "RegisterClassW"    ИЗ "user32.dll"; 
ЗАДАЧА ShowWindow(hWnd:HWND; nCmdShow:ЦЕЛ);              ВЫЗОВ  "ShowWindow"        ИЗ "user32.dll"; 
ЗАДАЧА UpdateWindow(hWnd:HWND);                          ВЫЗОВ  "UpdateWindow"      ИЗ "user32.dll"; 
ЗАДАЧА TranslateMessage(lpMsg+:MSG);                     ВЫЗОВ  "TranslateMessage"  ИЗ "user32.dll"; 
ЗАДАЧА DispatchMessage(lpMsg+:MSG);                      ВЫЗОВ  "DispatchMessageW"  ИЗ "user32.dll"; 
ЗАДАЧА CreateWindowEx(
     dwExStyle:DWORD; 
     lpClassName-:ЦЕПЬ; 
     lpWindowName-:ЦЕПЬ; 
     dwStyle:DWORD; 
     X,Y,nWidth,nHeight:ЦЕЛ; 
     hWndParent:HWND; hMenu:HMENU; hInstance:HINST; 
     lpParam:LPVOID):HWND;                              ВЫЗОВ  "CreateWindowExW"   ИЗ "user32.dll"; 
ЗАДАЧА MessageBox(
     hWnd:HWND; 
     lpText-:ЦЕПЬ; 
     lpCaption-:ЦЕПЬ; 
     uType:UINT);                                       ВЫЗОВ  "MessageBoxW"       ИЗ "user32.dll"; 
ЗАДАЧА GetMessage(
     lpMsg+:MSG; 
     hWnd:HWND; 
     wMsgFilterMin:UINT; 
     wMsgFilterMax:UINT):КЛЮЧ;                          ВЫЗОВ  "GetMessageW"       ИЗ "user32.dll"; 
ЗАДАЧА DefWindowProc(
     hWnd:HWND; 
     Msg:UINT; wParam:WPARAM; 
     lParam:LPARAM):LRESULT;                            ВЫЗОВ  "DefWindowProcW"    ИЗ "user32.dll"; 
ЗАДАЧА DrawText(
     hDC:HDC; 
     lpString-:ЦЕПЬ; 
     nCount:ЦЕЛ; 
     lpRect+:RECT; 
     uFormat:UINT);                                     ВЫЗОВ  "DrawTextW"         ИЗ "user32.dll"; 
 
 
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА* ОконнаяЗадача(hwnd:HWND; message:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; 
(* Вызывается из ОС *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА ПрописатьОкно():КЛЮЧ; 
(* Прописывает окно в ОС *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА СоздатьОкно():HWND; 
(* Создаёт оконный класс *)
(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Работа; 
 
 



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

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