1. PSEUDOCÓDIGO
PSEUDOCÓDIGO.- Es un conjunto de reglas que nos permite expresar claramente un
algoritmo, como si se tratara de un lenguaje natural cualquiera(idioma)
DATO
Son los diferentes objetos de información con los que trabaja una computadora. Ejemplo la
calificación de un alumno.
TIPO DE DATO.- Colección de elementos que se forman de igual manera y que son
tratados en forma uniforme.
Ejemplo:
1) [-1,1, 4, 199] es una colección de elementos de tipo entero.
2) [1.4, 3.1416] es colección de elementos de tipo real.
TIPOS DE DATOS
Tipo de dato Ejemplo Identificador en pseudocódigo
ENTERO 128 Entero
REAL 7.5 Real
CARACTER “b” caracter
LÓGICO verdadero, falso lógico
ESTRUCTURA DE UN ALGORITMO
Un algoritmo consta de dos componentes:
Cabecera del algoritmo
Bloque del algoritmo
Cabecera del Algoritmo.- Indica el nombre ó identificación del algoritmo.
Formato
Algoritmo Nombre del algoritmo
Ejemplo:
Algoritmo HallaDescuento
Bloque del algoritmo.- Consta de dos secciones:
Sección de declaraciones
Sección Ejecutable
Sección de Declaraciones.- Se declaran las variables y constan tes.
Declaración de variables.- Se especifican los nombres de las variables y sus tipos de datos.
Formato
VAR
Tipo_1: variable_1, variable_2,..., variable_n
Tipo_2: variable_1, variable_2,..., variable_n
. . .
Tipo_n: variable_1, variable_2,..., variable_n
donde:
Tipo_n indica el tipo de dato, colocando el identificador que corresponde,
según el tipo.
2. Ejemplo:
VAR
entero: edad
Declaración de constantes.- Se asocia un identificador con una constante especifica y después
se usa dicho identificador en el programa.
Formato
CONST
identificador=valor
donde:
o identificador es un nombre
o valor es una constante entera, real, de caracter ó lógico
Ejemplo
CONST
igv= 0.18
pi=3.1416
mes= “enero”
Sección ejecutable. Contiene enunciados que efectúan acciones sobre los dato Esta
s.
delimitada por las palabras reservadas: INICIO y FIN.
Formato
INICIO
enunciados
...
enunciados
FIN
Comentario.- Información que explica lo que esta sucediendo en el programa. Se representa
encerrando la información entre /* y */ .
Formato
/*información explicativa*/
Ejemplo
Areacuad lado*lado /*calcula el área de un cuadrado */
SENTENCIAS DE ENTRADA Y SALIDA
Sentencia de entrada: Leer
Formato
Leer variable 1, variable 2,..., variable n
Ó Leer ( variable 1, variable 2,..., variable n)
Sentencia de salida: Escribir
Formato
Escribir Lista de constante y/o variable
Ó Escribir ( Lista de constante y/o variable)
EXPRESIONES ARITMÉTICAS.- Representan cálculos aritmético s.
Ejemplo
-4*7+2
3. Operadores Aritméticos
Operador Operación Operandos Resultado
+ Suma Entero ó real Entero ó real
- Resta Entero ó real Entero ó real
* Multiplicación Entero ó real Entero ó real
/ División Entero ó real Entero ó real
** Potencia Entero ó real Entero ó real
div División entera Entero Entero
mod Módulo(Residuo) Entero Entero
Prioridad de los operadores.-Determina el orden en que se ejecutan las operaciones enuna
expresión.
Operador Jerarquía Operación
**, ^ (Mayor) Potencia
/, *, div, mod división ,multiplicación, división entera,
módulo(residuo)
+, - (Menor) Suma, resta
Las operaciones encerradas entre paréntesis se ejecutan primero.
EXPRESIONES LÓGICAS.- Son expresiones cuyo resultado es el valor verdadero ó falso.
Se forman utilizando operadores lógicos y operadores de relación.
Ejemplo
1< 2 es verdadero
Operadores de relación
Operador Operación Ejemplo Resultado
= Igual que “sara”=”zara” Falso
<> Diferente a “4” <>”5” Verdadero
< Menor que 5<10 Verdadero
> Mayor que 12>4 Verdadero
<= Menor ó igual que 7<=2 Falso
>= Mayor ó igual que 25>=25 Verdadero
Operadores Lógicos y su jerarquía
Operador Lógico Expresión Lógica
NO No P
Y PyQ
O PoQ
SENTENCIA DE ASIGNACIÓN.- Se usa para asignar el valor del lado derecho del
operador de asignación ( ) a la variable que se encuentra en el lado izquierdo del
operador.
4. Formato
variable variable|constante|expresión
ESTRUCTURA SECUENCIAL.- Los pasos del proceso se procesan en secuencia, uno
después del otro.
Formato
INICIO
/*inicio de estructura secuencia*/
Proceso 1
Proceso 2
...
/*fin de estructura secuencial */
FIN
Ejemplo.-Lectura de tres números M, N y P en una sola operación é impresión de su suma en
una impresora
INICIO
Leer(M,N,P)
S M+N+P
Escribir(“El resultado es=”,S)
FIN
ESTRUCTURAS ALTERNATIVAS Ó DE SELECCIÓN.
Evalúan una expresión y señalan el camino a seguir según sea el resultado de la evaluación,
verdadero ó falso. Se clasifican en: simple, doble y múltiple
Estructura de selección simple: SI ENTONCES
Formato Si condición
Entonces sentencias
Finsi (ó Fsi ó Fin_si)
Estructura de selección doble: SI ENTONCES/SINO
Formato Si condición
Entonces sentencias
Sino sentencias
Finsi (ó Fsi ó Fin_si)
Estructura de selección múltiple: CASO
Formato Caso expresión vale
Alternativa 1: sentencias
Alternativa 1: sentencias
...
Alternativa n: sentencias
[Sino : sentencias]
Fincaso (ó Fcaso ó Fin_caso)
5. SENTENCIAS REPETITIVAS
Sentencia Mientras
Formato Mientras condición hacer
Sentencias
Finmientras ( ó Fmientras ó Fin_mientras)
Sentencia Repetir
Formato Repetir
Sentencias
Hasta condición
Finrepetir (ó Frepetir ó Fin_repetir)
Sentencia Para
Formato
Para variable de control desde valor inicial hasta valor final
[incremento {+|-} valor del incremento] hacer
sentencias
Finpara (ó Fpara ó Fin_para)
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.
6. 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
IdentificadorMétodo [ ( ListaFormalParámetros ) ] [ ]
[ virtual | virtual abstracto | sobreescribir |
sobrecargar ]
constructor [ ( ListaFormalParámetros ) ]
destructor
ListaFormalParámetros [ @ ] Identificador {, [ @ ]
{,
Identificador }
Ilustración Capítulo I. .1. Sintaxis de declaración de Clase.
La declaración de un atributo en una clase define un elemento de dato que existe en cada
instancia u objeto de la clase.
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.
La declaración de un método dentro de una clase implica la implantación posterior del
método mediante una declaración de definición.
Dentro de la implantación de un método, el identificador Este representa un parámetro
implícito que referencia al objeto por el cual fue invocado el método.
Los constructores y destructores son métodos especiales que contro la construcción y
lan
destrucción de los objetos.
Un constructor define las acciones asociadas con la creación de objetos. Cuando se invoca
éste retorna una referencia a una instancia inicializada de una clase.
Un destructor define las acciones asociadas con la destrucción de un objet Cuando se
o.
invoca, el destructor libera los recursos asignados al objeto.
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.
Una clase descendiente cont ene en forma implícita todos los componentes defin
i idos 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.
7. Seleccionar atributos.
La manera como podemos accesar a los atributos de una clase es similar a lo anteriormente
visto con las variables, exceptoque 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.
Declaración de Instancias de Clases (Objetos).
Las instancias de una clase se conocen como los objetos de la clase. Por medio de las clases
definimos en nuestro pseudocódigo la estructura y el comportamiento de los objetos que
pertenezcan a esa clase, es decir los ejemplares de la clase. Para poder definir objetos en
forma clara necesitamos establecer un identificador para el objeto y especificar de qué clase
es ejemplar.
objeto IdentificadorObjeto ejemplar_de IdentificadorClase
Ilustración Capítulo I. .2. Sintaxis de declaración de Objeto.
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.
Declaración de definición de Métodos.
Esta parte especifica cómo se implanta el propósito para el cual fue creado el método. Su
estructura es similar a una rutina. Aquí utilizamos la palabra Método seguida del
identificador y la interfaz (si existiera). El punto (.) nos indica una selección de la Clase como
entidad global y clarifica la pertenencia del método a dicha Clase.
método IdentificadorClase.IdentificadorMétodo
[ ( ListaFormalParámetros ) ] [ ]
secuencia de “n” acciones
fmétodo
Ilustración Capítulo I. .3. Sintaxis de declaración de definición de Método.
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.
8. Dentro de un bloque de método, la palabra reservada heredado se puede utilizar para accesar
a identificadores de métodos redeclarados o extendidos. Por ejemplo, en la implantación del
método CEtiquetaConMarco.Dibujar, podemos utilizar heredado para invocar la
implantación heredada del método Dibujar. Cuando un identificador está precedido por
heredado, la búsqueda se inicia con el ancestro inmediato de la clase que contiene el 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 referenciar por su identificador en el bloque asociado con el método.
ListaFormalParámetros [ @ ] Identificador {, [ @ ] {,
Identificador }
Ilustración Capítulo I. .4. Sintaxis de Lista formal de Parámetros.
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.
El correspondiente parámetro real de un parámetro formal por valor en una sentencia de
método debe ser una expresión y su tipo de valor debe concordar con el determinado por el
contexto de utilización del parámetro.
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.
Cabe recalcar que si bien en el lenguaje de pseudocódigo no se está considerando en forma
explícita la existencia de tipos de valores, ésta queda determinada por el contexto de
utilización de las variables, al momento de asignación de valores y aplicación de operadores.
9. Constructores y destructores.
Como hemos adelantado, los cons tructores 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. Por lo
general 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.
Clase CFigura viene-de CObjeto
Atributos
Largo
Ancho
Objeto Lápiz ejemplar-de Clápiz
Objeto Brocha ejemplar-de Cbrocha
Métodos
Constructor(QueLargo, QueAncho)
Destructor
fClase
Método CFigura.Constructor(QueLargo, QueAncho)
heredado Constructor
Ancho QueLargo
Largo QueAncho
Lápiz.Constructor
Brocha.Constructor
fmétodo
Método CFigura.Destructor
Lápiz.Destructor
Brocha.Destructor
heredado Destructor
fmétodo
Acceso a los atributos.
Para poder mantener la integridad de la información que maneja nuestra solución lógica,
debemos disciplinarnos en el acceso a los atributos definidos en las clases. Conforme utilice
el enfoque orientado a objetos para realizar sus algoritmos, coincidiremos en que la manera
de evitar que el cliente de un objeto acceda directamente a los valores de los atributos propios
de su clase, es necesario definir métodos especiales cuya función sean obtener el valor del
atributo o alterar éste valor. A estos métodos especiales los denominamosmétodos de lectura
y métodos de escritura.
Continuando con la sana política de establecer convenciones, a partir de ahora acordaremos
que los identificadores de métodos de lectura, es decir los que retornan el valor de un
atributo, estén conformados por la palabra Obtener seguida del nombre del atributo; así
mismo, los métodos de escritura se denotarán por la palabra Colocar seguida del nombre del
10. atributo y tendrán como parámetro por lo menos el valor con el que se desea alterar el
atributo.
Clase CFigura viene-de CObjeto
Atributos
Largo
Ancho
Objeto Lápiz ejemplar-de Clápiz
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.IdentificadorMétodo
IdentificadorObjeto.
[(ListaRealParámetros)]
ListaRealParámetros)
Ilustración Capítulo I. .5. Sintaxis de Envío de Mensaje.
El identificador de objeto expresado arriba debe denotar una referencia a un objeto existente.
La instancia especificada al momento del envío del mensaje se convierte en forma implícita
en un parámetro real para el método; corresponde con un parámetro real llamado Este, que
tiene el conocimiento de la clase a la que corresponde el método que se está invocando.
Cuando invocamos a métodos de una clase dentro de la declaración de definición de otro
método de la misma clase se omite la referencia al objeto, quedando sólo el identificador del
método y la lista real de parámetros.
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.
// Este es un ejemplo de un comentario
// que ocupa varias líneas.
11. Ejemplo
Ejemplo 1.- Generar una clase que permita ingresar y mostrar los datos de un alumno.
Clase cAlumno
Atributos
Código, Nombre, Sexo
Métodos
Constructor
Asignar (wcod, wnom, wsex)
Getcod
Getnom
Getsex
Destructor
Fclase
Método Calumno.constructor
Fmetodo
Metodo Calumno.asignar(wcod, wnom, wsex, waño)
Codigo wcod
Nombre wnom
Sexo wsex
Fmetodo
Metodo Calumno.getcod
Getcod codigo
fmetodo
Metodo Calumno.getnom
Getnom nombre
fmetodo
Metodo Calumno.getsex
Getsex sexo
fmetodo
Objeto Oalumno ejemplar_de Calumno
Inicio // Programa principal
// Botón de ingreso de datos de un alumno
12. Oalumno.constructor
Mostrar “ingresar codigo, nombre, sexo, fecha de nacimiento “
xcod Edit1.texto
xnom Edit2.texto
xsex Edit3.texto
xaño Edit4.texto
oalumno.asignar(xcod, xnom, xsex, xaño )
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
// Botón de recuperación de datos de un alumno
xcod oalumno.getcod
xnom oalumno.getnom
xsex oalumno.getsex
xaño oalumno.getaño
etiqueta1.titulo xcod
etiqueta2.titulo xnom
etiqueta3.titulo xsex
etiqueta4.titulo xaño
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-
Ejemplo 2.- Generar una clase que permita ingresar y mostrar los datos de un alumno.
Trabajando con herencia
Clase Calumnito viene_de Calumno
Atributos
Añonacim
Métodos
Asignar (wcod, wnom, wsex, waño)
Getaño
Getedad (año_actual)
Fclase
Metodo Calumnito.asignar(wcod, wnom, wsex, waño)
Añonacim waño
Heredado asignar(wcod, wnom, wsex) // usando anulación por refinamiento
fmetodo
Metodo Calumnito.getaño
13. Getaño añonacim
Fmetodo
Metodo Calumnito. Getedad(año_actual)
Getedad año_actual - añonacim
fmetodo
Objeto Oalumnito ejemplar_de Calumnito
.--.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
// botón de ingreso de datos
Oalumnito.constructor
Mostrar “ingresar codigo, nombre, sexo, fecha de nacimiento “
xcod Edit1.texto
xnom Edit2.texto
xsex Edit3.texto
xaño Edit4.texto
oalumnito.asignar(xcod, xnom, xsex, xaño )
.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
// botón de calculo de la edad
xañoactual Edit5.texto
etiqueta5.titulo oalumno.getedad(xañoactual)