]]> ]]>

Component Pascal

Диалект языка программирования Oberon

С 1993 г. ученики Н. Вирта осуществляют успешный перенос технологий Оберона на наиболее популярные платформы Microsoft Windows, Apple Mac OS … В 1997 г. компания Oberon microsystems, Inc., отпочковавшаяся от ETH, сделала небольшие добавления к Oberon-2. При этом язык получил название Component Pascal (Компонентный Паскаль), чтобы подчеркнуть как прямую преемственность со всемирно известным Паскалем, так и ориентированность на поддержку современного компонентно-ориентированного программирования.

Примеры:

Hello, World!:

Пример для версий gpcp 1.3.4-JVM, gpcp 1.3.4-NET 1.1, gpcp 1.3.9-NET
MODULE Hello;
  IMPORT CPmain, Console;
BEGIN
  Console.WriteString("Hello, World!");
END Hello.

Hello, World!:

Пример для версий BlackBox Component Builder 1.5

О том как запустить программу на выполнение — см. Как запустить Блэкбокс и выполнить первую программу. Для запуска после конца описания модуля добавляется строка с коммандером и действием Hello.Do (см. скриншот). При нажатии на коммандер действие выполняется.

MODULE Hello;

IMPORT StdLog;

PROCEDURE Do*;
BEGIN
  StdLog.String("Hello World");
END Do;

END Hello.

Запуск программы в BlackBox
Запуск программы в BlackBox

Факториал:

Пример для версий BlackBox Component Builder 1.5

Используется рекурсивное определение факториала.

О том как запустить программу на выполнение — см. Как запустить Блэкбокс и выполнить первую программу.

MODULE Example;

IMPORT StdLog;

PROCEDURE factorial(n: INTEGER): LONGINT;
BEGIN
  IF n = 0 THEN
    RETURN 1;
  ELSE 
    RETURN n * factorial(n-1)
  END;
END factorial;

PROCEDURE Do*;
VAR 
  n: INTEGER;
BEGIN
  FOR n := 0 TO 16 DO
    StdLog.Int(n);
    StdLog.String('! = '); 
    StdLog.Int(factorial(n));
    StdLog.Ln; 
  END;
END Do;    

END Example.

Факториал:

Пример для версий gpcp 1.3.4-JVM, gpcp 1.3.4-NET 1.1, gpcp 1.3.9-NET

Используется рекурсивное определение факториала.

MODULE Example;

IMPORT CPmain, Console, RTS;

VAR 
  n: INTEGER;
  s: ARRAY 15 OF CHAR;

PROCEDURE factorial*(n: INTEGER): LONGINT;
BEGIN
  IF n = 0 THEN
    RETURN 1;
  ELSE 
    RETURN n * factorial(n - 1)
  END;
END factorial;

BEGIN
  FOR n := 0 TO 16 DO
    Console.WriteInt(n, 2);
    Console.WriteString('! = ');
    RTS.LongToStr(factorial(n), s);  
    Console.WriteString(s);
    Console.WriteLn;
  END;
END Example.

Числа Фибоначчи:

Пример для версий BlackBox Component Builder 1.5

Используется рекурсивное определение чисел Фибоначчи.

MODULE Fibonacci;

IMPORT StdLog;

PROCEDURE fibonacci(n: INTEGER): INTEGER;
BEGIN
    IF n < 3 THEN
        RETURN 1;
    ELSE
        RETURN fibonacci(n-1)+fibonacci(n-2)
    END;
END fibonacci;

PROCEDURE Do*;
VAR
    n: INTEGER;
BEGIN
    FOR n := 1 TO 16 DO
        StdLog.Int(fibonacci(n));
        StdLog.String(', ');
    END;
    StdLog.String('...');
    StdLog.Ln;
END Do;

END Fibonacci.
Fibonacci.Do

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам