antologia de algoritmos

19
  Universidad Interamericana del Norte Algoritmos - LIISM12 Campus Tampico ISC. Daniel Maupomé 1  Algoritmos Computacionales Objetivo General  Aplicar conceptos y procedimientos fundamentales de programación de manera que el profesional pueda garantizar el desarrollo de programas claros, confiables y de fácil mantenimiento que den solución a problemas. Unidad 1. Introducción a la programación 1.1 Definición de programa y programación. 1.2 Características de un programa 1.3 Modelos de programación 1.4 Clasificación de lenguajes de programación 1.5 Simbología de un Diagrama de Flujo 1.6 Programación estructurada Unidad 2. Estructuras algorítmicas básicas 2.1 instrucciones de entrada, salida y asignación. Secuencia de instrucciones 2.2 Decisiones o alternativas 2.3 Repetición o ciclos. Contadores y acumuladores 2.4 Recursividad Unidad 3. Programación modular 3.1 Concepto de modulo 3.2 Características de un módulo. 3.3 Técnicas de diseño modular 3.4 Abstracción modular y parámetros. Unidad 4. Estructuras de datos básicas 4.1 Estructuras lineales que guardan datos de un mismo tipo (arreglos, vectores, matrices, listas, etc.) 4.2 Estructuras lineales que guardan datos de diferentes tipos (registro) 4.3 Estructuras para guardar información en almacenamiento secundario (Archivos) Unidad 5. Programación orientada a objetos 5.1 Terminología y conceptos básicos. Importancia y beneficios. 5.2 Abstracción de datos 5.3 Aplicaciones usando objetos predefinidos.

Upload: danielmaupome6480

Post on 14-Jan-2016

27 views

Category:

Documents


3 download

DESCRIPTION

Antología básica de desarrollo de pseudocódigos en el software PseInt, actualizado al 2014.

TRANSCRIPT

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 1/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

 Algoritmos Computacionales

Objetivo General

 Aplicar conceptos y procedimientos fundamentales de programación de maneraque el profesional pueda garantizar el desarrollo de programas claros, confiables yde fácil mantenimiento que den solución a problemas.

Unidad 1. Introducción a la programación1.1 Definición de programa y programación.1.2 Características de un programa1.3 Modelos de programación1.4 Clasificación de lenguajes de programación1.5 Simbología de un Diagrama de Flujo1.6 Programación estructurada

Unidad 2. Estructuras algorítmicas básicas

2.1 instrucciones de entrada, salida y asignación. Secuencia de instrucciones2.2 Decisiones o alternativas2.3 Repetición o ciclos. Contadores y acumuladores2.4 Recursividad

Unidad 3. Programación modular3.1 Concepto de modulo3.2 Características de un módulo.3.3 Técnicas de diseño modular3.4 Abstracción modular y parámetros.

Unidad 4. Estructuras de datos básicas4.1 Estructuras lineales que guardan datos de un mismo tipo (arreglos, vectores,matrices, listas, etc.)4.2 Estructuras lineales que guardan datos de diferentes tipos (registro)4.3 Estructuras para guardar información en almacenamiento secundario(Archivos)

Unidad 5. Programación orientada a objetos

5.1 Terminología y conceptos básicos. Importancia y beneficios.5.2 Abstracción de datos5.3 Aplicaciones usando objetos predefinidos.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 2/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

U1. Introducción a la programación.

1.1 Definición de programa y programación

Algoritmo

Es una estrategia para resolver un problema, que tiene un número finito de pasosclaramente establecidos, los cuales devuelven un resultado.

Programa.Es un conjunto de instrucciones que indican a la maquina las operaciones queesta debe realizar con unos datos determinados. Como puede verse en la imagen

DATOS DE DATOS DE

ENTRADA SALIDA

Por programación podríamos decir que son los pasos que se abordan para crearel código fuente de un programa informático.

1.2 Características de un programa

Integridad: Debe ser exacto en sus cálculos y confiable en su

resultado

Claridad: Debe ser fácil de leerse. Respetar reglas de identación y

separación.

Sencillez: Debe tener instrucciones sencillas.

Eficiencia: Debe ser veloz al ejecutarse y utilizar la memoria

eficientemente.

Modularidad: Debe tener división en subtareas en la medida de lo

posible.Generalidad: Un programa generalizado facilita su mantenimiento.

Flexibilidad: Un buen programa debe ser adaptable a los cambios

Presentación: Interfaces graficas de usuario sencillas, claras y

fáciles de manejar.

Documentación: Describir la función de cada parte del programa y

actualizarla con cada cambio.

COMPUTADORA

PROGRAMA

Un buen programadebe tener las

siguientescaracterísticas

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 3/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

1.3 Modelos de programación.

En los primeros años de la programación, se utilizaba el modelo de ProgramaciónEstructurada, que tenía como particularidad que siempre existe un control de laejecución; esto es, que las instrucciones se ejecutaban de manera secuencial,existiendo un orden inquebrantable. Básicamente un programa elaborado bajo elesquema de programación estructurada consta de 3 instrucciones de control:Secuencial, que es cuando se ejecutan las instrucciones de manera ordenada.Condicional, cuando existe una situación que te hace proceder de una u otramanera, es decir, te presenta dos posibles caminos a tomar.De iteración, que es cuando una instrucción puede ejecutarse varias veces segúnla condición de paro determinada.

 Al pasar los años, la programación estructurada se vio rebasada por las

necesidades del área computacional, dando paso al surgimiento de la

Programación Orientada a Objetos. Este modelo se centra en la construcciónde objetos y sus interacciones. Para comprender mejor, intenta representar

situaciones del mundo real en un programa. Es decir crea objetos y enlista sus

interacciones entre estos mismos y otros objetos, define sus atributos.

Como parte del crecimiento, nació la Programación Orientada a Eventos, en la

cual la estructura y ejecución del programa se rigen por los eventos generados por

el usuario y en ocasiones por el mismo programa. En esta situación el

programador debe definir todos los eventos posibles que ocurran al interior y

exterior del programa, normalmente mediante un diagrama de casos de uso.

1.4 Clasificación de lenguajes de programación.

  Lenguaje máquina. Es el lenguaje natural de una máquina. Se basa en el

sistema binario, es decir impulsos electrónicos representados por 0 y 1.

Difícilmente es comprensible para nosotros el lenguaje máquina, así que se

optó por el desarrollo del lenguaje ensamblador

  Lenguaje ensamblador . Era el encargado de realizar la traducción al

lenguaje máquina de lo que nosotros queríamos que la computadora

realizara. Normalmente se basaba en instrucciones cortas, pero tenía elinconveniente que la arquitectura del procesador era variable, por lo que

cada procesador manejaba su propio lenguaje ensamblador. Ante esa

situación se requería un lenguaje que pudiera funcionar en cualquier

maquina independientemente de su arquitectura.

  Lenguajes de alto nivel. Basado en instrucciones normalmente en inglés,

por el hecho de que son palabras cortas, y respetando la notación

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 4/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

matemática común, podían escribirse instrucciones individuales para

realizar tareas complejas. Su característica más importante es que

incorporaban su propio traductor llamado compilador, el cual se encarga de

traducir los códigos de programas de alto nivel a lenguaje máquina. 

1.5 Simbología para diagrama de flujo.

Partiendo del antecedente de que el diagrama de flujo es una representacióngráfica, es preciso saber que se requiere cierta simbología que se utilice en laconstrucción de diagramas de flujo. Para ello y con la finalidad de normar lossímbolos, la American National Standard Institute (ANSI) sugiere la utilización delos siguientes símbolos (solo se representan los relativos a algoritmoscomputacionales).

Símbolo Representa

Inicio - Fin

Operación  – Proceso

Decisión  – Alternativa

Impresión - Documento

Nota Aclaratoria

Ingreso de Información

Conector de Página

1.6 Programación Estructurada.En este punto, es importante mencionar que antes de empezar a programar,debemos empezar a crearnos mente de programador. Esto quiere decir, quedebemos desarrollar una lógica que nos permita abordar cualquier problema

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 5/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

cotidiano e implementar un algoritmo que le dé solución al problema. En estesentido, abordaremos la programación estructurada a partir de la unidad 2 pero amanera de pseudocódigo. El pseudocódigo es una descripción de un algoritmoinformático en un lenguaje compacto e informal, que utiliza las convencionesestructurales de un lenguaje de programación verdadero.

El tipo de pseudocódigo que utilizaremos en el desarrollo de nuestros ejerciciosserá el que utiliza el software PSeInt, que es un pseudocódigo completamente enespañol.

Si desean descargar el programa PSeInt deben ingresar a esta dirección:

http://pseint.sourceforge.net/index.php?page=descargas.php 

 Ahí deberán seleccionar el Instalador para Windows.

Una vez descargado deben instalarlo en su equipo para poder hacer uso delprograma.

En esta dirección electrónica encontraran un breve manual de cómo funcionaPSeInt. De igual manera, iremos ejemplificando a partir de la próxima unidad

http://pseint.sourceforge.net/pseudocodigo.php 

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 6/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

U2. Estructuras Algorítmicas Básicas

2.1 Instrucciones de entrada, salida y asignación. Secuencia deinstrucciones.

Lo primero que debemos de conocer de PSeInt es que nos permite manejar 4tipos de datos, los cuales los describimos en la siguiente tabla:

Tipo de Dato Definición Ejemplos.

Entero Valor numérico sin parte decimal. 0, 3, 710,1500.Real Valor numérico con parte decimal. 9.2, 3.141592Lógico Valor booleano, con valores Verdadero o Falso Falso, VerdaderoCaracter Valor alfanumérico, puede ser una letra,

símbolo o número. A, $, s, Hola,Texto.

 Al trabajar en programación, se resuelven casos generales, por lo que esnecesario utilizar VARIABLES que tomaran valores en cada ejecución. Cadavariable debe ser declarada antes de que se utilice. Lo recomendable es hacer ladeclaración de variables al inicio de nuestro programa, y también es una buenapráctica el usar nombres de variables que hagan referencia, por ejemplo, contadorpara una variable que realiza conteo, vel para una variable que representavelocidad, etc.

En PSeInt las variables se declaran de la siguiente manera:

Definir nombre_variable como Tipo_de_Dato;

Con esta instrucción estamos indicando que la variable nombre_variable será deun tipo de dato de los 4 antes expuestos.

Otro tipo de instrucciones son las de entrada y salida, que permiten interactuar conel usuario a manera de mensajes y solicitudes de información.

La instrucción de salida en PSeInt nos permite desplegar un mensaje en pantalla,este mensaje puede ser informativo definido por el programador, o un resultado dealguna operación. Esto se logra mediante el comando Escribir

Escribir "Mensaje a desplegar";

Escribir "Mensaje a desplegar ", valor;

Escribir valor, “Mensaje a desplegar “, valor2; 

 A continuación se muestra un ejemplo de un programa sencillo para desplegar unmensaje.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 7/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

Proceso EscribirMensajeEscribir "Bienvenido a la Clase de Algoritmos";

FinProceso 

Y la salida del mismo nos quedaría de la siguiente manera

En el software PSeInt las instrucciones de entrada de datos se denotan por elsiguiente comando:

Leer variable;

En el cual no importa tanto el tipo de dato, eso lo manejara de manera interna.

Veamos un ejemplo de un programita de PSeInt que realiza una instrucción deentrada.

Proceso LecturaDefinir nombre como Caracter;Escribir "Hola, ¿cómo te llamas?";Leer nombre;Escribir nombre " Es un placer conocerte";

FinProceso

La salida que genera el programa anterior es la siguiente.

La asignación en PSeInt es un tema sencillo también. Basta con hacer uso de lasiguiente notación:

Variable < valor a asignar;

Observe el siguiente ejemplo:

Desarrolle en pseudocódigo un algoritmo que realice la suma de dos númerosenteros.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 8/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

Proceso SumaDeDosNumerosDefinir num1, num2, suma como Entero;Escribir "Este algoritmo realizará la suma de dos

números dados";Escribir "Por favor teclea el primer número";Leer num1;Escribir "Por favor teclea el segundo número";Leer num2;suma<-num1+num2;Escribir "La suma es ", suma;

FinProceso

Ejercicio: Desarrolle en pseudocódigo un algoritmo que calcule el área de unrectángulo a partir de valores dados por el usuario. Procure usar la sintaxis dePSeInt

2.1.1 Funciones Definidas en PSeInt.

Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes.Se coloca su nombre seguido de los argumentos para la misma encerrados entreparéntesis (por ejemplo trunc(x)). Se pueden utilizar dentro de cualquier expresión,y cuando se evalúe la misma, se reemplazará por el resultado correspondiente.

 Actualmente, todas la funciones disponibles son matemáticas (es decir quedevolverán un resultado de tipo numérico) y reciben un sólo parámetro de tiponumérico. A continuación se listan las funciones integradas disponibles:

Función SignificadoRC(X) o RAIZ(X) Raíz Cuadrada de X

 ABS(X) Valor Absoluto de X

LN(X) Logaritmo Natural de X

EXP(X) Función Exponencial de X

SEN(X) Seno de X

COS(X) Coseno de X

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 9/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

TAN(X) Tangente de X

 ASEN(X)  Arcoseno de X

 ACOS(X)  Arcocoseno de X

 ATAN(X)  Arcotangente de X

TRUNC(X) Parte entera de XREDON(X) Entero más cercano a X

 AZAR(X) Entero aleatorio entre 0 y x-1

LONGITUD(S) Cantidad de caracteres de la cadena S

MAYUSCULAS(S) Retorna una copia de la cadena S con todos suscaracteres en mayúsculas

MINUSCULAS(S) Retorna una copia de la cadena S con todos suscaracteres en minúsculas

SUBCADENA(S,X,Y) Retorna una nueva cadena que consiste en laparte de la cadena S que va desde la posición Xhasta la posición Y (incluyendo ambos extremos).

Las posiciones utilizan la misma base que losarreglos, por lo que la primer letra será la 0 o la 1de acuerdo al perfil del lenguaje utilizado.

CONCATENAR(S1,S2) Retorna una nueva cadena resulta de unir lascadenas S1 y S2.

CONVERTIRANUMERO(X) Recibe una cadena de caracteres que contiene unnúmero y devuelve una variable numérica con elmismo.

CONVERTIRATEXTO (S) Recibe un real y devuelve una variable numéricacon la representación como cadena de caracteresde dicho real.

.

2.2 Decisiones o alternativas.

La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sinodepende del valor de una condición lógica.

Si <condición>Entonces

<instrucciones>Sino

<instrucciones>FinSi

 Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan lasinstrucciones que correspondan: las instrucciones que le siguen al Entonces si lacondición es verdadera, o las instrucciones que le siguen al Sino si la condición es

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 10/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

10 

falsa. La condición debe ser una expresión lógica, que al ser evaluada retornaVerdadero o Falso.

La cláusula Entonces  debe aparecer siempre, pero la cláusula Sino  puede noestar. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la

ejecución del programa continúa con la instrucción siguiente. Observe el siguienteejemplo.

Desarrolle en pseudocódigo un algoritmo que indique si un valor dado por elusuario es negativo.

Proceso EsNegativoDefinir numero como Entero;Escribir "Algoritmo que indica si un valor dado es

negativo.";Escribir "Teclea el número a validar:";Leer numero;Si numero<0 Entonces

Escribir "El número que tecleaste es negativo.";Sino

Escribir "El número que tecleaste no es negativo.";FinSi

FinProceso

Y nos produce dos posibles salidas en base a la condición especificada:

Ejercicio: Desarrolle en pseudocódigo un algoritmo que dada una calificación porel usuario nos indique si dicha calificación es aprobatoria o reprobatoria,conociendo que la calificación mínima aprobatoria para la materia es de 6, Procureusar la sintaxis de PSeInt

Otra instrucción condicional que podemos implementar en PSeInt es la Según, lacual es un selector de casos. Es decir, cuando un flujo del programa nos puede

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 11/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

11 

arrojar varias alternativas, es conveniente utilizar esta estructura para manejarlo.Un típico caso de uso es los menús en línea de comandos.

2.3 Repetición o ciclos. Contadores y acumuladores.

Un ciclo o repetición es simplemente repetir una o varias instrucciones mientrasque la condición de control sea cumplida. Debemos tener cuidado con laestructura de ciclo que elegimos, ya que a pesar de que en apariencia realizan lamisma función, existen diferencias puntuales, tal como describimos en lossiguientes párrafos.

Los tres tipos de ciclos que tenemos son los siguientes:

La instrucción Para   ejecuta una secuencia de instrucciones un númerodeterminado de veces.

Para <variable> <- <inicial> Hasta <final> ( Con Paso <paso> )Hacer<instrucciones>

FinPara

 Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta lasecuencia de instrucciones que forma el cuerpo del ciclo. Luego se incrementa lavariable <variable> en <paso> unidades y se evalúa si el valor almacenado en<variable> superó al valor <final>. Si esto es falso se repite hasta que <variable>supere a <final>. Si se omite la cláusula Con Paso <paso>, la variable <variable>se incrementará en 1.

Ejemplo: Un contador del 1 al 10. 

Proceso ContadorDefinir contador como Entero;Escribir "Programa que realiza un conteo del 1 al 10";Para contador<-1 Hasta 10 Con Paso 1 Hacer

Escribir contador;FinPara

FinProceso

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 12/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

12 

La instrucción Repetir-Hasta Que   ejecuta una secuencia de instrucciones hastaque la condición sea verdadera.

Repetir<instrucciones>

Hasta Que <condición>

 Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpodel ciclo se ejecuta una vez y luego se evalúa la condición. Si la condición esfalsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición.Esto se repite hasta que la condición sea verdadera. Note que, dado que lacondición se evalúa al final, las instrucciones del cuerpo del ciclo serán ejecutadasal menos una vez. Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debecontener alguna instrucción que modifique la o las variables involucradas en lacondición de modo que en algún momento la condición sea verdadera y se finalicela ejecución del ciclo.

Ejemplo: Un algoritmo que sume los primeros 10 números, siempre y cuando lasuma no sea mayor a 16.

Proceso ContadorDefinir valor, suma como enterovalor<-1;suma<-0;Repetir

suma=valor+suma;valor=valor+1;

Hasta Que (suma>16 O valor =10)Escribir "La suma fue ",suma," y se interrumpió en el valor

",valor;FinProceso

La instrucción Mientras   ejecuta una secuencia de instrucciones mientras una

condición sea verdadera.

Mientras <condición> Hacer<instrucciones>

FinMientras

 Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resultaverdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpodel ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 13/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

13 

condición y, si es verdadera, la ejecución se repite. Estos pasos se repitenmientras la condición sea verdadera. Note que las instrucciones del cuerpo delciclo pueden no ejecutarse nunca, si al evaluar por primera vez la condiciónresulta ser falsa. Si la condición siempre es verdadera, al ejecutar esta instrucciónse produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo

deben contener alguna instrucción que modifique la o las variables involucradasen la condición, de modo que ésta sea falsificada en algún momento y así finalicela ejecución del ciclo.

Ejemplo: Un algoritmo que dado un valor inicial, realice una operación dedecremento del valor dado inicialmente siempre y cuando este valor sea mayor a0. Es decir, será un contador hacia atrás.

Proceso ContadorAtrasDefinir valor como Entero;Escribir "Dame el valor inicial";

Leer valor;Mientras valor>0 HacerEscribir valor;valor=valor-1;

FinMientrasFinProceso

Cabe destacar dos conceptos básicos en los ciclos:

Contador  es aquel valor que va a ir incrementándose (o decrementándose segúnsea el caso) hasta llegar al valor límite que definimos.

Acumulador es aquella variable que irá acumulando valores según lasoperaciones dentro del ciclo.

Ejercicio: Desarrolle en pseudocódigo un algoritmo que obtenga el promedio de nvalores dados, siendo n un valor introducido por el usuario.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 14/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

14 

U3. Programación Modular

3.1 Concepto de módulo

Basado en la estrategia denominada Divide y Vencerás, la modularidad consiste

en dividir el código en módulos que realice cada uno alguna tarea específica. Enese sentido, un módulo (también conocido como SubProceso o subrutina)  esparte de un programa que realiza una tarea concreta mediante una serie deinstrucciones.

Las ventajas de usar módulos en el desarrollo de nuestros programas son:

➲Facilitan la escritura y depuración de un programa➲Localización rápida de errores➲La modificación de un módulo no afecta a los demás➲Un grupo de instrucciones que se repite en varias partes de un programa puede

incluirse en un módulo y llamarlo en el programa.

3.2 Características de un módulo.

Un módulo o función tiene las siguientes características:

  Puede tener uno o más parámetros de entrada.  Puede tener un parámetro exclusivamente de salida y de tipo simple (es

decir, lo que devuelve). Muchos lenguajes de programación no requieren elhecho de que el parámetro sea simple pero en esta asignatura seconsiderará la versión más purista.

  Cuando existen, todos los valores de entrada son necesarios y suficientespara determinar el valor de salida.

La sintaxis de un módulo puede ser como la siguiente:

SubProceso variable_de_retorno <- Nombre_Modulo ( parametro )//Bloque de instrucciones que realizará este modulo

FinSubProceso

Como vemos en el ejemplo, el modulo recibe parámetros de entrada y retornara

un valor como parámetro de salida. Esto significa que desde el programa principalse le envía una variable con valor, la cual será utilizada para producir un valor desalida. Dentro del módulo pueden crearse tantas variables como nos requiera elcálculo para producir el valor de salida.

Ejercicio: Desarrolle un algoritmo en pseudocódigo que reciba dos valoresnuméricos y mediante un módulo reciba los dos números, realice una comparacióny retorne el número mayor.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 15/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

15 

3.3 Técnicas de diseño modular.

Método de Diseño Descendente (Top-Down) 

Fue presentado por primera vez por Niklaus Wirth. Es un proceso de refinamientoen el que un problema se divide en una serie de niveles, partiendo desde logeneral hasta lo especifico. Hay autores que utilizan el diseño descendente y laprogramación modular como sinónimos.

Método de Diseño Ascendente (Bottom-Up)

El diseño ascendente se refiere a la identificación de aquellos procesos quenecesitan computarizarse conforme vayan apareciendo, su análisis como sistemay su codificación, o bien, la adquisición de paquetes de software para satisfacer elproblema inmediato.

 Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contemplaal sistema como una entidad global, éste padece de ciertas limitaciones por habertomado un enfoque ascendente. Una de ellas es la duplicación de esfuerzos paraaccesar el software y más aún al introducir los datos. Otro es que se introducen alsistema muchos datos carentes de valor. Un tercero y tal vez el más serioinconveniente del enfoque ascendente, es que los objetivos globales de laorganización no fueron considerados y en consecuencia no se satisfacen. Sobradecir que esta técnica de diseño es la menos usada por sus múltiplesinconvenientes.

Método de la Línea Recta

Este método es excelente para diseñar programas pequeños, programascomplejos o para utilizarse como complemento a la modularización. Consiste enestructurar el flujo del programa para el caso de la solución más simple y fácil delproblema, sin tomar en cuenta casos especiales, validaciones ni decisiones queprovoquen bifurcaciones. De esta manera se construye un diseño inicial fácil decomprender y verificar.

Una vez completado este diseño inicial y comprobada su correctitud, se procede a

agregar por pasos las rutas alternas que representan las diferentes condicionesdel planteamiento, lo cual significa añadir flujos de control adicionales y se pruebaiterativamente el programa con cada nueva bifurcación que se añada paraasegurar que se mantiene la correctitud. Cuando todas las condiciones se hanintegrado al diseño, se proceden a agregar uno a uno los casos especiales que seespera maneje el programa, probando también cada nueva adición para continuargarantizando la fiabilidad de la estructura.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 16/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

16 

Por último se añaden las validaciones a los datos de entrada, las de los datosintermedios producidos a lo interno para utilizarse en la generación de los datos desalida, y los datos de salida mismos, por supuesto. Estas validaciones se integrantambién de manera incremental, procurando no alterar el estado del diseñoalcanzado en las operaciones anteriores. Al final de todo este proceso se obtendrá

un diseño final completo, confiable y seguro. Aunque el método implica tiempo yesfuerzo adicional, es muy adecuado para principiantes y para la solución deproblemas complejos que requieran un diseño fino y bien organizado.

Enfoque E-P-S

Este enfoque se fundamenta en el método de diseño Top-Down. Con este enfoqueel programa se divide en 3 módulos bien diferenciados: el de Entrada , el deProcesamiento   y el de Salida . De ahí su nombre. Todos los módulos sedesarrollan y prueban de manera independiente, lo que permite al programadorconcentrarse en las funciones específicas de cada uno y evitar la carga mental de

pensar en la solución total del problema y la ofuscación en el diseño eimplementación del programa completo.

3.4 Abstracción modular y parámetros.

Debemos pensar al módulo como una caja negra. Cuando trabajamos conmódulos, cada uno de ellos especifica que se hace, pero no como se hace. Losdistintos componentes de una solución deben mantenerse aislados unos de otros.

En ese sentido, la abstracción modular separa el propósito del programa de suimplementación. Esto quiere decir, que una vez escrito el programa puede serusado sin la necesidad de conocer las particularidades de su algoritmo, tan solotener una definición de cómo funciona y los parámetros que necesita.

Cuando utilizamos módulos, normalmente se le envían parámetros de entrada queel modulo utilizara para realizar sus operaciones. Por una parte tenemos losparámetros Actuales o Reales que son los que se escriben en la instrucción dellamada

Nombre_modulo (pr1, pr2,..., prN);

Mientras que los parámetros Formales o Ficticios  son los que aparecen en ladeclaración del módulo.

acción Nombre_modulo(pf1,pf2,...,pfN)

Los parámetros deben corresponder de la siguiente manera: Debe haber el mismonúmero de parámetros en la llamada y en la declaración, además de ser delmismo tipo y estar colocados en el mismo orden.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 17/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

17 

3.5 Recursividad

La recursividad se da gracias a la modularidad, concepto que se amplía en lasiguiente unidad, ya que la recursividad es que un módulo, método o subrutina sellame a sí mismo. Para poder escribir un método recursivo debemos considerardos tipos de casos:

El caso base: contiene una condición de terminación o de limite.

El caso recursivo o general: debe de haber un progreso con tendencia al casobase.

Ejemplo: El factorial de un número x se obtiene de multiplicar el número por todossus antecesores hasta llegar al 1. Para el factorial de 3, denotado como 3!Tenemos que 3! = 3x2x1. Escriba un método recursivo que realice el cálculo delfactorial de cualquier número.

//subrutina o modulo factorialSubProceso fact <- factory ( n )

Si n<=1 Entonces fact<- 1;

Sino

fact<-n*factory(n-1);FinSi

FinSubProceso

Proceso Factorial

Escribir "Teclea el numero al que se le calcularael factorial";Leer n;fact<-factory(n);Escribir "El valor del factorial es: ", fact;

FinProceso

U4. Estructuras de Datos Básicas

4.1 Estructuras lineales que guardan datos de un mismo tipo.

En ocasiones los programas que intentamos resolver requieren que se almacenenvalores que son de un mismo tipo, es decir, almacenar un rango de temperaturas.Considere un programa que realiza una medición de la precipitación pluvial delmes de julio, para arrojar una media mensual. Como se manejara el mismo tipo dedato, podemos declarar 31 variables para almacenar el valor o bien, declarar unasola variable de tipo arreglo para almacenar en cada posición del arreglo el valorpluvial de cada día. Vamos a definir cada estructura a continuación.

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 18/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

18 

Arreglo: Estructura que permite almacenar datos de un mismo tipo, que secaracteriza por estar limitada. Esto significa que desde su definición declaramoscuál será su longitud.

Vector: Estructura similar al arreglo, pero con la particularidad de que no tiene

límites cuando es creada. Esto es, que al momento de ser declarada se leconsidera una estructura vacía, sin reservar espacio alguno en ese momento sinocuando empieza a ser trabajada.

Matrices: Una matriz no es más que un arreglo pero de dos dimensiones. Estosería más sencillo de representar si analizamos el ejemplo

Arreglo(3;3) =

Listas: Son colecciones lineales de objetos de un mismo tipo, que en estecontexto son conocidos como nodos y que están conectados por enlaces dereferencia. Aquí es necesario hacer notar que a diferencia del arreglo donde suselementos suelen estar contiguos en memoria y su acceso es directo, en la lista serequiere recorrer desde el inicio para localizar a un elemento.

 Arreglo Lista

4.2 Estructuras lineales que guardan datos de diferentes tipos (registros).

Los registros son estructuras de datos formadas por elementos de diversos tipos

que hacen relación a un mismo ente. En la programación orientada a objetos, elbloque central es el objeto, y este puede tener atributos que definan sucomportamiento. En ese sentido, podemos considerar que un registro es unarreglo de objetos. Considere este ejemplo:

Objeto: Alumno. Atributos: ID (numérico), Nombre (texto), Semestre (numérico), Carrera (texto).

(1,1) (1,2) (1,3)

(2,1) (2,2) (2,3)

3,1 3,2 3,3

a b c d e f a

b c d e

f

7/18/2019 Antologia de Algoritmos

http://slidepdf.com/reader/full/antologia-de-algoritmos 19/19

  Universidad Interamericana del Norte Algoritmos - LIISM12Campus Tampico ISC. Daniel Maupomé

19 

Como observamos, son dos valores numéricos y dos valores de tipo texto, los quenos permiten identificar a un alumno. Manejar 4 índices puede resultar complejo.En ese sentido, se crea un registro que contiene los 4 índices, manipulando asísolo una estructura de datos.

Esta situación nace de la manera en la que administra los datos una base dedatos. Cuando insertas datos normalmente se hace por fila entera y cada filapuede contener X número de columnas, que serían los atributos.

4.3 Estructuras para guardar información en almacenamiento secundario(archivo).

Cuando manejaremos un gran número de registros, lo recomendable es hacer usodel volcado en soportes externos, como son archivos. Utilizando algunas líneas decódigo podemos hacer que nuestros registros sean almacenados en un archivo

con una extensión propia de nuestro programa, de tal manera que solo este seacapaz de leerla, o bien, una extensión conocida. Pero es importante tener encuenta que el flujo de información es tanto de salida como de entrada, así quedebe haber un módulo de escritura de archivo y otro módulo de lectura de archivo,para satisfacer la necesidad del software.

Ventajas de utilizar archivos para guardar información:

• Almacenamiento permanente• Manipulación de un gran número de datos• Independencia de los programas• Residentes en soportes externos