prog estruct

Download Prog estruct

Post on 29-Jan-2018

2.975 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  1. 1. Curso de Programacin EstructuradaParte I Dr. Ana Lilia Laureano-Cruces e-mail: clc@correo.azc.uam.mx Departamento de Sistemas UAM, Unidad Azcapotzalco
  2. 2. Objetivos (I)
    • Ubicar la importancia de la programacin en la ingeniera del software
    • Explicar el proceso de construccin de un programa
    • Disear algoritmos para resolver problemas simples
    • Disear y construir programas modulares bajo el enfoque de la programacin estructurada utilizando eficazmente y eficientemente un entorno de desarrollo convencional
    Que al final del curso el estudiante sea capaz de:
  3. 3. Objetivos (II)
    • Explicar y aplicar algoritmos iterativos de bsqueda y ordenamiento
    • Conocer el papel de las etapas de anlisis, diseo y programacin en el desarrollo estructurado del software
  4. 4. Contenido Sinttico Resolucin de problemas y los algoritmos De los algoritmos a los programas Constructores fundamentales de la programacin estructurada Fundamentos del diseo modular Algoritmos iterativos de bsqueda y ordenamiento Archivos Introduccin a los tipos de datos abstractos Introduccin al anlisis y diseo estructurado del software
  5. 5. Resolucin de problemas y los algoritmos
    • Concepto de algoritmo
    • Propiedades de un algoritmo
    • El rol del algoritmo en la resolucin de problemas
  6. 6. Concepto de algoritmo (I) Un algoritmo es un procedimiento para resolver un problema. ste describe un conjunto finito y ordenado de pasos, reglas o instrucciones para producir la solucin a un problema dado.Un algoritmo puede ser definido como una secuencia de instrucciones bien definidas y efectivas, y finaliza con la produccin del resultado esperado a partir de las entradas dadas.
  7. 7. Concepto de algoritmo (II) Algoritmo Especificacin de las entradas Accin o procedimiento Accin o procedimiento Accin o procedimiento Accin o procedimiento Descripcin del resultado o efecto . . .
  8. 8. Un primer ejemplo de algoritmo
    • Inicio
    • Leer base y altura (b, a)
    • arb*a
    • pe2*(b + a)
    • Escribir rea del rectngulo: , ar
    • Escribir Permetro del rectngulo: , pe
    • Fin
    El siguiente algoritmo calcula el rea y el permetro de un rectngulo Datos de entrada: b y a (base y altura) Datos de salida: ar y pe (rea y permetro) Procesos: ar = b*a, pe = 2*(b + a) Anlisis resumido del problema
  9. 9. Caractersticas de los algoritmos (I)
    • Son precisos . Deben indicar el orden de realizacin de cada paso, as como especificar con precisin las entradas y cada paso o etapa
    • Estn bien definidos . Etapas bien definidas y concretas
    • Exactitud y correccin . Se debe demostrar que el algoritmo resuelve el problema para el cual fue escrito
    • Son finitos . Deben tener un nmero finito de pasos y deben terminar
    • Deben describir el resultado o efecto final . La salida esperada del algoritmo debe estar completamente especificada
  10. 10. Caractersticas de los algoritmos (II)
    • Entrada
    • Proceso
    • Salida
    Partes que debe describir la definicin de un algoritmo: Entrada Salida Proceso
  11. 11. Caractersticas de los algoritmos (III)
    • Son independientes tanto del lenguaje de programacin en el que se expresan como del hardware en que se ejecutan los programas
    Algoritmo Cdigo en C Cdigo en Pascal Cdigo en Fortran Computadora con los compiladores de C y Pascal Computadora con el compilador de Fortran Expresado en Ejecutado en
  12. 12. El rol del algoritmo en la resolucin de problemas (I) La resolucin de un problema en computadora requiere como paso previo el diseo de un algoritmo que especifique el procedimiento para resolver el problema. Es decir, antes de codificar un programa se requiere disear el algoritmo.Descripcin y anlisis del problema Diseo del algoritmo Programa en un lenguaje de programacin
  13. 13. Ejemplos de algoritmos (I.a.)
    • Sexo de la persona (S)
    • Nmero de personas del sexo masculino (CM)
    • Nmero de personas del sexo femenino (CF)
    • Total de deportistas (N)
    • Porcentaje de hombres (PM)
    • Porcentaje de mujeres (PF)
    Definicin del problema Calcular los porcentajes de hombres y mujeres en un grupo de N deportistas Anlisis del problema Datos a considerar:
  14. 14. Ejemplos de algoritmos (I.b.)
    • Total de deportistas (N)
    • Sexo de la persona (S)
    Datos de entrada: Datos de salida:
    • Porcentaje de hombres (PM)
    • Porcentaje de mujeres (PF)
    Procesos:
    • Contar la cantidad de personas del sexo masculino (CM = CM + 1)
    • Contar la cantidad de personas del sexo femenino (CF = CF + 1)
    • Calcular el porcentaje de hombres en el grupo (PM = CM/N*100)
    • Calcular el porcentaje de mujeres en el grupo (PF = CF/N*100)
    Continuamos con el anlisis del problema
  15. 15. Ejemplos de algoritmos (I.c.) Algoritmo:
    • Inicio
    • Inicializar en cero el total de personas del sexo masculino: CM0
    • Inicializar en cero el total de personas del sexo femenino: CF0
    • Inicializar en cero el total de personas procesadas: TP0
    • Leer total de deportistas (N)
    • MIENTRAS TP < N
    FIN-MIENTRAS 6.1Leer sexo de la persona (S) 6.2SI S =M, entonces CMCM + 16.3SI S = F, entonces CFCF + 1 6.4Incrementar en 1 el contador: TPTP + 1
  16. 16. Ejemplos de algoritmos (I.d.) Algoritmo (continuacin):
    • Calcular porcentaje de hombres en el grupo: PMCM/N*100
    • Calcular porcentaje de mujeres en el grupo: PFCF/N*100
    • Escribir Porcentaje de hombres en el grupo: , PM
    • Escribir Porcentaje de mujeres en el grupo: , PF
    • Fin
    • En este algoritmo se puede apreciar el uso de las tres estructuras de control de la programacin estructurada:
    • Estructura secuencial
    • Estructura selectiva
    • Estructura iterativa
  17. 17. Ejemplos de algoritmos (II)
    • Clculo de la media de N observaciones numricas
    • Determinar si unnmero es primo dada una lista de N nmeros enteros
    • Clculo del factorial de un nmero N
    • Retiro de efectivo en un cajero automtico
    • Receta para preparar spaghetti alla napoletana
    Definir en cada caso: entrada, procesos/operaciones y salida. Escribir el algoritmo completo para todos los casos.
  18. 18. Diseo de algoritmos (I) Diseo del algoritmo Diseo descendente Refinamiento Representacin grfica
  19. 19. Diseo de algoritmos (II) Diseo descendente (I) El diseo descendente ( top down ) es un procedimiento de refinamiento iterativo de un problema, en el cual se parte del mayor nivel de abstraccin del problema (sistema o tarea) y se prosigue hacia los niveles inferiores a travs de un proceso de descomposicin del problema en subproblemas.En el diseo descendente se parte de una visin estructural del problema sin especificar detalles para ninguna de sus partes componentes. Cada componente del sistema es entonces refinado, mostrando ms detalles en cada nivel de refinamiento.
  20. 20. Diseo de algoritmos (III) Diseo descendente (II) . . . Problema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema
  21. 21. Diseo de algoritmos (IV) Diseo descendente (III) El diseo descendente efecta una relacin entre las sucesivas etapas de refinamiento, de forma tal que stas se relacionen unas con otras a travs de los flujos de entrada y de salida de informacin.X Y P P1 P2 P3 P4 X Y U V P Q P31 P32 P33 V Q R S
  22. 22. Diseo de algoritmos (V) Diseo descendente (IV) Ejemplo: el problema del cajero automtico Cajero automtico Lectura y validacin del NIP Seleccin de tipo de cuenta Seleccin de tipo de operacin Finalizar Consulta de saldo Traspaso entre cuentas propias Retiro de efectivo Pago de servicios . . . . . .
  23. 23. Diseo de algoritmos (VI) Refinamiento del algoritmo (I) Comnmente, la primera versin de un algoritmo no constituye una versin completa ni especfica del mismo. El refinamiento del algoritmo se refiere a la conversin del primer esbozo/versin del algoritmo en una versin ms detallada y completa, haciendo los pasos del algoritmo ms especficos. Este proceso conduce a la obtencin de un algoritmo claro, preciso y completo.
  24. 24. Diseo de algoritmos (VII) Refinamiento del algoritmo (II)
    • Inicio
    • Leer cantidad de estudiantes
    • Leer edad y peso de los estudiantes
    • Calcular las medias de la edad y del peso
    • Escribir resultados
    Algoritmo para el clculo de la media de la edad y peso de un grupo de estudiantes (primer esbozo)
  25. 25. Diseo de algoritmos (VIII) Refinamiento del algoritmo (III)
    • Inicio
    • Leer cantidad de estudiantes (N)
    • NE0, SE0, SP0
    • MIENTRAS NE < N
    • 4.1 Leer edad y peso del estudiante (E, P)
    • 4.2 SESE + E
    • 4.3 SPSP + P
    • 4.4 Incrementar el contador: NENE + 1
    • FIN-MIENTRAS
    Algoritmo para el clculo de la media de la edad y peso de un grupo de estudiantes (versin refinada)
  26. 26. Diseo de algoritmos (IX) Refinamiento del algoritmo (IV)
    • Calcular la media de la edad: MESE/N
    • Calcular la media del peso: MP