viernes, 21 de agosto de 2015

Introducion a la Programacion

Introducción a la programación

Se llama Programación a la implementación de un algoritmo en un determinado lenguaje de programación, para realizar un programa.
Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema.
Programa (Software en inglés) es una secuencia de instrucciones que una computadora puede interpretar y ejecutar.
El proceso de creación de software es materia de la ingeniería del software, una de las ramas propias de la Ingeniería Informática.
Según Niklaus Wirth un programa está formado por algoritmos y estructura de datos.
Se han propuesto diversas técnicas de programación, cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos.

Fases para la resolución de problemas con una computadora
  • Análisis: Comprender y definir el problema
  • Desrrollo de la solución o algoritmo: La esencia lógica de pasos para resolver el problema
  • Trascripción de la solución a 1 lenguaje de programación
  • Prueba: Seguir los pasos para planificar que la solución resuelve verdaderamente el problema

4.FASES EN LA ELABORACIÓN DE UNA APLICACIÓN INFORMÁTICA
El desarrollo de la aplicación o conjunto de programas se basa en un concepto llamado ciclo de vida que establece una serie de etapas o fases que hay que seguir secuencialmente y de forma ordenada, cuando se desea desarrollar un determinado producto del Software. Se pueden considerar las distintas fases:

  • Análisis: En esta fase se establece cual es el producto a desarrollar siendo necesario especificar los procesos y estructuras de datos que se van a emplear, para satisfacer las necesidades del usuario, por lo que debe existir una gran comunicación entre el usuario y el analista para conocer todas las necesidades y restricciones en el desarrollo de la aplicación. En aquellos casos en que exista ambigüedad o falta de información por parte del usuario puede ser necesario el desarrollo de prototipos que sirvan para definir con precisión sus requerimientos. En el análisis estructurado se pueden emplear diversas técnicas, la más importantes son

      • Diagrama de flujos de datos: Sirven para conocer el comportamiento del sistema mediante representaciones gráficas del flujo de la información con diferentes niveles de abstracción y división del problema
      • Modelos de datos: Sirven para conocerlas estructuras de datos y sus características, se pueden emplear modelos entidad relación y formas normales
      • Diccionario de datos: Sirven para describir todos los objetos utilizados en los gráficos así como las estructuras de datos
      • Definición de los interfase de usuarios: Sirven para determinar la información, a manejar las entradas y salidas de datos.
    Al final de esta fase se debe obtener un documento que contenga las especificaciones de la aplicación

  • Diseño: En esta fase se alcanza una solución optima detallada y con la mayor precisión posible para el desarrollo de la aplicación teniendo en cuenta los recursos físicos del sistema como son el tipo de ordenador, periféricos, comunicaciones etc y los recursos lógicos como SO, BBDD.
  • En el diseño estructurado se pueden distinguir las siguientes etapas:
    • Diseño externo: Especifica los formatos de la información en los soportes de E/S se diseñarán esencialmente formatos de pantalla y listados
    • Diseño de datos: Establece las estructuras de datos de acuerdo con sus soporte físico y lógico específico como son estructuras en memoria, ficheros y bases de datos
    • Diseño modular: Es una técnica de representación en la que se reflejan de forma descendiente la división de la aplicación en módulos. Así como la interconexión de los mismos con variables de enlace o parámetros. Esta basado en los diagramas de flujo de datos obtenidos en el análisis y se deberá tener en cuenta la cohesión de cada módulo y el acoplamiento o interdependencia entre ellos
    • Diseño procedimental: Establece las especificaciones para cada módulo describiendo el algoritmo necesario que permita posteriormente una correcta y rápida codificación . Se emplean técnicas de programación estructurada utilizando principalmente ordinogramas y pseudo códigos. Con la finalización de esta etapa se obtiene como documentación el cuaderno de carga

  • Codificación :Consiste en la traducción de la solución obtenida a un dtmdo lenguajes de programación basándonos en las especificaciones de diseños expresadas en el cuaderno de carga dando como resultado unas instrucciones ejecutables por el ordenador. Tb se deberá realizar las pruebas necesarias para depurar errores y verificar la calidad de los programa se clasifican estas pruebas en

    • Pruebas unitarias: para comprobar que cada módulo realizan correctamente su tarea
    • Pruebas de interconexión: Para comprobar que en cada programa es correcto el funcionamiento conjunto de todos los módulos
    • Pruebas de integración: Para comprobar el funcionamiento correcto del conjunto de programas que constituyen la aplicación. Es decir el funcionamiento de todo el sistema
    • Explotación: En esta fase se realiza la implantación de los programas en el operativo o sistema físico donde van a funcionar normalmente y su puesta en marcha para obtener un funcionamiento adecuado de todo el sistema. Las actividades que se pueden realizar son
      • Instalación de los programas:
      • Pruebas globales de aceptación del sistema
      • Conversión de la información del sistema anterior a nuevo sistema
      • La eliminación del sistema anterior
      • En esta fase se debe completar la formación del usuario con respecto el sistema y el uso de la aplicación así como la documentación necesaria para la explotación del sistema y el manual de uso o guía de la aplicación
        e) Mantenimiento: Esta fase compelta el ciclo de vida y en ella se realizan las consideraciones necesarios para solucionar errores y deficiencias del producto desarrollado existiendo la posibilidad de que ciertas acciones puedan reiniciar el ciclo de vida. El tiempo invertido en la actividad de mantenimiento está basado en un desarrollo correcto y documentado de las fases anteriores del ciclo de vida fases de mantenimiento
        • Correctivo: Puede estar incluido en contratos de garantía y mantenimiento de la aplicación
        • Adaptativo: Consiste en modificar los programas existentes a causa de un cambia en el entorno físico y lógico en el que están implantados. Por ejemplo: nuevas generaciones de ordenadores de SSOO y cambios en equipos periféricos
        • Perfectivo: Consiste en una mejora de la aplicación al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones sobre sistemas existentes
        A pare de estos 3 tipos de mantenimiento los 2 últimos reinician el ciclo de vida debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto

          5ALGORITMO
          Es una descripción abstracta y ordenada de todos las acciones que se deben realizar así como la descripción de los datos que deben ser manipulados por dichas acciones para llegar a la solución del problema
          Definiciones de algoritmo:
        • Conjunto ordenado y finito de operaciones que permiten hallar la solución a un problema determinado
        • Conjunto de operaciones necesarias que se deben hacer para resolver un problema o una dtmda tarea
        • Descripción de pasos de una tarea usando un método particular
        • Los algoritmos son independientes del lenguaje de programación que se vaya a utilizar y también son independientes del ordenador donde se vaya a ejecutar
          El diseño de un algoritmo debe reflejar las tres partes de un programa
        • Entrada de datos: En esta fase se especifican las instrucciones que tomarán los datos de un periférico de entrada y llevarán esos datos a la memoria
        • Proceso de datos: En esta fase se incluyen las instrucciones en el algoritmo que manipulan esos datos
        • Salida de resultados: En esta fase las instrucciones se toman de la memoria y se llevan a los periféricos de salida
        • Características de un algoritmo
        • Debe ser preciso e indicar el orden de radicación de cada paso es decir a entradas idénticas se deben obtener salidas idénticas
        • Deber ser finito : Es decir debe tener un nº finito de pasos así como un principio y un fin
        • Deber ser flexible para facilitar su mantenimiento
        • Deber ser claro y sencillo para facilitar su comprensión por el personal encargado de su codificación y mantenimiento
        • La resolución de un problema desde el punto de vista algorítmico tiene 3 fases
        • Análisis de programa: El objetivo de esta fase es comprender el problema especificando las salidas y entradas del programa
        • Diseño del algoritmo: Una vez comprendido el problema se trata de determinar que pasos o acciones tenemos que realizar para resolverlo . Como criterios a seguir a la hora de dar la solución algorítmica hay que tener en cuenta lo siguiente
        • Si el problema es bastante complicado lo mejor es dividirlo en partes más pequeñas e intentar resolverlo por separado. Esta técnica se conoce con el nombre de diseño descendente divide y vencerás
        • Otra filosofía a la hora de diseñar algoritmos es el refinamiento por pasos que consiste en que a partir de una idea general vamos completando cada vez mas esa descripción hasta que tengamos algo concreto que resolver. Al escribir el algoritmo hay que tener en cuenta que los pasos a realizar deben tener un determinado orden
        • Resolución en el ordenador: Es la codificación del algoritmo en un determinado lenguaje de programación
          TÉCNICAS DE PROGRAMACIÓN
          Programación convencional: Fue el comienzo de la programación. Es la realización de programa sin seguir un método de programación riguroso los problemas son
        • Los programas son excesivamente rígidos presentando problemas para adaptarlo a distintas configuraciones
        • Los programadores gastan la mayoría de su tiempo corrigiendo errores producidos
        • Las modificaciones de estos programas son difíciles de hacer
      Programación estructurada: Se caracterizan por los siguientes puntos
      • Estudio de la programación desde planteamientos globales a concretos escalonadamente que es lo que se conoce como diseño descendente o Top-Down que consiste en abordar la aplicación desde el problema principal hasta los problemas más particulares en los que se puede dividir; consiguiendo así una comprensión más fácil de todo el problema
      • Obtener programas de fácil interpretación y fácil mantenimiento
      • Consecución de un programa propio que es aquel capaz de ser recorrido de principio a fin sin realizar ningún salto en su configuración. Las características de un programa propio son
      • Posee un único punto de entrada y un único punto de salida
      • Existen caminos desde la entrada hasta la salida que pasan por todas las partes del programa
      • Todas las instrucciones son ejecutadas y no existen bucles infinitos
      • La característica de la programación estructurada es que cualquier programa con un solo punto de salida puede resolverse con tres únicos tipos de estructuras de control
      • Secuencial: se realizan las instrucciones secuencia a secuencia
      • Alternativa:
      • Repetitiva:
      • La programación estructurada es una técnica que consiste en olvidarse del lenguaje y el ordenador hasta encontrarnos en el último nivel. Uno de los objetivos de esta programación es la minimización de errores humanos. Un programa estructurado tiene una representación en forma de árbol
        Programación modular: Los problemas complejos se pueden resolver más eficazmente cuando se dividen en subproblemas que sean mas fáciles de solucionar que el original este método se conoce como divide y vencerás y consiste en dividir un problema complejo en otros más simples con autonomía propia. La descomposición del problema original en sus problemas más simples y así sucesivamente se llama diseño descendente. A cada subprograma se le llama módulo y se codifica con pila y ejecuta por separado. Existe un módulo llamado módulo raíz o módulo principal que relaciona a todos los demás. 

      Prueba de escritorio: Se debe ejecutar el algoritmo con diferentes datos de entrada para verificar si se obtienen los datos de salida esperados, en caso contrario se procede a hacer las modificaciones necesarias al algoritmo. Se recomienda verificar los resultados obtenidos en los ejercicios realizados en la etapa de análisis del problema. Los datos de prueba deben escogerse de modo a someter al algoritmo a todas las posibles situaciones que puedan darse.
      El diseño del algoritmo esta listo si la prueba de escritorio muestra que éste satisface las características de un algoritmo; si la prueba no es satisfactoria se revisa el pseudocódigo o el diagrama de flujo y se procede de esta manera hasta obtener los resultados esperados. La siguientes etapas son la codificación del algoritmo en el lenguaje de programación seleccionado y su prueba en la computadora.
      A continuación utilizamos esta metodología en el diseño de un algoritmo:
      Problema 1: Diseñar un algoritmo para convertir una temperatura dada en grados Fahrenheit a la correspondiente temperatura en grados Centígrados.
      Entender el problema
      El agua se congela a 0º Centígrados y hierve a 100º Centígrados. El agua se congela a 32º Fahrenheit y hierve a 212º Fahrenheit. Lo que indica una diferencia de 180º. Por lo tanto cada grado en la escala Fahrenheit es igual a 100/180 o 5/9 grados en la escala Celsius.
      Para convertir grados Fahrenheit a grados Celsius se resta 32º a los grados Fahrenheit y el resultado se multiplica por 5/9
      Monografias.com
      Se selecciona esta alternativa de solución y se procede con el siguiente paso.
      Declaración de los datos
      Monografias.com
      Prueba de escritorio
      Monografias.com
      En el primer caso 98.6º Fahrenheit equivalen a 37º Centígrados.
      Cualquier tarea que se pretenda resolver utilizando la computadora debe expresarse como un algoritmo. Para diseñar algoritmos que sean entendibles y fáciles de modificar por las personas interesadas, se utiliza un conjunto de estructuras o construcciones lógicas restringidas, que son la secuencial, la de decisión y la iterativa. La estructura secuencial se utiliza cuando las instrucciones del algoritmo deben ejecutase en la secuencia en que se presentan, de la primera a la última; La estructura de decisión se utiliza cuando existen situaciones en que se debe escoger entre ejecutar una instrucción u otra, dependiendo del cumplimiento de una condición y la estructura iterativa se utiliza cuando es necesario repetir varias veces una instrucción o un conjunto de instrucciones para que la tarea sea ejecutada.
      En la siguiente sección se estudiaran cada una de estas construcciones lógicas, también conocidas como estructuras básicas de control lógico
      http://image.slidesharecdn.com/repaso1-090508103253-phpapp01/95/introduccin-a-la-programacin-9-728.jpg?cb=1241778804

         PRUEBAS DE ESCRITORIO.

        La prueba de escritorio es una herramienta útil para entender que hace un determinado algoritmo  o programa ya que esta es una ejecución a mano de nuestro algoritmo llevando el registro de los valores que cada variable tendrán.
        EJEMPLO:
        Imagen



        Imagen


        https://brendabalderas.wordpress.com/2012/09/18/pruebas-de-escritoriodiagramas-de-flujo-y-estructuras-de-control/

        http://www.infor.uva.es/~jvegas/cursos/prog/tema1.html
        https://brendabalderas.wordpress.com/2012/09/18/pruebas-de-escritoriodiagramas-de-flujo-y-estructuras-de-control/





















        No hay comentarios.:

        Publicar un comentario