Documente Academic
Documente Profesional
Documente Cultură
ESTÁNDARES DE
PSEUDOCÓDIGO ORIENTADO A
OBJETOS Y EVENTOS
oLoop
Pag. 1
oLoop 1.2
Lenguaje de Pseudocódigo Orientado a Objetos y a Eventos
Elaborado por
Ángel Augusto Velásquez Núñez
Pag. 2
Contenido
Introducción.................................................................................................................................. 1
Objetivos.................................................................................................................................. 1
Definición del Lenguaje de Pseudocódigo....................................................................................2
¿Pseudocódigo orientado a objetos?......................................................................................2
Expresiones.................................................................................................................................. 3
Sintaxis de las expresiones..................................................................................................... 3
Expresiones simples................................................................................................................ 4
Operadores................................................................................................................................... 5
Sentencias.................................................................................................................................... 6
Sentencias simples.................................................................................................................. 6
Sentencias de asignación de Valores......................................................................................6
Sentencias de mensaje........................................................................................................... 6
Sentencias de entrada/salida................................................................................................... 7
Sentencias compuestas........................................................................................................... 7
Sentencias de decisión o condicionales..................................................................................7
Iteraciones............................................................................................................................... 8
Clases y Objetos......................................................................................................................... 10
Declarar Clases..................................................................................................................... 10
Declaración de Instancias de Clases (Objetos).....................................................................11
Declaración de definición de Métodos...................................................................................11
Declaración de propiedades.................................................................................................. 14
Bibliotecas de clases............................................................................................................. 15
Polimorfismo.......................................................................................................................... 15
Comentarios............................................................................................................................... 17
Jerarquía de Clases predefinidas............................................................................................... 18
La clases Componentes............................................................................................................. 19
Atributos comunes (CComponente)......................................................................................19
Visualizar y editar texto.......................................................................................................... 19
Permitir que el usuario haga elecciones simples...................................................................20
Controles especializados....................................................................................................... 23
Manejo de Listas................................................................................................................... 24
Fichas (CFicha)..................................................................................................................... 25
La clase CFormulario............................................................................................................. 26
La clase CAplicación............................................................................................................. 26
Tratamiento de Eventos.............................................................................................................. 29
Implantar eventos estándar................................................................................................... 29
Excepciones............................................................................................................................... 31
Protección de Sentencias...................................................................................................... 31
Tratamiento de Excepciones................................................................................................. 31
Generación manual de Excepciones.....................................................................................33
Excepciones predefinidas...................................................................................................... 33
Objetos Especiales..................................................................................................................... 35
Arreglos................................................................................................................................. 35
Apuntadores.......................................................................................................................... 36
Estructuras............................................................................................................................ 37
Enumeraciones...................................................................................................................... 37
Interfaces............................................................................................................................... 38
Archivos................................................................................................................................. 39
Ejemplos de uso de oLoop......................................................................................................... 40
Declaración de Clases y Métodos..........................................................................................40
Implantación de Métodos............................................................................................................ 41
Herencia y Extensión de Clases................................................................................................. 42
Bibliografía.................................................................................................................................. 46
Sugerencias para la escritura de Pseudocódigo.........................................................................47
Indentación ........................................................................................................................... 47
Idioma de Trabajo.................................................................................................................. 47
Notación de Identificadores................................................................................................... 47
Pag. 3
Índice de Tablas
Tabla .1. Precedencia de operadores.......................................................................................... 3
Tabla .2. Atributos comunes para los componentes en general.................................................19
Tabla .3. Atributos de CEtiqueta................................................................................................. 19
Tabla .4. Atributos de CEdición..................................................................................................20
Tabla .5. Atributos de CCasilla................................................................................................... 21
Tabla .6. Atributos de CBotónRadio............................................................................................22
Tabla .7. Atributos de CBotónAcción..........................................................................................22
Tabla .8. Atributos de CBarraDesp.............................................................................................23
Tabla .9. Atributos de Cficha....................................................................................................... 25
Tabla .10. Eventos estándar comunes a las Clases componentes.............................................29
Tabla .11. Eventos de las Clases componentes estándar..........................................................30
Tabla .12. Eventos clave para las Clases componentes.............................................................30
Tabla .13. Clases derivadas de CExcepción..............................................................................34
Tabla .14. Ejemplo de uso de Prefijos........................................................................................48
Pag. 4
Índice de Ilustraciones
Ilustración .1. Sintaxis de factor................................................................................................... 3
Ilustración .2. Sintaxis de valor constante sin signo.....................................................................3
Ilustración .3. Sintaxis de término................................................................................................. 4
Ilustración .4. Sintaxis de expresión simple..................................................................................4
Ilustración .5. Sintaxis de expresión.............................................................................................. 4
Ilustración .6. Sintaxis de factor de dirección...............................................................................5
Ilustración .7. Sintaxis de sentencia.............................................................................................. 6
Ilustración .8. Sintaxis de sentencia simple..................................................................................6
Ilustración .9. Sintaxis de sentencia de asignación......................................................................6
Ilustración .10. Sintaxis de sentencia compuesta........................................................................7
Ilustración .11. Sintaxis de sentencia condicional. .......................................................................7
Ilustración .12. Sintaxis de sentencia Si.......................................................................................7
Ilustración .13. Sintaxis de sentencia Caso.................................................................................8
Ilustración .14. Sintaxis de sentencia repetitiva o iteración...........................................................8
Ilustración .15. Sintaxis de sentencia Mientras.............................................................................8
Ilustración .16. Sintaxis de sentencia repetir................................................................................8
Ilustración .17. Sintaxis de sentencia Para..................................................................................9
Ilustración .18. Sintaxis de declaración de Clase.......................................................................10
Ilustración .19. Sintaxis de declaración de Objeto......................................................................11
Ilustración .20. Sintaxis de declaración de definición de Método................................................11
Ilustración .21. Sintaxis de Lista formal de Parámetros..............................................................12
Ilustración .22. Sintaxis de Envío de Mensaje.............................................................................14
Ilustración .23. Ejemplo de Etiqueta............................................................................................ 19
Ilustración .24. Ejemplo de Caja de edición................................................................................20
Ilustración .25. Ejemplo de Casilla de verificación......................................................................21
Ilustración .26. Ejemplos de Botón de radio................................................................................21
Ilustración .27. Ejemplos de Botón de acción.............................................................................22
Ilustración .28. Ejemplo de Barra de desplazamiento.................................................................23
Ilustración .29. Ejemplo de Barra de dial....................................................................................24
Ilustración .30. Ejemplo de Control Arriba Abajo.........................................................................24
Ilustración .31. Ejemplo de Lista desplegable.............................................................................24
Ilustración .32. Ejemplo de Ficha................................................................................................ 25
Ilustración .33. Ejemplo de un Formulario en blanco..................................................................26
Pag. 5
Introducción
Objetivos
Este documento tiene por finalidad que establecer los estándares de programación
y nomenclatura de objetos de programación en pseudocódigo a utilizar en las
sesiones de clase y los proyectos de desarrollo de software.
Pag. 1
Definición del Lenguaje de
Pseudocódigo
¿Pseudocódigo orientado a objetos?
El pseudocódigo se presta para un buen diseño descendente. En el mundo del
desarrollo orientado a objetos, diseño descendente significa describir cómo se
comportan los objetos y luego utilizar la descripción para identificarlos más
detalladamente o identificar objetos subordinados. En cada nivel de abstracción, los
objetos se van detallando más hasta que el diseño alcanza los objetos existentes (ya
sea en bibliotecas o predefinidos en el lenguaje mismo), o bien el comportamiento
descrito no implica la existencia de nuevos objetos.
Pag. 2
Expresiones
Las expresiones están compuestas por operadores y operandos. La mayoría de
operadores son binarios, es decir utilizan dos operandos. Los demás son unarios y
necesitan sólo un operando. Los operadores binarios utilizan la forma algebraica que
conocemos (por ejemplo, A + B). Los operadores unarios siempre preceden a sus
operandos (por ejemplo, -B).
Una llamada a método activa un método y denota el valor que éste retorna. Esto lo
veremos en la sección de llamada a métodos.
Pag. 3
X {referencia a una variable}
@X {apuntador a una variable}
15 {constante}
(X + T + Z) {subexpresión}
Seno(X/2) {llamada a un método}
No Fin {negación de un valor lógico o booleano}
Expresiones simples
Las expresiones simples aplican los operadores de suma/resta a los términos:
Pag. 4
Operadores
A nivel de pseudocódigo, podemos dividir a los operadores en operadores numéricos,
lógicos, de texto, apuntadores y relacionales.
Los operadores numéricos son muy conocidos por nosotros (+, -, *, /, div, mod); de
éstos, el operador + también se usa para concatenar textos (cadenas). Los operadores
numéricos + y - también pueden ser operadores unarios. Los operadores + y - también
se aplican a variables o constantes que contienen valores de direcciones, obteniendo
como resultado otro valor de dirección.
Los operadores No, Y , y O son operadores lógicos/booleanos. Cabe mencionar que los
lenguajes de programación que soportan la manipulación de operandos a nivel de bits,
consideran a estos operadores como lógicos además de sus aplicaciones booleanas.
Pag. 5
Sentencias
Las sentencias describen las acciones que puede ejecutar el algoritmo. Hay dos tipos
principales de sentencias: las sentencias simples y las sentencias compuestas.
Sentencias simples
Una sentencia simple es aquella que no puede contener otras sentencias. Tenemos los
siguientes tipos: sentencias de entrada/salida, sentencias de asignación de valores y
sentencias de mensaje.
Sentencias de mensaje
Una sentencia de mensaje activa un método especificado por un identificador de
método, si la declaración del método contiene una lista de parámetros formales,
entonces la sentencia de mensaje debe tener una lista concordante de parámetros (en
la sección de declaración, a los parámetros se les conoce como parámetros formales,
al momento del paso de mensajes se les conoce como parámetros reales). Trataremos
este tipo de sentencias en la sección de Mensajes.
Pag. 6
Sentencias de entrada/salida
Todo lenguaje de pseudocódigo debe permitir mecanismos que comuniquen nuestra
solución con el usuario. La mayoría de aplicaciones necesitan una interacción con el
usuario de la misma. Nuestro lenguaje cuenta con dos primitvas básicas para dicho fin.
La primitiva Leer permite recibir un valor del exterior y almacenarlo en la variable con el
nombre que se coloca en la sección de interfaz. La primitiva Escribir nos proporciona un
mecanismo para emitir expresiones y resultados para que puedan ser apreciados por
nuestro usuario. La manera como se escriben es la siguiente:
leer ( Identificador )
escribir ( Identificador | Expresión )
Como veremos más adelante, éstos son métodos de dominio público, por tanto entran
en la categoría de métodos de biblioteca.
Sentencias compuestas
Las sentencias compuestas son construcciones compuestas por otras sentencias que
se ejecutarán en secuencia, condicionalmente (sentencias condicionales), o
repetidamente (sentencias iterativas).
si ExpresiónBooleana
entonces
Secuencia de “n” acciones
[ sino
Secuencia de “m” acciones ]
fsi
Pag. 7
Decisión Múltiple (Sentencia Caso)
La sentencia Caso está conformada por una expresión (el selector) y una relación de
sentencias, cada una precedida por una constante ó por la palabra Otro. Las constantes
en Caso deben ser únicas.
Iteraciones
Mientras ExpresiónBooleana
hacer
Secuencia de “n” acciones
fmientras
La expresión que controla la repetición debe tomar un valor de verdadero o falso. Esta
se evalúa antes que se ejecute la secuencia de acciones contenida. La secuencia de
acciones se ejecuta en forma repetida en tanto la expresión sea verdadero. Si la
expresión da falso al inicio, ya no se ejecuta la secuencia de acciones.
Repetir
Secuencia de “n” acciones
hasta ExpresiónBooleana
frepetir
Pag. 8
lo menos una vez porque la expresión se evalúa después de la ejecución de cada
iteración.
La secuencia de acciones contenida en la sentencia Para se ejecuta una vez para cada
valor entre Val_Inic y Val_Fin en incrementos Valor_incremento. El identificador de
control siempre comienza en el valor Valor_Inic. Cuando la sentencia Para usa Desde,
el valor del identificador se incrementa o decrementa (según el signo especificado) en
Valor_incremento si está presente o en su defecto se incrementa en uno, esto por cada
repetición. Si el incremento es positivo y Val_Inic es mayor que Val_Fin entonces no se
ejecuta la secuencia de acciones. Si el incremento es negativo y Val_Inic es menor que
Val_Fin, la secuencia de acciones no se ejecuta.
Pag. 9
Clases y Objetos.
Una clase es, al igual que los números, el texto y los booleanos, un tipo especial de
datos. En su caso consiste de un número fijo de componentes. Una clase puede estar
compuesta por atributos y métodos.
Una instancia de una clase es conocida comúnmente como objeto. Los objetos se
crean utilizando los constructores y se destruyen utilizando los destructores. Cada
objeto tiene su copia de los atributos declarados en la clase, pero todos comparten los
mismos métodos.
Declarar Clases.
Las clases se declaran de la siguiente manera:
Clase IdentificadorClase
[viene-de IdentificadorClase { , IdentificadorClase }]
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Métodos
secuencia de “m” declaraciones de métodos
fclase
Constructor [ ( ListaFormalParámetros ) ]
Destructor
ListaFormalParámetros --> [ @ ] Identificador {, [ @ ]Identificador
}
Un método es una rutina que realiza una operación sobre un objeto. Parte de la
llamada a un método (mensaje) especifica el objeto sobre el que debe operar el
método.
Una clase puede heredar componentes de otra clase. Si C2 hereda de C1, entonces C2
es un descendiente de C1 y C1 es un ancestro de C2. La herencia es transitiva; es
decir, si C3 hereda de C2 y C2 hereda de C1, entonces C3 también hereda de C1. El
dominio de una clase está conformado por ella y todos sus descendientes.
Pag. 10
Una clase descendiente contiene en forma implícita todos los componentes definidos
por sus clases ancestro. Una clase descendiente puede agregar nuevos componentes
a los ya heredados. Sin embargo, no puede eliminar la definición de un componente
declarado en una clase ancestro.
Seleccionar atributos
La manera como podemos accesar a los atributos de una clase es similar a lo
anteriormente visto con las variables, excepto que necesitamos especificar a que clase
pertenece este atributo.
Identificador_de_Clase.Identificador_Atributo
Esta herramienta del lenguaje de pseudocódigo nos es útil para accesar a los atributos
de una clase dentro de la definición de un método amigo de ésta. Llamamos método
amigo al método que recibe como parte de su interfaz un identificador de otra clase del
cual se puede accesar directamente a los valores de los atributos de la clase. El
concepto de amigo se entiende como un grado de confianza entre clases, pues una
clase confía su intimidad (se supone que los atributos deben encapsularse para el
exterior) a otra esperando que la receptora no de un uso indebido a los valores de sus
atributos.
Dentro de los métodos de una clase, el acceso a sus atributos propios y heredados no
necesita la especificación del identificador de clase, pues la pertenencia está
sobreentendida.
Hay que tomar en cuenta que con esta herramienta del lenguaje de pseudocódigo
estamos declarando ante el entorno que el uso de Ident_objeto denota el uso de un
objeto de la clase Ident_Clase, pero aún no hemos asignado recursos ni inicializado los
valores para los atributos propios de su clase. Para esto contamos con los
constructores, de los cuales continuaremos hablando más adelante.
Método IdentificadorClase.IdentificadorMétodo
[ ( ListaFormalParámetros ) ] [ --> ]
secuencia de “n” acciones
fmétodo
Pag. 11
Para los constructores y destructores, la declaración es similar a la de los métodos,
excepto que la palabra Constructor o Destructor se utiliza como identificador del
método.
Veamos:
Clase CEtiquetaConMarco viene-de CEtiqueta
Métodos
Dibujar
fclase
Método CEtiquetaConMarco.Dibujar
heredado Dibujar
Color <-- clTextoVentana
Estilo <-- stSólido
fmétodo
Parámetros (Interfaz)
La declaración de un método especifica una lista formal de parámetros o interfaz. Cada
parámetro que se declara en una lista formal de parámetros es local al método en que
se declara y se le puede hacer referencia utilizando su identificador en el bloque
asociado con el método.
A nivel de pseudocódigo, podemos distinguir dos tipos de parámetros, por valor y por
referencia. Los parámetros por valor sólo requieren el identificador del parámetro,
mientras que los parámetros por referencia necesitan ser precedidos del operador @.
Un parámetro formal por valor actúa como una variable local a la rutina, sólo que
obtiene su valor inicial de su correspondiente parámetro real al momento de invocarse
al método. Los cambios que se realicen al parámetro formal por valor no afectan el
valor del parámetro real.
Un parámetro formal por referencia se utiliza cuando se debe pasar un valor desde el
método a quién lo invocó. El parámetro formal por referencia representa la variable real
durante la invocación al método, por lo que cualquier cambio al valor del parámetro
formal por referencia se reflejan en el parámetro real.
Dentro del método, cualquier referencia al parámetro formal por referencia accesa al
parámetro real mismo. El parámetro real debe coincidir en tipo de valor con el
parámetro formal por referencia.
Pag. 12
Constructores y destructores
Como hemos adelantado, los constructores y destructores son métodos que controlan
la construcción y destrucción de objetos de una clase. Ellos se especifican como
componentes de la clase como un método estándar, excepto que la palabra constructor
se utiliza como identificador del método. Al igual que los métodos, éstos se pueden
heredar.
Los constructores se usan para crear e inicializar nuevos objetos. Por lo general, la
inicialización se basa en los valores que se pasan como parámetros al constructor.
Normalmente la primera acción que realiza un constructor es invocar al constructor
heredado de su padre.
Los destructores se usan para retirar del entorno objetos. Cuando se invoca a un
destructor, se ejecutan las acciones definidas por el usuario para el destructor y luego
se libera los recursos asignados al objeto. Por lo general las acciones de un destructor
son destruir cualquier objeto contenido en él y liberar cualquier recurso solicitado por el
objeto. Típicamente la última acción que realiza un destructor es llamar al destructor
heredado para deshacerse de los atributos heredados del objeto.
Método CFigura.Destructor
Lápiz.Destructor
Brocha.Destructor
heredado Destructor
fmétodo
Pag. 13
Objeto Brocha ejemplar-de Cbrocha
Métodos
Constructor(QueLargo, QueAncho)
Destructor
ObtenerLargo -->
ObtenerAncho -->
ColocarLargo(NuevoLargo)
ColocarAncho(NuevoAncho)
fClase
Envío de Mensajes
Un método se activa mediante el envío de un mensaje a un objeto consistente de un
identificador de método seguido por una lista real de parámetros. Este tipo de llamada
se conoce como invocar un método ó enviar un mensaje.
IdentificadorObjeto.
IdentificadorObjeto.IdentificadorMétodo [(
[(ListaRealParámetros)
ListaRealParámetros)]
Para el caso de los métodos estáticos, aquellos métodos que se invocan directamente
de la clase, se utiliza el nombre de la clase seguido del identificador del método y la lista
real de parámetros.
IdentificadorClase.
IdentificadorClase.IdentificadorMétodo [(
[(ListaRealParámetros)
ListaRealParámetros)]
Declaración de propiedades
Las propiedades son una característica presente en muchos lenguajes de
programación. Para declarar propiedades en oLoop se utiliza la siguiente sintaxis.
Propiedad IdentificadorPropiedad
[ obtener IdentificadorAtributo | IdentificadorMétodo ]
[ colocar IdentificadorAtributo | IdentificadorMétodo ]
Por ejemplo:
Clase CCliente
Atributos
Nombres
Apellidos
fechaÚltimaCompra
Métodos
ObtenerNombres ->
ColocarNombres(pNombres)
ObtenerApellidos ->
ColocarApellidos(pApellidos)
ObtenerNombreCompleto ->
Propiedad NombreCompleto
obtener ObtenerNombreCompleto
Propiedad ÚltimaCompra
Pag. 14
obtener fechaÚltimaCompra
colocar fechaÚltimaCompra
fclase
Bibliotecas de clases
Las clases en una aplicación pueden organizarse en bibliotecas. oLoop permite la
especificación y uso de bibliotecas de clases en el pseudocódigo.
Especificación de bibliotecas
Para especificar que una clase pertenece a un biblioteca determinada, basta con utilizar
la sentencia Biblioteca.
Biblioteca IdentificadorBiblioteca
Esta sentencia se coloca como primera línea de la declaración de clase, indicando que
la clase a declarar estará formando parte de la biblioteca indicada. Varias clases
pueden pertenecer a la misma biblioteca.
Por ejemplo:
Biblioteca com.empresa.aplicacioncompras.entidadesnegocio
…
Clase CCompra viene-de CEntidadNegocio
…
fclase
Uso de bibliotecas
Para indicar que una clase puede hacer uso de las clases públicas en una biblioteca, se
utiliza la sentencias Usar.
Usar IdentificadorBiblioteca
La sentencia Usar se aplica para cada biblioteca cuyas clases e interfaces vaya a
utilizar la clase a declarar. Por ejemplo:
Biblioteca com.empresa.aplicacioncompras.cliente
Usar com.empresa.aplicacioncompras.entidadesnegocio
Usar com.empresa.utilidades
Polimorfismo
Una de las características importantes del paradigma orientado a objetos es el
polimorfismo. El mismo nombre nos da una idea clara del concepto de polimorfismo,
pues poli significa múltiple y morfismo viene de formas, esto implica que un mismo
objeto puede tomar diversas formas. En oLoop, el polimorfismo se contempla en la
instancia de objetos y en la consulta de tipos.
Pag. 15
Durante la creación de instancia de clases, puede aplicarse el polimorfismo, declarando
una clase como ejemplar de una clase genérica, e invocando al constructor de una
clase hija más específica al momento de crear la instancia. En la siguiente sección
daremos un ejemplo de este tipo de instancia.
Consulta de tipo
La combinación de estos elementos constituye una expresión booleana que puede ser
verdadera o falsa. Por lo general se utiliza en combinación con la sentencia
Si..entonces.
Casting de tipo
El término casting proviene de la palabra cast que significa en español molde, por lo
que una traducción literal nos llevaría a algo como hacer un molde. oLoop implementa
en su sintaxis la especificación de casting de un objeto, anteponiendo al identificador de
objeto el nombre de la clase cuya forma se desea que asuma, encerrada entre
paréntesis.
(IdentificadorClase) IdentificadorObjeto
Esto puede ser de utilidad en las operaciones de asignación. En caso se desee invocar
a un método que pertenece a la clase objeto del casting, se encierra la expresión de
casting entre paréntesis y se invoca al método deseado.
((IdentificadorClase) IdentificadorObjeto).IdentificadorMétodo
…
salario ← ((CEmpleadoTiempoCompleto)Empleado).obtenerSalario
…
Pag. 16
Comentarios
Los comentarios son construcciones que no forman parte de la descripción de la lógica,
pero son valiosos elementos para explicar y hacer más claro nuestro algoritmo. Para
insertar un comentario, basta con escribir dos símbolos de división seguidos (//) y a
continuación el texto que se desee colocar. Se considera comentario hasta el final de la
línea.
Pag. 17
Jerarquía de Clases predefinidas
La mayoría de herramientas de la actualidad nos proporcionan una jerarquía de clases
predefinidas que podemos tomar como punto de partida para desarrollar nuestra
aplicación y para crear nuestras propias clases. Nosotros no tenemos que consumir
tiempo en crear clases que cumplan estas funciones. Basta con crear instancias de sus
clases. Acorde con esto, nuestro lenguaje de pseudocódigo también pone a disposición
del creador de aplicaciones un conjunto de clases que tienen los atributos y métodos
básicos para concebir nuestra solución. Se ha tratado de no incluir los atributos o
métodos que están estrechamente relacionados con los aspectos visuales o físicos,
dejando sólo los que nos ayuden a definir el comportamiento de nuestro algoritmo.
Pag. 18
La clases Componentes
Atributo Función
Activado Determina si el componente reaccionará ante las acciones del usuario.
Visible Determina si el componente se mostrará sobre el formulario durante la
ejecución.
Tabla .2. Atributos comunes para los componentes en general.
Existen, como veremos más adelante, dos clases que definen dos niveles de
profundidad en la jerarquía, CControl y su hijo, CControlWindows. Las clases que
describiremos a continuación son descendientes directas de CControlWindows.
In fo rm a c ió n d e l E n to rn o
El componente etiqueta nos permite mostrar texto, pero no permite al usuario ingresar
información. El texto que muestra este componente está contenido en el atributo Título
del componente.
Atributo Función
Título Contiene el texto que muestra la Etiqueta
Tabla .3. Atributos de CEtiqueta.
Clase CCEtiqueta viene-de CControlWindows
Atributos
Pag. 19
Título
…
Métodos
…
ObtenerTítulo -->
ColocarTítulo
fclase
N o m b re
Atributo Función
Texto Contiene el texto que visualiza la caja de Edición o que ingresa el
usuario.
Modificado Indica si el texto ha sido modificado por el usuario. Esta propiedad
puede verificarse para ver si se necesita algún procesamiento para
el texto.
SoloLectura Si está en Verdadero, prohibe al usuario la edición del texto.
Tabla .4. Atributos de CEdición.
Clase CCEdición viene-de CControlWindows
Atributos
Texto
Modificado
SóloLectura
…
Métodos
…
ObtenerTexto -->
ColocarTexto
ObtenerModificado -->
ColocarModificado
ObtenerSóloLectura -->
ColocarSóloLectura
fclase
Pag. 20
ingresar S o N. Y como usted y yo sabemos, siempre existe la posibilidad de un ingreso
erróneo.
Atributo Función
Título Determina el texto que aparece junto a la casilla.
Verificada Determina si el usuario activó la casilla de verificación.
Tabla .5. Atributos de CCasilla.
Clase CCasilla viene-de CControlWindows
Atributos
Título
Verificada
…
Métodos
…
ObtenerTítulo -->
ColocarTítulo
ObtenerVerificada -->
ColocarVerificada
fclase
Im p re s o ra lo c a l
Im p re s o ra d e re d
U n A rc h iv o e n d is c o ...
Los Botones de Radio son otro medio para presentar al usuario un número limitado de
alternativas, donde cada Botón de Radio corresponde con una posibilidad. El término
Botón de Radio tiene su origen en la idea de las radios de los carros que tenían varios
botones que se presionaban para elegir una estación. El botón permanecía hundido
Pag. 21
luego de presionarse. Uno elegía otra estación presionando un botón y el anterior se
levantaba. Los Botones de Radio en un programa funcionan de la misma manera. Sólo
uno de los “Botones” puede estar presionado en un instante dado. La elección de un
Botón hace que todos los demás se deseleccionen. En la pantalla cada Botón de Radio
se presenta como un círculo. El Botón seleccionado tiene un punto negro en el interior,
mientras que todos los demás están vacíos.
Atributo Función
Título Determina el texto que aparece junto al Botón de Radio.
Verificada Determina si el usuario eligió esta alternativa.
Tabla .6. Atributos de CBotónRadio.
Configurar los Botones de Radio es tan simple com con las Casillas de Verificación.
Basta con establecer el atributo Título para que el usuario conozca la alternativa
representada por el Botón. Durante la ejecución examinamos el atributo Verificada de
cada Botón para determinar cuál fue seleccionada por el usuario.
Atributo Función
Título Contiene el texto que muestra el Botón de Acción
Cancelar En Verdadero si se desea que que el Botón reaccione cuando el
usuario presione Esc.
PorDefecto En Verdadero si queremos que la tecla Enter haga que el Botón
reaccione, aún si éste no tiene el foco.
Tabla .7. Atributos de CBotónAcción.
Clase CBotónAcción viene-de CControlWindows
Atributos
Título
Cancelar
PorDefecto
…
Métodos
…
ObtenerTítulo -->
ColocarTítulo
ObtenerCancelar -->
ColocarCancelar
Pag. 22
ObtenerPorDefecto
ColocarPorDefecto
fclase
Controles especializados
Los siguientes controles proporcionan alternativas para la captura de datos.
La Barra de Desplazamiento se utiliza para seleccionar valores en un rango
continuo.
La Barra de Dial es útil para dar un mayor efecto de barra de
desplazamiento.
El Arriba Abajo ayuda a conectar un spinner con una caja de edición.
Atributo Función
VariaciónGrande Determina cuanto se mueve cuando el usuario hace clic
sobre la barra a cualquiera de los lados.
VariaciónPequeña Determina cuanto se mueve cuando el usuario hace clic
sobre las flechas a los extremos de la barra o utiliza las
flechas de desplazamiento en el teclado. Su valor por
defecto es 1.
Mín/Máx Indican cuántas posiciones están disponibles en la barra de
desplazamiento.
Posición Informan de cuánto se ha desplazado en la barra.
Tabla .8. Atributos de CBarraDesp.
Clase CBarraDesp viene-de CControlWindows
Atributos
VariaciónGrande
VariaciónPequeña
Mín
Máx
Posición
…
Métodos
…
ObtenerVariaciónGrande -->
ColocarVariaciónGrande
ObtenerVariaciónPequeña -->
ColocarVariciónPequeña
ObtenerMín -->
ColocarMín
ObtenerMáx -->
ColocarMáx
ObtenerPosición -->
ColocarPosición
fclase
Pag. 23
Ilustración .29. Ejemplo de Barra de dial.
L o n g itu d : 3 3 .4 0
Los controles ArribaAbajo son cajas de texto que aceptan un conjunto limitado y
ordenado de valores discretos que varían en forma cíclica.
Cuando el usuario hace clic sobre la caja de texto o los botones, el foco pasa a la caja
de texto del control. El usuario puede escribir un valor directamente en la caja de texto o
utilizar los botones para incrementar o decrementar el valor.
Por defecto, este control se detiene en su valor máximo. Si deseamos que el control
regrese al valor mínimo cuando llega al máximo, coloque Circular en Verdadero.
Manejo de Listas
E s tilo : N o rm a l
Las listas se utilizan para presentar al usuario con una colección de elementos de los
que se puede seleccionar uno o más de ellos. Acorde con las herramientas de hoy,
distinguimos varias clases predefinidas.
Una Caja de Lista se utiliza para mostrar un lista de textos de las que se puede
seleccionar uno o más.
La Lista Combinada muestra un lista que se despliega, y es útil para ahorrar espacio.
Las Vista en Árbol muestra los elementos en forma jerárquica.
Pag. 24
Atributos comunes para los controles de Lista
Para agregar columnas adicionales a un control de lista, contamos con el atributo
Columnas, que almacena el número de columnas que se desee.
Fichas (CFicha)
G ra b a r C o m p ila d o r
Este componente es un conjunto de páginas que se utiliza para crear diálogos de varias
páginas. En la siguiente tabla se muestran sus propiedades.
Atributo Función
PáginaActiva Especifica cuál es la ficha seleccionada en ese
momento.
Multilínea Es Verdadero si hay varias líneas de fichas.
NúmeroDePáginas Especifica el número de páginas.
Páginas Nos permite acceso a las fichas.
Tabla .9. Atributos de Cficha.
Pag. 25
La clase CFormulario
Formulario en Blanco
Para mostrar un formulario que no está activo en este momento en nuestra aplicación,
utilizamos los métodos Mostrar y MostrarModal (el término modal indica que no se
puede seleccionar otras áreas de la aplicación mientras está activo el formulario). El
atributo ControlActivo es una apuntador que tiene la dirección del control activo sobre el
formulario.
Además de estos atributos y métodos, esta clase tiene todos los atributos y métodos de
los controles de Windows pues es un descendiente de la clase CcontrolWindows.
La clase CAplicación
Todo algoritmo que representa una aplicación utiliza una clase que desciende de
CAplicación. Cuando ejecuta su aplicación, se invoca al método Principal. El método
Terminar finaliza la ejecución de la aplicación. El atributo FormularioPrincipal es una
apuntador que debe tener el valor de la dirección del formulario que aparece como base
de la aplicación.
Pag. 26
Podemos especificar cómo se manejarán las excepciones utilizando los métodos
ManejarExcepción, AlOcurrirExcepción y MostrarExcepción.
Observe que el método constructor tiene dos parámetros: aEntorno y nEntorno. Estos
son respectivamente un arreglo de cadenas de texto y un número respectivamente.
Contienen los parámetros que nos envía el entorno del sistema y el número de
parámetros que estamos recibiendo.
El siguiente ejemplo es un uso muy sencillo de esta clase. El objetivo de esta aplicación
es mostrar un mensaje en la pantalla.
Pag. 27
y Principal depende del sistema, no del programador. En la implantación no siempre
ocurre lo mismo. Algunas herramientas cuentan con un programa principal que necesita
que creemos la instancia de la aplicación y llamemos a los métodos Constructor y
Principal (o sus equivalentes).
Pag. 28
Tratamiento de Eventos
Los eventos son parte importante de las clases, aunque el desarrollador por lo general
no necesita mayor esfuerzo con ellos. Un evento es un enlace entre una ocurrencia en
el sistema (como una acción del usuario o un cambio en el foco) a la que una clase
podría necesitar responder y una sección de código que responde a esa ocurrencia. El
bloque de código de respuesta es el gestor del evento, y mayormente lo escribe el
creador de la clase.
Los eventos para la mayoría de las acciones del usuario (como por ejemplo las
acciones del ratón) ya están incorporadas en las clases predefinidas de nuestro
lenguaje, pero proporcionamos los mecanismos para definir nuevos eventos y
asociarlos con las clases.
Los eventos básicos se definen en la clase CControl. Todos los controles, sean de
Windows, gráficos o personalizados, heredan estos eventos. La siguiente tabla lista los
eventos disponibles para todos los controles:
Pag. 29
Clase CControl viene-de CComponente
Métodos
AlClic
AlDobleClic
AlArrastrarSoltar
AlMoverRatón
AlArrastrarSobre
AlUndirRatón
AlSoltarRatón
fclase
Al igual que los eventos estándar de la sección anterior, los eventos para los controles
de Windows (CControlWindows) tiene sus métodos correspondientes.
Eventos clave
De todos estos eventos clave, el único que no está ya contemplado por las clases es el
evento Cambiar. Para este evento, el método asociado en la clase CEdición sería
AlCambiar.
Pag. 30
Excepciones
Una excepción es por lo general una condición de error u otro evento que interrumpe el
flujo normal de ejecución en una aplicación. Cuando se provoca una excepción, ésta
hace que el control se transfiera del punto actual de ejecución a un gestor de
excepciones. El soporte de manejo de excepciones del lenguaje de pseudocódigo
proporciona una manera estructurada de separar la lógica normal del algoritmo de la
lógica de manejo de errores, facilitando así el mantenimiento y fortaleciendo la solución.
Para representar las excepciones optamos por utilizar objetos. Las ventajas principales
son:
Las excepciones se pueden agrupar en jerarquías utilizando la herencia.
Se pueden introducir nuevas excepciones sin afectar el código existente.
Un objeto de excepción puede llevar información (como un mensaje de error
o un código de error) desde el punto donde se provocó hasta el punto donde
se maneja.
Las excepciones se manejan con las sentencias Proteger…Excepción.
Protección de Sentencias
Las excepciones se manejan usando la sentencia Proteger…Excepción.
Proteger
lista de sentencias protegidas
Excepción
Bloque de excepciones
Sino
Bloque a ejecutar cuando no coincide con las listadas
fproteger
Tratamiento de Excepciones
Cuando identificador-clase-excepción
Hacer
Secuencia de acciones para tratar la excepción
fcuando
Pag. 31
Para determinar si el bloque de excepción de una sentencia Proteger…Excepción
puede manejar una excepción en especial, los manejadores Cuando…fcuando se
examinan en orden de aparición. El primer manejador de excepciones que lista la clase
excepción o la clase base de la excepción se considera una coincidencia. Si un bloque
de excepción contiene una parte Sino y si ninguno de los manejadores de excepciones
Cuando…fcuando concuerda con la excepción, la parte Sino se considera una
coincidencia. Un bloque de excepciones que contiene sólo una lista de sentencias se
considera una coincidencia para cualquier excepción.
Proteger
…
Excepción
Cuando CDivisiónPorCero
Hacer
ManejarDivisiónPorCero
fcuando
Cuando CSobreflujo
Hacer
ManejarSobreflujo
fcuando
fproteger
Proteger
…
Excepción
Cuando Objeto E ejemplar-de CExcepción
Hacer
MostrarMensaje(ObtenerMensaje de E)
fcuando
fproteger
Proteger
…
Excepción
Cuando CDivisiónPorCero
Hacer
ManejarDivisiónPorCero
fcuando
Cuando CSobreflujo
Hacer
ManejarSobreflujo
fcuando
Sino
ManejarOtras
fproteger
Pag. 32
Un bloque de excepción que no contiene manejadores Cuando…fcuando, pero contiene
un grupo de sentencias, manejará todas las excepciones.
Proteger
…
Excepción
ManejarExcepción
fproteger
Aquí cualquier excepción que ocurra como resultado de la ejecución de las sentencias
de las sentencias entre Proteger y Excepción serán manejadas por el método
ManejarExcepción.
Provocar identificador-objeto-excepción
Excepciones predefinidas
Para el lenguaje de pseudocódigo propuesto hemos definido ciertas clases de
excepción, incluyendo una clase CExcepción que sirve de raíz para todas las clases de
excepción. Debemos tomar en cuenta que al tratarse de un lenguaje para especificar
algoritmos, hay ciertas excepciones que no aparecerán a este nivel (por ejemplo las de
acceso a direcciones de memoria inválida).
Pag. 33
A continuación se listan las excepciones que contempla el lenguaje de pesudocódigo y
las situaciones en que se pueden provocar. A menos que se especifique otra cosa, las
excepciones son descendientes directos de Cexcepción.
Pag. 34
Objetos Especiales
Arreglos
Los arreglos tienen un número fijo de componentes del mismo tipo de valor.
Declarar
Para declarar un arreglo en el pseudocódigo, necesitamos especificar un nombre o
identificador para el arreglo. Así mismo tenemos que indicar el rango de valores para
cada una de las dimensiones del arreglo. Para indicar el rango de valores de uno de los
subíndices, simplemente especificamos los límites inferior y superior del rango y
colocamos entre ellos puntos suspensivos (). El número de elementos del arreglo es
el producto de los valores máximos de cada subíndice.
Por ejemplo:
aMatriz1 Dimensión 1…10, 1…20 Ejemplar-de Carreglo
Aquí definimos un arreglo llamado aMatriz1 cuyo número de elementos es 10*20. Noten
que estamos colocando el prefijo a en el nombre del arreglo, lo que indica que el
identificador corresponde a un arreglo.
Referencia
Podemos acceder a uno de los componentes proporcionando el identificador del arreglo
con el índice correspondiente encerrado entre corchetes. Si no incluimos la referencia a
un componente en particular, el identificador del arreglo referencia a la totalidad de
éste.
La sintaxis es la siguiente.
Por ejemplo:
Pag. 35
para cada persona en arregloPersonas hacer
Escribir(persona.obtenerNombre)
fpara
Apuntadores
Los apuntadores son variables que almacenan un tipos especial de valor: direcciones
de memoria. En esas direcciones se guardan valores relevantes para nuestro algoritmo.
Reservar espacio
La operación de reservar espacio para el apuntador podría compararse con la acción de
declarar al sistema que el identificador especificado se referirá a un apuntador.
Reservar identificador_apuntador |
Reservar identificador_apuntador*Cantidad_Elementos
Asignar valor
Los apuntadores pueden recibir direcciones como valores válidos. Para obtener la
dirección de una variable basta con colocar el símbolo @ antes del identificador de la
variable y esto denotará su dirección de memoria. Otra manera de asignar valor es
colocar direcciones específicas ya sea en notación decimal o hexadecimal (ambas muy
conocidas por nosotros), o en su defecto utilizando nulo.
Liberar espacio
La sentencia Liberar nos permite devolver al sistema el bloque de memoria que fuera
asignado al apuntador con la sentencia Reservar.
Liberar identificador_apuntador
Por ejemplo:
Por ejemplo:
Pag. 36
Por ejemplo:
Estructuras
A fin de cubrir la existencia de tipos estructura existentes en algunos lenguajes (struct
en C++ o C#), oLoop permite la declaración de estructuras, muy similares a las clases,
pero con la diferencia de que no poseen constructor ni son capaces de participar en
una jerarquía. Son básicamente un tipo de valor compuesto para declaración de
variables, más que una clase que pueda aceptar creación de instancias.
Estructura IdentificadorEstructura
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Métodos
secuencia de “m” declaraciones de métodos
festructura
Por ejemplo:
Estructura SFigura
Atributos
Largo
Ancho
Objeto Lápiz ejemplar-de CLápiz
Objeto Brocha ejemplar-de CBrocha
Métodos
ObtenerLargo -->
ObtenerAncho -->
ColocarLargo(NuevoLargo)
ColocarAncho(NuevoAncho)
festructura
Por ejemplo:
Estructura SInformaciónPedido
Atributos
NúmeroPedido
FechaPedido
festructura
...
informaciónPedido ejemplar-de SInformaciónPedido
informaciónPedido.NúmeroPedido <-- 450
Enumeraciones
En muchos lenguajes de programación se implementa el concepto de enumeraciones o
tipos enumerados. En oLoop se puede declarar tipos para enumeraciones con la
siguiente sintaxis.
Pag. 37
identificador_variable ejemplar-de IdentificadorEnumeración
Por ejemplo:
pedido ejemplar-de EEstadoPedido
pedido <-- EEstadoPedido.Pendiente
Interfaces
Para declarar interfaces en oLoop se utiliza la siguiente sintaxis.
Interfaz IdentificadorInterfaz
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Métodos
secuencia de “m” declaraciones de métodos
finterfaz
Por ejemplo:
Interfaz IManejadorCliente
Métodos
obtenerInstancia ->
registrarCliente(cliente) ->
fclase
Para declarar que una clase implementa una interfaz, se utiliza la siguiente sintaxis.
Por ejemplo:
Método CClienteNegocio.registrarCliente(cliente)
IAccesoDatos facade =
InfraestructuraFacade.obtenerInstancia
retornar facade.insertarCliente(
cliente.obtenerCodigo,
cliente.obtenerNombre,
cliente.obtenerUsuario,
cliente.obtenerContrasena,
Pag. 38
cliente.obtenerCorreo,
cliente.obtenerTelefono,
cliente.obtenerFax,
cliente.obtenerPais)
fmétodo
Archivos
oLoop permite el uso de archivos secuenciales o aleatorios. Para ello cuenta con la
clase predefinida CArchivo. Esta clase encapsula la funcionalidad genérica para el
manejo de archivos. La declaración de la clase CArchivo se especifica a continuación.
Clase CArchivo
Atributos
Nombre // Nombre del archivo
Ruta // Ruta de directorio del archivo
ModoAcceso // 'Lectura' | 'Escritura' |
// 'Lectura-Escritura' | 'Adición'
Tipo // 'Secuencial' | 'Aleatorio'
Métodos
Crear ->
Abrir ->
Cerrar ->
Leer ->
Leer(pPosicion) ->
Escribir(Objeto)
Escribir(Posicion, Objeto)
ObtenerNombre ->
ColocarNombre(NuevoNombre)
ObtenerRuta ->
ColocarRuta(NuevaRuta)
ObtenerModoAcceso ->
ColocarModoAcceso(NuevoModoAcceso)
ObtenerTipo ->
ColocarTipo(NuevoTipo)
FinDeArchivo ->
fclase
Pag. 39
Ejemplos de uso de oLoop
Declaración de Clases y Métodos
El siguiente ejemplo ilustra de manera sencilla la declaración de una Clase. Definimos
una clase Punto, que entendemos por un pixel en la pantalla. Para definirlo
necesitamos sus coordenadas X e Y.
Clase CPunto
Atributos
X
Y
Métodos
ObtenerX
ObtenerY
Constructor(NuevoX, NuevoY)
fclase
Pag. 40
Implantación de Métodos
Continuando con nuestro ejemplo del punto, demostramos como declarar las
definiciones de los métodos de la clase arriba definida.
Método CPunto.ObtenerX
Retornar X
fmétodo
Método CPunto.ObtenerX
Retornar Y
fmétodo
Pag. 41
Herencia y Extensión de Clases
En este ejemplo que presentamos a continuación aplicaremos el mecanismo de la
herencia para extender la clase CPosición.
Clase CPosición
Atributos
X
Y
Métodos
Constructor(NuevoX, NuevoY)
ObtenerX -->
ObtenerY -->
fclase
Método CPosición.ObtenerX
Retornar X
fmétodo
Método CPosición.ObtenerY
Retornar Y
fmétodo
Método CPunto.ObtenerVisible
Retornar Visible
fmétodo
Método CPunto.Mostrar
Visible <-- Verdadero
DibujarPixel(X, Y, ObtenerColorPrimerPlano)
// Dibuja un pixel en la pantalla (blanco sobre negro)
fmétodo
Método CPunto.Ocultar
Visible <-- Falso
DibujarPixel(X, Y, ObtenerColorFondo)
// Dibuja un pixel en la pantalla (negro sobre negro)
fmétodo
Pag. 42
Y <-- QueY
Mostrar // Muestra el punto
fmétodo
Método CCírculo.Mostrar
Visible <-- Verdadero
DibujarCírculo(X, Y, Radio, ObtenerColorPrimerPlano) //
Dibuja un círculo en la pantalla (blanco sobre negro)
fmétodo
Método CCírculo.Ocultar
Visible <-- Falso
DibujarCírculo(X, Y, Radio, ObtenerColorFondo) //
Dibuja un círculo en la pantalla (negro sobre negro)
fmétodo
Método CCírculo.Expandir(FactorExpansión)
Ocultar
Radio Radio + FactorExpansión
Mostrar
fmétodo
Método CCírculo.Contraer(FactorContracción)
Expandir(-FactorContracción)
fmétodo
Este sencillo ejemplo nos muestra la simulación de una pequeña (muy pequeña)
conversación entre dos objetos de la Clase CPersona.
Clase CSegmento
Atributos
Lugar
nuSegmento
Métodos
Constructor(NuevoSegmento, NuevoLugar)
ImprimirEncabezado
Acción
ImprimirCorte
Pag. 43
fclase
Método CSegmento.ImprimirEncabezado
LíneaTexto <-- ‘Segmento # ‘ + nuSegmento +
‘ ‘ + Lugar
Escribir(LíneaTexto)
fmétodo
Método CSegmento.Acción
fmétodo
Método CSegmento.ImprimirCorte
Escribir(‘------------------‘)
fmétodo
Clase CPersona
Atributos
nmPersona // Nombre de persona
LíneaEtiqueta
Métodos
Constructor(NuevoNombre, NuevaLínea)
ColocarLíneaEtiqueta(QueLínea)
ObtenerLíneaEtiqueta -->
Decir(Línea)
fclase
Método CPersona.ObtenerLíneaEtiqueta
Retornar LíneaEtiqueta
fmétodo
Método CPersona.ColocarLíneaEtiqueta(QueLínea)
LíneaEtiqueta <-- QueLínea
fmétodo
Método CPersona.Decir(Línea)
LíneaTexto <-- nmPersona + ‘: ”’ + Línea + ‘”’
Escribir(LíneaTexto)
fmétodo
Método CDiálogo.Acción
Pag. 44
Agradecimientos
Conversar
Despedirse
fmétodo
Método CDiálogo.Saludos
PersonaA.Decir(‘Hola’)
PersonaB.Decir(‘Que tal’)
PersonaA.ColocarLíneaEtiqueta(‘Si que hace calor’)
PersonaB.ColocarLíneaEtiqueta(‘Y que lo digas’)
fmétodo
Método CDiálogo.Conversar
PersonaA.Decir(PersonaA.ObtenerLíneaEtiqueta)
PersonaB.Decir(PersonaB.ObtenerLíneaEtiqueta)
fmétodo
Método CDiálogo.Despedirse
PersonaA.Decir(‘Chau’)
PersonaB.Decir(‘Nos vemos’)
fmétodo
Pag. 45
Bibliografía
● VOSS, Greg (1994); Programación Orientada a Objetos: Una Introducción., McGraw
Hill, México. Orig. Object-Oriented Programming: An Introduction.
● RUBENKING, Neil (1995); Delphi Programming Problem Solver. IDG Books Worldwide
Inc. ISBN 1-56884-795-5.
Pag. 46
Sugerencias para la escritura de
Pseudocódigo
Indentación
Para facilitar la comprensión, lectura y revisión del pseudo-código, se creó el concepto
de indentación en la escritura de los mismos. Esta consiste en el desplazamiento hacia
la derecha de un subconjunto de la secuencia de acciones. Aunque los bloques están
denotados por palabras subrayadas, ( Si..fsi, etc.). Es recomendable desplazar dos o
tres posiciones el bloque para facilitar la comprensión del flujo lógico.
Idioma de Trabajo
La nomenclatura de identificadores de variables, acciones, funciones, estructuras, etc.,
debe estar regida por un idioma único para lograr la uniformidad en el pseudo-código.
Esto produce una sensación de armonía y ayuda a la fácil comprensión del mismo.
Algunos autores utilizan el idioma inglés porque les brinda mayor versatilidad en la
nomenclatura (una expresión en español puede significar una sola palabra en inglés) o
armonía con el lenguaje de programación en que implementarán el pseudo-código.
Otros prefieren el español por comodidad y para lograr una mayor claridad y
comprensión por parte del lector. Para elegir el idioma de nomenclatura debe tenerse
en cuenta la comodidad personal, el grado de difusión del pseudo-código (en el caso de
trabajo en grupo o para presentarlo a terceros) y la fluidez que poseemos sobre un
idioma. Esta última nos permitirá utilizar el término exacto que ayude a captar el
significado del valor, acción o función.
Notación de Identificadores
Los identificadores son cadenas de texto que permiten hacer referencia a valores
determinados. Muchas veces, por falta de costumbre o por "rapidez", no aprovechamos
las propiedades informativas de los identificadores. El nombre de una variable nos
puede dar información sobre el significado del valor al que referencia (nombre de una
persona, contador, acumulador de totales, etc.), el tipo de valor (numérico, cadena de
caracteres, estructura, etc.) o la categoría de valor (posibles estados civiles por
ejemplo).
Notación Húngara
Un tipo de notación muy conocida en el ambiente informático es el de la notación
húngara, en el cual una letra denota el tipo de valor con que trabaja la variable, así:
Pag. 47
Prefijo Descripción Ejemplo
b Valor booleano bEsCasado
n Valor numérico nEdad
a Arreglo o Matriz aAlumnos
ch Carácter chRespuesta
c Cadena de caracteres cNombre
p Apuntador pNodo
S Estructura SPersona
m_ Miembro de la Estructura m_cNombre
Tabla .14. Ejemplo de uso de Prefijos.
Notación de Constantes
Para la notación de constantes, es decir identificadores asociados a valores que no
cambian en el tiempo, existen la notación de prefijos, que consiste en la utilización de
uno o dos caracteres que se anteponen al identificador e indican el tipo de valor (con
respecto al significado) asociado. Por ejemplo:
Pag. 48