ПЛАЧ
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2021 г. ) |
Парадигма | Процедурный , императивный , структурированный. |
---|---|
Семья | Паскаль |
Разработчик | Норвежские данные |
Финальный выпуск | Финал
|
Дисциплина набора текста | Статический , сильный |
Объем | Лексический |
Платформа | Norsk Data Nord-10 Миникомпьютеры , ND-500 суперминикомпьютер ; Моторола 68000 , 88000 ; Интел х86 |
ТЫ | Синтран III |
Лицензия | Собственный |
Под влиянием | |
Нордский язык программирования |
PLANC ( Programming LAnguage for Nd Computers , произносится как планка ) — язык программирования высокого уровня .
Компиляторы были разработаны компанией Norsk Data для нескольких архитектур, включая миникомпьютеры Motorola 68000 , 88000 , Intel x86 Norsk Data Nord-10 , а также миникомпьютеры и ND-500 суперминикомпьютер . [ 1 ]
Язык был разработан как кроссплатформенное программное обеспечение . В основном он использовался внутри компании Norsk Data для написания системного программного обеспечения высокого уровня, такого как верхние части операционных систем и компиляторов.
Базовая структура
[ редактировать ]Программы PLANC структурированы по модулям и процедурам.
Очень простой пример программы PLANC выглядит следующим образом:
MODULE mod INTEGER ARRAY : stack (0:100) PROGRAM : mprog INTEGER : i, j,k, m INISTACK stack 1 =: i 2 =: j i+j =: k =: m ENDROUTINE ENDMODULE
Отличие от популярных языков программирования состоит в том, что оператор присваивания выполняет вычисления слева направо: сначала он вычисляет значение, а затем сохраняет его. во время компиляции Инициализация переменных , напротив, выполняется справа налево.
Оператор присваивания возвращает сохраненное значение, поэтому его можно сохранять несколько раз: 5 =: a =: b
будет хранить 5
в оба A
и B
переменные. Он разделяет это направление с Plankalkül , ALGOL 60 , Mary (еще одним малоизвестным языком, разработанным в Норвегии) и популярным C. языком
Связанная с этим отличительная синтаксическая особенность заключается в том, что функция может быть определена так, чтобы принимать в качестве входных данных вычисленное значение выражения в ее левой части. Кроме того, один дополнительный аргумент не требует окружающих круглых скобок. Получающаяся в результате инфиксная запись стирает синтаксическую разницу между функциями и операторами . Концептуально такие выражения кажутся имеющими вычисленное значение, текущее слева направо.
Типы данных
[ редактировать ]Как и во всех языках высокого уровня, PLANC использует переменные, как видно из предыдущего примера. Вот разрешенные типы данных в PLANC:
- Простые типы
- INTEGER , REAL, BOOLEAN , LABEL, VOID , ENUMERATION , POINTER
- Составные типы
- МАССИВ, ЗАПИСЬ, НАБОР, РУТИНА
- Пользовательские типы: объявлены TYPE T = .....;
Перечисление было объявлено следующим образом:
ENUMERATION (Winter, Spring, Summer, Autumn) : Seasons := Summer
Это определяет перечисление времен года и устанавливает значение по умолчанию — Лето.
LABEL
немного отличается от обычного типа данных . Это используется для предварительного определения метки в коде и используется вместе с GO
заявление; очень нравится GOTO
на БЕЙСИКЕ .
Модификаторы доступа могут быть применены, чтобы сделать их только ЧТЕНИЕ или ЗАПИСЬ.
Для строковых данных используются несколько предопределенных типов данных:
BYTE
- Содержит один символBYTES
– Содержит строки символовBITS
– Содержит BIT-строки
Указатели массивов представляли собой конструкции из трех слов, которые включали как базовый адрес, так и нижнюю и верхнюю границы массива; это позволило выполнять надежную проверку границ массива во время выполнения и создало своего рода арифметику указателей , которая делает C более сложным языком для написания.
Некоторые заявления
[ редактировать ]PLANC — язык семейства Паскаль . Однако ему не хватает общего BEGIN END
конструкция, часто встречающаяся в Паскале, вместо этого предпочтение отдается таким формам, как ROUTINE..ENDROUTINE
или DO..ENDDO
и т. д.
Одной особенностью, которая отличает его от некоторых других языков, является построение циклов:
DO
.... операторы цикла... ENDDO
Надеемся, что один или несколько операторов цикла будут WHILE
условие, позволяющее выйти из цикла.
Например:
DO WHILE test ..... ENDDO
Похож на букву С while (test) { ... }
петля.
Другой пример:
DO ..... WHILE test ENDDO
Похож на букву С do { .... } while (test).
петля.
Иногда программисты писали:
DO WHILE test1 ..... WHILE test2 ENDDO
C потребует написать что-то вроде while (test1) { .... if (! test2) break; }
.
For
циклы имеют следующую структуру:
FOR var IN low:high DO
.... операторы цикла.... ENDDO
Шаг также можно указать с помощью low:high:step
. В качестве альтернативы можно указать тип (перечисление или целочисленный диапазоновый тип), чтобы указать цикл по диапазону значений, или набор для цикла по всем элементам набора, или можно указать массив для цикла по массиву. А pointer:next
можно указать, чтобы пройти по списку. Например, если определить:
TYPE node = RECORD node POINTER : next T : some_data ENDRECORD
Можно написать:
FOR p IN first:next DO ..... ENDFOR
чтобы перебрать список.
Цикл for может содержать внутри себя операторы WHILE. Это обеспечивает два возможных способа выхода из цикла for: либо потому, что список значений исчерпан, либо потому, что тест не пройден. Таким образом, блоки могут быть написаны для перехвата каждого из них:
routine void,node pointer (node pointer : list) for p in first:next do while p.val >< 20 exitfor return nil endfor return endroutine
Это возвращает nil
если список был исчерпан, но был закрыт из-за while, он просто заканчивался после цикла и возвращал указатель на найденный элемент. В качестве альтернативы это можно было бы поместить в exitwhile
блок, который идентичен, за исключением того, что он окажется там тогда и только тогда, когда тест while не пройден. Если в цикле встречается более одного оператора while, он не сможет отличить их друг от друга, все они выполнят переход к одному и тому же оператору. exitwhile
блокировать.
В PLANC был примитивный механизм исключений: программа могла возвращать исключение, которое представляло собой 16-битное целое число. Затем это может быть перехвачено ON ROUTINEERROR
оператор в вызывающей области.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Справочное руководство ПЛАНК [ND-60.117.03] . Норвежские данные.