Jump to content

ПЛАЧ

ПЛАЧ
Парадигма Процедурный , императивный , структурированный.
Семья Паскаль
Разработчик Норвежские данные
Финальный выпуск
Финал
Дисциплина набора текста Статический , сильный
Объем Лексический
Платформа 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 на БЕЙСИКЕ .

Модификаторы доступа могут быть применены, чтобы сделать их только ЧТЕНИЕ или ЗАПИСЬ.

Для строковых данных используются несколько предопределенных типов данных:

  1. BYTE - Содержит один символ
  2. BYTES – Содержит строки символов
  3. 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 оператор в вызывающей области.

См. также

[ редактировать ]
  1. ^ Справочное руководство ПЛАНК [ND-60.117.03] . Норвежские данные.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1c69faefa11c8879efb50880f970bbd6__1721778840
URL1:https://arc.ask3.ru/arc/aa/1c/d6/1c69faefa11c8879efb50880f970bbd6.html
Заголовок, (Title) документа по адресу, URL1:
PLANC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)