SeúDocodigo

18
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

Transcript of SeúDocodigo

Page 1: SeúDocodigo

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)DATOSon 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 DATOSTipo de dato Ejemplo Identificador en pseudocódigoENTERO 128 EnteroREAL 7.5 RealCARACTER “b” caracterLÓGICO verdadero, falso lógico

ESTRUCTURA DE UN ALGORITMOUn 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 algoritmoEjemplo:

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 constantes. Declaración de variables.- Se especifican los nombres de las variables y sus tipos de datos.Formato

VARTipo_1: variable_1, variable_2,..., variable_nTipo_2: variable_1, variable_2,..., variable_n

. . .Tipo_n: variable_1, variable_2,..., variable_n

donde:

Page 2: SeúDocodigo

Tipo_n indica el tipo de dato, colocando el identificador que corresponde, según el tipo.

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

CONSTidentificador=valor

donde:o identificador es un nombreo valor es una constante entera, real, de caracter ó lógico

EjemploCONST

igv= 0.18pi=3.1416mes= “enero”

Sección ejecutable. Contiene enunciados que efectúan acciones sobre los datos. Esta delimitada por las palabras reservadas: INICIO y FIN.Formato

INICIOenunciados

...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 SALIDASentencia de entrada: LeerFormato

Leer variable 1, variable 2,..., variable nÓ Leer ( variable 1, variable 2,..., variable n)

Sentencia de salida: EscribirFormato

Escribir Lista de constante y/o variableÓ Escribir ( Lista de constante y/o variable)

Page 3: SeúDocodigo

EXPRESIONES ARITMÉTICAS.- Representan cálculos aritméticos. Ejemplo

-4*7+2

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 ó realdiv División entera Entero Enteromod Módulo(Residuo) Entero Entero

Prioridad de los operadores.- Determina el orden en que se ejecutan las operaciones en una 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ógicaNO No PY P y QO P o Q

Page 4: SeúDocodigo

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.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 1Proceso 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

INICIOLeer(M,N,P)S M+N+PEscribir(“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 ENTONCESFormato Si condición

Entonces sentenciasFinsi (ó Fsi ó Fin_si)

Estructura de selección doble: SI ENTONCES/SINOFormato Si condición

Entonces sentenciasSino sentencias

Finsi (ó Fsi ó Fin_si)

Estructura de selección múltiple: CASOFormato Caso expresión vale

Alternativa 1: sentencias

Page 5: SeúDocodigo

Alternativa 1: sentencias...

Alternativa n: sentencias[Sino : sentencias]

Fincaso (ó Fcaso ó Fin_caso)

SENTENCIAS REPETITIVASSentencia MientrasFormato Mientras condición hacer

SentenciasFinmientras ( ó Fmientras ó Fin_mientras)

Sentencia RepetirFormato Repetir

SentenciasHasta condiciónFinrepetir (ó Frepetir ó Fin_repetir)

Sentencia ParaFormato

Para variable de control desde valor inicial hasta valor final[incremento {+|-} valor del incremento] hacersentencias

Finpara (ó Fpara ó Fin_para)

Page 6: SeúDocodigo

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:claseclase IdentificadorClase IdentificadorClase

[[viene-deviene-de IdentificadorClase { IdentificadorClase { ,, IdentificadorClase }] IdentificadorClase }]atributosatributos

IdentificadorAtributo { IdentificadorAtributo }IdentificadorAtributo { IdentificadorAtributo }métodosmétodos

secuencia de “m” declaraciones de métodos secuencia de “m” declaraciones de métodos fclasefclaseIdentificadorMétodo [ IdentificadorMétodo [ ( ( ListaFormalParámetros ListaFormalParámetros ) ) ] [ ] [ ] ]

[ [ virtualvirtual | | virtualvirtual abstractoabstracto | | sobreescribirsobreescribir | | sobrecargarsobrecargar ] ]

constructorconstructor [ [ ( ( ListaFormalParámetros ListaFormalParámetros ) ) ]]

destructordestructorListaFormalParámetros ListaFormalParámetros [ [ @@ ] Identificador { ] Identificador {,, [ [ @@ ]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 controlan la construcción y 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 objeto. Cuando se 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

Page 7: SeúDocodigo

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 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_AtributoIdentificador_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.objetoobjeto IdentificadorObjeto IdentificadorObjeto ejemplar_deejemplar_de IdentificadorClase 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.

Page 8: SeúDocodigo

métodométodo IdentificadorClase.IdentificadorMétodo IdentificadorClase.IdentificadorMétodo [ [ ( ( ListaFormalParámetros ListaFormalParámetros ) ) ] [ ] [ ] ]

secuencia de “n” accionessecuencia de “n” accionesfmétodofmé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.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 CEtiquetaMétodos

DibujarfClase

Método CEtiquetaConMarco.Dibujarheredado DibujarColor clTextoVentanaEstilo 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 ListaFormalParámetros [ [ @@ ] Identificador { ] Identificador {,, [ [ @@ ]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.

Page 9: SeúDocodigo

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.

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

Page 10: SeúDocodigo

Clase CFigura viene-de CObjetoAtributos

LargoAnchoObjeto Lápiz ejemplar-de ClápizObjeto Brocha ejemplar-de Cbrocha

MétodosConstructor(QueLargo, QueAncho)Destructor

fClase

Método CFigura.Constructor(QueLargo, QueAncho)heredado ConstructorAncho QueLargoLargo QueAnchoLápiz.ConstructorBrocha.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 denominamos mé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 atributo y tendrán como parámetro por lo menos el valor con el que se desea alterar el atributo.

Clase CFigura viene-de CObjetoAtributos

LargoAnchoObjeto Lápiz ejemplar-de ClápizObjeto Brocha ejemplar-de Cbrocha

MétodosConstructor(QueLargo, QueAncho)DestructorObtenerLargo ObtenerAncho ColocarLargo(NuevoLargo)ColocarAncho(NuevoAncho)

fClase

Page 11: SeúDocodigo

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.IdentificadorObjetoIdentificadorObjeto..IdentificadorMétodo [IdentificadorMétodo [((ListaRealParámetrosListaRealPará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.

Ejemplo

Page 12: SeúDocodigo

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

FclaseMétodo Calumno.constructorFmetodoMetodo Calumno.asignar(wcod, wnom, wsex, waño) Codigo wcod Nombre wnom Sexo wsexFmetodoMetodo Calumno.getcod Getcod codigofmetodoMetodo Calumno.getnom Getnom nombrefmetodoMetodo Calumno.getsex Getsex sexofmetodoObjeto Oalumno ejemplar_de Calumno

Inicio // Programa principal// Botón de ingreso de datos de un alumno

Oalumno.constructorMostrar “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

Page 13: SeúDocodigo

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 refinamientofmetodoMetodo Calumnito.getaño Getaño añonacimFmetodo

Metodo Calumnito. Getedad(año_actual) Getedad año_actual - añonacim fmetodo

Objeto Oalumnito ejemplar_de Calumnito

.--.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

// botón de ingreso de datos

Page 14: SeúDocodigo

Oalumnito.constructorMostrar “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.textoetiqueta5.titulo oalumno.getedad(xañoactual)