Anda di halaman 1dari 21

UNIVERSIDAD CENTRAL DE VENEZUELA

FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIN

LENGUAJE PSEUDOFORMAL PARA


LA CONSTRUCCIN DE ALGORITMOS
(2da. Propuesta)

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.

2. LAS SENTENCIAS BSICAS


La notacin que se presenta a continuacin trata de ser lo ms general
posible, en el sentido de que las construcciones pueden ser traducidas fcilmente
a la mayora de los lenguajes de programacin dominantes actualmente,
mediante sencillas reglas de traduccin.
Precisamente pensando en estas traducciones del lenguaje pseudoformal se
han tomando cuenta varios detalles de implementacin de varios lenguajes de
programacin para la especificacin del lenguaje y por lo tanto se usan varios
trminos que necesariamente estn ligados al contexto de un lenguaje de
programacin real.
Bsicamente, el lenguaje provee los siguientes elementos bsicos para la
construccin de algoritmos: Palabras reservadas, rtulos, operaciones y
estructuras bsicas.
Al mismo tiempo, estas construcciones se pueden componer mediante
secuenciamiento y se pueden unir para formar grupos de sentencias.
Las palabras reservadas se denotan como palabras subrayadas para
representar palabras dentro de la sintaxis que no pueden ser utilizadas como
identificadores de ningn tipo, debido a que forman parte de las sentencias del
lenguaje. Estas palabras pueden estar escritas en mayscula o minsculas y en la
mayora de los casos NO DEBEN ser omitidas al utilizar la notacin. Las palabras
reservadas del lenguaje se mostraran a medida que se explique cada una las
sentencias.
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 especfica que se explicara ms
adelante para cada grupo.
Los rtulos son palabras entre los smbolos < > y corresponden a un valor
final o terminal, por lo general un identificador, un nombre de tipo de dato o un
valor.
Las operaciones y estructuras bsicas se presentar ms adelante en este
documento. El lenguaje tambin brinda la posibilidad de aadir comentarios al
algoritmo.
2.1 Rtulos (1era. parte)
Los rtulos que se utilizan en la notacin son los siguientes:

<Tipo_elemental>:

<Identificador>(o <Id>):

elemental.

se corresponde a la representacin de un tipo de dato

Los identificadores se utilizan como nombres de


variables, constantes, estructuras de datos, clases o tipos definidos por el
usuario. Un identificador se corresponde a una cadena de caracteres
alfanumricos que debe comenzar con una letra y no puede contener
ningn carcter especial ni alguno de los siguientes caracteres *, -, /, \, ,
<, >, |.
<valor>: este rtulo se corresponde a un valor dentro del rango de
representacin de algn tipo de dato elemental. Tambin puede ser el
resultado de una expresin u operacin.

2.2 Tipos de dato elementales


Los tipos elementales son los tipos: entero, real, lgico y carcter. Los cuales
se especifican en la notacin 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:
Aritmticas: +,-,*, div, mod.
De comparacin: =, >, <, , ,

real

Conjunto de valores: S R
Operaciones elementales:
Aritmticas: +,-,*, /
De comparacin: =, >, <, , ,

logico

Conjunto de valores: {verdadero, falso}


Operaciones elementales:
De comparacin: =,
Lgicas: no, o, y

caracter

Conjunto de valores: Tabla ASCII o Tabla ASCII extendida


Operaciones elementales:
De comparacin: =, >, <, , ,
5

string

Conjunto de valores: secuencia de caracter sin lmite predefinido


Operaciones elementales:
De comparacin: =,
Otras: + (concatenacin)

subrango

La definicin de un tipo subrango necesita un tipo base, de la siguiente


manera:
subrango <Tipo_elemental> <Identificador>= [<valori >...<valors >];

Conjunto de Valores: El intervalo [<valori >, <valors >] heredado del tipo base.
Conjunto de operaciones: Heredados del tipo base.

enumerado

La definicin de un tipo enumerado requiere una especificacin como la


siguiente:
enumerado <Identificador>= [<Id1 >, <Id2 >,... <IdN >];

o bien, se puede extender la definicin de la manera siguiente:


enumerado <Id>= [<Id1 >=<valor1 >, <Id2 >=<valor2 >,...<IdN >=<valorN >];

Conjunto de Valores: el subconjunto de los enteros especificado por el


programador, o bien el intervalo [1, N] si el usuario no especifica los
valores de los identificadores del enumerado.
Conjunto de Operaciones: Las operaciones heredadas del tipo entero .
2.3 Operaciones bsicas
La notacin define las siguientes operaciones bsicas:

Asignacin simple: <Identificador> <Identificador>; o bien,

Salida simple: Escribir(<Identificador>); o bien,

<Identificador> <valor>;

Escribir(<valor>);

Se puede utilizar el operador de concatenacin para


impresin con formato, por ejemplo:
Escribir(Este PC cuesta +Precio+ dlares);
6

una

Cada instruccin Escribir va acompaada de un retorno de


carro al final.

Entrada simple: Leer(<Identificador>);

Sean tres operaciones cualesquiera A, B, y C. Estas acciones simples pueden


ser compuestas en forma de secuencia de dos maneras posibles:

En orden textual:
A
B
C

Mediante un operador de secuenciamiento:


A;B;C

(operador de secuenciamiento ;)

Las operaciones A, B, C no solo pueden ser operaciones bsicas sino


invocaciones a Acciones o Funciones, alguna estructura de control de programa o
alguna forma de estructura iterativa, las cuales sern explicadas ms adelante.
2.4 Comentarios
Una diferencia peculiar entre esta notacin y el pseudoformal original
propuesto por el Prof. Seplveda es la perdida del LXICO. Esta herramienta
didctica ha sido substituida por el uso de los comentarios, los cuales se definen
como una simple cadena de texto precedida por el carcter #, por ejemplo:
#Este programa fue realizado por Pedro Prez el 30/12/2000

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

Todos los lenguajes de programacin conocidos implementan los comentarios


de alguna forma, mientras que el LXICO no puede traducirse a ningn lenguaje.
El uso de comentarios para documentar la funcin de una variable o
procedimiento terminar por crear la buena costumbre en el programador de
documentar el cdigo fuente de sus programas, hacindolos ms legibles.
2.5 Estructura de un programa (1era. parte)
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
7

elementos. La forma en que esto se lleva a cabo es lo que llamaremos estructura


del programa.
La estructura de programa es la de un lenguaje de programacin
totalmente orientado a objetos, a saber:
Clase <Identificador>

#aqu pueden ponerle nombre a su programa

Accin Principal
[Constantes]
[Variables]
[Secuencia de Operaciones]
FAccion
FClase

Decimos que esta la primera parte de la estructura de control de programa


porque a medida que se vayan introduciendo conceptos ms avanzados podremos
ir ampliando estas estructuras en una segunda y tercer parte.
El grupo [Constantes], si esta presente, se define como una o ms sentencias
con la siguiente sintaxis:
<Tipo_elemental> constante <Identificador> = <valor>;

El grupo [Variables], si esta presente, se define como uno o ms sentencias


con la siguiente sintaxis:
<Tipo> <Identific ador>; #para una sola variable

o bien:
<Tipo> <Identificador1 >,...,<Identificadorn >; #para varias variables

El grupo [Secuencia de Operaciones] , si esta presente, se define como una


secuencia finita de las operaciones bsicas definidas anteriormente.

3. TIPOS ESTRUCTURADOS, MODULARIZACION Y CONTROL


Con las herramientas estudiadas anteriormente se pueden construir
programas sencillos. En este captulo estudiaremos herramientas ms poderosas
que nos permitirn construir algoritmos que seran muy difciles de construir con
lo que conocemos hasta ahora del lenguaje.
3.1 Tipos de dato estructurados
Los tipos estructurados ms 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

Los arreglos unidimensionales se declaran mediante una sentencia con la


sintaxis siguiente:
Arreglo <Identificador> de <Tipo> [Li...Ls]

Las operaciones bsicas sobre un arreglo son:


-

La Operacin Selectora que se representa de la siguiente manera:


<Identificador>[<posicion>]

La Operacin Constructora, la cual slo se utiliza en el momento de la


declaracin del arreglo. Por ejemplo, la sentencia:
Arreglo A de entero [] = {1,2,3,4,5}

declara un arreglo de 5 enteros llamado A, que contiene en sus cinco


posiciones los valores 1,2,3,4 y 5 respectivamente.
Estas semnticas se pueden extender para arreglos multidimensionales. Por
ejemplo para declarar un arreglo bidimensional, la sentencia seria:
Arreglo <Identificador> de <Tipo> [Li1 ...Ls1 ], [Li2 ...Ls2 ]

La operacin selectora sera:


<Identificador>[<posicion>1 ][<posicion>2 ]

y la operacin constructora:
Arreglo A de entero [][]={{1,1},{5,5},{10,10}}

declarara 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
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

La operacin bsica sobre un registro es la Operacin Selectora que se


representa de la siguiente manera:
<Identificador>.<Identificador>I

con I [1,N]

Registros Variantes

Sean 1,... N, un subconjunto de los valores que puede tomar la variable


<Identificador>D
de tipo <Tipo>D llamada discriminante. Un registro variante
basado en dicho discriminante se declara utilizando la siguiente sentencia:
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

La operacin bsica sobre este tipo de registro tambin es la Operacin


Selectora , pero el alcance de las variables que se encuentran en la parte
variante del registro va a depender del valor del discriminante.

Archivos
La declaracin de un archivo secuencial sera:
Archivo <Identificador>A

Las operaciones bsicas sobre un archivo secuencial son:


10

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

Leer del archivo

Escribir en el archivo

FDA(<Identificador>A )
LeerArchivo(<Identificador>A , <Identificador>)
EscribirArchivo(<Identificador> A , <Identificador>)

3.2 Estructuras de control de programa y Estructuras iterativas


Las estructuras de control de programa y las estructuras iterativas vendran
a formar parte del grupo[Secuencia de Operaciones], por lo que amplan su definicin.
Las estructuras de control de programa son otra forma de composicin de
operaciones, que a la vez brindan la posibilidad al programador de condicionar la
ejecucin de distintas operaciones. El lenguaje define la seleccin mltiple y la
seleccin simple.

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

Donde , , deben cumplir:


-

o o = verdadero
11

y = falso
y = falso
y = falso

Estas condiciones garantizan que todo valor de entrada posible satisface


uno y solo uno de los predicados.

Seleccin Simple
Sea un predicado. La seleccin simple se expresa como:
Si entonces
[Secuencia de Operaciones]
FSi

Una variacin de la seleccin mltiple permite usar un solo predicado para


condicionar la ejecucin de otra accin B, de la siguiente manera:
Si entonces
[Secuencia de Operaciones]1
sino
[Secuencia de Operaciones]2
FSi

Otra forma de composicin de operaciones y control de programa, que


adems le brinda la posibilidad al programador de aplicar un mismo tratamiento
un nmero condicionado de veces son las estructuras iterativas. El lenguaje
define las estructuras bsicas: repetir, mientras y para. Algunos lenguajes de
programacin implementan estas estructuras junto con otras variantes, pero en
general, estas son las ms conocidas.

Estructura iterativa: Repetir


Sea un predicado que caracteriza la terminacin del proceso iterativo. La
repeticin se expresa de la siguiente forma:

Repetir
[Secuencia de Operaciones]
Hasta

Estructura Iterativa: Mientras


Sea un predicado que caracteriza el comienzo o la continuacin de un
proceso iterativo. La repetici n, mediante la herramienta mientras, se
expresa de la siguiente forma:
Mientras hacer
[Secuencia de Operaciones]
12

FMientras

Estructura Iterativa: Para


En la estructura Para tambin se cuenta con un predicado que caracteriza
la terminacin del proceso iterativo, con la particularidad de que dicho
predicado consiste en una comparacin aritmtica contra el valor que define
la iteracin.
Para <Identificador><valor>1 hasta <valor>2 en <valor>inc hacer
[Secuencia de Operaciones]
Fpara

En este ciclo la variable I se inicializa con <valor>1 y el ciclo continuar hasta


que I sobrepase el <valor>2 . <valor>inc es el tamao del paso en el que se
incrementa la variable I.
3.3 Tipos definidos por el programador
El lenguaje provee al programador de la capacidad de definir nuevos tipos
de dato. Simplemente debe anteponer la palabra reservada Tipo a la declaracin
de una variable para indicarle al lenguaje que de ahora en adelante se usara el
identificador como un <Tipo>. Este le da la capacidad de definir como tipo de dato
cualquiera estructura, por ejemplo:
Tipo Arreglo NuevoTipo de Entero [1...10];

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 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

se corresponde a un <Tipo_elemental>, un tipo estructurado o a un


tipo definido por el usuario.
<posicion>: se corresponde con un valor entero correspondiente a una
posicin dentro de una estructura de d atos.
<Argumentos>: se corresponde a un conjunto de palabras reservadas para la
apertura de archivos secuenciales.
<Tipo>:

Y podemos expandir la definicin del rtulo <valor>, de la siguiente manera:

en adicin a la definicin anterior, este rtulo puede corresponderse


tambin a un valor con la estructura de un tipo estructurado o uno definido
por el usuario.
<valor>:

3.5 Unidades de Modularizacin: Acciones y Funciones


La declaracin de acciones y funciones forman su propio grupo, el grupo de
Sin embargo, es bien sabido que dichas acciones y funciones
pueden ser invocadas en cualquier parte de un algoritmo, por lo que sus
invocaciones vienen a formar parte tambin del grupo de [Secuencia de operaciones],
y por lo tanto amplan su definicin.
[Procedimientos].

Las acciones y funciones se declaran de la manera siguiente:


Accion <Identificador> ([Parmetros])
[Estructuras]
[Definiciones]
[Variables]
[Secuencia de operaciones]
FAccion
Funcion <Identificador> ([Parmetros]) <Tipo>
[Estructuras]
[Definiciones]
[Variables]
[Secuencia de operaciones]
<valor> o <Identificador>
FFuncion

Ntese que dentro de una accin o de una funcin tambin 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.
En la notacin especificada anteriormente se puede observar la utilizacin
del grupo [Parmetros]. Este grupo se define como una o ms de las siguientes
sentencias:
<Tipo> <Identificador>

si el parmetro se pasa por valor


14

var <Tipo> <Identificador>

si el parmetro se pasa por referencia

Si se utiliza ms de una de estas sentencias, las mismas debe ser


compuestas mediante el operador de secuenciamiento ;. Por ejemplo:
entero X; real Y; var caracter Z

3.6 Estructura de un programa (2da parte)


Ahora introduciremos los conceptos nuevos de este captulo a la estructura
bsica que estudiamos en el captulo anterior. La ampliaremos an ms en una
tercera parte.
Clase <Identificador>

#aqu pueden ponerle nombre a su programa

[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

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

En el caso de la especificacin de Atributos, la palabra Publico puede omitirse


solamente en el caso en el que no se utilicen [Estructuras], [Variables] o [Constantes]
publicas. El mismo criterio se aplica para las palabras Privado y Protegido. Este
criterio tambin se aplica para las Operaciones.
4.2 Diagramas de clase
Para los diagramas de clase se utilizara la notacin que provee el Lenguaje
de Modelacin Unificado (UML), a saber:

Las clases se denotan como rectngulos divididos en tres


compartimentos. El primer compartimiento contiene el nombre de la
clase. El segundo contiene los atributos y el tercero las operaciones. Los
modificadores de acceso a datos y operaciones, a saber: pblico,
protegido y privado; se representan con los smbolos +, # y
respectivamente, al lado derecho del atributo.

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

La relacin de uso, se denota con una dependencia estereotipada:

<<uso>>

La relacin forma parte de, no es ms que una asociacin, que se


denota:
multiplicidad

Si motor forma parte de carro, la flecha apunta a la clase motor, y el


diamante va pegado a carro. La multiplicidad es el rango de cardinalidad
permitido que puede asumir la asociacin, se denota LI...LS. Se puede usar
* en el limite superior para representar una cantidad ilimitada (ejemplo:
3..*).
4.3 Estructura de un programa (3ra. parte)
Ahora introduciremos el concepto de clase a la estructura que estudiamos
en el captulo anterior.
[Clases]
Clase <Identificador>

#aqu pueden ponerle nombre a su programa

[Constantes]
[Estructuras]
[Variables]
[Definiciones]
17

[Procedimientos]
Accion Principal
[Constantes]
[Estructuras]
[Variables]
[Definiciones]
[Secuencia de Operaciones]
FAccion
FClase

Ntese el nombre del grupo de declaraciones de clases en negrita.


Esto quiere decir que se pueden declarar en el algoritmo, declarndolas
antes de la clase que contiene el mtodo Principal.

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:

por ejemplo, para declarar un apuntador a un real, la sentencia correcta


real MiApuntador;

5.1 Operaciones Bsicas


Las operaciones bsicas que se pueden realizar con el apuntador son:

Asignacin: Una variable de tipo apuntador a un tipo de dato funciona como


una variable normal en el contexto del operador de asignacin. 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
direccin de memoria.

Comparacin: El espacio de direccio nes de un computador es finito y discreto.


Esto nos permite comparar las direcciones de memoria utilizando los
operadores de comparacin comunes de igualdad (=) y desigualdad (). Dos
apuntadores que hagan referencia a la misma direccin de memoria sern
iguales y sern diferentes en caso contrario.

Dereferenciacin: Esta operacin retorna el dato al que apunta o indica la


referencia a memoria. Se simboliza mediante un flecha hacia arriba ( ) luego
del nombre de la variable apuntador en cuestin. Por ejemplo, si se tiene una
variable A de tipo real, la operacin de dereferenciacin A retornara el valor
real almacenado en la posicin de memoria a la que hace referencia A .

Referenciacin: Es la operacin contraria a la dereferenciacin y se simboliza


mediante el smbolo & luego del nombre de la variable apuntador en cuestin
(Ejemplo: A &). Esta operacin retorna la direccin del tipo base en memoria.
19

Reservar: Esta funcin reserva el espacio en memoria suficiente para el tipo de


dato especificado como parmetro y retorna la direccin de memoria que hace
referencia a dicho espacio, sino no se logro reservar el espacio entonces
retorna NULL . Por ejemplo, la instruccin: A Reservar(real), reserva el espacio
en memoria para un dato de tipo real y asigna la direccin de referencia a la
variable A.

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

6. CONVERSIN EXPLICITA DE TIPOS DE DATO


Todos los lenguajes de programacin realizan algunas conversiones
implcitas de tipos de dato elementales durante el clculo del resultado de
expresiones que envuelven tipos distintos. Por ejemplo, al ejecutar una operacin
en la que se multiplica un entero por un real, el lenguaje realiza una conversin
de tipo de dato en alguno de los operadores para que ambos operadores sean del
mismo tipo y as llevar a cabo la operacin. Los criterios para llevar a cabo las
conversiones y que tipos pueden ser convertidos varan de lenguaje a lenguaje.
Sin embargo, algunas veces el programador se ve en la necesidad de
realizar una conversin de tipo explicita, esto es, que el programador le indique al
lenguaje mediante una instruccin que se debe llevar a cabo una conversin de
tipo. Por supuesto, el programador es el que decide, mediante la instruccin que
le da al lenguaje, el tipo de dato origen y el tipo de dato destino.
El lenguaje pseudoformal que se plantea en este informe permite la
conversin explicita entre cualquiera de sus tipos de datos elementales, pero el
estudiante debe tener en cuenta que este no es el caso de todos los lenguajes de
programacin y por lo tanto debe referirse a la documentacin del lenguaje a la
hora de realizar una conversin de tipos.
Los perfiles de las funciones que provee este lenguaje pseudoformal para
realizar las diferentes conversiones son:

Para convertir a entero:


Funcion AEntero(<Tipo> <Identificador>) entero

Para convertir a real:


Funcion AReal(<Tipo> <Identificador>) real

Para convertir a logico:


Funcion ALogico(<Tipo> <Identificador>) logico

Para convertir a caracter:


Funcion ACaracter(<Tipo> <Identificador>) caracter

Para convertir a string:


Funcion AString(<Tipo> <Identificador>) string

21

Anda mungkin juga menyukai