stringtranslate.com

PLANIFICAR

PLANC ( Programming LAnguage for Nd Computers , pronunciado tablón ) es un lenguaje de programación de alto nivel .

Norsk Data desarrolló compiladores para varias arquitecturas, incluidas las minicomputadoras Motorola 68000 , 88000 , Intel x86 y Norsk Data Nord-10 y la superminicomputadora ND-500 . [1]

El lenguaje fue diseñado para ser software multiplataforma . Se utilizó principalmente internamente en Norsk Data para escribir software de sistemas de alto nivel, como las partes superiores de sistemas operativos y compiladores.

Estructura basica

Los programas PLANC están estructurados en módulos y rutinas.

Un ejemplo muy sencillo de un programa PLANC es el siguiente:

MODULO MODULO MATRIZ DE ENTEROS: pila (0:100) PROGRAMA: prog ENTERO: i, j, k, m Pila INISTACK 1 =: yo 2 =: j i+j =: k =: metro ENDRRUTINAMODULO FINAL

Una diferencia con los lenguajes de programación populares es que el operador de asignación evalúa de izquierda a derecha: primero calcula el valor y luego lo almacena. La inicialización de variables en tiempo de compilación , por el contrario, se evalúa de derecha a izquierda.

El operador de asignación devuelve el valor almacenado, por lo que se puede almacenar varias veces: 5 =: a =: bse almacenaría 5tanto en las variables Acomo B. Comparte esta dirección con Plankalkül , ALGOL 60 , Mary (otra lengua poco conocida desarrollada en Noruega) y la lengua popular C.

Una característica sintáctica distintiva relacionada es que se puede definir una función para que tome como entrada el valor calculado de la expresión en su lado izquierdo. Además, un único argumento adicional no requiere paréntesis circundante. La notación infija resultante desdibuja la diferencia sintáctica entre funciones y operadores . Conceptualmente, estas expresiones parecen tener un valor calculado que fluye de izquierda a derecha.

Tipos de datos

Como ocurre con todos los lenguajes de alto nivel, PLANC utiliza variables como se puede ver en el ejemplo anterior; estos son los tipos de datos permitidos dentro de PLANC:

Se declaró una enumeración así:

ENUMERATION (Winter, Spring, Summer, Autumn) : Seasons := Summer

Esto define una enumeración de las estaciones y establece el valor predeterminado en Verano.

LABELes un poco diferente de un tipo de datos normal . Esto se usa para predefinir una etiqueta dentro del código y se usa junto con una GOdeclaración; muy parecido GOTOa BASIC .

Se pueden aplicar modificadores de acceso para que sean solo LECTURA o ESCRITURA.

Para datos de cadena se utilizan varios tipos de datos predefinidos, que son:

  1. BYTE– Contiene un carácter
  2. BYTES– Contiene cadenas de caracteres
  3. BITS– Contiene cadenas BIT

Los punteros de matriz eran construcciones de 3 palabras que incluían tanto la dirección base como el límite inferior y superior de la matriz; esto hizo posible realizar una verificación confiable en tiempo de ejecución de los límites de la matriz y creó el tipo de aritmética de punteros que hace de C un lenguaje más desafiante para escribir.

Algunas declaraciones

PLANC es un lenguaje de la familia Pascal . Sin embargo, carece de la BEGIN ENDconstrucción genérica que a menudo se encuentra en Pascal, favoreciendo en cambio formas como ROUTINE..ENDROUTINEo DO..ENDDOetc.

Una característica que lo diferencia de otros lenguajes es la construcción de bucles:

DO.... declaraciones de bucle...ENDDO

Con suerte, una o más de las declaraciones del bucle serían WHILEla condición que permitiera salir del bucle.

Por ejemplo:

HACER MIENTRAS prueba.....ENDO

Es similar a un bucle C. while (test) { ... }

Otro ejemplo:

HACER.....MIENTRAS pruebaENDO

Es similar a un do { .... } while (test).bucle C.

A veces los programadores escribieron:

HACER MIENTRAS prueba1.....MIENTRAS prueba2ENDO

C requeriría escribir algo como while (test1) { .... if (! test2) break; }.

ForLos bucles tienen la siguiente estructura:

FOR var IN low:high DO.... declaraciones de bucle....ENDDO

Un paso también se puede especificar mediante low:high:step. Alternativamente, se puede especificar un tipo (enumeración o tipo de rango entero) para especificar un bucle sobre un rango de valores o un conjunto para recorrer todos los elementos del conjunto o se puede especificar una matriz para recorrer una matriz. Se puede especificar A pointer:nextpara recorrer una lista. Por ejemplo, si se define:

Nodo TIPO = REGISTRO PUNTERO de nodo: siguiente T: algunos_datosENDRECORD

Puede ser escrito:

FOR p IN first:next DO ..... ENDFOR

para recorrer la lista.

Un bucle for puede tener declaraciones WHILE en su interior. Esto proporciona dos maneras posibles de salir de un bucle for, ya sea porque la lista de valores está agotada o porque la prueba falló. Por lo tanto, se pueden escribir bloques para capturar cada uno de ellos:

rutina  vacía , puntero de nodo ( puntero de nodo  : lista) para p en primero: siguiente hacer  mientras p.val >< 20 salir para regresar nil  fin para  regresar rutina final

Esto devuelve nilsi la lista se agotó pero se salió debido a un tiempo, simplemente terminó después del ciclo y devolvió el puntero al elemento encontrado. Alternativamente, eso podría haberse colocado en un exitwhilebloque que sea idéntico, excepto que terminaría allí si y solo si la prueba while fallara. Si ocurre más de una declaración while en el bucle, no podrá distinguirlas, todas saltarán al mismo exitwhilebloque.

PLANC tenía un mecanismo de excepción primitivo: una rutina podía devolver una excepción, que era un valor entero de 16 bits . Esto luego podría detectarse mediante una ON ROUTINEERRORdeclaración en el alcance de la llamada.

Ver también

Referencias

  1. ^ Manual de referencia de PLANC [ND-60.117.03] . Datos norsk.