Sunteți pe pagina 1din 16

UNIVERSIDAD DEL PAPALOAPAN

Campus Tuxtepec Loma Bonita

Cuadernillo

INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA M. C. Bertha Lpez Azamar


Profesor-Investigador
Tuxtepec, Oaxaca

Introduccin
El mayor problema al aprender a programar radica en el cambio que se da en la escritura de las ideas, ahora como una estructura abstracta. Es decir, estamos acostumbrados a resolver problemas, pensamos, y gracias a ello podemos resolver los problemas que se nos presenten, sin embargo, logramos a veces un grado de integracin tan grande, que automatizamos ciertas actividades, nos acostumbramos a resolver problemas y dar soluciones; tenemos nuestro mtodo particular, pero si nos preguntan a detalle o nos piden que expliquemos como hacerlo, simplemente no sabemos a veces como comenzar. Y los algoritmos tratan de eso, de detallar los pasos para hacer algo, obviamente la actividad la realizar ahora la computadora, y ella a diferencia de las personas, no deduce, no obtiene conclusiones; solo hace lo que le indiquemos que haga, sigue un algoritmo determinado tal y como se le introdujo en forma de programa. Entonces para realizar algoritmos debemos ser capaces de pensar, de analizar enunciados de problemas. Requerimos as trabajar nuestra capacidad de abstraccin para poder reducir la complejidad de esos problemas, es decir, entre ms desarrollada tenga mi capacidad de abstraccin, menor ser el grado de complejidad, que para mi, represente un problema dado.
Ab st ra c ci n m eno r Co m p lej id a d m a yo r

Al leer enunciados de problemas requerimos deducir (inferir) significados y datos que probablemente no se mencionen en el texto del enunciado, pero que son requeridos para esa solucin buscada. Transformamos datos en constantes o variables, incgnitas en condiciones, eso se requiere al tratar de encontrar el algoritmo para el enunciado de problema, analizar, dividir en partes un problema complejo. El cuaderno de Introduccin a la programacin estructurada tiene la finalidad de integrarte al ambiente de la formulacin de algoritmos, siguiendo la metodologa estructurada, y as logres obtener las bases requeridas para poder escribir programas siguiendo las reglas de sintaxis de cualquier lenguaje de programacin que se desee aprender. El objetivo es ayudarte a adquirir las habilidades necesarias para descomponer un enunciado de problema, crear el algoritmo que le de solucin, para lograr automatizar una tarea que se realiza manualmente, mediante un programa de computadora. Al trabajar con una computadora, los datos son la fuente primordial de informacin, ya que se introducen datos por medio del teclado (generalmente), se almacenan en variables de memoria, para posteriormente procesarlos mediante formulas y/o tomar decisiones a partir de esos datos, y finalmente se desea ver un resultado, es decir, el programa deber mostrar los datos de salida al usuario. En s, se sigue el modelo de John Von Newmann:

M.C. Bertha Lpez Azamar

EN T R AD A

PR O C ES A MI E NT O

S AL ID A

ME MO R I A

El punto fuerte de la programacin estructurada son las estructuras de control, donde las sentencias condicionales nos permiten realizar el trabajo de toma de decisiones, y guiar el algoritmo del programa para obtener los resultados esperados, y siguiendo la lgica misma del problema. Es por eso que es importante aprender a manipular las variables de memoria, junto con los operadores relacionales y lgicos, para lograr formular las condiciones adecuadas para esa toma de decisiones.

M.C. Bertha Lpez Azamar

M.C. Bertha Lpez Azamar

ii

1. Diseo de Algoritmos

1 Diseo de Algoritmos
Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informacin sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de clculo, uno por uno. John Von Neumann desarroll el modelo que lleva su nombre, para describir este concepto de programa almacenado. Donde la memoria se considera como un conjunto de celdas que almacenan simplemente nmeros binarios. Estos nmeros pueden representar dos cosas: el programa, o bien, los datos sobre los que va a trabajar el programa.

1.1 La Programacin y los lenguajes


Programar consiste en desarrollar programas para procesar informacin. Programacin como trmino se utiliza para designar la creacin de programas a pequea escala, el desarrollo de sistemas complejos se denomina Ingeniera de Software. La programacin bsicamente tiene los siguientes objetivos: Tratamiento correcto de los datos para producir informacin correcta, Codificacin clara y legible, para que en el caso de que un programador inicia un programa y no lo termine, otro sea capaz de entender el codigo y pueda terminarlo. Programas tiles y eficientes. Se puede obtener el mismo resultado de varios programas similares, un buen programador llegara al mismo resultado con un mnimo de cdigo y de la forma ms clara y lgica posible. Los lenguajes de programacin son herramientas que nos permiten crear programas y software. Entre ellos tenemos Visual Basic, Pascal, Java, C, C++, FORTRAN, LISP, Prolog, etc.

Pro g ra m a

Leng ua j e d e p ro g ra m a ci n

Figura 1 Comunicacin con la computadora

1.1.1 Historia de la programacin


El lenguaje que entiende la computadora es el lenguaje mquina, es cual es una coleccin de instrucciones detalladas y crpticas que controlan los circuitos internos de la mquina. Sin embargo, programas en este lenguaje requiere conocer la coleccin de instrucciones propias de la mquina con la cual se trabaje.
M.C. Bertha Lpez Azamar

1. Diseo de Algoritmos

La programacin de las primeras computadoras era sumamente tediosa, pues el programador tena que bajarse al nivel de la mquina y decirle, paso a paso, cada punto de la tarea que tena que realizar. Adems, deba expresarlo en forma numrica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Con el lenguaje ensamblador se dio el nacimiento de las primeras herramientas automticas para generar el cdigo mquina, fue el primer paso hacia la abstraccin, redujo los errores que los programadores cometan fcilmente y que eran tan difciles de detectar; aun as, para el programador era fcil perderse y cometer errores de lgica, pues se deba bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de l. Con el desarrollo en los 50s y 60s de algoritmos de ms elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras cientficos de otras ramas; ellos conocan mucho de Fsica, Qumica y otras ramas similares, pero no de Computacin, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de frmulas. As, naci el concepto de Lenguaje de Alto Nivel. Nace el primer compilador de FORTRAN (FORmula TRANslation), el cual inici como un simple esfuerzo de traducir un lenguaje de frmulas, al lenguaje ensamblador y por consiguiente al lenguaje de mquina. A partir de FORTRAN se han desarrollado innumerables lenguajes que siguen el mismo concepto: buscar la mayor abstraccin posible; facilitando la vida al programador, aumentando la productividad. Estos lenguajes cuentan con instrucciones que son ms entendibles para las personas, representan en forma simblica y a manera de texto los cdigos que podrn ser ledos por una persona. Podemos encontrar a lenguajes de propsito general como Lenguaje C, Pascal, Fortran, BASIC y a lenguajes de propsito especifico, entre ellos el CSMP y SIMAN, los cuales son lenguajes orientados a la simulacin, y LISP, un lenguaje orientado al tratamiento de listas que se utiliza en aplicaciones de inteligencia artificial.
Tabla 1 Lenguajes de programacin

Alto nivel

Nivel medio

Bajo nivel

Ada Modula-2 Pascal COBOL FORTRAN BASIC Java C++ C FORTH Macroensamblador Ensamblador

Existen lenguajes que combinan caractersticas de los de alto nivel y los de bajo nivel; como ejemplo el Lenguaje C contiene caractersticas de alto nivel, como lo son las estructuras de control, la facilidad de usar libreras; pero que fue diseado con muy pocas instrucciones sencillas, fciles de traducir al lenguaje mquina, requiriendo un entendimiento apropiado de cmo funciona la computadora, el uso de la memoria, entre otros aspectos. Por ello, muchas
M.C. Bertha Lpez Azamar 2

1. Diseo de Algoritmos

personas consideran a lenguajes como C lenguajes de nivel medio. La ventaja de los lenguajes de alto nivel es que permite la llamada portabilidad1 quiz con alguna o ninguna modificacin. Otras ventajas son sencillez y uniformidad. Todo programa escrito en estos lenguajes es traducido a lenguaje mquina para ejecutarse posteriormente, a esta traduccin se le llama compilacin o interpretacin, segn sea el caso. Un compilador o un intrprete es a su vez un programa: acepta como datos de entrada un programa en alto nivel (programa fuente) y genera como resultado el programa en lenguaje mquina (programa objeto).

1.1.2 Compiladores
Los compiladores traducen el programa completo a lenguaje mquina antes de ejecutar cualquiera de las instrucciones. La ejecucin de un programa con compilador requiere de dos etapas: 1) 2) Traducir el programa simblico a cdigo mquina Ejecucin y procesamiento de los datos.

Un compilador lee el programa entero y lo convierte a cdigo objeto, que es una traduccin del cdigo fuente del programa a una forma que puede ser ejecutada directamente por la computadora. El cdigo objeto tambin se suele denominar cdigo binario o cdigo mquina. Una vez que el programa est compilado, es posible ejecutarlo de manera independiente, en la misma mquina donde se creo o en otra mquina donde no este el compilador. Programa Fuente Compilador Lenguaje Mquina Ligar Programa Ejecutable

1.1.3 Interpretes
Los intrpretes de los lenguajes de programacin simulan una mquina virtual, donde el lenguaje de mquina es similar al lenguaje fuente, se lee el cdigo fuente de un programa lnea por lnea, realizando las instrucciones especficas contenidas en esa lnea. Se requiere en todo caso, un interprete de tiempo de ejecucin para que se pueda ejecutar el programa.2 Entre las ventajas del intrprete se tiene que: no necesita de dos fases para ejecutar el programa, la portabilidad entre plataformas cruzadas (por ejemplo, un programa en Java se ejecuta en cualquier entorno que proporcione un intrprete de Java), son fciles de modificar, alterar o mejorar (esto significa que si se quiere crear, controlar y experimentar con un lenguaje, es ms fcil hacerlo con un intrprete que con un compilador ya que se pueden ver resultados intermedios). El inconveniente principal es la velocidad de ejecucin ya que es ms lenta la interpretacin que la compilacin debido a que debe analizar e interpretar las instrucciones contenidas en el programa fuente. En general un programa interpretado se ejecuta ms despacio
La portabilidad significa que es posible adaptar el software escrito para un tipo de computadora o sistema operativo a otro. Un programa escrito en una mquina, puede ejecutarse en otra, En lenguajes como Java, el cdigo fuente de un programa se convierte primero en una forma intermedia que es la que se interpreta entonces por la Mquina Virtual de Java. M.C. Bertha Lpez Azamar 3
2 1

1. Diseo de Algoritmos

que un programa compilado. Los intrpretes son usados por ejemplo, en los lenguajes de peticin de bases de datos, los cuales se interpretan, o en los lenguajes de control de robtica industrial.
Lee r l n ea d e l p ro g ra m a en len g ua je d e a l to niv el Tra d uc ir l nea a l len g ua je m q u ina Ej ec uta r l nea tra d uc id a

Pro g ra m a le ng ua je d e a lto ni vel Co m p ila d o r

Pro g ra m a le ng ua je en sa m b la d o r E nsa m b la d o r

Term i no ? Pro g a m a en le ng ua j e m a q uina Figura 2 Funcionamiento de un compilador

Fi na li za r Figura 3 Funcionamiento de un intrprete

1.2 Proceso de elaboracin de un programa


La solucin de cualquier problema puede darse en varias formas o niveles de abstraccin. Niklaus Wirth expone que:
Nuestra herramienta mental ms importante para competir con la complejidad es la abstraccin. Por tanto, un problema complejo no deber considerarse inmediatamente en trminos de instrucciones de un lenguaje, sino de elementos naturales del problema mismo, abstrados de alguna manera.

Es imposible que dos personas programen igual, ya que cada uno de nosotros razona de una manera particular y el proceso de llegar a una solucin depende del proceso de razonamiento del problema. Existen ciertas caractersticas deseables de un programa, que deben tenerse presentes para hacer cumplir los objetivos generales de la programacin (Gottfried, 1997): Integridad. Se refiere a la correccin de los clculos. Toda posible ampliacin del programa no tendr sentido si los clculos no se realizan de forma correcta, pues la integridad de los clculos es absolutamente necesaria en cualquier programa de computadora. Claridad. Hace referencia a la facilidad de lectura del programa en conjunto, con particular nfasis en la lgica subyacente. Esta claridad permite que otro programador o l que escribe el programa sigan la lgica del programa sin mucho esfuerzo. Sencillez. Al hacer un programa, es favorable tomar en cuenta que en ocasiones se puede llegar a sacrificar cierta cantidad de eficiencia computacional para no complicar la estructura del programa.
M.C. Bertha Lpez Azamar 4

1. Diseo de Algoritmos

Eficiencia. Est relacionada con la velocidad de ejecucin y la buena utilizacin de la memoria. Este es uno de los objetivos importantes, aunque no se debe conseguir a costa de la perdida de los anteriores objetivos. Modularidad. Muchos programas se pueden dividir un pequeas subtareas. El diseo modular de los programas aumenta la correccin y claridad de stos y facilita los posibles cambios futuros del programa. Generalidad. Normalmente queremos que un programa sea lo ms general posible, dentro de unos lmites razonables. Por ejemplo al leer ciertos datos en un programa, en lugar de establecerlos como valores fijos dentro del mismo. El objetivo es que el programa pueda ser usado para operar una mayor cantidad de veces, con datos diferentes. Es lgico y deseable que el programa pueda servir a ms de un usuario. La creacin de un programa de computadora se parece un poco al diseo de un gran edificio (Schildt, 2001). En trminos generales, para realizar un programa hay que proponer primeramente una solucin a un problema, es decir, pensar en una estrategia para solucionarlo. Posteriormente se pasa al anlisis en donde se averigua que tipo de problema es y como le vamos a dar solucin, as como seleccionar el lenguaje en el que se va a programar.3 Las fases de un programa comprenden: Diseo: se dan las especificaciones en lenguaje natural y se crea un primer modelo matemtico apropiado. La solucin en esta etapa es un algoritmo expresado de manera muy informal. Implementacin: La postura ms importante que se puede tomar para simplificar la creacin de un gran programa es aplicar un buen mtodo de desarrollo. El programador convierte el algoritmo en cdigo, siguiendo alguna de las 3 metodologas o estilos de programacin4 existentes: descendente, ascendente y ad hoc. Con el enfoque descendente (Top-Down, tambin conocida como de arribaabajo) se comienza en una descripcin general y se trabaja hacia lo especfico, consiste en encontrar la solucin de un problema mediante la aplicacin sistemtica de descomposicin en subproblemas cada vez ms simples (aplicando la mxima de dividir para vencer). Al utilizar esta tcnica de diseo se tienen como objetivos: o La simplificacin descomposicin. del problema y los subprogramas de cada

o Diferenciar las partes del problema que pueden ser programadas de modo independiente e incluso por diferentes personas. o Estructurar el programa final en base a los bloques o mdulos realizados individualmente, lo que hace ms sencilla su lectura y mantenimiento. Con el enfoque ascendente (Bottom-Up tambin conocida como de abajoarriba) se se empieza con rutinas especficas y se construye con ellas estructuras cada vez ms complejas, para terminar con la rutina de mayor nivel, es decir el
3 4

http://w3.mor.itesm.mx/~lssalced/estruc.html

Se entiende por estilos de programacin los mtodos que existen para mejorar la calidad de los programas de computacin. M.C. Bertha Lpez Azamar 2

1. Diseo de Algoritmos

programa. Este diseo se refiere a la identificacin de aquellos procesos que necesitan computarizarse conforme vayan apareciendo, o bien, la adquisicin de paquetes de software para satisfacer el problema inmediato. Es difcil llegar a integrar los subsistemas al grado de que el desempeo global sea fluido. Con el enfoque ad hoc no se especifican mtodos predeterminados, empleandose las herramientas tecnolgicas que se tengan a la mano en el momento para dar una solucin lo mas adecuada posible al problema. Pruebas: es un material que contiene un conjunto de datos que sern probados en el programa para detectar posibles errores, son los casos que se estudiaron para detertar la ejecucin del programa con ellos. Si no se contemplan todos los posibles casos de prueba, el diseo puede aun contener errores, que no se han detectado para otros datos. Los pasos generales para realizar un programa son: 1) Anlisis y propuesta de solucin al problema: aqu se identifica el tipo de problema y el rea a la que pertenece. Se piensa tambin en posibles soluciones, con sus tiempos establecidos. Identificacin de variables constantes y actores involucrados en el problema: se identifican, ya que son las tres cosas que nos pueden cambiar al problema o alterar su curso. Planificacin del programa: se elige el lenguaje de programacin a trabajar dependiendo de la solucin y se crea el plan de trabajo el cual contiene la bsqueda bibliografa del problema y el cronograma de cada una de las etapas de los que consta la solucin al problema. Algoritmo: desarrollo de la secuencia lgica de pasos para la solucin del problema. Escrito como una serie de pasos enumerados. Diagramas de Flujo: elaboracin del algoritmo dibujando los simbolos, verificando que el problema se resuelva correctamente, al ir Desarrollo de las especificaciones: cuando se elige el lenguaje de programacin, existen variables, constantes y actores que hay que declararse antes de comenzar el programa, o si se va a utilizar ecuaciones matemticas o funciones, las cuales requieren de cierta manera de escribirse dentro del programa. Estas especificaciones involucran algunas caractersticas del problema y ciertas caractersticas del lenguaje seleccionado. Codificacin (se requiere conocer la sintaxis del lenguaje) y Depuracin: conversin del Algoritmo en un programa escribindolo en un lenguaje de programacin lo ms eficientemente posible. Ejecucin y Verificacin de errores: introducir el programa en la memoria, ejecutarlo y probar sus resultados, corrigiendo los errores hasta su punto final de tal forma que se obtenga la solucin a su problema. Prueba Final: Se tiene la plena seguridad de que el problema quedo resuelto ya que se agotaron todas las pruebas posibles de que el programa no falle al introducir ciertos valores o rangos de valores. Documentacin: mantenimiento y creacin de los documentos descriptivos como el manual del programador y manual del usuario.
3

2) 3)

4) 5) 6)

7)

8)

9)

10)

M.C. Bertha Lpez Azamar

1. Diseo de Algoritmos

1.3 Conceptos fundamentales de Algoritmos


La palabra Algoritmo deriva de la traduccin al latn de la palabra rabe alkchowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. La programacin de algoritmos no es ms que el estudio de un problema, su anlisis e implementacin final del mismo. Lo que pretende un algoritmo, de manera general, es sintetizar de alguna forma una tarea, clculo o mecanismo antes de ser traducido a la computadora. Definicin de algoritmo: Es una secuencia de acciones para la realizacin de una tarea determinada. Conjunto de reglas o instrucciones que indican una secuencia lgica de operaciones que proporciona la respuesta a cualquier tipo de problema dado. Es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especfico. Es la secuencia ordenada de un conjunto de pasos que conducen a la obtencin de un resultado, o a la resolucin de un problema, el algoritmo debe describir tres partes, que son: entrada proceso salida. Se puede definir como una secuencia finita de instrucciones cada una de las cuales tiene un significado claro y puede ser efectuada con una cantidad finita de esfuerzo en una longitud de tiempo tambin finito. Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Un algoritmo muestra las instrucciones muy detalladas de cmo se realiza una determinada actividad, debe ser independiente del lenguaje de programacin en que se piensa plasmar. Es un conjunto de instrucciones que deben conducir al mismo resultado, sin importar la persona que las siga. Por ejemplo, las instrucciones del montaje de una tienda de campaa son las mismas, independientemente del idioma que entienda la persona que la arma.
Actividad 1 Escriba una definicin propia de algoritmo

Ejemplos de algoritmos: El algoritmo para realizar un pastel El algoritmo para tomar el autobs y dirigirme a la UNPA El algoritmo para realizar un examen El algoritmo para andar en bicicleta El algoritmo para cambiar un foco Clasificacin de algoritmos: Algoritmo determinista: en cada paso del algoritmo se determina de forma nica el siguiente paso. Algoritmo no determinista: deben decidir en cada paso de la ejecucin entre varias alternativas y agotarlas todas antes de encontrar la solucin.
M.C. Bertha Lpez Azamar 4

1. Diseo de Algoritmos Ejemplo 1 El algoritmo para cambiar un foco

1. Quitar el foco fundido 2. Colocar el foco nuevo 3. Fin


Ejemplo 2 El algoritmo para realizar un pastel

1. Elegir el tipo de pastel 2. Comprar los ingredientes 3. Mezclar los ingredientes 4. Prender el horno a fuego lento 5. Vaciar los ingredientes mezclados en un molde 6. Introducir el molde al horno 7. Revisar el pastel al tiempo indicado en la receta 8. Sacar el pastel del horno 9. Verificar si el pastel esta cocido. a. Si esta cocido, ir al paso 10 b. Si el pastel no esta cocido, ir al paso 6 10. FIN
Actividad 2 Escriba el algoritmo para alguna actividad que realice diariamente o para alguna tarea especifica.

Los lenguajes algortmicos pueden ser: Grficos: es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo). No grficos: representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocdigo).

1.3.1 Diagrama de flujo


Es la representacin grfica de un algoritmo. Es la representacin detallada en forma grafica de cmo deben realizarse los pasos en la computacin para producir resultados. Esta representacin grafica se da cuando varios smbolos (que indican procesos en la computadora) se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin (ANSI).

M.C. Bertha Lpez Azamar

1. Diseo de Algoritmos

1.3.2 Pseudocdigo
Es una mezcla de lenguaje de programacin y espaol (o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. Es una herramienta utilizada para el diseo de programas que permite al programador expresar sus pensamientos de una forma clara, utilizando su lenguaje natural y mostrando el orden de ejecucin de las sentencias del programa sin ninguna ambigedad. Es la representacin narrativa de los pasos a seguir para dar la solucin a un problema determinado. (Utiliza palabras que indican el proceso a realizar). El pseudocdigo es un lenguaje de especificacin de algoritmos, por lo tanto no puede ser ejecutado por una computadora, es decir, no est diseado como lenguaje compilable. Sin embargo, los programas escritos en este pseudolenguaje se pueden adaptar con facilidad a la mayora de los lenguajes. Tiene muy pocas reglas sintcticas y ofrece libertad de expresar los pensamientos en un lenguaje natural en lugar de hacerlo en un lenguaje particular de programacin. Algunas de las ventajas de utilizar un pseudocdigo (en lugar de un diagrama de flujo) son: o Ocupa menos espacio en una hoja de papel. o Cada programador fija sus reglas y estndares para la creacin de pseudocdigo. o El programador puede concentrarse en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. o Es fcil de modificar y puede ser rpidamente traducido a un lenguaje de programacin. o Representa acciones sucesivas en un lenguaje similar al humano. o Permite representar en forma fcil operaciones repetitivas y complejas. o Si se siguen las reglas de sangrado, se puede observar claramente los niveles que tiene cada operacin.

1.3.3 Especificacin algoritmo

de

los

requerimientos

de

un

Aunque para el ser humano algunos pasos son evidentes, para una computadora no hay nada evidente, no es capaz de hacer suposiciones, es necesario indicarle con muchos detalles la secuencia de acciones que debe realizar para cumplir unos casos concretos.5 En el enunciado del problema encontraremos la informacin de entrada o inicial, que sirve para el anlisis del mismo, por lo que es conveniente dividir el problema identificando las tareas necesarias que ayudaran a darle solucin al mismo, permitiendo una simplificacin del problema en si mismo y lograr hacerlo ms comprensibles para su implementacin. Es recomendable

Revista Programacin actual No. 18, Seccin Curso de Programacin, autor: Fernando de la Villa. 6

M.C. Bertha Lpez Azamar

1. Diseo de Algoritmos

siempre ir de las tareas o actividades ms simples a las ms complejas. Todo algoritmo debe cumplir con tres caractersticas esenciales, debe ser: preciso definido, y finito, por eso que se les llega a llamar las tres reglas de oro para la construccin de un algoritmo: o Debe especificar claramente cul es el orden de ejecucin de las diferentes acciones en cada uno de los casos que se puedan presentar. (Ser preciso) Es decir, no hay que dejar ningn caso suelto. Cualquier situacin que no fue prevista desde el primer momento ser una segura fuente de problemas. o Independientemente del nmero de veces que se ejecute el algoritmo, el resultado siempre debe ser el mismo. (Ser definido) Equivale a decir que el algoritmo no puede arrojar resultados aleatorios o inesperados. En caso contrario, no servira para nada porque no se puede confiar en su correcto funcionamiento. o Debe tener un nmero finito de acciones. (Ser finito) Hay que asegurarse que finalizar en algn momento. Los algoritmos requieren de ciertos recursos para ser implementados en una computadora, y algunos de ellos son: 1. El tiempo: perodo transcurrido entre el inicio y la finalizacin del algoritmo. 2. La memoria: la cantidad (la medida vara segn la computadora) que necesita el algoritmo para su ejecucin. La eficiencia de un algoritmo se ve afectada considerablemente por la computadora donde se ejecute finalmente, por lo tanto, es importante que al disear un algoritmo se tengan presentes las capacidades y el diseo general de la computadora donde se implementar el algoritmo. La complejidad de un algoritmo es una media informativa del tiempo de ejecucin del mismo, la cual que depende de factores como: 1. Los datos de entrada del programa (la cantidad y disposicin de estos). 2. La calidad del cdigo generado por el compilador utilizado para crear el programa. 3. La rapidez de la computadora y las instrucciones empleadas por esta. Es por eso que al querer comparar dos algoritmos se deben tomar en cuenta estos factores externos.

1.3.4 Aplicaciones prcticas de los algoritmos y tipos de problemas


A menudo los algoritmos requieren una organizacin bastante compleja de los datos, y es por tanto necesario un estudio previo de las estructuras de datos fundamentales. Dichas estructuras pueden implementarse de diferentes maneras, y existen algoritmos para implementar dichas estructuras. El uso de estructuras de datos adecuadas pueden facilitar el diseo de un algoritmo, o un algoritmo muy complejo puede usar estructuras de datos muy simples. Los conocimientos de algoritmos y estructuras de datos son la base de la programacin, y su correcta aplicacin sirve para producir programas ptimos, es decir, rpidos, eficientes, robustos y tolerantes a fallos. As mismo estos conocimientos permiten poder cambiar de un
M.C. Bertha Lpez Azamar 7

1. Diseo de Algoritmos

lenguaje de programacin a otro con mucha mayor facilidad, ya que slo har falta superar las dificultades tcnicas particulares de cada lenguaje. Unas aplicaciones de los algoritmos son: Hallar el trayecto ms corto entre dos estaciones del metro utilizando algunos de los algoritmos que obtienen distancias mnimas. Procesar cadenas, lo cual sirve de base para analizadores lxicos o algoritmos criptogrficos. Al intentar realizar un algoritmo es indispensable analizar la factibilidad de la resolucin del problema, debe tenerse en cuenta que los problemas matemticos se pueden dividir en dos grupos generales: Problemas indecidibles: aquellos que no se pueden resolver mediante un algoritmo. Problemas decidibles: aquellos que cuentan al menos con un algoritmo para su cmputo. Sin embargo, que un problema sea decidible no implica que se pueda encontrar su solucin, pues muchos problemas que disponen de algoritmos para su resolucin son inabordables para una computadora por el elevado nmero de operaciones que hay que realizar para resolverlos. Esto permite separar los problemas decidibles en dos: intratables: aquellos para los que no es factible obtener su solucin. tratables: aquellos para los que existe al menos un algoritmo capaz de resolverlo en un tiempo razonable.

1.4 Programacin estructurada


A partir de surgimiento de Pascal y el Lenguaje C; se divide a los lenguajes en estructurados y no estructurados. Los lenguajes estructurados son aquellos que en su codificacin usan subrutinas (mdulos), tambin llamadas funciones o procedimientos, adems de implementar principalmente sentencias condicionales El uso de modulos es una caracterstica distintiva ya que permite compartir cdigo y datos; esta capacidad permite seccionar y esconder, del resto del programa, toda la informacin y las instrucciones necesarias para llevar a cabo una determinada tarea. Un lenguaje estructurado permite muchas posibilidades en programacin, implementando principalmente sentencias condicionales y desaprobando el uso de los saltos incondicionales (goto) ya que no son la forma normal de control.

Los lenguajes no estructurados, en contraposicin, tienen una codificacin que se basaba en lneas de programacin donde se permite al programador "saltar" de una lnea de instruccin a otra, haciendo que el cdigo sea algunas veces poco o nada entendible y muy difcil de mantener (modificar) porque no sigue una estructura. 6 Diferentes lenguajes, como el Basic, nacieron como un lenguaje no estructurado, pero
6

http://www.torrealday.com.ar/articulos/articulo006.htm 8

M.C. Bertha Lpez Azamar

1. Diseo de Algoritmos

evolucionaron hasta que en sus versiones posteriores ya inclua algunos conceptos avanzados como en sus contrapartes estructuradas. La programacin estructurada se basa en una metodologa de desarrollo de programas llamada refinamientos sucesivos, es decir, se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad; esto hace posible la realizacin de todos los segmentos del programa por separado, y una vez terminados, se procede a unir los programas realizados por el grupo de programadores; si se ha utilizado adecuadamente la programacin estructurada esta unin debe ser sencilla y no presentar problemas en la integracin; de presentarse algn problema, podr ser detectado rpidamente para su correccin. Por lo tanto, al seguir la metodologa de la programacin estructurada es posible lograr que: Un programa puede combinar esquemas sencillos, adems de que puedan construirse sistemas amplios y complejos donde los programas sean de fcil lectura para casi cualquier persona. El nmero de errores en el proceso de programacin se bajo. Los programas sean autodocumentados, lo que ofrece la ventaja de que pueda drseles mantenimiento fcilmente cuando se necesitan realizar correcciones o modificaciones despus de haber concluido el programa o la aplicacin. En trminos generales la programacin estructurada se basa en los siguientes puntos: 1. Diseo del programa de lo general a lo particular (top down). 2. Teorema de estructura. Todo programa puede ser diseado utilizando nicamente las estructuras bsicas: Secuencial, Alternativa, Repetitiva. Los paradigmas de programacin siguen surgiendo, sin embargo todos incorporan las caractersticas de la programacin estructurada. Con al llegada de Windows todo es Visual, todo es iconos, todo es botones, todo es Ventanas, por lo que la forma de programar los sistemas evolucion radicalmente; as para programar en lenguajes visuales, primero hay que comprender los conceptos de la programacin basada en objetos, la programacin de eventos para dichos objetos. la programacin se basa en componentes (OLE, OCX, ActiveX), los cuales reducen notablemente el trabajo de la programacin al proporcionar herramientas antes impensadas en la programacin D.O.S. As mismo Internet ha sido el disparador de nuevos lenguajes

M.C. Bertha Lpez Azamar

Bibliografa
1. 2. 3. 4. (Gottfried, 1997) (Schildt, 2001) (Ceballos, 1997) (Cairo, 2003) Gottfried, Byron; Programacin en C; Mc Graw Hill; Segunda edicin; 1997 Schildt, Herbert; Manual de referencia C; Mc Graw Hill; Cuarta edicin; 2001 Ceballos, Francisco Javier; Enciclopedia del Lenguaje C; Ed. Alfaomega; 1997 Cairo, Osvaldo; Metodologa de la programacin, Algoritmos, diagramas de flujo y programas; 2da. Edicin; Alfaomega; Mxico, 2003 Lpez Romn, Leobardo; Programacin Estructurada, un enfoque algortmico; 2da. Edicin, Alfaomega.

5.

(Lpez R., 2003)

M.C. Bertha Lpez Azamar

S-ar putea să vă placă și