Оберон-2 и Глагол
 
 glagol.png Программируем по-русски
 

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

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

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

 

Отличия Глагола от Оберона-2


▼ Соответствие служебных слов Оберона-2 и Глагола
▼ Нет в Глаголе
▼ Изменено в Глаголе
▼ Добавлено в Глагол
◄ Объектно-ориентированное программирование по Вирту (WiKi)

Соответствие служебных слов Оберона-2 и Глагола


& И FOR ОТ POINTER ДОСТУП — доп.вид
~ НЕ SYSTEM.GET ОБХОД.ИзПамяти PROCEDURE ЗАДАЧА — доп.вид
ABS МОДУЛЬ или абс. величина HALT СТОП SYSTEM.PTR ОБХОД.Доступ
SYSTEM.ADR ОБХОД.ПолучитьАдрес IF ЕСЛИ SYSTEM.PUT ОБХОД.ВПамять
ARRAY РЯД — сост.вид IMPORT ИСПОЛЬЗУЕТ REAL ВЕЩ — простой вид
ASSERT ПРОВЕРИТЬ IN  В множестве RECORD НАБОР — сост.вид
BEGIN УКАЗ INC УВЕЛИЧИТЬ целое REPEAT ПОВТОРЯТЬ
BOOLEAN КЛЮЧ — простой вид INTEGER ЦЕЛ — простой вид RETURN ВОЗВРАТ
BY ПО IS ЯВЛЯЕТСЯ RIDER БЕГУНОК - доп.вид
SYSTEM.BYTE ЯЧЦЕЛ LEN ДЛИНА цепи SET МНОЖ - простой вид
CASE ВЫБРАТЬ LONGINT ШИРЦЕЛ - прост.вид SHORT УЗК / сузить
CHAR ЗНАК — простой вид LONGREALШИРВЕЩ - прост.вид SHORTINTУЗКЦЕЛ - прост.вид
CHR ВЗНАК целое LOOP КОЛЬЦО SYSTEM ОБХОД
CONST ПОСТ MAX МАКС прост.вида THEN ТО
COPY СПИСАТЬ MIN МИН прост.вида TO К
DEC УМЕНЬШИТЬ целое MOD ОСТАТОК от деления TRUE ВКЛ
DIV ДЕЛИТЬ нацело MODULE ОТДЕЛ TYPE ВИД
DO ВЫП SYSTEM.MOVE ОБХОД.Образ UNTIL ДО
ELSE ИНАЧЕ NEW СОЗДАТЬ SYSTEM.VAL ОБХОД.Значение
ELSIF АЕСЛИ NIL ПУСТО VAR ПЕР
END КОН ODD НЕ ЧЕТ WHILE ПОКА
ENTIER ВШИРЦЕЛ вещ / ЦЕЛЧАСТЬ OF ИЗ WITH ДЛЯ
EXIT ВЫХОД OR ИЛИ SYSTEM.ADDRESS ОБХОД.Адрес
FALSE ОТКЛ ORD ВЦЕЛ знак LONG   нету
 
 

Нет в Глаголе


  • связанных с ВИДом НАБОР задач (процедур связанных с типом запись), как в Обероне-2/1992 и Компонентном Паскале/1997
  • задач ОТДЕЛа ОБХОД (процедур модуля SYSTEM): BIT, CC, LSH, ROT, GETREG, PUTREG
  • встроенных задач (процедур): ASH, CAP, SIZE, EXCL, INCL,
    (из Oberon-07/2007..2015 — LSL, LSR, ASR, PACK, UNPCK),
    (из Компонентного Паскаля/1997 — FLOOR, FLT, BITS, LONG)
  • псевдонимов в объявлениях ИСПОЛЬЗОВАТЬ / IMPORT
  • второго параметра у встроенной задачи ПРОВЕРИТЬ / ASSERT
  • сужебных слов из Компонентного Паскаля/1997 — IN, OUT, ABSTRACT, EXTENSIBLE, EMPTY, LIMITED, NEW
 
 

Изменено в Глаголе


  • 1. ПЕРеменные простых/основных ВИДов (типов) имеют следующий размер (в битах):

    Оберон-2 / 1992   BlackBox КП / 1997   XDS Оберон-2 / 2005   Oberon-07M / 2013   Oberon-07 / rev.2015   Глагол / 15.августа.2009  
    BOOLEAN  8 BOOLEAN  8 BOOLEAN  8 BOOLEAN  8 BOOLEAN  8 КЛЮЧ  8
    CHAR  8 CHAR  8 CHAR  8 CHAR  8 CHAR  8 ЗНАК 16
    нет нет BYTE  8 SYSTEM.BYTE 8 нет нет нет нет ЯЧЦЕЛ  8
    SHORTINT  8 SHORTINT 16 SHORTINT 16 нет нет нет нет УЗКЦЕЛ16
    INTEGER 16 INTEGER 32 INTEGER 32 INTEGER 32 INTEGER 32 ЦЕЛ 32
    LONGINT 32 LONGINT 64 LONGINT 64 нет нет LONGINT 64 ШИРЦЕЛ64
    REAL 32 REAL 32 REAL 32 REAL 32 нет нет ВЕЩ 32
    LONGREAL 64 LONGREAL 64 LONGREAL 64 LONGREAL 64 REAL 64 ШИРВЕЩ64
    SET 32 SET 32 SET 32 SET 32 SET 32 МНОЖ 32


  • 2. Встроенные задачи (процедуры):
    РАЗМЕР ряда / HIGH массива,
    РАЗМЕР цепи / LEN строки,
    ОБХОД.ПолучитьАдрес / SYSTEM.ADR ,
    ОБХОД.ИзПамяти / SYSTEM.GET ,
    ОБХОД.ВПамять / SYSTEM.PUT ,
    ОБХОД.Образ / SYSTEM.MOVE
    В 32-х разрядном Глаголе встроенные задачи определены для вида ЦЕЛ / INTEGER, а не для вида ШИРЦЕЛ / LONGINT, как в 16-разрядном Обероне-2/1992.

  • 3. Для ПЕРеменных ОТДЕЛа меткой экспорта (т.е. общедоступности) являются оконечные знаки '-' и '+', а не '-' и '*'.

  • 4. Для ПОСТоянных (констант), ВИДов (типов) и в ЗАДАЧАх (процедурах) ОТДЕЛа меткой экспорта (т.е. общедоступности) является оконечный знак '-', а не '*'.

  • 5. У встроенной задачи СТОП / HALT параметром может быть не только ЦЕЛая ПОСТоянная (константа), но и ЦЕЛая ПЕРеменная.

  • 6. При объявлении приёмников (формальных параметров) задачи приёмники ссылок (параметры-переменные) выделяются при помощи оконечных знаков '+' или '-'. Знак '-' отмечает приёмники, доступные только для чтения. Пример:
    в Глаголе/2008
    ЗАДАЧА Вставить-(
               откуда-,куда+:РЯД ИЗ ЗНАК;
                         поз:ЦЕЛ);
    
    в XDS Оберон-2/2005 или Oberon-07M/2013
    PROCEDURE Вставить*(
            VAR откуда,куда:ARRAY OF CHAR;
                                  поз:INTEGER);
    
      в Компонетном Паскале/1997
    PROCEDURE Вставить*(
            IN откуда:ARRAY OF CHAR;
            OUT  куда:ARRAY OF CHAR;
                                  поз:INTEGER);
    

  • 7. В ЗАДАЧАх (процедурах) запрещено использовать приёмники значений (формальные параметры-значения) вида НАБОР / RECORD и РЯД / ARRAY. Используйте для такого случая приёмники ссылок (параметры-переменные) и присваивание локальным переменным.
  • ВИД
      Матрица=РЯД 3,3 ИЗ ВЕЩ;
    ...
    ЗАДАЧА Умножить(a-,b-,c+:Матрица);
    ПЕР
      a0,b0:Матрица;
    УКАЗ
      a0:=a;
      b0:=b;
    ...
    КОН Умножить;
    ...
      Умножить(a,a,a);
    

  • 8. По-другому записывается оператор локальной охраны вида (привратник) ДЛЯ / WITH. Пример:
    ДЛЯ н ВИДА
    | Набор2: н.y:=0
    | Набор3: н.z:=0
    КОН;
    
    WITH
         н:Набор2 DO н.y:=0
       | н:Набор3 DO н.z:=0
    END;
    

  • 9. Для определения чётности-нечётности выражения ЦЕЛого вида вместо процедуры ODD (нечётность) используется встроенная задача ЧЕТ (чётность целого).
 
 

Добавлено в Глагол

(нету в языках Оберон, Оберон-2, Оберон07, КП)

  • 10. Исходные тексты (отделы) на Глаголе записываются на УниКоде (UTF16 = UCS2-Little Endian), а в языках Оберон-семейства (по определению) кодовая таблица Latin-1 и ANSI-кодировки Windows:
    ОТДЕЛ Привет+;
    ИСПОЛЬЗУЕТ
      Вывод ИЗ "...\Отделы\Обмен\";
    УКАЗ
      Вывод.Цепь("Привѣтъ, мiръ!")
    КОН Привет.
    

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

  • 12. Внутри цепочки знаков (строки символов) последовательность #nnnn, где nnnn - четырёхзначное шестнадцатеричное число, обозначает знак с кодом nnnn:
    ПЕР
      цепь:РЯД 20 ИЗ ЗНАК;
    УКАЗ
      цепь:='#0022в кавычках#0022';
    

  • 13. Объявление РЯД n ИЗ ЗНАК / ARRAY n OF CHAR можно записывать как
    ПЕР
      цепь:ЦЕПЬ[n].
    

  • 14. Встроенная задача ДЛИНА(цепь) для ПЕРеменной цепь вида РЯД ИЗ ЗНАК / ARRAY OF CHAR возвращает или позицию первого 0X знака, или РАЗМЕР(цепь) / LEN(цепь), если такого знака в цепочке цепь не существует:
    ПЕР
      цепь:ЦЕПЬ[30];
      цДлинаЦепи,
      цРазмерЦепи:ЦЕЛ;
    УКАЗ
      цепь:='один';
      цДлинаЦепи:=ДЛИНА(цепь);   (* = 4  *)
      цРазмерЦепи:=РАЗМЕР(цепь); (* = 30 *)
    

  • 15. Встроенная задача ДЛИНА('цепочка знаков') для ПОСТоянной цепочки знаков (строки символов в кавычках) возвращает её длину:
    ПЕР
      длина:ЦЕЛ;
    УКАЗ
      длина:=ДЛИНА('два'); (* = 3 *)
    

  • 16. Запуск приложения осуществляется передачей управления главному ОТДЕЛу, у которого название отмечено оконечным "+". ОТДЕЛы (модули), названия которых отмечены оконечным "-", не содержат УКАЗаний (операторов). Они служат только для объявления понятий из модулей на других языках программирования.

  • 17. Встроенная задача СОЗДАТЬ / NEW может не только размещать строку РЯД ИЗ ЗНАК / ARRAY OF CHAR, но и присваивать ей начальное значение:
    ПЕР
      цепь1Д,цепь2Д:ДОСТУП К РЯД ИЗ ЗНАК;
      начзнач:РЯД 10 ИЗ ЗНАК;
    УКАЗ
      СОЗДАТЬ(цепь1Д,'один');  (* цепь1Д^ = 'один' *)
      начзнач:='два';
      СОЗДАТЬ(цепь2Д,начзнач); (* цепь2Д^ = 'два' *)
    

  • 18. Встроенная задача ОБНУЛИТЬ(п) заполняет нулями все переменные (набора или ряда), входящие в состав п. Сама же переменная п может быть ВИДа РЯД / ARRAY или НАБОР / RECORD.

  • 19. ВИД (тип) данных БЕГУНОК / RIDER и связанные с ним встроенные задачи (процедуры) ПОСТАВИТЬ(бегунок) и СМЕСТИТЬ(бегунок) служат для быстрого последовательного обращения к числовым элементам ВИДа РЯД / ARRAY.

  • 20. Встроенная задача ЗАДАНО("Ключ"):КЛЮЧ возвращает ВКЛ / TRUE для цепочки знаков "Ключ", если при вызове ПГ.exe (Преобразователя Глагола) в его входных параметрах (опциях) задан ключ -кКлюч.

  • 21.Связывание (соответствие) задачи на языке Глагол с функцией из DLL-библиотеки Windows:
    ЗАДАЧА CreateFile():ЦЕЛ; ВЫЗОВ "CreateFileW" ИЗ "Kernel32.dll";
    

  • 22. Функция для DLL:
    ЗАДАЧА* DllEntryPoint-():ЦЕЛ;
    

  • 23. Условная компиляция исходных текстов. Операторы условной компиляции задаются в скобках текстореза <* *>. В качестве условий эти операторы могут использовать любые постоянные выражения:
    ИСПОЛЬЗУЕТ
      Настрой;
    ...
    ВИД
    <* ЕСЛИ Настрой.Точность = 2 ТО *>
      Вещ = ШИРВЕЩ;
    <* ИНАЧЕ *>
      Вещ = ВЕЩ;
    <* КОН *>
    

 

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

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