1 / 78

Curso de Programación Estructurada Parte I

Curso de Programación Estructurada Parte I. Dr. Ana Lilia Laureano-Cruces e-mail: clc@correo.azc.uam.mx Departamento de Sistemas UAM, Unidad Azcapotzalco. Objetivos (I). Ubicar la importancia de la programación en la ingeniería del software

lydie
Download Presentation

Curso de Programación Estructurada Parte I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de Programación Estructurada Parte I Dr. Ana Lilia Laureano-Cruces e-mail: clc@correo.azc.uam.mx Departamento de Sistemas UAM, Unidad Azcapotzalco

  2. Objetivos (I) • Ubicar la importancia de la programación en la ingeniería del software • Explicar el proceso de construcción de un programa • Diseñar algoritmos para resolver problemas simples • Diseñar y construir programas modulares bajo el enfoque de la programación estructurada utilizando eficazmente y eficientemente un entorno de desarrollo convencional Que al final del curso el estudiante sea capaz de:

  3. Objetivos (II) • Explicar y aplicar algoritmos iterativos de búsqueda y ordenamiento • Conocer el papel de las etapas de análisis, diseño y programación en el desarrollo estructurado del software

  4. Contenido Sintético Resolución de problemas y los algoritmos De los algoritmos a los programas Constructores fundamentales de la programación estructurada Fundamentos del diseño modular Algoritmos iterativos de búsqueda y ordenamiento Archivos Introducción a los tipos de datos abstractos Introducción al análisis y diseño estructurado del software

  5. Resolución de problemas y los algoritmos • Concepto de algoritmo • Propiedades de un algoritmo • El rol del algoritmo en la resolución de problemas

  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 solución a un problema dado. Un algoritmo puede ser definido como una secuencia de instrucciones bien definidas y efectivas, y finaliza con la producción del resultado esperado a partir de las entradas dadas.

  7. Algoritmo Especificación de las entradas Acción o procedimiento Acción o procedimiento Descripción del resultado o efecto . . . Acción o procedimiento Acción o procedimiento Concepto de algoritmo (II)

  8. Un primer ejemplo de algoritmo • Inicio • Leer base y altura (b, a) • ar ← b*a • pe ← 2*(b + a) • Escribir “Área del rectángulo: ”, ar • Escribir “Perímetro del rectángulo: ”, pe • Fin El siguiente algoritmo calcula el área y el perímetro de un rectángulo Datos de entrada: b y a (base y altura) Datos de salida: ar y pe (área y perímetro) Procesos: ar = b*a, pe = 2*(b + a) Análisis resumido del problema

  9. Características de los algoritmos (I) • Son precisos. Deben indicar el orden de realización de cada paso, así como especificar con precisión las entradas y cada paso o etapa • Están bien definidos. Etapas bien definidas y concretas • Exactitud y corrección. Se debe demostrar que el algoritmo resuelve el problema para el cual fue escrito • Son finitos. Deben tener un número finito de pasos y deben terminar • Deben describir el resultado o efecto final. La salida esperada del algoritmo debe estar completamente especificada

  10. Entrada Proceso Salida Características de los algoritmos (II) • Entrada • Proceso • Salida Partes que debe describir la definición de un algoritmo:

  11. Ejecutado en Expresado en Código en C Computadora con los compiladores de C y Pascal Algoritmo Código en Pascal Computadora con el compilador de Fortran Código en Fortran Características de los algoritmos (III) • Son independientes tanto del lenguaje de programación en el que se expresan como del hardware en que se ejecutan los programas

  12. Descripción y análisis del problema Programa en un lenguaje de programación Diseño del algoritmo El rol del algoritmo en la resolución de problemas (I) La resolución de un problema en computadora requiere como paso previo el diseño de un algoritmo que especifique el procedimiento para resolver el problema. Es decir, antes de codificar un programa se requiere diseñar el algoritmo.

  13. Ejemplos de algoritmos (I.a.) • Sexo de la persona (S) • Número de personas del sexo masculino (CM) • Número de personas del sexo femenino (CF) • Total de deportistas (N) • Porcentaje de hombres (PM) • Porcentaje de mujeres (PF) Definición del problema Calcular los porcentajes de hombres y mujeres en un grupo de N deportistas Análisis del problema Datos a considerar:

  14. Ejemplos de algoritmos (I.b.) • Total de deportistas (N) • Sexo de la persona (S) Datos de entrada: Continuamos con el análisis del problema 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)

  15. Ejemplos de algoritmos (I.c.) Algoritmo: • Inicio • Inicializar en cero el total de personas del sexo masculino: CM ← 0 • Inicializar en cero el total de personas del sexo femenino: CF ← 0 • Inicializar en cero el total de personas procesadas: TP ← 0 • Leer total de deportistas (N) • MIENTRAS TP < N 6.1 Leer sexo de la persona (S) 6.2 SI S =‘M’, entonces CM ← CM + 1 6.3 SI S = ‘F’, entonces CF ← CF + 1 6.4 Incrementar en 1 el contador: TP ← TP + 1 FIN-MIENTRAS

  16. Ejemplos de algoritmos (I.d.) Algoritmo (continuación): • Calcular porcentaje de hombres en el grupo: PM ← CM/N*100 • Calcular porcentaje de mujeres en el grupo: PF ← CF/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 programación estructurada: • Estructura secuencial • Estructura selectiva • Estructura iterativa

  17. Ejemplos de algoritmos (II) • Cálculo de la media de N observaciones numéricas • Determinar si un número es primo dada una lista de N números enteros • Cálculo del factorial de un número N • Retiro de efectivo en un cajero automático • Receta para preparar “spaghetti alla napoletana” Definir en cada caso: entrada, procesos/operaciones y salida. Escribir el algoritmo completo para todos los casos.

  18. Diseño del algoritmo Diseño descendente Representación gráfica Refinamiento Diseño de algoritmos (I)

  19. Diseño de algoritmos (II) Diseño descendente (I) El diseño descendente (top down) es un procedimiento de refinamiento iterativo de un problema, en el cual se parte del mayor nivel de abstracción del problema (sistema o tarea) y se prosigue hacia los niveles inferiores a través de un proceso de descomposición del problema en subproblemas. En el diseño descendente se parte de una visión estructural del problema sin especificar detalles para ninguna de sus partes componentes. Cada componente del sistema es entonces refinado, mostrando más detalles en cada nivel de refinamiento.

  20. Problema . . . Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Diseño de algoritmos (III) Diseño descendente (II)

  21. X Y P U P P2 Y X P1 P4 V Q P3 V R S Q P31 P32 P33 Diseño de algoritmos (IV) Diseño descendente (III) El diseño descendente efectúa una relación entre las sucesivas etapas de refinamiento, de forma tal que éstas se relacionen unas con otras a través de los flujos de entrada y de salida de información.

  22. Cajero automático Lectura y validación del NIP Selección de tipo de cuenta Selección de tipo de operación . . . Finalizar Traspaso entre cuentas propias Consulta de saldo Retiro de efectivo . . . Pago de servicios Diseño de algoritmos (V) Diseño descendente (IV) Ejemplo: el problema del cajero automático

  23. Diseño de algoritmos (VI) Refinamiento del algoritmo (I) Comúnmente, la primera versión de un algoritmo no constituye una versión completa ni específica del mismo. El refinamiento del algoritmo se refiere a la conversión del primer esbozo/versión del algoritmo en una versión más detallada y completa, haciendo los pasos del algoritmo más específicos. Este proceso conduce a la obtención de un algoritmo claro, preciso y completo.

  24. Diseño de algoritmos (VII) Refinamiento del algoritmo (II) Algoritmo para el cálculo de la media de la edad y peso de un grupo de estudiantes (primer esbozo) • Inicio • Leer cantidad de estudiantes • Leer edad y peso de los estudiantes • Calcular las medias de la edad y del peso • Escribir resultados

  25. Diseño de algoritmos (VIII) Refinamiento del algoritmo (III) Algoritmo para el cálculo de la media de la edad y peso de un grupo de estudiantes (versión refinada) • Inicio • Leer cantidad de estudiantes (N) • NE ← 0, SE ← 0, SP ← 0 • MIENTRAS NE < N • 4.1 Leer edad y peso del estudiante (E, P) • 4.2 SE ← SE + E • 4.3 SP ← SP + P • 4.4 Incrementar el contador: NE ← NE + 1 • FIN-MIENTRAS

  26. Diseño de algoritmos (IX) Refinamiento del algoritmo (IV) Algoritmo para el cálculo de la media y desviación estándar de la edad y peso de un grupo de estudiantes (versión refinada) • Calcular la media de la edad: ME ← SE/N • Calcular la media del peso: MP ← SP/N • Escribir “La edad promedio es: ”, ME • Escribir “El peso promedio es: ”, MP • Fin

  27. Diseño de algoritmos (X) Especificación y representación gráfica del algoritmo • Pseudocódigo • Diagramas de flujo • Diagramas de Nassi-Schneiderman (N-S)

  28. Especificación en pseudocódigo Algoritmo Programa Diseño de algoritmos (XI) Especificación del algoritmo: pseudocódigo (I) El pseudocódigo es un lenguaje de especificación de algoritmos, comúnmente con una sintaxis para las estructuras de control similar a la expresada en el lenguaje de programación al que será traducido el algoritmo. Cuando un algoritmo es expresado en pseudocódigo, entonces la traducción de éste al lenguaje de programación seleccionado resultará relativamente fácil.

  29. Diseño de algoritmos (XII) Especificación del algoritmo: pseudocódigo (II) Las acciones y las estructuras de control se representan en el pseudocódigo con palabras reservadas del inglés, similares a las utilizadas en los lenguajes de programación estructurada. Entre estas palabras reservadas, las más usadas son: start read write If-then-else while-end repeat-until end Comúnmente, la escritura del pseudocódigo requiere el uso de la indentación de las diferentes líneas

  30. Diseño de algoritmos (XIII) Especificación del algoritmo: pseudocódigo (III) Begin read N NE ← 0 SE ← 0 SP ← 0 while NE < N read E, P SE ← SE + E SP ← SP + P NE ← NE + 1 end while Algoritmo para el cálculo de la media y desviación estándar de la edad y peso de un grupo de estudiantes (versión en pseudocódigo)

  31. Diseño de algoritmos (XIV) Especificación del algoritmo: pseudocódigo (IV) Cuando se usa el pseudocódigo como lenguaje de especificación de un algoritmo, el programador puede concentrarse en la lógica y en las estructuras de control sin preocuparse por la sintaxis y reglas del lenguaje de programación. ME ← SE/N MP ← SP/N write “La edad promedio es: ”, ME write “El peso promedio es: ”, MP end

  32. Diseño de algoritmos (XV) Representación gráfica del algoritmo: diagramas de flujo (I) Un diagrama de flujo (flowchart, del inglés) es una técnica de representación gráfica de la lógica o pasos de un algoritmo. El diagrama de flujo consiste de un conjunto de símbolos (tales como rectángulos, paralelogramos, rombos, etc.) y flechas que conectan estos símbolos. Los símbolos representan las diferentes acciones que se pueden ejecutar en un algoritmo (lectura, asignación, decisión, escritura, etc.), mientras que las flechas muestran la progresión paso a paso a través del algoritmo. Con la aparición de los lenguajes de programación estructurada el uso de los diagramas de flujo ha disminuído considerablemente, dando paso a otras técnicas de representación (como por ejemplo, diagramas N-S, tablas procesos-entidades, diagramas estructurales, diagramas de burbujas, etc. ) que capturan en un modo más adecuado la esencia y principios de la programación estructurada.

  33. Diseño de algoritmos (XVI) Representación gráfica del algoritmo: diagramas de flujo (II)

  34. Inicio Leer N NE <- 0 SE <- 0 SP <- 0 1 Diseño de algoritmos (XVII) Representación gráfica del algoritmo: diagramas de flujo (III) • Inicio • Leer cantidad de estudiantes (N) • NE <- 0, SE <- 0, SP <- 0 • MIENTRAS NE < N • 4.1 Leer edad y peso del estudiante (E, P) • 4.2 SE <- SE + E • 4.3 SP <- SP + P • 4.4 Incrementar el contador: NE <- NE + 1 • FIN-MIENTRAS • Calcular la media de la edad: ME <- SE/N • Calcular la media del peso: MP <- SP/N • Escribir “La edad promedio es: ”, ME • Escribir “El peso promedio es: ”, MP • Fin

  35. 1 Leer E, P SE <- SE+E SP <- SP+P NE <- NE+1 Si NE <N No ME <- SE/N MP <- SP/N Escribir ME, MP Fin Diseño de algoritmos (XVIII) Continuación (IV) • Inicio • Leer cantidad de estudiantes (N) • NE <- 0, SE <- 0, SP <- 0 • MIENTRAS NE < N • 4.1 Leer edad y peso del estudiante (E, P) • 4.2 SE <- SE + E • 4.3 SP <- SP + P • 4.4 Incrementar el contador: NE <- NE + 1 • FIN-MIENTRAS • Calcular la media de la edad: ME <- SE/N • Calcular la media del peso: MP <- SP/N • Escribir “La edad promedio es: ”, ME • Escribir “El peso promedio es: ”, MP • Fin

  36. Diseño de algoritmos (XIX) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (I) El diagrama de Nassi-Schneiderman (N-S) (también conocido como diagrama de Chapin) es una técnica de representación gráfica de algoritmos que combina la especificación en pseudocódigo con la representación gráfica del diagrama de flujo. Cuando se usa el diagrama N-S un algoritmo es representado con un rectángulo dividido en franjas o bandas horizontales, donde cada banda representa una acción a realizar. La especificación de los pasos del algoritmo se hace utilizando las palabras reservadas ya vistas en el pseudocódigo, mientras que los símbolos utilizados en el diagrama corresponden a cada tipo de estructura de control: secuencia, selección, iteración.

  37. Diseño de algoritmos (XX) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (II) Representación gráfica N-S de un algoritmo Palabras reservadas comúnmente usadas en la especificación de las acciones (pueden ser también usadas en español) Begin <acción 1> Begin read write If-then-else while-end repeat-until end <acción 2> <acción 3> . . . End

  38. Diseño de algoritmos (XXI) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (III) Representación de la estructura de control secuencial Declaración de variables tipo : nombre_variable Ejemplos: entero: edad real: edadPromedio, pesoPromedio caracter: sexo cadena: deporte Asignación Variable = expresion Ejemplos: edadPromedio = sumaEdad/N pesoPromedio = sumaPeso/N sexo = ‘M’ Deporte = “atletismo”

  39. Diseño de algoritmos (XXII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (IV) Representación de la estructura de control secuencial Instrucción leer leer <lista de identificadores de variables> Ejemplos: leer edad, peso leer deporte Instrucción escribir escribir <lista de variables y constantes> Ejemplos: escribir edadPromedio, pesoPromedio escribir deporte

  40. Inicio real: b, a, ar, pe Leer b, a ar = b*a pe = 2(b + a) Escribir “área: ”, ar Escribir “perímetro: ”, pe Fin Diseño de algoritmos (XXIII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (V) • Inicio • Leer base y altura (b, a) • ar ← b*a • pe ← 2*(b + a) • Escribir “Área: ”, ar • Escribir “Perímetro: ”, pe • Fin Diagrama N-S Algoritmo para calcular el área y perímetro de un rectángulo

  41. selector Estructura de control condicional CASE otro 1 2 3 . . . n Diseño de algoritmos (XXIV) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (VI) Representación de la estructura de control condicional Algoritmo Diagrama N-S si <condición> entonces <acción 1> si_no <acción 2> condición Sí No <acciones> <acciones>

  42. Diagrama N-S Algoritmo S = ‘M’ Leer sexo de la persona (S) SI S =‘M’, entonces CM ← CM + 1 SI S = ‘F’, entonces CF ← CF + 1 Incrementar el contador: TP ← TP + 1 Sí No  CM = CM + 1 CF = CF + 1 Diseño de algoritmos (XXV) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (VII) Representación de la estructura de control condicional

  43. Mientras (condición) <acciones que se repiten> <acciones que se repiten> HASTA (condición) Diseño de algoritmos (XXVI) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (VIII) Representación de la estructura de control de iteración Representación en el diagrama N-S de la estructura MIENTRAS Representación en el diagrama N-S de la estructura REPITE-HASTA

  44. Para Contador ← valor_inicial hasta valor_final hacer <acciones que se repiten> Diseño de algoritmos (XXVII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (IX) Representación de la estructura de control de iteración Representación en el diagrama N-S de la estructura PARA

  45. Inicio real: SE, SP entero: NE NE = 0 SE = 0 SP = 0 Mientras NE <N leer E, P SE = SE + E SP = SP + P NE = NE + 1 Diseño de algoritmos (XXVIII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (X) start read N NE ← 0 SE ← 0 SP ← 0 while NE < N read E, P SE ← SE + E SP ← SP + P NE ← NE + 1 end while

  46. ME <- SE/N MP <- SP/N write “Edad promedio: ”, ME write “Peso promedio: ”, MP end ME = SE/N MP = SP/N Escribir “Edad promedio”, ME Escribir “Peso promedio”, MP Fin Diseño de algoritmos (XXIX) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (XI) Lo que hemos hecho en estas últimas dos transparencias ha sido la especificación en un diagrama N-S del algoritmo para el cálculo de la edad promedio y peso promedio de un grupo de N personas

  47. De los algoritmos a los programas • Elementos, estructura y funcionamiento de un sistema de cómputo • Lenguajes de programación: niveles, sintaxis y semántica • Estrategias de contrucción de programas

  48. CPU Unidad Central de Proceso ALU Unidad lógico-aritmética Dispositivos de entrada CU Unidad de control Dispositivos de salida Memoria externa (almacenamiento permanente) RAM Memoria Elementos, estructura y funcionamiento de un sistema de cómputo (I) Organización física de una computadora

  49. Elementos, estructura y funcionamiento de un sistema de cómputo (II) Funcionamiento de una computadora (I) La unidad central de proceso (del inglés, CPU) La unidad central de proceso (del inglés, CPU) es el “cerebro” de la computadora. La CPU dirige y controla el proceso de información efectuado por la computadora, es la unidad donde se ejecutan las instrucciones de los programas y donde se controla el funcionamiento de los distintos componentes de la computadora. La CPU procesa información almacenada en la memoria, puede recuperar información desde la memoria (datos o programas) y almacenar nueva información o información procesada en la memoria. La CPU está compuesta por dos componentes: la unidad de control (CU) y la unidad lógico-aritmética (ALU)

  50. Elementos, estructura y funcionamiento de un sistema de cómputo (III) Funcionamiento de una computadora (II) La unidad de control (CU) La unidad de control (CU) dirige y coordina las actividades de la computadora, determina la secuencia de operaciones a realizar, interpreta instrucciones codificadas, controla las funciones de decodificación, ejecución y almacenamiento. Esta unidad controla y sincroniza todo el proceso que tiene lugar en la computadora. La unidad lógico-aritmética (ALU) Como su nombre lo indica, la unidad lógico-aritmética es la encargada de realizar operaciones artiméticas y lógicas (suma, resta, multiplicación, división y comparaciones) sobre datos que provienen de la memoria principal (RAM).

More Related