Está en la página 1de 7

INSTITUTO TECNOLOGICO DE AGUASCALIENTES

DEPARTAMENTO DE INGENIERIA INDUSTRIAL


ALGORITMOS Y LENGUAJES DE PROGRAMACION
UNIDAD 2.- DIAGRAMAS DE FLUJO.
MAESTRO: ING. LUIS HUMBERTO LOPEZ PEREZ.
UNIDAD 2.- Desarrollo de Lgica Algortmica.
2.1. Metodologa para la solucin de problemas.

Definicin del Problema: Esta fase est dada por el enunciado del problema, el cual
requiere una definicin clara y precisa. Es importante que se conozca lo que se desea
que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso
continuar con la siguiente etapa.
Anlisis del Problema: Una vez que se ha comprendido lo que se desea de la
computadora, es necesario definir:

Los datos de entrada.

Cul es la informacin que se desea producir (salida)

Los mtodos y frmulas que se necesitan para procesar los datos.

Una recomendacin muy prctica es el que nos pongamos en el lugar de la computadora


y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para
producir los resultados esperados. Diseo del Algoritmo: Las caractersticas de un buen
algoritmo son:

Debe tener un punto particular de inicio.

Debe ser definido, no debe permitir dobles interpretaciones.

Debe ser general, es decir, soportar la mayora de las variantes que se puedan
presentar en la definicin del problema.

Debe ser finito en tamao y tiempo de ejecucin.

Codificacin: La codificacin es la operacin de escribir la solucin del problema (de


acuerdo a la lgica del diagrama de flujo o pseudocodigo), en una serie de instrucciones
detalladas, en un cdigo reconocible por la computadora, la serie de instrucciones
detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de
programacin o lenguaje de alto nivel.
Prueba y Depuracin: Los errores humanos dentro de la programacin de
computadoras son muchos y aumentan considerablemente con la complejidad del
problema. El proceso de identificar y eliminar errores, para dar paso a una solucin sin
errores se le llama depuracin. La depuracin o prueba resulta una tarea tan creativa
como el mismo desarrollo de la solucin, por ello se debe considerar con el mismo
inters y entusiasmo. Resulta conveniente observar los siguientes principios al realizar
Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

una depuracin, ya que de este trabajo depende el xito de nuestra solucin.


Documentacin: Es la gua o comunicacin escrita es sus variadas formas, ya sea en
enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por
una persona, es usado por otra. Por ello la documentacin sirve para ayudar a
comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentacin se divide en tres partes:

Documentacin Interna: Son los comentarios o mensaje que se aaden al


cdigo fuente para hacer ms claro el entendimiento de un proceso.

Documentacin Externa: Se define en un documento escrito los siguientes


puntos:
o Descripcin del Problema
o Nombre del Autor
o Algoritmo (diagrama de flujo o pseudocodigo)
o Diccionario de Datos
o Cdigo Fuente (programa)

Manual del Usuario: Describe paso a paso la manera cmo funciona el


programa, con el fin de que el usuario obtenga el resultado deseado.

Mantenimiento: Se lleva a cabo despus de terminado el programa, cuando se detecta


que es necesario hacer algn cambio, ajuste o complementacin al programa para que
siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el
programa este correctamente documentado.
2.2. Metodologa para el diseo de software: Top down, Bottom up, modular y
Programacin estructurada.
Tcnicas de Diseo Modular
Las siguientes tcnicas se derivan directamente de la Programacin Modular.
Mtodo Descendente (Top-Down)
Tambin conocido como de arriba a abajo consiste en establecer una serie de niveles de
mayor a menor complejidad que den solucin al problema. Luego se crea una relacin
entre las etapas de la estructuracin de forma que una etapa jerrquica y su inmediato
inferior se relacionen mediante una interfaz claramente definida de entradas y salidas de
informacin.
El Top-Down es muy popular por ser metodolgico para la enseanza de la

Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

programacin, por favorecer la rpida creacin de una estructura de diseo inicial


flexible y fcil de comprender y por ser muy til en la solucin de problemas complejos.
Mtodo 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.
Cuando la programacin se realiza internamente y se hace un enfoque ascendente, es
difcil llegar a integrar los subsistemas al grado tal de que el desempeo global sea
fluido. Los problemas de integracin entre los subsistemas son sumamente costosos y
muchos de ellos no se solucionan hasta que la programacin alcanza la fecha lmite para
la integracin total del sistema. En esta fecha, ya se cuenta con muy poco tiempo,
presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas
interfaces, que en un principio, se ignoran.
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.
La programacin estructurada es una forma de escribir programas de ordenador
(programacin de computadora) de manera clara. Para ello utiliza nicamente tres
estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin
o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB
o mltiples RETURN.
A finales de los aos 1960 surgi una nueva forma de programar que no solamente daba
lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que
facilitaba su comprensin posterior.
El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que
todo programa puede escribirse utilizando nicamente las tres instrucciones de control
siguientes:

Secuencia

Instruccin condicional.

Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio
de estructuras de control, stas pueden ser construidas mediante las tres bsicas.
Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

Estructura secuencial
Una estructura de programa es secuencial si se ejecutan una tras otra a modo de
secuencia, es decir que una instruccin no se ejecuta hasta que finaliza la anterior.
Estructura selectiva o de seleccin
La estructura selectiva permite que la ejecucin del programa se bifurque a una
instruccin u otra segn un criterio o condicin lgica, solo una de estas instrucciones
se ejecutar.
Estructura iterativa
Un bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repitan
mientras se cumpla una condicin, en un principio el nmero de iteraciones no tiene por
qu estar determinado.
Ventajas de la programacin estructurada
1. Los programas son ms fciles de entender, ya que pueden ser ledos de forma
secuencial, sin necesidad de hacer seguimiento a saltos de lnea (GOTO) dentro de los
bloques de cdigo para entender la lgica.
2. La estructura del programa es clara, puesto que las instrucciones estn ms ligadas o
relacionadas entre s.
3. Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o errores del
programa ("debugging") se facilita debido a la estructura ms visible, por lo que los
errores se pueden detectar y corregir ms fcilmente.
4. Reduccin de los costos de mantenimiento de los programas.
5. Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin).
6. Los bloques de cdigo son auto explicativos, lo que facilita la documentacin.
7. Los GOTO se reservan para construir las instrucciones bsicas. Aunque no se usan de
forma directa, por estar prohibida su utilizacin, estn incluidas implcitamente en las
instrucciones de seleccin e iteracin.
8. Un programa escrito de acuerdo a estos principios no solamente tendr una mejor
estructura sino tambin una excelente presentacin.
La programacin estructurada ofrece estos beneficios, pero no se la debe considerar
como una panacea ya que el desarrollo de programas es, principalmente, una tarea de
dedicacin, esfuerzo y creatividad.
Inconvenientes de la programacin estructurada
El principal inconveniente de este mtodo de programacin es que se obtiene un nico
bloque de programa, que cuando se hace demasiado grande puede resultar problemtico
su manejo; esto se resuelve empleando la programacin modular, definiendo mdulos
interdependientes programados y compilados por separado (en realidad esto no es
necesario, pero es recomendable para su mantenimiento y funcionalidad).

Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

En realidad, cuando se programa hoy en da (inicios del siglo XXI) se suelen utilizar,
tanto las tcnicas de programacin estructurada como las de programacin modular, de
forma conjunta y por lo tanto es posible que cuando uno haga referencia a la
programacin estructurada est considerando tambin las tcnicas de modularizacin.
Un mtodo un poco ms sofisticado es la programacin por capas, en la que los
mdulos tienen una estructura jerrquica en la que se pueden definir funciones dentro de
funciones o de procedimientos.
2.3. Definicin de lenguajes algortmicos.
Definicin de Algoritmo.
Un algoritmo se define como un mtodo que se realiza paso a paso para solucionar un
problema que termina en un nmero finito de pasos.
Las caractersticas fundamentales que debe cumplir todo algoritmo son:
Debe ser preciso. E indicar el orden de realizacin de cada paso.
Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea
debe tener un nmero finito de pasos.
La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
2.3.1 Elementos y reglas de la representacin grfica y manuscrita de los
algoritmos (diagrama de flujo, diagrama N-S, diagrama estructurado y
pseudocdigo.
DIAGRAMAS DE NASSI - SCHNEIDERMAN
Definicin. El diagrama N-S o tambin conocido como diagrama de Chapn es una
tcnica de especificacin de algoritmos que combina la descripcin textual, propia del
pseudocdigo, con la representacin grfica del diagrama de flujo.
El diagrama N-S cuenta con un conjunto limitado de smbolos para representar los
pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo,
dado que el lenguaje natural es muy extenso y se presta para la ambigedad, solo se
utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras
reservadas ms utilizadas son:
Inicio
FinLeerEscribir
MientrasRepitaHastaPara
IncrementarDecrementarHacerFuncion
EnteroRealCaracterCadena
LogicoRetornar
Los smbolos utilizados en el diagrama de Chapn corresponden a cada tipo de
estructura. Dado que se tienen tres tipos de estructuras, se utilizan tres smbolos. Esto
hace que los procesos del algoritmo sean fciles de representar y de interpretar.

Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

Un pseudocdigo (falso lenguaje), es una serie de normas lxicas y gramaticales


parecidas a la mayora de los lenguajes de programacin, pero sin llegar a la rigidez de
sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un
programa con mayor agilidad que en cualquier lenguaje de programacin, con la misma
validez semntica, normalmente se utiliza en las fases de anlisis o diseo de Software,
o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la
ingeniera de software.
El pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje
comn, instrucciones de programacin y palabras clave que definen las estructuras
bsicas. Su objetivo es permitir que el programador se centre en los aspectos lgicos de
la solucin a un problema.
No siendo el pseudocdigo un lenguaje formal, varan de un programador a otro, es
decir, no hay una estructura semntica ni arquitectura estndar. Es una herramienta gil
para el estudio y diseo de aplicaciones, veamos un ejemplo, que podramos definir
como: lenguaje imperativo, de tercera generacin, segn el mtodo de programacin
estructurada
2.3.2 Implementacin de algoritmos secuenciales (utilizando notacin algebraica)
Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas:
lineal o secuencial, alternativa o selectiva y repetitiva o cclica.
La ms sencilla de las tres es la lineal, tambin llamada secuencial que se caracteriza
porque todos los pasos del algoritmo se realizan en secuencia, es decir, se suceden uso a
otros.
Un ejemplo de esta estructura es el algoritmo que lea cuatro variables y calcule e
imprime su producto, suma y media aritmtica.
Inicio
Leer (a, b, c, d)
Producto <-- (a * b * c * d)
suma <-- (a + b + c + d)
media <-- (a + b + c + d) / 4
Escribir (producto, suma, media)
Fin

Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014

2.4. Pruebas y depuracin.


Una vez que se ha construido o escrito un programa en algn lenguaje de programacin,
se requiere desarrollar un procedimiento sistemtico para establecer si se trata de un
programa correcto.
Los pasos bsicos de tal procedimiento sistemtico son los siguientes: Prueba y
demostracin.
Un buen programador debe pensar en desarrollar un conjunto de casos prueba, junto con
su cdigo. Un caso prueba es un conjunto de datos de entrada que junto con el programa
produce una salida conocida de antemano, con los cuales se puede evaluar la
funcionalidad y factibilidad del programa. Si el programa pasa todos los casos prueba,
entonces podemos considerar que el programa es correcto.
Los casos prueba se deben considerar, como se dijo, al momento de hacer la
codificacin del programa. Por ejemplo, un programa que vaya a realizar algunas
operaciones aritmticas deber considerar la aparicin de valores que probablemente le
causen problemas como divisiones por cero o aproximaciones numricas, ambos casos
se deben tomar en cuenta y por lo tanto se deber incluir en el programa la solucin a
este tipo de problemas se acaso se presenta.
Como la computacin an es una ciencia emprica, el diseo de casos prueba depender
del conocimiento que el programador tenga sobre el problema. Puede darse el caso de
que no se consideren todos los posibles problemas que puedan afectar la ejecucin de un
programa y es entonces cuando empieza la etapa de mantenimiento del software.

Unidad 2.- Diagramas de Flujo.

Curso agosto-diciembre del 2014