Sie sind auf Seite 1von 13

Unidad 3.

TECNICAS DE DISEO DETALLADO


Diseo detallado
Proceso de descripcin ms detallado de la lgica del proceso y de
las estructuras de datos.
Es la descripcin ms detallada del concepto referente al software
a desarrollar, esto se logra basndose en tres puntos principales;
algoritmos, pseudocdigos y diagramas de flujo

3.1 Diseo Algortmico


Un algoritmo es una secuencia de pasos finitos, es decir un
determinado nmero de instrucciones seguidas para realizar
cierta funcin o tarea que a este se le haya asignando puesto
que en su terminacin lleva la solucin de una problemtica
que se haya asignando.
Los algoritmos son utilizados como guas o modelos para
poder realizar un programa, debido a que representa de forma
efectiva y simple las instrucciones y las acciones que se
llevaran a cabo en el, por lo que se recomienda realizar
siempre primero el algoritmo antes de tratar de programar
directamente.
Concepto y caractersticas de algoritmo
El programador de computadoras es una persona que resuelve
problemas. Es por ello que, para llegar a ser un programador
eficaz, se necesita aprender a resolver problemas de un modo
riguroso y sistemtico.
El eje central de la metodologa para resolver estos problemas es
el algoritmo. Un algoritmo es un mtodo para resolver un
problema.
La palabra algoritmo proviene de Mohammed al-KhoWrizmi,
matemtico persa que vivi durante el siglo IX y alcanz gran
reputacin por el enunciado de las reglas paso a paso para sumar,

restar, multiplicar y dividir nmeros decimales. La traduccin al


latn del apellido en la palabra algorismus deriv posteriormente
en algoritmo.
La resolucin de un problema exige el diseo de un algoritmo que
resuelva el problema, como lo muestra la siguiente figura:

Pasos para la resolucin de un problema


1.- Diseo del algoritmo que describe la secuencia ordenada de
pasos sin ambigedades- que conducen a la solucin de un
problema dado. (Anlisis del problema y desarrollo del algoritmo).
2.- Expresar el algoritmo como un programa en un lenguaje
adecuado. (Fase de codificacin).
3.- Ejecucin y validacin del programa por la computadora.
Caractersticas de los algoritmos
Ser preciso e indicar el orden de realizacin de cada paso.
Estar definido. Si se sigue un algoritmo dos veces, se debe
obtener el mismo resultado cada vez.

Ser finito. Si se sigue un algoritmo, se debe terminar en algn


momento; o sea, debe tener un nmero finito de pasos.

Se denomina diseo del algoritmo al proceso que convierte los


resultados del anlisis del problema en un diseo modular con
refinamientos sucesivos que permitan una posterior traduccin a
un lenguaje.
El diseo del algoritmo es independiente del lenguaje de
programacin en el que se vaya a codificar posteriormente. Existen
dos herramientas utilizadas conceptualmente para disear
algoritmos: los diagramas de flujo y el pseudocdigo.
En la resolucin de un problema complejo, se divide en varios sub
problemas y seguidamente se vuelven a dividir los sub problemas
en otros ms sencillos, hasta que puedan implementarse en el

computador.
Esta caracterstica define lo que se entiende como diseo
descendente (Top-Down / Norte-Sur) o diseo modular.
El proceso de ruptura del problema en cada etapa se llama
refinamiento
sucesivo.
Cada problema se resuelve mediante un modulo (subprograma) y
tiene un solo punto de entrada y un solo punto de salida.
Un programa bien diseado consta de un programa principal
(modulo de nivel ms alto) que llama a subprogramas (mdulos de
nivel mas bajo), que a su vez pueden llamar otros sub programas.
Los programas que se estructuran de esta forma, se dicen que
tienen diseo modular y el mtodo de romper el programa en
modos
pequeos
se
llama
programacin
modular.
3.1.1.- Elementos y reglas de la representacin grfica de los
algoritmos.

Existen formas de representar a los algoritmos de los cuales


encontramos por pseudocdigo y los diagramas de flujo.
* Pseudocdigo: Este es una forma de abreviar las
instrucciones reales para la computadora Es una habilidad
para poder disear los programas los cuales nos permitirn
definir las estructuras de datos, las operaciones que realizaran
los datos y la capacidad que tendr el software creado para
solucionar
la
problemtica.
Un
ejemplo
seria:
Disear un algoritmo que lea cuatro variables y calcule e
imprime
su
producto,
suma
y
media
aritmtica.
Inicio
Leer
(a,
b,
Producto
<-(a
*
b
suma
<-(a
+
b
media
<-(a
+
b
+
Escribir
(producto,
Fin
Reglas:

c,

d)
*
c
*
d)
+
c
+
d)
c
+
d)
/
4
suma,
media)

Las reglas del pseudocdigo son que debe utilizar las


convenciones de los lenguajes de programacin. Por ejemplo:
el cmo expresar en centmetros y pulgadas una cantidad
dada en metros. Y en estos casos utilizan la siguiente forma
para
escribirlo
en
pseudocdigo:
INICIO
//
Declara
las
variables
M,
C
y
P
REAL
M,
C,
P
// Solicita el ingreso de la cantidad en metros
LEER
M
// Calcula la cantidad en centmetros y lo asigna a la variable C
C
=
M*100
// Calcula la cantidad en pulgadas y lo asigna a la variable P
P
=
C/2.54
// Muestra los valores de las variables C y P
IMPRIMIR
C,
P

FIN
Diagramas de flujo
Un diagrama de flujo (flowchart) es una representacin grfica de
un algoritmo. Los smbolos utilizados para la elaboracin de
diagramas de flujo han sido normalizados por el ANSI.
Este muestra de forma grafica la solucin del problema para
crearlos es necesario utilizar diferentes smbolos o figuras para
representar alguna tarea o procedimiento y estos smbolos se
encuentran unidos a travs de flechas las cuales reciben el
nombre de lneas de flujo que nos llevan al orden en que los
procedimientos se llevaran a cabo. A continuacin se muestra
la simbologa para la creacin de los diagramas de flujo:

Ejemplo:
El problema planteado es obtener el promedio de las calificaciones
de un
grupo de 30 alumnos.

Reglas:
* Se escribe de arriba hacia abajo y de izquierda a derecha
* Siempre se usan flechas verticales u horizontales, jams curvas
*
Evitar
cruce
de
flujos
* En cada paso expresar una accin concreta

3.1.2
IMPLEMENTACION
DE
SECUENCIALES
UTILIZANDO NOTACION ALGEBRAICA

ALGORITMOS

El inicio de los algoritmos secuenciales, el surgimiento:


Durante los aos ochenta, la mayora de los computadores eran
sistemas de un solo procesador. El reto principal en el diseo de
hardware era lograr el mximo posible de instrucciones por
segundo. A su vez, el reto principal en el diseo de software era
compartir efectivamente ese procesador entre muchas tareas para
asegurar la mxima utilizacin. Actualmente se estn alcanzando
los lmites de capacidad de procesamiento de los sistemas de un
solo procesador. La velocidad de la luz limita la velocidad de
transmisin de las seales a travs de circuitos electrnicos; a
medida que nos acercamos a velocidades de procesador de miles
de millones de ciclos de UCP por segundo, se llega a los lmites
fsicos de los dispositivos electrnicos. Los investigadores de
hardware saben que, a menos que surja algn descubrimiento
tecnolgico importante, no se podr producir microprocesadores
mucho ms rpidos que los circuitos integrados actuales. As pues
Qu camino a seguir si se quiere que continu la acelerada
evolucin de la tecnologa informtica?
Una forma de aumentar el poder de cmputo ms all del lmite de
los procesadores secuenciales actuales es utilizar arquitecturas
paralelas, en las cuales muchos procesadores funcionan de manera
concurrente. Cmo pasar de computadores de miles de millones
de instrucciones por segundo a computadores de billones de
instrucciones por segundo? La respuesta podra ser enlazar en
paralelo mil computadores de miles de millones de instrucciones
por segundo y hacer que trabajen al mismo tiempo con los
problemas. Un problema que requiera que sus clculos se realicen
en secuencia no se beneficiara aparentemente con este
procesamiento en paralelo, pero varios problemas individuales de
esa clase se podran resolver de manera concurrente y completar
ms rpido que en un sistema de un solo procesador. Es necesario
dar pasos significativos hacia la comprensin del paralelismo y la

naturaleza de los algoritmos paralelos, antes de poder generalizar


el uso de los procesadores paralelos para reducir los tiempos de
cmputo.
Los futuros sistemas de cmputo operarn con un paralelismo a
gran escala; tendrn tal nmero de procesadores que se podrn
efectuar en paralelo todos los cmputos que se presten a ello. Este
concepto es tan radicalmente distinto de la computacin
secuencial de los ltimos 40 aos que son de esperarse problemas
significativos y desafiantes en el desarrollo del software necesario
para trabajar con dicho paralelismo.
Los sistemas de software actuales se escriben por lo general en
lenguajes de programacin secuenciales. Sin embargo, en las
arquitecturas paralelas del maana un gran nmero de
procesadores cooperar en la realizacin de tareas. Quin se
encargar de especificar ese paralelismo? El paralelismo en las
tareas es tan obvio que los computadores sern capaces
automticamente de detectarlo y asignar diferentes procesadores
para manejarlo? O deber ser especificado explcitamente por los
programadores?
Cmo se determina cules cmputos se pueden realizar en
paralelo? Quin especificar cmo se dividirn los cmputos en
subcmputos? Cmo se determina qu subcmputos se asignarn
a qu procesadores? Cmo informan los procesadores remotos a
la parte maestra del cmputo que se ha completado cada
subcmputo? Cmo se determina cules procesadores estn
disponibles para ejecutar subcmputos? Quin controla los
procesadores? Qu pasa si un subcmputo que est utilizando el
procesador de otro usuario impide que trabaje esa persona?
Puede dicha persona terminar o suspender el subcmputo? Qu
pasa si un subcmputo entra en un ciclo infinito, o si los ruidos de
la lnea de comunicacin originan un resultado incorrecto? En los
sistemas de computacin distribuidos es necesario tomar en
cuenta stos y muchos otros puntos interesantes.
El campo de la ingeniera de software se enfoca en el desarrollo de
sistemas que se pueden comprobar o demostrar como correctos.

Los programadores tienen bastantes problemas para desarrollar


algoritmos secuenciales que trabajen correctamente. Es mucho
ms difcil demostrar la correccin de los algoritmos paralelos que
la de los algoritmos secuenciales? La respuesta es un s rotundo.
Uno de los beneficios de producir sistemas con alto grado de
paralelismo puede ser la obtencin de niveles nuevos de
confiabilidad que no son posibles con los sistemas de un solo
procesador. Con los sistemas de procesadores mltiples, se pueden
destinar varios de ellos al clculo de cada resultado y a comprobar
el trabajo de los otros procesadores, a fin de asegurar una
operacin adecuada en sistemas crticos. Los sistemas que pueden
funcionar a pesar de la existencia de varios problemas se
denominan sistemas tolerantes a las fallas; los enfoques de
cmputo con alto paralelismo pueden ofrecer mayores grados de
tolerancia
a
tales
fallas.
Definiciones de los algoritmos secuenciales:
1. Algoritmos de gradiente, en estos casos se modifica de alguna
manera el procedimiento de bsqueda del gradiente para evitar
que la trayectoria de bsqueda penetre la frontera de restriccin.
2. Algoritmos secuenciales no restringidos, incluye los mtodos de
funcin de penalizacin y de funcin barrera; estos algoritmos
convierten el problema de optimizacin restringida original en una
sucesin de problemas de optimizacin no restringida, cuyas
soluciones ptimas convergen a la solucin ptima del problema
original.
3. Algoritmos de Aproximacin Secuencial, incluye mtodos de
aproximacin lineal y aproximacin cuadrtica; estos algoritmos
sustituyen la funcin objetivo no lineal por una sucesin de
aproximaciones lineales o cuadrticas. Para problemas de
optimizacin linealmente restringidos, estas aproximaciones
permiten la aplicacin repetida de los algoritmos de programacin
lineal o cuadrtica.

Ejemplo:
Una funcin es separable si se puede expresar como la suma de n
funciones de una sola variable, es decir, Un caso especial de
programacin separable ocurre cuando las funciones son
convexas, resultando as un espacio convexo de solucin; adems
la funcin.
Como ya se sabe, un Algoritmo, Es un conjunto de pasos o
instrucciones con el fin de resolver un problema. Partiendo de ah,
se derivan diferentes tipos de Algoritmos, como es el caso del
Algoritmo Lineal, tambin conocido como Secuencial.
El Algoritmo Lineal o Secuencial tiene la caracterstica de que
todos los pasos que forman el Algoritmo siguen una determinada
Secuencia, de ah que se le llame Secuencial; un Algoritmo sencillo
puede ser una estructura para calcular La Energa liberada en
una reaccin nuclear. Mediante un Diagrama de Flujo quedara
de
la
siguiente
manera:

Para que quede ms claro, a continuacin se muestra lo que sera


el Pseudocdigo, para tener una idea ms clara de que es lo que
realiza
el
Algoritmo:
NOMBRE: Energa liberada en una Reaccin Nuclear
Variables
Requeridas:
m (cantidad de Masa requerida para la Reaccin en kg)
c (velocidad de la luz a travs del vaci en km/seg 2)
INICIO
LEER { m * v } Masa por la Velocidad de la Luz
ASIGNAR { E= mc 2 } Se insertan los Valores IMPRIMIR { E Joules
} Expresa el Resultado con su respectiva unidad.
Los Algoritmos Secunciales, tambin utilizan Notacin Algebraica,
que no es ms que la utilizacin de las reglas Algebraicas (Suma,
Resta,
Multiplicacin,
Divisin).
Un ejemplo de Algoritmo Secuencial utilizando Notacin Algebraica
podra ser para resolver una ecuacin sencilla como la siguiente,

aunque no esta escrito el cdigo correcto, muestra un marco de


referencia
amplio
de
como
funciona:
Reduccin de dos o ms trminos semejantes del mismo signo
Definicin: Dos o ms trminos son semejantes cuando tienen las
mismas letras y afectadas por el mismo exponente.
Procedimiento
Para reducir trminos semejantes con el mismo signo se suman los
coeficientes de todos los trminos y se antepone al coeficiente
total
el
mismo
signo que comparten, y a continuacin se escribe la parte literal.
Reducir:
x + 2x.
Solucin
El signo comn a todos los trminos es el +. Los coeficientes de los
trminos son 1 y 2. La parte literal igual en todos los trminos es x.
1 + 2 = 3;
En Conclusin, un Algoritmo Secuencial utilizando Notacin
Algebraica, son los pasos sucesivamente ordenados para resolver
un problema de cualquier tipo, siempre y cuando utilice Notacin
Algebraica.