Manual Tecnicas Para Diseño de Algoritmos

38
TECNICAS PARA DISEÑO DE ALGORITMO S febrero 23 2015 Aplicar los diferentes elementos del análisis y solución de problemas mediante los algoritmos y diagramas de flujo. Código: CSTI0082 Duración: 36 Horas

description

lenjuaje de programacion

Transcript of Manual Tecnicas Para Diseño de Algoritmos

TECNICAS PARA DISEO DE ALGORITMOS

Tcnicas para diseo de algotimos-CSTI0082TECNICAS PARA DISEO DE ALGORITMOSfebrero 232015Aplicar los diferentes elementos del anlisis y solucin de problemas mediante los algoritmos y diagramas de flujo.Cdigo: CSTI0082 Duracin: 36 Horas

LINEAMIENTOS DE EVALUACIN Con base en el anlisis de los objetivos, contenidos y duracin en horas de este mdulo, se obtuvieron los valores porcentuales de las reas que a continuacin se presentan

Para la evaluacin de esta rea se propone la realizacin de la /s siguiente /s actividad /es de comprobacin. A continuacin se detallan:

ProgramacinLa programacin es el proceso de disear, escribir, probar, depurar y mantener el cdigo fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero si el diseo del cdigo), aunque si suelen estar fusionadas en el desarrollo de pequeas aplicaciones.Video: Todos deberan aprender a programarObjetivos de la programacinLa programacin debe perseguir la obtencin de programas de calidad. Para ello se establece una serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad ms importantes son los siguientes: Correccin. Un programa es correcto si hace lo que debe hacer tal y como se estableci en las fases previas a su desarrollo. Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para facilitar as su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo en la edicin; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de creacin como en las fases posteriores de correccin de errores, ampliaciones, modificaciones, etc. Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aqulla en la que se elabor.

Lenguajes de programacinUnlenguaje de programacines unlenguaje formaldiseado para expresarprocesosque pueden ser llevados a cabo por mquinas como lascomputadoras.Pueden usarse para crearprogramasque controlen el comportamiento fsico y lgico de una mquina, para expresaralgoritmoscon precisin, o como modo de comunicacin humana.Est formado por un conjunto de smbolos y reglassintcticasy semnticasque definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe,se prueba,se depura,se compila(de ser necesario) y se mantiene elcdigo fuentede un programa informticose le llamaprogramacin.

Un ejemplo decdigo fuenteescrito en el lenguaje de programacin Java, que imprimir el mensaje "Hello World!"

Historia de los lenguajes de programacinLos primeros lenguajes de programacin surgieron de la idea de Charles Babagge, la cual se le ocurri a este hombre a mediados del siglo XIX. Era un profesor matemtico de la universidad de Cambridge e inventor ingls, que al principio del siglo XIX predijo muchas de las teoras en que se basan los actuales ordenadores. Con l colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aqulla supuesta mquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programacin, sobre todo si observamos que en cuanto se empez a programar, los programadores utilizaron las tcnicas diseadas por Charles Babagge, y Ada, que consistan entre otras, en la programacin mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antao, se adelantaron un siglo a su poca, lo cual describe la inteligencia de la que se hallaban dotados. En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina de diferencias, un dispositivo mecnico para efectuar sumas repetidas. El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin.Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.Tipos de lenguaje (segn la posibilidad que presentan respecto al hardware) Bajo nivel: Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras mquinas, dentro de este grupo se encuentran el lenguaje mquina y el lenguaje ensamblador. Alto nivel: Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina (Gestin, cientficos, propsito general, especficos)

Bajo nivel.Lenguajes de mquina: El lenguaje mquina de una computadora consta de cadenas de nmeros binarios (ceros y unos) y es el nico que entienden directamente los procesadores.Es sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora. Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones ms un conjunto de datos sobre el cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de la arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintasSegn los estndares actuales, las primeras computadoras eran poco tolerantes. Los programadores tenan que traducir las instrucciones de manera directa a la forma de lenguaje de mquina que comprendan las computadoras. Por ejemplo, un programador que escribiera la instruccin SUMAR 0814 para una de las primeras mquinas IBM hubiera escrito: 000100000000000000000000000010111000Lenguajes ensambladores: A principios de la dcada de 1950, y con el fin de facilitar la labor de los programadores, se desarrollaron cdigos nemotcnicos para las operaciones y direcciones simblicas. La palabra nemotcnico se refiere a una ayuda para la memorizacin. Uno de los primeros pasos para mejorar el proceso de preparacin de programas fue sustituir los cdigos de operaciones numricos del lenguaje de mquina por smbolos alfabticos, que son los cdigos nemotcnicos.Un ejemplo comn de mnemnico es la instruccin MOV (mover), que le indica al microprocesador que debe asignar datos de un lugar a otro. El microprocesador no entiende palabras, sino nmeros binarios, por lo que es necesario la traduccin del trmino mnemnico a cdigo objeto.

Lenguajes de alto nivelUn lenguaje de programacin de alto nivel se caracteriza por expresar losalgoritmosde una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las mquinas.Traductor: programa que toma como entrada un programa fuente y lo convierte a un cdigo mquina. Hay 2 tipos: Intrprete: toma el programa fuente lnea por lnea y lo va ejecutando, si alguna lnea tiene error lo devuelve. Compilador: lee el cdigo fuente creado en un determinado lenguaje de programacin, lo interpreta, comprueba su sintaxis y traduce a cdigo maquina toda la serie de instrucciones, generando el archivo ejecutable final.

Algunos lenguajes de alto nivel: FORTRAN COBOL BASIC JAVA PHP

Lenguajes compilados: Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambin tiene que traducirse a un cdigo que pueda utilizar la mquina. Los programas traductores que pueden realizar esta operacin se llaman compiladores. stos, como los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente. Se requiere una corrida de compilacin antes de procesar los datos de un problema.Los compiladores son aquellos cuya funcin es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con cdigo binario).Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el cdigo.

Algunos ejemplos tpicos de lenguajes compilados: Fortran La familia de lenguajes de C, incluyendo C++ y Objective C pero no Java. Ada, Pascal (incluyendo su dialecto Delphi) Algol

Lenguajes interpretados: Se puede tambin utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el cdigo objeto que se produce durante la corrida de compilacin para utilizarlo en una corrida de produccin futura, el programador slo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente.La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad de realizar una corrida de compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de produccin.

Algunos de los lenguajes que suelen ser interpretados ms famosos en la actualidad son ActionScript IO (es un lenguaje reciente -2002-) Java Script (todas las plataformas) ASP RUBY

Tipos de programacin:Programacin estructurada (PE)La programacin estructurada est compuesta por un conjunto de tcnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuracin y mantenimiento del mismo.Esta programacin estructurada utiliza un nmero limitado de estructuras de control, reduciendo as considerablemente los errores.Estructuras bsicas:1. Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de una accin es la entrada de otra.2. Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas.3. Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero determinado de veces.

Las principales ventajas de la programacin estructurada son: Los programas son ms fciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados internamente.

Programacin modularEn la programacin modular consta de varias secciones dividas de forma que interactan a travs de llamadas a procedimientos, que integran el programa en su totalidad.En la programacin modular, el programa principal coordina las llamadas a los mdulos secundarios y pasa los datos necesarios en forma de parmetros.A su vez cada mdulo puede contener sus propios datos y llamar a otros mdulos o funciones.Programacin orientada a objetos (POO)Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilizacin de los objetos.El elemento principal de la programacin orientada a objetos es el objeto.El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin.Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.El polimorfismo y la herencia son unas de sus principales caractersticas y por ello dedicaremos ms adelante un artculo exclusivamente a tratar estos dos trminos.Programacin concurrenteEste tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez.Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultnea.Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en las acciones.Programacin funcionalSe caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. Ejemplo:Scheme Programacin lgicaSe suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una programacin basada en el clculo de predicados (una teora matemtica que permite lograr que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes)AlgoritmosObjetivo:Solucionar problemas mediante procesos y algoritmos.Definicin:En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latin, dixit algorithmus y ste a su vez del matemtico persa Al Juarismi[1] ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia.En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides (mtodo antiguo y eficaz para calcular el mximo comn divisor) para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones.PROBLEMA -> ALGORITMO -> PROGRAMAEl pseudocdigo es una herramienta algortmica que permite escribir pseudoprogramas (una imitacin de un programa real) utilizando un lenguaje de pseudoprogramacin que es una imitacin de los lenguajes de programacin de alto nivel. As, un pseudocdigo es una combinacin de smbolos (+, -, *, /,%, >, >=,