Notacion Algoritmica
Notacion Algoritmica
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIN
ERNESTO COTO
Abril, 2002
CONTENIDO
1. INTRODUCCIN
2. LAS SENTENCIAS BSICAS
2.1 Rtulos (1era. parte)
2.2 Tipos de dato elementales
2.3 Operaciones Bsicas
2.4 Comentarios
2.5 Estructura de un programa (1era. parte)
3. TIPOS ESTRUCTURADOS, MODULARIZACIN Y CONTROL
3.1 Tipos de dato estructurados
3.2 Estructuras de control de programa y Estructuras Iterativas
3.3 Tipos definidos por el programador
3.4 Rtulos (2da. Parte)
3.5 Unidades de Modularizacin: Acciones y Funciones
3.6 Estructura de un programa (2da parte)
4. EL ENFOQUE ORIENTADO A OBJETOS
4.1 Clases
4.2 Diagramas de Clase
4.3 Estructura de un programa (3ra parte)
5. APUNTADORES
5.1 Operaciones Bsicas
6. CONVERSIN EXPLICITA DE TIPOS DE DATO
1. INTRODUCCIN
Como es bien sabido, hasta ahora hemos venido utilizando la notacin
algortmica propuesta por el Prof. Jhonny Seplveda para ensear algoritmia en
los primeros cursos de programacin de la carrera.
Si bien el lenguaje es adecuado para la enseanza, ya han pasado varios aos
luego de que fuera adoptado por la escuela y por lo tanto no cuenta con el
soporte para las nuevas tecnologas en programacin que han surgido en los
ltimos aos.
Actualmente necesitamos una notacin algortmica que, adems de proveer las
herramientas ms bsicas de programacin, tambin sea capaz de representar
conceptos ms avanzados.
El lenguaje pseudoformal a utilizar deber ser capaz de:
Proveer un estructura bsica de programa
Proveer los tipos de datos elementales y los tipos de datos estructurados
ms comunes
Declaraciones de constantes y variables asociadas a cualquier tipo de dato
Proveer operaciones de entrada/salida bsicas
Definir acciones y funciones parametrizadas
Definir los tipos de pase de parmetro bsicos
Proveer la definicin de tipos de datos por parte del usuario
Proveer la representacin de los co nceptos del enfoque orientado a objetos
A continuacin se presenta una propuesta de dicho lenguaje pseudoformal,
basado en la notacin algortmica previa del Prof. Seplveda.
<Tipo_elemental>:
<Identificador>(o <Id>):
elemental.
entero
Conjunto de valores: S Z
Operaciones elementales:
Aritmticas: +,-,*, div, mod.
De comparacin: =, >, <, , ,
real
Conjunto de valores: S R
Operaciones elementales:
Aritmticas: +,-,*, /
De comparacin: =, >, <, , ,
logico
caracter
string
subrango
Conjunto de Valores: El intervalo [<valori >, <valors >] heredado del tipo base.
Conjunto de operaciones: Heredados del tipo base.
enumerado
<Identificador> <valor>;
Escribir(<valor>);
una
En orden textual:
A
B
C
(operador de secuenciamiento ;)
Los comentarios solo ocupan una lnea, por lo que un comentario de dos lneas
se representara as:
#Este programa fue realizado por
#Pedro Prez el 30/12/2000
Accin Principal
[Constantes]
[Variables]
[Secuencia de Operaciones]
FAccion
FClase
o bien:
<Tipo> <Identificador1 >,...,<Identificadorn >; #para varias variables
Arreglos
y la operacin constructora:
Arreglo A de entero [][]={{1,1},{5,5},{10,10}}
Registros Fijos
Para declarar un registro se debe utilizar la siguiente sentencia:
Registro <Identificador> =
<Tipo>1 <Identificador>1
<Tipo>2 <Identificador>2
.....
<Tipo>N <Identificador>N
FRegistro
con I [1,N]
Registros Variantes
Archivos
La declaracin de un archivo secuencial sera:
Archivo <Identificador>A
Abrir el archivo
AbrirArchivo(<Identificador>A ,nombre del archivo, <Argumentos>)
Donde <Argumentos> es uno o m s de las siguientes palabras reservadas:
Escribir: indica que el archivo se abre de solo escritura
Lectura: indica que el archivo de abre de solo lectura
Texto: indica que el archivo a abrir es un archivo de texto
Binario: indica que el archivo a abrir es un archivo binario
Aadir: indica que el archivo se abre de escritura pero todo lo que se escriba se
aade al final del archivo
Los argumentos de combinan con el operador lgico y. Por ejemplo:
Abrir(A, prueba.txt, Lectura y Texto )
Cerrar el archivo
CerrarArchivo(<Identificador>A )
Fin de archivo
Escribir en el archivo
FDA(<Identificador>A )
LeerArchivo(<Identificador>A , <Identificador>)
EscribirArchivo(<Identificador> A , <Identificador>)
Seleccin mltiple
Sean , , los predicados que caracterizan a los tres casos posibles en un
problema. La seleccin mltiple se expresa como:
Seleccion
: [Secuencia de Operaciones]
: [Secuencia de Operaciones]
: [Secuencia de Operaciones]
FSeleccion
o o = verdadero
11
y = falso
y = falso
y = falso
Seleccin Simple
Sea un predicado. La seleccin simple se expresa como:
Si entonces
[Secuencia de Operaciones]
FSi
Repetir
[Secuencia de Operaciones]
Hasta
FMientras
Esto le permitir declarar una o varias variables con la estructura del nuevo
tipo de datos as como pasar parmetros con dicha estructura.
Las definiciones de nuevos tipos por parte del programador se ubican en su
propio grupo, el grupo de [Definiciones].
3.4 Rtulos (2da. Parte)
Con lo que hemos definido hasta ahora podemos definir nuevos rtulo y
expandir la definicin de los que definimos anteriormente. Los rtulos nuevos
seran:
13
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Procedimientos]
Accion Principal
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Secuencia de Operaciones]
FAccion
FClase
Ntese que hemos resaltado con letras en negrita los nombres de los
nuevos grupos agregados a la estructura.
De nuevo, se puede observar fcilmente que lo que antes era el algoritmo
principal no es ms que una accin llamada Principal dentro de la clase. De la
misma manera se puede observar que se repiten varios grupos dentro del mtodo
principal y fuera de l, esto permite definir variables, constantes, definiciones y
estructuras globales a todos los mtodos de la clase y otras locales a los
mtodos.
15
16
Ventana
+area: real
#visible: lgico
+color():entero
+escalar(razon:real)
En la figura se muestra el mtodo escalar que tiene un real como
parmetro y no retorna nada (es una accin) y el mtodo color que no
tiene ningn parmetro y retorna un valor entero.
La
herencia
se
representa
mediante
una
relacin
generalizacin/especificacin, que se denota con la flecha siguiente:
hijo
de
padre
<<uso>>
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
17
[Procedimientos]
Accion Principal
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Secuencia de Operaciones]
FAccion
FClase
18
5. APUNTADORES
Un apuntador es una referencia a una direccin de memoria a partir de la
cual se encuentra almacenada una determinada cantidad de informacin,
asignada a una variable de un tipo elemental o estructurado. Para declarar un
variable que sirva de apuntador a un valor de un cierto tipo se utiliza la
sentencia:
<Tipo> <Identificador>; #para una sola variable
o bien:
<Tipo> <Identificador1 >,..., <Identificadorn >; #para varias variables
sera:
Liberar: Esta accin libera la memoria reservada por una llamada a la funcin
Reservar. La liberacin de memoria consiste en que el espacio liberado queda
disponible para ser utilizado por otras variables y el apuntador que se pasa por
parmetro (el que referencia la memoria a liberar) queda apuntando a NULL .
Por ejemplo, continuando el ejemplo anterior, la instruccin: Liberar(A) liberara
la memoria reservada anteriormente y la variable A hara referencia a NULL.
20
21