La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Algoritmo.   Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solución a un problema específico. Otra.

Presentaciones similares


Presentación del tema: "Algoritmo.   Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solución a un problema específico. Otra."— Transcripción de la presentación:

1 Fundamentos de Programación Técnicas de Algoritmos para el diseño de procesos computacionales

2 Algoritmo. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solución a un problema específico. Otra definición más específica es: Conjunto de pasos finitos no ambiguos que permitan dar solución a un problema específico.

3 Tipos de algoritmos: Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Lenguajes Algorítmicos. Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. Hay dos tipos: Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo. Ejemplo: Diagrama De Flujo, DFD. No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo. Ejemplo: Pseudocódigo.

4 Características de un buen algoritmo.
Debe tener un punto único de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. Debe ser finito en tamaño y tiempo de ejecución. Es decir, debe tener un fin.

5 Pseudocódigo. Debido a que los lenguajes de programación a veces son muy complejos de aprender, existe un subconjunto de lenguajes más básicos que se llaman pseudolenguajes, los cuales permiten generar pseudocódigo. El pseudolenguaje generalmente es un subconjunto de un lenguaje de programación que es muy extenso, o a veces también se trata de un lenguaje que ocupa expresiones que son más cercanas al lenguaje de las personas, pues en todos los lenguajes de programación las instrucciones están en inglés.

6 Pseudocódigo. Debido a que los lenguajes de programación a veces son muy complejos de aprender, existe un subconjunto de lenguajes más básicos que se llaman pseudolenguajes, los cuales permiten generar pseudocódigo. El pseudolenguaje generalmente es un subconjunto de un lenguaje de programación que es muy extenso, o a veces también se trata de un lenguaje que ocupa expresiones que son más cercanas al lenguaje de las personas, pues en todos los lenguajes de programación las instrucciones están en inglés.

7 Programa. Conjunto de órdenes o instrucciones capaces de manipular un conjunto de datos. Estas órdenes pueden ser divididas en tres grandes bloques claramente diferenciables, estos son: Entrada de datos: En este bloque se engloban todas aquellas instrucciones que toman datos de un dispositivo o periférico externo, depositándolos en la memoria principal del computador para ser procesados.

8 Programa. (continuación)
Proceso: Engloban todas aquellas instrucciones encargadas de modificar los datos que previamente habían sido depositados en la memoria principal. Todos los resultados obtenidos en el tratamiento de dichos datos son depositados nuevamente en la memoria principal quedando de esta manera disponible. Salida de resultados: Es el conjunto de instrucciones que toman los resultados finales desde la memoria principal y lo envían a dispositivos externos.

9 Etapas en la creación de programas.
Durante el desarrollo hay un conjunto de etapas que sin importar el tipo de software que desee crearse siempre se repiten, ya sea desde un programa muy simple como una calculadora con las operaciones básicas, hasta completos sistemas de cálculos en tiempo real. Estas etapas serán definidas y explicadas en forma lineal, sin embargo en el desarrollo real no significa que este sea un orden estricto y que no haya vuelta atrás, muy por el contrario, en muchas ocasiones cuando ya se piensa que se ha superado por completo una etapa es necesario volver atrás, agregar o corregir algo que se nos pasó para luego volver a la etapa siguiente.

10 Etapas en la creación de programas.
Otra cosa importante, es que en algunas ocasiones también se da que las etapas se solapan, vale decir, que antes de finalizar una es posible avanzar en algunos puntos de la que viene, esto suele ser útil para comenzar a dimensionar si lo que estamos haciendo esta correcto. Las etapas son las siguientes: Requerimientos o Requisitos. Análisis. Diseño. Codificación. Pruebas. Mantención.

11 Etapas en la creación de programas.
Requisitos. Los requisitos de software son especificaciones claras y puntuales sobre lo que debe contener un software para cumplir con algún requerimiento. Un requisito está más bien asociado a lo que debe hacer un software para que en su funcionamiento cumpla con lo que deseamos construir. Ej: Si se desea construir un software para apoyar el proceso de venta de juguetes, estamos hablando de un requerimiento, sin embargo, cuando se dice que el software necesita validar que el método de pago sea sólo en pesos chilenos, entonces estamos hablando de un requisito del software, los cuales en su conjunto debiesen alinearse con los requerimientos.

12 Etapas en la creación de programas.
Análisis. En esta etapa es en la que se recopila todos los requisitos necesarios para desarrollar el software, se analizan y se buscan restricciones que deban ser aplicadas por el software. Este análisis es recomendable hacerlo en equipo, para ello los encargados cuentan con un conjunto de diagramas que les permiten dibujar los procesos que desean construir antes de comenzar a desarrollar la aplicación. Esta etapa es fundamental en el ciclo de desarrollo de un software, un mal análisis de los requisitos podría tirar por la borda el esfuerzo de mucho tiempo.

13 Etapas en la creación de programas.
Diseño. En el diseño de la solución es el momento en el que se planifica la arquitectura de lo que se desea construir, el diseño de una aplicación abarca varios temas, algunos mucho más complejos que otros, donde todo dependerá del tipo de aplicación que deseamos construir. El diseño no sólo se refiere a cómo organizaremos los componentes internos de un programa, hay ocasiones en que una solución consta de más de un programa, por ejemplo, hay redes sociales que tienen un componente Web y otro en equipos móviles, en este caso el diseño también debe incorporar la forma en que ambos software se comunicarán.

14 Etapas en la creación de programas.
Diseño. (continuación) Otro aspecto que también se refiere al diseño, es la forma en que los componentes se instalarán. Muchas veces los software están diseñados para recibir grandes cargas de datos o altos niveles de tráfico de usuarios y están ejecutándose sobre más de un equipo, por lo que en estas ocasiones, el diseño también esta ligado al hardware en el que se ejecutará. Conocer esto a tiempo, nos dará una pauta de la forma lógica en la que debemos construirlo.

15 Etapas en la creación de programas.
Codificación. Esta etapa se refiere a la construcción del software, es el equivalente a comenzar a levantar los cimientos de una casa luego de que ha sido diseñada. La codificación es un proceso que no debiese generar problemas si el análisis de requisitos ha sido realizado correctamente y si los programadores están guiándose por un diseño (diagrama de clases) que ha sido discutido y aprobado por el equipo responsable.

16 Etapas en la creación de programas.
Codificación. (continuación) Durante esta etapa los programadores deberán idear los algoritmos que permitan solucionar cada uno de los objetivos planteados en el diseño de la solución y la comunicación entre las partes. Durante la codificación se utilizará algún lenguaje de programación que permita comunicarnos con la máquina, la elección del lenguaje es una conversación que da para mucho, pero por lo general depende de las prestaciones que nos da la tecnología que la rodea, de las restricciones y aunque no debiese ser una limitante, muchas veces influye su valor.

17 Etapas en la creación de programas.
Pruebas. Las pruebas corresponden a la etapa de la post construcción, aquí es donde se prueba lo construido. Para iniciar las pruebas no es necesario terminar el software completo, los programadores suelen hacer muchas pruebas de cada método que han construido con el fin de determinar si sus algoritmos hacen lo que se espera de ellos. A estas pruebas se les llama prueba unitaria y consiste básicamente en ingresar datos de entrada y verificar que la salida sea la esperada, además suelen hacerse durante todo el periodo de codificación.

18 Etapas en la creación de programas.
Pruebas. (continuación) Adicionalmente, existen otros tipos de pruebas que tienen relación con la cantidad de recursos que un software utiliza, esta tarea por lo general realizada por el departamento de “aseguramiento de la calidad” realiza tareas como la revisión de la carga del procesador y los tiempos de respuesta de la aplicación.

19 Etapas en la creación de programas.
Mantención. La mantención del software es un proceso que se realiza post entrega y corresponde a modificaciones posteriores. Las mantenciones siempre nacen a causa del cambio de un proceso en la organización del cliente que lo ha solicitado. Las mantenciones pueden ser una buena fuente de ingreso posterior a la venta, ya que casi siempre las mantenciones son realizadas por la misma empresa desarrolladora, sin embargo en otras pueden convertirse en un gran dolor de cabeza cuando el software ha sido construido de forma poco modular (divididos en sub programas).

20 Etapas en la creación de programas.
Mantención. (continuación) La mantención se vuelve muy dificultosa y los cambios en una parte comienzan a provocar errores en otros. Algunos paradigmas de programación como la programación orientada a objetos (POO) aporta mucho a la facilidad de mantener sistemas, ya que divide los procesos en procesos más pequeños y luego los agrupa con un nombre que los represente, de esta forma es más sencillo ubicar donde hay que realizar el cambio y cuales son los datos de entrada y salida esperados.

21 Características de la Programación.
Estructura descendente. En la etapa de análisis se determina qué hace el programa, en la etapa de diseño se determina cómo hace el programa la tarea solicitada. Con el objetivo de hacer el proceso de la resolución de problemas más eficaz es que se utiliza el proceso de diseño conocido como “divide y vencerás”. Esto quiere decir que la resolución de problemas complejos se realizan dividiendo dicho problema en subproblemas y a continuación dividir dichos subproblemas en otros de nivel más bajo hasta que pueda ser implementada la solución. La solución de estos subproblemas se realiza con subalgoritmos.

22 Características de la Programación.
Estructura descendente. (continuación) Los subalgoritmos son unidades de programa o módulos que están diseñados para ejecutar alguna tarea específica. Estas unidades (las que distinguiremos como “Funciones” y “Procedimientos”) se escriben sólo una vez, pero pueden ser invocadas o referenciadas en diferentes puntos del programa o “módulo principal” con el objeto de no duplicar el código innecesariamente. Este método de diseñar algoritmos con el proceso de “romper” el problema subdividiéndolo en varios subproblemas se denomina “diseño descendente”, “TOP-DOWN” o “Modular” y en cada etapa, expresar cada paso en forma más detallada se denomina “refinamiento sucesivo” .

23 Características de la Programación.
Estructura descendente. (continuación) Cada subprograma es resuelto en un módulo que tiene un único punto de entrada y un solo punto de salida. Los módulos pueden ser planeados, codificados, comprobados y depurados de forma individual (hasta por programadores distintos) y combinarlos mas tarde lo que implica la combinación de los siguientes pasos: Programar un módulo. Comprobar el módulo. Depurar el módulo Combinar el módulo con los demás.

24 Características de la Programación.
Modularidad. El concepto de modularidad en programación esta directamente asociado al divide y vencerás. Este concepto hoy está fuertemente asociado al paradigma de programación orientado a objetos, el cual tiene como principio dividir la funcionalidad de un programa en programas más pequeños de manera en que ellos sean lo más independientes posible.

25 Características de la Programación.
Cohesión. Este término tiene relación con la capacidad de unir las partes, la palabra cohesión es sinónimo de adhesión, por lo tanto estamos hablando de la unión de partes. En la programación siempre se busca hacer todo modular, es decir tomar un gran software y construirlo de pequeñas partes que ojalá fuesen funcionales de forma independiente, sin embargo si vamos a programar de esa manera hay que pensar después en como unir todo, a este concepto se le llama cohesión y se dice que un software tiene una alta cohesión cuando la llamada a una de esas partes la realiza una que contiene toda la información para ello.

26 Características de la Programación.
Acoplamiento. El acoplamiento está muy ligado a la cohesión, cuando un software se encuentra dividido en partes y estas partes son unidas de forma correcta estamos hablando de una alta cohesión entre las partes. Cuando esto está presente en un software de forma automática decimos entonces que nuestro programa tiene un bajo nivel de acoplamiento, lo que es muy bueno, ya que esto quiere decir que las partes no son dependientes entre sí, por tanto, una modificación en un proceso sólo afectará a alguna de las piezas del software y no al 100%, evitando volver a modificar partes que si funcionan y cuya función no se ve alterada.

27 Características de la Programación.
Descomposición. La descomposición es una característica que permite “desarmar” un problema complejo en una serie de subproblemas que por el hecho de ser partes reducidas de un todo, pierden complejidad. Esta pérdida de complejidad nos permite concentrarnos en una parte específica del problema utilizando el concepto de “divide y vencerás”.

28 Ejercicio 1. Indica si cada una de las secuencias de pasos descritos a continuación es o no un algoritmo: “Cambiar entrada de video en un monitor marca Galáctico modelo interestelar 456” Presionar botón de power. Presionar input. Presionar el botón “flecha abajo” 4 veces. Presionar Enter.

29 Ejercicio 2. Indica si cada una de las secuencias de pasos descritos a continuación es o no un algoritmo: “Hacer un café” Llenar un recipiente con un litro de agua. Hervir el agua. Agregar café y azúcar a gusto en una taza. Agregar a la taza la cantidad de agua que desee.

30 Ejercicio 3. Ordene las etapas de la creación de un programa: __ Prueba __ Análisis __ Mantención __ Requisitos __ Diseño de solución

31 Ejercicio 4. Identifique a que etapa corresponde cada uno de los siguientes casos: La solución es escrita en un lenguaje de programación. Se traducen los requerimientos a una solución viable a través de un software. Recopilación de datos importantes a considerar en la construcción de un programa. Un cambio en la organización ha implicado un cambio en la solución entregada. Se ejecuta el software en busca de errores.


Descargar ppt "Algoritmo.   Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solución a un problema específico. Otra."

Presentaciones similares


Anuncios Google