ESPECIFICACIÓN DEL LENGUAJE ALGORÍTMICO UPSAM

 

1. ELEMENTOS DEL LENGUAJE

 

Identificadores

v      Longitud : máximo 32 caracteres

v      Se admiten todos los caracteres alfabéticos (estándar y extendido), dígitos y el símbolo de subrayado.

v      No se hace distinción entre mayúsculas y minúsculas

v      Se debe empezar siempre por un carácter alfabético

 

Comentarios

v      Se recomienda el uso de la doble barra inclinada (//) al comienzo. Puede ir al principio de una línea del pseudocodigo, o después de alguna instrucción.

v      Para comentarios multinea, se puede encerrar el comentario entre llaves ({}).

 

Tipos de datos estándar

v      Numerico (entero y real).

v      Lógicos (logico).

v      Caracteres (caracterer)

v      Cadenas (cadena). Se recomienda como un dato estandar, pero estructurado, es decir, como un array de caracteres acabado en un carácter nulo.

v      Se admiten cadenas o limitadas a un numero detrminado de caracteres, de la forma cadena nombre_variable[n].

 

Constantes estándar

v      Numéricas enteras; estan compuestas por los digitos (0..9), y el signo (+,-)

v      Reales en como fija: estan compuestas por los digitos (0..9), el signo (+,-) y la coma decimal (,).

v      Reales de coma flotante: estan compuestas por los digitos (0.. 9), el signo (+,-) y la coma decimal (,) de la mantisa, la letra E, antes del exponente y los digitos (0..9), el signo (+,-) y la coma decimal (,) del exponente.

v      Lógicos: son las constantes que representan a verdadero (Verdad) y falso (Falso).

v      Caracteres: cualquier carácter del juego de caracteres utilizando, delimitado por el separador de caracteres (‘).

 

Operadores

 

 

Operadores aritmético

         -                                                                 menos usuario

         *                                                                multiplicación

         /                                                                 división real

                                                                           exponenciacion

         +                                                                adición

         -                                                                 resta

         mod                                                            modulo de la división entera

         div                                                              división entera

 

 

 

Tipos de resultados de las expresiones aritméticas :

 

La división real siempre da un resultado real. Los operadores mod y div sólo operan con enteros y el resultado es entero. El menos usuario devuelve el mismo tipo que el operando. En el resto de operadores aritmétricos, si alguno de los operadores es real, el resultado es real.

 

Operadores de relación

         =                                                                igual a

         <>                                                             distinto de

         <                                                                menor que

         >                                                                mayor que

         <=                                                             menor o igual que

         >=                                                             menor o igual que

 

 

Tipos de resultados de expresiones de relación :

Siempre devuelven un dato de tipo lógico . los operadores deben ser del mismo tipo.

Operadores lógicos

         No                                                              negación logica

         Y                                                                multiplicación lógica

         O                                                                suma logica

         O_x                                                            o exclusivo

         Eqv                                                             equivalencia

         Imp                                                            implicación

 

 

 

Tipos de resultados de expresiones lógicas :

Siempre devuelven un dato de tipo lógico. Los operadores deben ser del mismo tipo lógico.

 

Prioridad de los operadores

         Paréntesis                                           ()

         Exponenciacion                                    

         Operadores unarios                               no, -

         Operadores multiplicativos                       * /, div, mod, y ,

         Operadores auditivos                             +, -, o, o_x

         Operadores de relacion                          =, <, >, <>, >=, >=

 

Las operaciones se evaluan siempre de izquierda a derecha.

 

Operador de asignación :(        ) . Sólo se pueden asignar datos del mismo tipo.

 

Definición de tipos

 

v       Registros:

Registro :<nombre_del_tipo>_

       <tipo>:  <nombre_del_campo>

        . . . .

fin_registro

Una linea por campo.

 

v      Archivos de organización secuencial

Archivo_s de <tipo_de_dato>  :   <nombre_del_tipo>

v      Archivos de organización relativa

Archivo_d de  <tipo_de_dato> : <nombre_del_tipo>

v      Array

      array[diemnsiones] de <tipo_de_dato> : <nombre__de_tipo>

      dimensiones seia un subrango

v      Conjunto

Conjunto de <tipo_de_dato> : <nombre_del_tipo> [es (<lista de valores>)]

v      Emumerados

<nombe_de_tipo> es (<lista de valores>)

v      Subrangos

Subrango de <tipo_de_dato> : <nombre_del_tipo> es [<inf>...<sup>]

 

Definición de constantes

v      <tipo_de_dato> : <lista_de_variables>

 

Funciones aritméticas de biblioteca

 

Abs()                      valor absoluto de un numero       

Ent()                       valor entero (se redondea al entero menor)

trunc()                    valor entero (se trunca los decimales)

Redondeo()            redondea un numero

Aleatorio()             valor aleatorio

Exp()                       ex

In()                         logaritmo neperiano (base e)

Log10()                  logaritmo decimal (base 10)

Raiz2()                   raiz cuadrada

Cuadrado()            cuadrado de

Sen()                     seno

Cos()                    coseno

Arctan()                arco tangente

Tipo()                    convierte la expresión en el tipo base especificado

 

Funciones de cadena de bibliotecas

 

Longitud()                                         longitud de cadena

Posición (<c>,<cb>)                          posicon de cadena de c

Sudcadena(<c>,<ini>[<long>])          Extrae de c a partir de caracteres ini una

                                                        Subcadena de longitud long

 

Funciones de conversión de numero de cadena

 

Codigo()       devuelve el codigo ASCII de un carácter

Car()            devuelve el carácter asociado a un codigo ASCII

valor()          convierte una cadena en un valor numerico

cad()            convierte un numero en cadena

 

Funciones de informacion

 

tamaño_de  devuelve la longitud en bytes de una variable o tipo de dato

 

Estructura de un programa

 

algoritmo <nombre_algoritmo>

[incluir<modulo>]...

//declaraciones de constantes, tipo y variables

[const <declaraciones de constantes>]

[tipo <declaraciones de tipos de datos>]

[var <declaraciones de variables>]

// se recomienda declarar primero las constantes,

// luego los tipos y por ultimo las variables

// cualquier objeto debe ser declarado antes de ser utilizado

inicio

...

fin

[declaraciones de procedimientos y funciones]

Estructura de control

 

Estructuras selectivas

si condicion entonces

   <acciones>

[si_no

       <acciones>]

fin_si

según_sea <expresiones_ordinal>hacer

    <lista_de_valores_ordinal> : <acciones>

[si_no

       <acciones>]

fin_según

v     la expresión que se ecalua debe ser de tipo ordinal

v     las lista de valores, son uno o mas valores ordinales separados por comas.

 

Estructuras repetitivas

 

Mientras <expresión_logica> hacer

       <acciones>

fin_mientras

 

repetir

     <acciones>

hasta_que <expresiones_logica>

desde <variable_ordinal>       <valor_final>

                                           incrmento/decremento <valor> hacer

    <acciones>

fin_desde

 

iterar

    <acciones>

     [salir_si]

fin_iterar

 

PROGRAMACIÓN MODULAR

 

Inclusión de archivos o modulos

v     incluir <modulo>, permite incluir archivos con subprogramsa.

 

Procedimientos

v     declaración

   procedimiento <nombre_proc>[lista_de_parámetros_formales)]

   [declaraciones locales]

    inicio

    ...

    fin_procedimiento

     <lista_de_argumentos>  es uno o mas argumentoas de las siguientes forma:

     {{E | S | E / S} <tipo­_de_dato> : <lista_de_argumentos>}...

 

v     el tipo de dato debe estar dafinido por anticipado

v     llamada a un procedimiento:

[llamas_a]   <nom_proc> [lista de parámetros_actuales) ]

v     los parámetros deben coincidir  en posición, tipo y numero.

 

Funciones

v     declaración

<tipo_de_dato> funcion

<nombre_fun>[(lista_de_parámetro_formales)]

[declaraciones locales]

inicio

  ...

   decolver <expresión>

fin_funcion

v     lista de parámetros es igual que en os procedimientos

v     devolver nos dice el valor de retorno d la funcion

v     solo se pueden devolver datos estandar

 

Cuestiones Generales

v     el ambito de las variables es igual que en pascal

v     todas las variables locales, para el uso de variables globales utilizar el modificador global, global entero a.

v     No se admiten subprogramas animados

v     los archivos se pasan siempre como E/S.

 

Procedimientos De Entrada/Salida

v     leer (<lista_de_variables>)

v     escribir ([<lista_de_expresiones>])

v     leercar (<variables_tipo_carácter>)

 

 

ARCHIVOS

Archivos secuenciales (texto)

v     crear y abrir es distinto. Para abrir es necesario tener creado el archivo (esto tambien es valido para indexados y directos). Crear iniciualiza el archivo;abrir, permite acceder a un archivo existente.

v     Crear (<var_tipo_archivo>.<nombre_fisico>), nombre fisico es una expresión de cadena.

v     Abrir (<var_tipo_archivo>,<modo>, <nombre_fisico>), nombre fisico es una expresión de cadena.

v     <modo> en archivos secuenciales pueden ser: lectura (coloca el punterto de dtos al inicio del archivo y abre para la lectura) o escritura (coloca el puntero de datos al final del archivo y abre para escritura).

v     Escritura : escribir (<var_tipo_archivos>, <lista_de_expresiones>).

v     Lectura : leer (<var_tipo_archivo>, <var_tipo_carácter>).

v     Fin de linea : fdl [(<var_tipo_archivo>]

v     Fin de archivo: fda [(var_tipo_archivo)]. Es verdadero si se ha intentado la lectura después del ultimo registro.

v     Cerrar un arhivo cerrar (<lista var_tipo archivo>).

v     Otros procedimientos utiles pueden ser borrar (<nombre_fisico>), que borrar un archivo que debe estar cerrado, y renombrar (<nombre fisico>, <nombre_fisico>), que renombrar el archivo primero por el nombre del segundo. Ambos deben estar cerrados.

v     Otra funcion util puede ser lda (<nombre_fisico>), que devuelve la longitud del archivo en bytes.

 

 Archivos Directos (Relativos)

 

v     Crear (<var_tipo_archivo>.<nombre_fisico>), nombre fisico es una expresión de cadena.

v     Abrir (<var_tipo_archivo>,<modo>, <nombre_fisico>), nombre fisico es una expresión de cadena.

v     <modo> en archivos directos solo es l_e para lectura y ecritura.

v     Escritura: escribir (<var_tipo_archivo>, <var_tipo_base>, <posición>). Escribir una variable del tipo base del archivo en la posición relativa especificada.

v     Lectura: leer (<var_tipo_archivo>,<var_tipo_base>, >posocion>). Lee una variable del tipo base del archivo en la posicon relativa especificada.

v     Fin de linea y fin de archivo, no tienen efecto en archivos relativos (si consideramos la lectura secuencia, fin de archivos si tendra sentido).

v     Tambien se admiten los procedimientos borraro y renombrar, asi como la funcion lda.

v     El numero de registros del archivo se puede obtener con

Lda(<var_tipo_archivo>) / tamaño_de (var_tipo_base_del_archivo).

 

Archivos Indexados

v     DEFINICIÓN

Archivo_i de <tipo_dato> : <nombre_del_tipo>

            clave_p<lista_de_campos>// clave primaria sin duplicados

               [clave_s <lista_de_campos> [duplicada]]...

v     Crear (<var_tipo_asrchivo>, <nombre_fisico>), nombre fisico es una expresión de cadena.

v     Abrir (<var_tipo_archivo>, <modo>, <nombre_fisico>), nombre fisico es una expresión de cadena.

v     <modo> en archivos indexados solo puede aer l_e

v     escritura: escribir (<var_tipo_archivo>, >var_tipo_base>). Escribe el registro en la posición que tenga en ese momento la clavwe primaria. Da error si existe, o si tiene claves secundaraias sin duplicados.

v     Lectura disdreta: leer (<var_tipo_archivo>, <var_tipo_base>, [<campo clave]). Pro omisión lee el registro cuyo valor coincida con el que ese momento tenga la clave primaria. Para leer por claves altrnativas se incluira el argumento <campo_clave>.

v     Una funcion Existe (<var_tipo_archivo>) devolvera verdadero si la lectura ha sido correcta.

v     Lectura secuencial: leersec (<var_tipo_archivo>, <var_tipo_base>, [<campo clave]) . lectura secuencial del siguiente registro de la clave especificada. Por omisión , lee la siguiente clave secuencial.

v     Fin de archivo: fda [(var_tipo_archivo)]. Es verdadero si se ha intentado la lectura después del ultimo registro.

v     Otros procedimientos utiles pueden ser borrar (<nombre_fisico>), que borrar un archivo que debe estar cerrado, y renombrar (<nombre fisico>, <nombre_fisico>), que renombrar el archivo primero por el nombre del segundo. Ambos deben estar cerrados.

v     Otra funcion util puede ser ida (<nombre_fisico>), que devuelve la longitud del archivo en bytes.

 

 

VARIABLES DINAMICAS

 

v     Declaraciones de tipos dinamicos.

puntero_a <tipo_de_dato> : <nombre_del_tipo>

v     Acceso al contenido de una variable

<var_tipo_ptr> ->

v     Asignar memoria a una variable de tipo puntero: reservar (<var_tipo_ptr>)

v     Liberar memoria de una variable de tipo puntero: liberar (<var_tipo_ptr>).

v     Puntero nulo: nulo

 

PALABRAS RESERVADAS, OPERADORES, CARACTERES ESPECIALES, FUNCIONES Y PROCEDIMIENTOS ESTÁNDAR.

 

Palabras reservadas, símbolos y operadores

 

'                                            delimitador de caracteres

                                          variable apuntada

                                            asignacion

*                                         multiplicación

+                                        suma, contatanacion

+                                        signo positivo

-                                         signo negativo

, (coma decimal)

-                                          menos usuario

-                                           resta

/                                           división real

//                                         inicio de comentario

:                                           dos puntos

<                                         menor que

< =                                      menor o igual que

< >                                      distinto de

=                                         igual a

>                                         mayor que

> =                                      mayor o igual a

^                                         exponenciación

{                                          inicio de comentario

}                                          fin de comentario

&                                          cancatenacion

abrir                                     open

abs()                                     abs

aleatorio()                             random

algoritmo                              program

arctan()                                 atm

archivo_d                              definición de archivos directos

archivo_i                               definición de indexados

archivo_s                              definición de archivos secuenciales

array                                     array

borrar                                   delete

cad()                                     str

cadena                                  string

car()                                     chr

caracter                                 char

clave_p                                 clave primaria de archivos indexados

clave_s                                  clave secundaria de archivos indexado

codigo()                                asc

conjunto                               set

const                                    const

cos()                                     cos

crear()                                  inicializa un archivo

cuadrado()                            sqr

de                                        of

decremento                           decremento para bucles desde

desde                                    for

devolver                                return

div                                        div

duplicada                              se admiten duplicados en claves secundarias de

                                             archivos indexados

E                                          inicio del exponente en un real e coma flotante

E                                          modo de apertura de archivos para escritura

E                                          parámetro de entrada

E / S                                     parámetro de entrada  / salida

Ent ()                                    int

Entero                                   nteger

Entonces                               then

Eqv                                       eqv

Es                                         is

Escribir                                 write

Existente()                             indica en archivos indexados si una operación de          lectura ha sido correcta

Exp()                                    exp

Falso                                     false

Fda                                       eof

Fdl                                        eoln

Fin                                        end

Fin_desde                              next, end for

Fin_funcion                           end function

Fin_iterar                              loop

Fin_mientras                          end while

Fin_procedimiento                  end sub

Fin_según                             end select

Fin_si                                    end if

Funcion                                 fuction

Hacer                                    do

Hasta                                    to

Hasta_que                             until

Imp                                      imp

Incremento                            para bucles desde

Inicio                                    bejín

Iterar                                    do

L /d                                      I – O

Lda                                       lof

L                                          input

Leer                                      read

Leercar                                  readkey, input$

Leersec                                 lectura secuencial en archivos indexados

Liberar                                  dispose

In()                                      log

Lod10()                                 log10

Lógico                                   bolean

Longitud()                             len, lengeth

Llamar_a                               call

Mientras                                while

Mod                                      mod

No                                        not

Nulo                                     nil

O                                         or

O_x                                      xor

Posición (<c>, <cb>)             pos, index, instr

Procedimiento                        procedure

Puntero_a                             declaración de tipos de puntero

Raiz2                                    sqrt

Real                                      real

Redondeo()                           round()

Registro                                record, struct

Renombrar                            rename

Repetir                                  repeat

Reservar                                new

S                                          parametro de salida

Salir                                      exit

Según_sea                             case of

Sen ()                                   sin

Si                                         if

Si_no                                    else

Subcadena                             mid, copy

Subrango                              declaración de subrangos

Tamaño_de                           sizeof

Tipo                                     type

Trunc ()                                trunc

Var                                       var

Valor()                                  val

Verdad                                  rue

Y                                          and

 

 

 

 

 

 

 

 

 

 

                     

 

 

 

 

Hosted by www.Geocities.ws

1