Está en la página 1de 19

Universidad Interamericana del Norte

Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Algoritmos Computacionales
Objetivo General
Aplicar conceptos y procedimientos fundamentales de programacin de manera
que el profesional pueda garantizar el desarrollo de programas claros, confiables y
de fcil mantenimiento que den solucin a problemas.
Unidad 1. Introduccin a la programacin
1.1 Definicin de programa y programacin.
1.2 Caractersticas de un programa
1.3 Modelos de programacin
1.4 Clasificacin de lenguajes de programacin
1.5 Simbologa de un Diagrama de Flujo
1.6 Programacin estructurada
Unidad 2. Estructuras algortmicas bsicas
2.1 instrucciones de entrada, salida y asignacin. Secuencia de instrucciones
2.2 Decisiones o alternativas
2.3 Repeticin o ciclos. Contadores y acumuladores
2.4 Recursividad
Unidad 3. Programacin modular
3.1 Concepto de modulo
3.2 Caractersticas de un mdulo.
3.3 Tcnicas de diseo modular
3.4 Abstraccin modular y parmetros.
Unidad 4. Estructuras de datos bsicas
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 informacin en almacenamiento secundario
(Archivos)
Unidad 5. Programacin orientada a objetos
5.1 Terminologa y conceptos bsicos. Importancia y beneficios.
5.2 Abstraccin de datos
5.3 Aplicaciones usando objetos predefinidos.

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

U1. Introduccin a la programacin.


1.1 Definicin de programa y programacin
Algoritmo
Es una estrategia para resolver un problema, que tiene un nmero finito de pasos
claramente establecidos, los cuales devuelven un resultado.
Programa.
Es un conjunto de instrucciones que indican a la maquina las operaciones que
esta debe realizar con unos datos determinados. Como puede verse en la imagen
COMPUTADORA
DATOS DE
ENTRADA

DATOS DE
SALIDA
PROGRAMA

Por programacin podramos decir que son los pasos que se abordan para crear
el cdigo fuente de un programa informtico.

1.2 Caractersticas de un programa

Un buen programa
debe tener las
siguientes
caractersticas

Integridad: Debe ser exacto en sus clculos y confiable en su


resultado
Claridad: Debe ser fcil de leerse. Respetar reglas de identacin y
separacin.
Sencillez: Debe tener instrucciones sencillas.
Eficiencia: Debe ser veloz al ejecutarse y utilizar la memoria
eficientemente.
Modularidad: Debe tener divisin 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
Presentacin: Interfaces graficas de usuario sencillas, claras y
fciles de manejar.
Documentacin: Describir la funcin de cada parte del programa y
actualizarla con cada cambio.
2

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

1.3 Modelos de programacin.


En los primeros aos de la programacin, se utilizaba el modelo de Programacin
Estructurada, que tena como particularidad que siempre existe un control de la
ejecucin; esto es, que las instrucciones se ejecutaban de manera secuencial,
existiendo un orden inquebrantable. Bsicamente un programa elaborado bajo el
esquema de programacin estructurada consta de 3 instrucciones de control:
Secuencial, que es cuando se ejecutan las instrucciones de manera ordenada.
Condicional, cuando existe una situacin que te hace proceder de una u otra
manera, es decir, te presenta dos posibles caminos a tomar.
De iteracin, que es cuando una instruccin puede ejecutarse varias veces segn
la condicin de paro determinada.
Al pasar los aos, la programacin estructurada se vio rebasada por las
necesidades del rea computacional, dando paso al surgimiento de la
Programacin Orientada a Objetos. Este modelo se centra en la construccin
de 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 Programacin Orientada a Eventos, en la
cual la estructura y ejecucin del programa se rigen por los eventos generados por
el usuario y en ocasiones por el mismo programa. En esta situacin 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 Clasificacin de lenguajes de programacin.

Lenguaje mquina. Es el lenguaje natural de una mquina. Se basa en el


sistema binario, es decir impulsos electrnicos representados por 0 y 1.
Difcilmente es comprensible para nosotros el lenguaje mquina, as que se
opt por el desarrollo del lenguaje ensamblador
Lenguaje ensamblador. Era el encargado de realizar la traduccin al
lenguaje mquina de lo que nosotros queramos que la computadora
realizara. Normalmente se basaba en instrucciones cortas, pero tena el
inconveniente que la arquitectura del procesador era variable, por lo que
cada procesador manejaba su propio lenguaje ensamblador. Ante esa
situacin se requera un lenguaje que pudiera funcionar en cualquier
maquina independientemente de su arquitectura.
Lenguajes de alto nivel. Basado en instrucciones normalmente en ingls,
por el hecho de que son palabras cortas, y respetando la notacin
3

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

matemtica comn, podan escribirse instrucciones individuales para


realizar tareas complejas. Su caracterstica ms importante es que
incorporaban su propio traductor llamado compilador, el cual se encarga de
traducir los cdigos de programas de alto nivel a lenguaje mquina.

1.5 Simbologa para diagrama de flujo.


Partiendo del antecedente de que el diagrama de flujo es una representacin
grfica, es preciso saber que se requiere cierta simbologa que se utilice en la
construccin de diagramas de flujo. Para ello y con la finalidad de normar los
smbolos, la American National Standard Institute (ANSI) sugiere la utilizacin de
los siguientes smbolos (solo se representan los relativos a algoritmos
computacionales).
Smbolo

Representa
Inicio - Fin
Operacin Proceso
Decisin Alternativa

Impresin - Documento

Nota Aclaratoria

Ingreso de Informacin

Conector de Pgina

1.6 Programacin Estructurada


.
En este punto, es importante mencionar que antes de empezar a programar,
debemos empezar a crearnos mente de programador. Esto quiere decir, que
debemos desarrollar una lgica que nos permita abordar cualquier problema
4

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

cotidiano e implementar un algoritmo que le d solucin al problema. En este


sentido, abordaremos la programacin estructurada a partir de la unidad 2 pero a
manera de pseudocdigo. El pseudocdigo es una descripcin de un algoritmo
informtico en un lenguaje compacto e informal, que utiliza las convenciones
estructurales de un lenguaje de programacin verdadero.
El tipo de pseudocdigo que utilizaremos en el desarrollo de nuestros ejercicios
ser el que utiliza el software PSeInt, que es un pseudocdigo completamente en
espaol.
Si desean descargar el programa PSeInt deben ingresar a esta direccin:
http://pseint.sourceforge.net/index.php?page=descargas.php
Ah debern seleccionar el Instalador para Windows.
Una vez descargado deben instalarlo en su equipo para poder hacer uso del
programa.
En esta direccin electrnica encontraran un breve manual de cmo funciona
PSeInt. De igual manera, iremos ejemplificando a partir de la prxima unidad
http://pseint.sourceforge.net/pseudocodigo.php

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

U2. Estructuras Algortmicas Bsicas


2.1 Instrucciones de entrada, salida y asignacin. Secuencia de
instrucciones.
Lo primero que debemos de conocer de PSeInt es que nos permite manejar 4
tipos de datos, los cuales los describimos en la siguiente tabla:
Tipo de Dato
Entero
Real
Lgico
Caracter

Definicin
Valor numrico sin parte decimal.
Valor numrico con parte decimal.
Valor booleano, con valores Verdadero o Falso
Valor alfanumrico, puede ser una letra,
smbolo o nmero.

Ejemplos.
0, 3, 710,1500.
9.2, 3.141592
Falso, Verdadero
A, $, s, Hola,
Texto.

Al trabajar en programacin, se resuelven casos generales, por lo que es


necesario utilizar VARIABLES que tomaran valores en cada ejecucin. Cada
variable debe ser declarada antes de que se utilice. Lo recomendable es hacer la
declaracin de variables al inicio de nuestro programa, y tambin es una buena
prctica el usar nombres de variables que hagan referencia, por ejemplo, contador
para una variable que realiza conteo, vel para una variable que representa
velocidad, etc.
En PSeInt las variables se declaran de la siguiente manera:
Definir nombre_variable como Tipo_de_Dato;
Con esta instruccin estamos indicando que la variable nombre_variable ser de
un tipo de dato de los 4 antes expuestos.
Otro tipo de instrucciones son las de entrada y salida, que permiten interactuar con
el usuario a manera de mensajes y solicitudes de informacin.
La instruccin de salida en PSeInt nos permite desplegar un mensaje en pantalla,
este mensaje puede ser informativo definido por el programador, o un resultado de
alguna operacin. Esto se logra mediante el comando Escribir
Escribir "Mensaje a desplegar";
Escribir "Mensaje a desplegar ", valor;
Escribir valor, Mensaje a desplegar , valor2;
A continuacin se muestra un ejemplo de un programa sencillo para desplegar un
mensaje.

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Proceso EscribirMensaje
Escribir "Bienvenido a la Clase de Algoritmos";
FinProceso
Y la salida del mismo nos quedara de la siguiente manera

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


siguiente 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 instruccin de
entrada.
Proceso Lectura
Definir nombre como Caracter;
Escribir "Hola, cmo te llamas?";
Leer nombre;
Escribir nombre " Es un placer conocerte";
FinProceso
La salida que genera el programa anterior es la siguiente.

La asignacin en PSeInt es un tema sencillo tambin. Basta con hacer uso de la


siguiente notacin:
Variable <- valor a asignar;
Observe el siguiente ejemplo:
Desarrolle en pseudocdigo un algoritmo que realice la suma de dos nmeros
enteros.
7

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Proceso SumaDeDosNumeros
Definir num1, num2, suma como Entero;
Escribir "Este algoritmo realizar la suma de dos
nmeros dados";
Escribir "Por favor teclea el primer nmero";
Leer num1;
Escribir "Por favor teclea el segundo nmero";
Leer num2;
suma<-num1+num2;
Escribir "La suma es ", suma;
FinProceso

Ejercicio: Desarrolle en pseudocdigo un algoritmo que calcule el rea de un


rectngulo a partir de valores dados por el usuario. Procure usar la sintaxis de
PSeInt

2.1.1 Funciones Definidas en PSeInt.


Las funciones en el pseudocdigo se utilizan de forma similar a otros lenguajes.
Se coloca su nombre seguido de los argumentos para la misma encerrados entre
parntesis (por ejemplo trunc(x)). Se pueden utilizar dentro de cualquier expresin,
y cuando se evale la misma, se reemplazar por el resultado correspondiente.
Actualmente, todas la funciones disponibles son matemticas (es decir que
devolvern un resultado de tipo numrico) y reciben un slo parmetro de tipo
numrico. A continuacin se listan las funciones integradas disponibles:
Funcin
RC(X) o RAIZ(X)
ABS(X)
LN(X)
EXP(X)
SEN(X)
COS(X)

Significado
Raz Cuadrada de X
Valor Absoluto de X
Logaritmo Natural de X
Funcin Exponencial de X
Seno de X
Coseno de X
8

Universidad Interamericana del Norte


Campus Tampico
TAN(X)
ASEN(X)
ACOS(X)
ATAN(X)
TRUNC(X)
REDON(X)
AZAR(X)
LONGITUD(S)
MAYUSCULAS(S)
MINUSCULAS(S)
SUBCADENA(S,X,Y)

CONCATENAR(S1,S2)
CONVERTIRANUMERO(X)
CONVERTIRATEXTO (S)

Algoritmos - LIISM12
ISC. Daniel Maupom

Tangente de X
Arcoseno de X
Arcocoseno de X
Arcotangente de X
Parte entera de X
Entero ms cercano a X
Entero aleatorio entre 0 y x-1
Cantidad de caracteres de la cadena S
Retorna una copia de la cadena S con todos sus
caracteres en maysculas
Retorna una copia de la cadena S con todos sus
caracteres en minsculas
Retorna una nueva cadena que consiste en la
parte de la cadena S que va desde la posicin X
hasta la posicin Y (incluyendo ambos extremos).
Las posiciones utilizan la misma base que los
arreglos, por lo que la primer letra ser la 0 o la 1
de acuerdo al perfil del lenguaje utilizado.
Retorna una nueva cadena resulta de unir las
cadenas S1 y S2.
Recibe una cadena de caracteres que contiene un
nmero y devuelve una variable numrica con el
mismo.
Recibe un real y devuelve una variable numrica
con la representacin como cadena de caracteres
de dicho real.

2.2 Decisiones o alternativas.


La secuencia de instrucciones ejecutadas por la instruccin Si-Entonces-Sino
depende del valor de una condicin lgica.
Si <condicin>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi

Al ejecutarse esta instruccin, se evala la condicin y se ejecutan las


instrucciones que correspondan: las instrucciones que le siguen al Entonces si la
condicin es verdadera, o las instrucciones que le siguen al Sino si la condicin es
9

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

falsa. La condicin debe ser una expresin lgica, que al ser evaluada retorna
Verdadero o Falso.
La clusula Entonces debe aparecer siempre, pero la clusula Sino puede no
estar. En ese caso, si la condicin es falsa no se ejecuta ninguna instruccin y la
ejecucin del programa contina con la instruccin siguiente. Observe el siguiente
ejemplo.
Desarrolle en pseudocdigo un algoritmo que indique si un valor dado por el
usuario es negativo.
Proceso EsNegativo
Definir numero como Entero;
Escribir "Algoritmo que indica si un valor dado es
negativo.";
Escribir "Teclea el nmero a validar:";
Leer numero;
Si numero<0 Entonces
Escribir "El nmero que tecleaste es negativo.";
Sino
Escribir "El nmero que tecleaste no es negativo.";
FinSi
FinProceso
Y nos produce dos posibles salidas en base a la condicin especificada:

Ejercicio: Desarrolle en pseudocdigo un algoritmo que dada una calificacin por


el usuario nos indique si dicha calificacin es aprobatoria o reprobatoria,
conociendo que la calificacin mnima aprobatoria para la materia es de 6, Procure
usar la sintaxis de PSeInt
Otra instruccin condicional que podemos implementar en PSeInt es la Segn, la
cual es un selector de casos. Es decir, cuando un flujo del programa nos puede
10

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

arrojar varias alternativas, es conveniente utilizar esta estructura para manejarlo.


Un tpico caso de uso es los mens en lnea de comandos.

2.3 Repeticin o ciclos. Contadores y acumuladores.


Un ciclo o repeticin es simplemente repetir una o varias instrucciones mientras
que la condicin de control sea cumplida. Debemos tener cuidado con la
estructura de ciclo que elegimos, ya que a pesar de que en apariencia realizan la
misma funcin, existen diferencias puntuales, tal como describimos en los
siguientes prrafos.
Los tres tipos de ciclos que tenemos son los siguientes:
La instruccin Para ejecuta una secuencia de instrucciones un nmero
determinado 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 la


secuencia de instrucciones que forma el cuerpo del ciclo. Luego se incrementa la
variable <variable> en <paso> unidades y se evala 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 clusula Con Paso <paso>, la variable <variable>
se incrementar en 1.
Ejemplo: Un contador del 1 al 10.
Proceso Contador
Definir 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

11

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

La instruccin Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta


que la condicin sea verdadera.
Repetir
<instrucciones>
Hasta Que <condicin>

Al ejecutarse esta instruccin, la secuencia de instrucciones que forma el cuerpo


del ciclo se ejecuta una vez y luego se evala la condicin. Si la condicin es
falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condicin.
Esto se repite hasta que la condicin sea verdadera. Note que, dado que la
condicin se evala al final, las instrucciones del cuerpo del ciclo sern ejecutadas
al menos una vez. Adems, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe
contener alguna instruccin que modifique la o las variables involucradas en la
condicin de modo que en algn momento la condicin sea verdadera y se finalice
la ejecucin del ciclo.
Ejemplo: Un algoritmo que sume los primeros 10 nmeros, siempre y cuando la
suma no sea mayor a 16.
Proceso Contador
Definir valor, suma como entero
valor<-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 instruccin Mientras ejecuta una secuencia de instrucciones mientras una


condicin sea verdadera.
Mientras <condicin> Hacer
<instrucciones>
FinMientras

Al ejecutarse esta instruccin, la condicin es evaluada. Si la condicin resulta


verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo
del ciclo. Al finalizar la ejecucin del cuerpo del ciclo se vuelve a evaluar la
12

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

condicin y, si es verdadera, la ejecucin se repite. Estos pasos se repiten


mientras la condicin sea verdadera. Note que las instrucciones del cuerpo del
ciclo pueden no ejecutarse nunca, si al evaluar por primera vez la condicin
resulta ser falsa. Si la condicin siempre es verdadera, al ejecutar esta instruccin
se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo
deben contener alguna instruccin que modifique la o las variables involucradas
en la condicin, de modo que sta sea falsificada en algn momento y as finalice
la ejecucin del ciclo.
Ejemplo: Un algoritmo que dado un valor inicial, realice una operacin de
decremento del valor dado inicialmente siempre y cuando este valor sea mayor a
0. Es decir, ser un contador hacia atrs.
Proceso ContadorAtras
Definir valor como Entero;
Escribir "Dame el valor inicial";
Leer valor;
Mientras valor>0 Hacer
Escribir valor;
valor=valor-1;
FinMientras
FinProceso

Cabe destacar dos conceptos bsicos en los ciclos:


Contador es aquel valor que va a ir incrementndose (o decrementndose segn
sea el caso) hasta llegar al valor lmite que definimos.
Acumulador es aquella variable que ir acumulando valores segn las
operaciones dentro del ciclo.
Ejercicio: Desarrolle en pseudocdigo un algoritmo que obtenga el promedio de n
valores dados, siendo n un valor introducido por el usuario.

13

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

U3. Programacin Modular


3.1 Concepto de mdulo
Basado en la estrategia denominada Divide y Vencers, la modularidad consiste
en dividir el cdigo en mdulos que realice cada uno alguna tarea especfica. En
ese sentido, un mdulo (tambin conocido como SubProceso o subrutina) es
parte de un programa que realiza una tarea concreta mediante una serie de
instrucciones.
Las ventajas de usar mdulos en el desarrollo de nuestros programas son:
Facilitan la escritura y depuracin de un programa
Localizacin rpida de errores
La modificacin de un mdulo no afecta a los dems
Un grupo de instrucciones que se repite en varias partes de un programa puede
incluirse en un mdulo y llamarlo en el programa.

3.2 Caractersticas de un mdulo.


Un mdulo o funcin tiene las siguientes caractersticas:

Puede tener uno o ms parmetros de entrada.


Puede tener un parmetro exclusivamente de salida y de tipo simple (es
decir, lo que devuelve). Muchos lenguajes de programacin no requieren el
hecho de que el parmetro sea simple pero en esta asignatura se
considerar la versin ms purista.
Cuando existen, todos los valores de entrada son necesarios y suficientes
para determinar el valor de salida.

La sintaxis de un mdulo 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 parmetros de entrada y retornara
un valor como parmetro de salida. Esto significa que desde el programa principal
se le enva una variable con valor, la cual ser utilizada para producir un valor de
salida. Dentro del mdulo pueden crearse tantas variables como nos requiera el
clculo para producir el valor de salida.
Ejercicio: Desarrolle un algoritmo en pseudocdigo que reciba dos valores
numricos y mediante un mdulo reciba los dos nmeros, realice una comparacin
y retorne el nmero mayor.
14

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

3.3 Tcnicas de diseo modular.


Mtodo de Diseo Descendente (Top-Down)
Fue presentado por primera vez por Niklaus Wirth. Es un proceso de refinamiento
en el que un problema se divide en una serie de niveles, partiendo desde lo
general hasta lo especifico. Hay autores que utilizan el diseo descendente y la
programacin modular como sinnimos.

Mtodo de Diseo Ascendente (Bottom-Up)


El diseo ascendente se refiere a la identificacin de aquellos procesos que
necesitan computarizarse conforme vayan apareciendo, su anlisis como sistema
y su codificacin, o bien, la adquisicin de paquetes de software para satisfacer el
problema inmediato.
Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla
al sistema como una entidad global, ste padece de ciertas limitaciones por haber
tomado un enfoque ascendente. Una de ellas es la duplicacin de esfuerzos para
accesar el software y ms an al introducir los datos. Otro es que se introducen al
sistema muchos datos carentes de valor. Un tercero y tal vez el ms serio
inconveniente del enfoque ascendente, es que los objetivos globales de la
organizacin no fueron considerados y en consecuencia no se satisfacen. Sobra
decir que esta tcnica de diseo es la menos usada por sus mltiples
inconvenientes.
Mtodo de la Lnea Recta
Este mtodo es excelente para disear programas pequeos, programas
complejos o para utilizarse como complemento a la modularizacin. Consiste en
estructurar el flujo del programa para el caso de la solucin ms simple y fcil del
problema, sin tomar en cuenta casos especiales, validaciones ni decisiones que
provoquen bifurcaciones. De esta manera se construye un diseo inicial fcil de
comprender y verificar.
Una vez completado este diseo inicial y comprobada su correctitud, se procede a
agregar por pasos las rutas alternas que representan las diferentes condiciones
del planteamiento, lo cual significa aadir flujos de control adicionales y se prueba
iterativamente el programa con cada nueva bifurcacin que se aada para
asegurar que se mantiene la correctitud. Cuando todas las condiciones se han
integrado al diseo, se proceden a agregar uno a uno los casos especiales que se
espera maneje el programa, probando tambin cada nueva adicin para continuar
garantizando la fiabilidad de la estructura.
15

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Por ltimo se aaden las validaciones a los datos de entrada, las de los datos
intermedios producidos a lo interno para utilizarse en la generacin de los datos de
salida, y los datos de salida mismos, por supuesto. Estas validaciones se integran
tambin de manera incremental, procurando no alterar el estado del diseo
alcanzado en las operaciones anteriores. Al final de todo este proceso se obtendr
un diseo final completo, confiable y seguro. Aunque el mtodo implica tiempo y
esfuerzo adicional, es muy adecuado para principiantes y para la solucin de
problemas complejos que requieran un diseo fino y bien organizado.
Enfoque E-P-S
Este enfoque se fundamenta en el mtodo de diseo Top-Down. Con este enfoque
el programa se divide en 3 mdulos bien diferenciados: el de Entrada, el de
Procesamiento y el de Salida. De ah su nombre. Todos los mdulos se
desarrollan y prueban de manera independiente, lo que permite al programador
concentrarse en las funciones especficas de cada uno y evitar la carga mental de
pensar en la solucin total del problema y la ofuscacin en el diseo e
implementacin del programa completo .

3.4 Abstraccin modular y parmetros.


Debemos pensar al mdulo como una caja negra. Cuando trabajamos con
mdulos, cada uno de ellos especifica que se hace, pero no como se hace. Los
distintos componentes de una solucin deben mantenerse aislados unos de otros.
En ese sentido, la abstraccin modular separa el propsito del programa de su
implementacin. Esto quiere decir, que una vez escrito el programa puede ser
usado sin la necesidad de conocer las particularidades de su algoritmo, tan solo
tener una definicin de cmo funciona y los parmetros que necesita.
Cuando utilizamos mdulos, normalmente se le envan parmetros de entrada que
el modulo utilizara para realizar sus operaciones. Por una parte tenemos los
parmetros Actuales o Reales que son los que se escriben en la instruccin de
llamada
Nombre_modulo (pr1, pr2,..., prN);
Mientras que los parmetros Formales o Ficticios son los que aparecen en la
declaracin del mdulo.
accin Nombre_modulo(pf1,pf2,...,pfN)
Los parmetros deben corresponder de la siguiente manera: Debe haber el mismo
nmero de parmetros en la llamada y en la declaracin, adems de ser del
mismo tipo y estar colocados en el mismo orden.
16

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

3.5 Recursividad
La recursividad se da gracias a la modularidad, concepto que se ampla en la
siguiente unidad, ya que la recursividad es que un mdulo, mtodo o subrutina se
llame a s mismo. Para poder escribir un mtodo recursivo debemos considerar
dos tipos de casos:
El caso base: contiene una condicin de terminacin o de limite.
El caso recursivo o general: debe de haber un progreso con tendencia al caso
base.
Ejemplo: El factorial de un nmero x se obtiene de multiplicar el nmero por todos
sus antecesores hasta llegar al 1. Para el factorial de 3, denotado como 3!
Tenemos que 3! = 3x2x1. Escriba un mtodo recursivo que realice el clculo del
factorial de cualquier nmero.
//subrutina o modulo factorial
SubProceso 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 calculara
el factorial";
Leer n;
fact<-factory(n);
Escribir "El valor del factorial es: ", fact;
FinProceso

U4. Estructuras de Datos Bsicas


4.1 Estructuras lineales que guardan datos de un mismo tipo.
En ocasiones los programas que intentamos resolver requieren que se almacenen
valores que son de un mismo tipo, es decir, almacenar un rango de temperaturas.
Considere un programa que realiza una medicin de la precipitacin pluvial del
mes de julio, para arrojar una media mensual. Como se manejara el mismo tipo de
dato, podemos declarar 31 variables para almacenar el valor o bien, declarar una
sola variable de tipo arreglo para almacenar en cada posicin del arreglo el valor
pluvial de cada da. Vamos a definir cada estructura a continuacin.

17

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Arreglo: Estructura que permite almacenar datos de un mismo tipo, que se


caracteriza por estar limitada. Esto significa que desde su definicin declaramos
cul ser su longitud.
Vector: Estructura similar al arreglo, pero con la particularidad de que no tiene
lmites cuando es creada. Esto es, que al momento de ser declarada se le
considera una estructura vaca, sin reservar espacio alguno en ese momento sino
cuando empieza a ser trabajada.
Matrices: Una matriz no es ms que un arreglo pero de dos dimensiones. Esto
sera ms sencillo de representar si analizamos el ejemplo

Arreglo(3;3) =

(1,1)

(1,2)

(1,3)

(2,1)

(2,2)

(2,3)

(3,1)

(3,2)

(3,3)

Listas: Son colecciones lineales de objetos de un mismo tipo, que en este


contexto son conocidos como nodos y que estn conectados por enlaces de
referencia. Aqu es necesario hacer notar que a diferencia del arreglo donde sus
elementos suelen estar contiguos en memoria y su acceso es directo, en la lista se
requiere recorrer desde el inicio para localizar a un elemento.
a

b
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 relacin a un mismo ente. En la programacin orientada a objetos, el
bloque central es el objeto, y este puede tener atributos que definan su
comportamiento. En ese sentido, podemos considerar que un registro es un
arreglo de objetos. Considere este ejemplo:
Objeto: Alumno.
Atributos: ID (numrico), Nombre (texto), Semestre (numrico), Carrera (texto).
18

Universidad Interamericana del Norte


Campus Tampico

Algoritmos - LIISM12
ISC. Daniel Maupom

Como observamos, son dos valores numricos y dos valores de tipo texto, los que
nos 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 situacin nace de la manera en la que administra los datos una base de
datos. Cuando insertas datos normalmente se hace por fila entera y cada fila
puede contener X nmero de columnas, que seran los atributos.

4.3 Estructuras para guardar informacin en almacenamiento secundario


(archivo).
Cuando manejaremos un gran nmero de registros, lo recomendable es hacer uso
del volcado en soportes externos, como son archivos. Utilizando algunas lneas de
cdigo podemos hacer que nuestros registros sean almacenados en un archivo
con una extensin propia de nuestro programa, de tal manera que solo este sea
capaz de leerla, o bien, una extensin conocida. Pero es importante tener en
cuenta que el flujo de informacin es tanto de salida como de entrada, as que
debe haber un mdulo de escritura de archivo y otro mdulo de lectura de archivo,
para satisfacer la necesidad del software.
Ventajas de utilizar archivos para guardar informacin:
Almacenamiento permanente
Manipulacin de un gran nmero de datos
Independencia de los programas
Residentes en soportes externos

19

También podría gustarte