ПЛАН - PLANC
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты.Ноябрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
ПЛАН (произносится как «планка») - это язык программирования высокого уровня. Акроним означает Программирование языка для Nd компьютеров.
Компиляторы были разработаны Norsk Data для нескольких архитектур, включая Motorola 68000, 88000, x86, и данные Norsk НОРД-10 миникомпьютер архитектура и НД-500 суперминикомпьютер.
Язык был разработан так, чтобы не зависеть от платформы. В основном он использовался внутри компании Norsk Data для написания системного программного обеспечения высокого уровня, такого как верхние части операционных систем и компиляторы.
Базовая структура 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 ENDROUTINEENDMODULE
Отличие от популярных языков программирования заключается в том, что оператор присваивания идет слева направо: сначала вы вычисляете значение, а затем сохраняете его. С другой стороны, инициализация переменных во время компиляции шла справа налево.
Оператор присваивания возвращает сохраненное значение, поэтому вы можете сохранить его несколько раз: 5 =: a =: b сохранит 5 в переменных A и B. Он разделяет это направление с Plankalkül, АЛГОЛ 60, и Мэри, еще один малоизвестный язык программирования, разработанный в Норвегии, а также популярный язык программирования C.
Связанная отличная синтаксическая особенность состоит в том, что функция может быть определена так, чтобы принимать в качестве входных данных вычисленное значение выражения в левой части. Кроме того, один дополнительный аргумент не требует заключения в круглые скобки. Результирующий инфиксная запись стирает синтаксическую разницу между функциями и операторы. Такие выражения концептуально кажутся имеющими вычисленное значение, текущее слева направо.
Типы данных PLANC
Как и во всех языках высокого уровня, PLANC использует переменные, как видно из предыдущего примера, вот допустимые типы данных в PLANC:
- Простые типы
- ЦЕЛОЕ, НАСТОЯЩИЙ, BOOLEAN, МЕТКА, ПУСТОТА, ПЕРЕЧИСЛЕНИЕ, УКАЗАТЕЛЬ
- Составные типы
- ARRAY, RECORD, SET, ROUTINE
- Типы, определяемые пользователем: объявлены TYPE T = .....;
Перечисление было объявлено так:
ПЕРЕЧИСЛЕНИЕ (Зима, Весна, Лето, Осень): Времена года: = Лето
Это определяет перечисление сезонов и устанавливает значение по умолчанию Лето.
LABEL немного отличается от вашего обычного типа данных, он используется для предварительного определения метки в коде и используется вместе с оператором GO (очень похоже на GOTO в BASIC).
Можно применить модификаторы доступа, чтобы сделать их только ЧТЕНИЕ или ЗАПИСЬ.
Для строковых данных используются несколько предопределенных типов данных, а именно:
- . BYTE Содержит один символ
- . BYTES Содержит символьные строки
- . BITS содержит строки BIT
Указатели на массивы представляли собой конструкции из трех слов, которые включали как базовый адрес, так и нижнюю и верхнюю границы массива; это сделало возможным надежную проверку границ массива во время выполнения и сделало своего рода «арифметику указателей», которая делает C такой "интересный" язык гораздо менее соблазнительно писать.
Некоторые заявления PLANC
PLANC - это язык из семейства PASCAL. Однако в нем отсутствует общая конструкция BEGIN END, часто встречающаяся в PASCAL, и вместо этого используются такие формы, как ROUTINE..ENDROUTINE или DO..ENDDO и т. Д.
Одна особенность, которая отличает его от некоторых других языков, - это построение циклов:
DO .... операторы цикла ... ENDDO
Будем надеяться, что одним или несколькими операторами цикла будет условие WHILE, которое позволит вам выйти из цикла.
Например:
ДЕЛАТЬ ВО ВРЕМЯ теста ..... ENDDO
Похож на C цикл while (test) {...}.
Другой пример:
ДЕЛАТЬ ...... ВО ВРЕМЯ теста
ENDDO
Аналогично C do {....} while (test). петля.
Иногда программисты писали:
DO WHILE test1 ..... WHILE test2ENDDO
В C вам нужно будет написать что-то вроде while (test1) {.... if (! Test2) break; } или что-то в этом роде.
Циклы For имеют следующую структуру:
FOR var IN low: high DO .... операторы цикла .... ENDDO
Вы также можете указать шаг с помощью low: high: step. В качестве альтернативы вы можете указать тип (перечисление или целочисленный тип с диапазоном значений), чтобы указать цикл по диапазону значений или набор для цикла по всем элементам набора, или вы можете указать массив для цикла по массиву. Вы также можете указать указатель: рядом, чтобы пройти по списку. Например, при определении:
TYPE node = RECORD node POINTER: next T: some_dataENDRECORD
Вы могли написать:
FOR p IN первый: следующий DO ..... ENDFOR
чтобы перебрать список.
А за внутри цикла могут быть операторы WHILE. Это обеспечивает два возможных способа выхода из цикла for: либо из-за того, что список значений исчерпан, либо из-за сбоя теста. Таким образом, вы можете написать блоки, чтобы поймать каждый из них:
рутина пустота,узел указатель (узел указатель : список) за п в первый: следующий делать пока p.val> <20 выход для возврата ноль конец возвращатьсяконец процедуры
Это возвращает ноль если вы исчерпали список, но если вы вышли из-за того, что вы только что закончили цикл и вернули указатель на найденный элемент. В качестве альтернативы вы могли бы поместить это в выходить блок, который идентичен, за исключением того, что вы окажетесь там тогда и только тогда, когда тест while завершится неудачно. Если у вас есть более одного оператора while в цикле, вы не можете отличить их друг от друга, все они перейдут к одному и тому же выходить блокировать.
У PLANC был примитивный механизм исключений - подпрограмма могла возвращать исключение, которое было 16-битным целым числом. Затем это может быть перехвачено оператором ON ROUTINEERROR в вызывающей области.
Смотрите также
Рекомендации
- Norsk Data Справочное руководство по PLANC [ND-60.117.03]