Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje Psuedoformal) PDF
Lenguaje Psuedoformal) PDF
Lenguaje Psuedoformal) PDF
Facultad de Ciencias
Escuela de Computación
Ernesto Coto
ND 2002-08
Octubre, 2002
Lenguaje Pseudoformal Para la
Construcción de Algoritmos
Ernesto Coto
ecoto@strix.ciens.ucv.ve
ND 2002-08
Resumen
Octubre, 2002
CONTENIDO
1 INTRODUCCIÓN 3
7 BIBLIOGRAFIA 22
1 INTRODUCCIÓN
Como es bien sabido, hasta ahora hemos venido utilizando la notación algorítmica
propuesta por el Prof. Jhonny Sepúlveda [2] para enseñar algoritmia en los primeros cursos
de programación de la carrera.
Si bien el lenguaje es adecuado para la enseñanza, ya han pasado varios años luego de
que fuera adoptado por la escuela y por lo tanto no cuenta con el soporte para las nuevas
tecnologías en programación que han surgido en los últimos años.
3
2 LAS SENTENCIAS BASICAS
Los grupos de sentencias se denotan como un nombre (el nombre del grupo) entre [ ].
Un grupo puede aparecer o no en un algoritmo en particular, pero en el caso en que lo este
se define de una manera específica que se explicara más adelante para cada grupo.
Los rótulos son palabras entre los símbolos < > y corresponden a un valor final o
terminal, por lo general un identificador, un nombre de tipo de dato o un valor.
4
• <valor>: este rótulo se corresponde a un valor dentro del rango de representación
de algún tipo de dato elemental. También puede ser el resultado de una expresión u
operación.
Los tipos elementales son los tipos: entero, real, lógico y carácter. Los cuales se
especifican en la notación con las palabras subrayadas correspondientes a sus nombres:
entero, real, logico y caracter . Cada uno de estos tipos representa un conjunto de
valores y tiene asociado un conjunto de operaciones elementales cerradas en dicho conjunto
de valores.
• entero
Conjunto de valores: S ⊂ Z
Operaciones elementales:
Aritméticas: +,-,*, div, mod .
De comparación: =, >, <, ≥ , ≤ , ≠
• real
Conjunto de valores: S ⊂ R
Operaciones elementales:
Aritméticas: +,-,*, /
De comparación: =, >, <, ≥ , ≤ , ≠
• logico
• caracter
• string
5
• subrango
• enumerado
enumerado <Id>=[<Id1>=<valor1>,<Id2>=<valor2>,...<IdN>=<valorN>];
• En orden textual:
6
A
B
C
• Mediante un operador de secuenciamiento:
2.4 Comentarios
Una diferencia peculiar entre esta notación y el pseudoformal original propuesto por el
Prof. Sepúlveda [2] es la perdida del LEXICO. Esta herramienta didáctica ha sido
substituida por el uso de los comentarios, los cuales se definen como una simple cadena de
texto precedida por el carácter “#”, por ejemplo:
Los comentarios solo ocupan una línea, por lo que un comentario de dos líneas se
representaría así:
Con lo poco que se ha definido hasta ahora del lenguaje se pueden construir
algoritmos sencillos, solo hace falta definir como se ponen juntos todos estos elementos. La
forma en que esto se lleva a cabo es lo que llamaremos estructura del programa.
Accion Principal
[Constantes]
[Variables]
[Secuencia de Operaciones]
7
FAccion
FClase
El grupo [Constantes], si esta presente, se define como una o más sentencias con
la siguiente sintaxis:
<Tipo_elemental> constante <Identificador> = <valor>;
El grupo [Variables], si esta presente, se define como uno o más sentencias con
la siguiente sintaxis:
o bien:
8
3 TIPOS ESTRUCTURADOS, MODULARIZACION Y CONTROL
Los tipos estructurados más comunes son los registros, los arreglos y los archivos. Las
declaraciones de variables de estos tipos forman su propio grupo, el grupo de
[Estructuras].
• Arreglos
<Identificador>[<posicion>]
declara un arreglo de 5 enteros llamado A, que contiene en sus cinco posiciones los
valores 1,2,3,4 y 5 respectivamente.
<Identificador>[<posicion>1][<posicion>2]
y la operación constructora:
Arreglo A de entero [][]={{1,1},{5,5},{10,10}}
9
declararía un arreglo bidimensional de 2 filas por 3 columnas llamado A,
conteniendo dos 1 en la primera columna, dos 5 en la segunda y dos 10 en la tercera.
• Registros Fijos
Registro <Identificador> =
<Tipo>1 <Identificador>1
<Tipo>2 <Identificador>2
.....
<Tipo>N <Identificador>N
FRegistro
• Registros Variantes
Registro <Identificador> =
<Tipo>1 <Identificador>1
.....
<Tipo>N <Identificador>N
en caso de <Tipo>D <Identificador>D
α1 : [Variables]1
α2 : [Variables]2
.....
αN : [Variables]N
FRegistro
• Archivos
- Abrir el archivo
10
AbrirArchivo(<Identificador>A ,“nombre del archivo”, <Argumentos>)
- Cerrar el archivo
CerrarArchivo(<Identificador>A )
- Fin de archivo
FDA(<Identificador>A )
- Leer del archivo
LeerArchivo(<Identificador>A , <Identificador>)
- Escribir en el archivo
EscribirArchivo(<Identificador> A , <Identificador>)
• Selección múltiple
- α o β o δ = verdadero
- α y β = falso
11
- α y δ = falso
- δ y β = falso
Estas condiciones garantizan que todo valor de entrada posible satisface uno y solo
uno de los predicados.
• Selección Simple
Si α entonces
[Secuencia de Operaciones]
FSi
Si α entonces
[Secuencia de Operaciones]1
sino
[Secuencia de Operaciones]2
FSi
Repetir
[Secuencia de Operaciones]
Hasta α
Mientras α hacer
[Secuencia de Operaciones]
FMientras
12
• Estructura Iterativa: Para
define un nuevo tipo de dato llamado NuevoTipo, que tiene la estructura de un arreglo
unidimensional de10 posiciones. Luego puede declarar una variable del nuevo tipo de dato
de la misma manera como se hace con los tipos predefinidos, por ejemplo:
NuevoTipo UnaVariable;
Esto le permitirá declarar una o varias variables con la estructura del nuevo tipo de
datos así como pasar parámetros con dicha estructura.
Las definiciones de nuevos tipos por parte del programador se ubican en su propio
grupo, el grupo de [Definiciones].
Con lo que hemos definido hasta ahora podemos definir nuevos rótulo y expandir la
definición de los que definimos anteriormente. Los rótulos nuevos serían:
13
Y podemos expandir la definición del rótulo <valor>, de la siguiente manera:
Nótese que dentro de una acción o de una función también se pueden declarar
variables, estructuras y se puede hacer definiciones. Todas estas declaraciones son locales
al procedimiento y por lo tanto pierden validez y alcance fuera del contexto del
procedimiento.
Si se utiliza más de una de estas sentencias, las mismas debe ser compuestas
mediante el operador de secuenciamiento “;”. Por ejemplo:
14
3.6 Estructura de un programa (2da. parte)
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Procedimientos]
Accion Principal
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Secuencia de Operaciones]
FAccion
FClase
Nótese que hemos resaltado con letras en negrita los nombres de los nuevos grupos
agregados a la estructura.
De nuevo, se puede observar fácilmente que lo que antes era el algoritmo principal
no es más que una acción llamada “Principal” dentro de la clase. De la misma manera se
puede observar que se repiten varios grupos dentro del método principal y fuera de él, esto
permite definir variables, constantes, definiciones y estructuras globales a todos los
métodos de la clase y otras locales a los métodos.
15
4 EL ENFOQUE ORIENTADO A OBJETOS
4.1 Clases
Las clases son el elemento principal dentro del enfoque orientado a objetos. En este
lenguaje las declaraciones forman parte de su propio grupo, el grupo [Clases]. Cada una
de las declaraciones de clase debe tener el siguiente formato:
Clase <Identificador>
Atributos
Publico:
[Constantes]
[Estructuras]
[Variables]
Privado:
[Constantes]
[Estructuras]
[Variables]
Protegido:
[Constantes]
[Estructuras]
[Variables]
Operaciones
Publico:
[Procedimientos]
Privado:
[Procedimientos]
Protegido:
[Procedimientos]
FClase
16
Ventana
+area: real
#visible: lógico
+color():entero
+escalar(razon:real)
En la figura se muestra el método “escalar” que tiene un real como parámetro y no
retorna nada (es una acción) y el método “color” que no tiene ningún parámetro y
retorna un valor entero.
hijo padre
<<uso>>
• La relación forma parte de, no es más que una asociación, que se denota:
multiplicidad
[Clases]
Clase <Identificador> #aquí pueden ponerle nombre a su programa
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Procedimientos]
17
Accion Principal
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Secuencia de Operaciones]
FAccion
FClase
18
5 APUNTADORES
o bien:
↑real MiApuntador;
• Asignación: Una variable de tipo apuntador a un tipo de dato funciona como una
variable normal en el contexto del operador de asignación. Si se cuenta con dos
variables A y B, y ambas son apuntadores al mismo tipo de dato, entonces es posible
realizar cualquiera de las operaciones A ← B o B ← A; en ambos casos el resultado
será que ambas variables apuntan a la misma dirección de memoria.
• Reservar: Esta función reserva el espacio en memoria suficiente para el tipo de dato
especificado como parámetro y retorna la dirección de memoria que hace referencia a
dicho espacio, sino no se logro reservar el espacio entonces retorna NULL. Por ejemplo,
19
la instrucción: A ← Reservar(real), reserva el espacio en memoria para un dato de
tipo real y asigna la dirección de referencia a la variable A.
• Liberar: Esta acción libera la memoria reservada por una llamada a la función
Reservar. La liberación de memoria consiste en que el espacio liberado queda
disponible para ser utilizado por otras variables y el apuntador que se pasa por
parámetro (el que referencia la memoria a liberar) queda apuntando a NULL. Por
ejemplo, continuando el ejemplo anterior, la instrucción: Liberar(A) liberaría la
memoria reservada anteriormente y la variable A haría referencia a NULL.
20
6 CONVERSION EXPLICITA DE TIPOS DE DATO
Los perfiles de las funciones que provee este lenguaje pseudoformal para realizar las
diferentes conversiones son:
21
7 BIBLIOGRAFIA
[1] Jacobson I., Booch, Rumbaugh, J. The Unified Modeling Language User Guide.
Addison Wesley. 1999
22