Curso de Programación     Estructurada        Parte I Dr. Ana Lilia Laureano-Cruces    e-mail: clc@correo.azc.uam.mx    De...
Objetivos (I)Que al final del curso el estudiante sea capaz de:  • Ubicar la importancia de la programación en la ingenier...
Objetivos (II)• Explicar y aplicar algoritmos iterativos de búsqueda y  ordenamiento• Conocer el papel de las etapas de an...
Contenido Sintético Resolución deproblemas y los  algoritmos          De los algoritmos          a los programas          ...
Resolución de problemas y los               algoritmos• Concepto de algoritmo• Propiedades de un algoritmo• El rol del alg...
Concepto de algoritmo (I)Un algoritmo es un procedimiento para resolver un problema.Éste describe un conjunto finito y ord...
Concepto de algoritmo (II)                                AlgoritmoEspecificación         Acción o                  Acción...
Un primer ejemplo de algoritmoEl siguiente algoritmo calcula el área y el perímetro de un rectángulo Datos de entrada: b y...
Características de los algoritmos (I)• Son precisos. Deben indicar el orden de realización de  cada paso, así como especif...
Características de los algoritmos (II)Partes que debe describir la definición de un algoritmo:    • Entrada    • Proceso  ...
Características de los algoritmos (III)• Son independientes tanto del lenguaje de programación  en el que se expresan como...
El rol del algoritmo en la resolución de                    problemas (I)La resolución de un problema en computadora requi...
Ejemplos de algoritmos (I.a.)Definición del problemaCalcular los porcentajes de hombres y mujeres en un grupo de Ndeportis...
Ejemplos de algoritmos (I.b.)Datos de entrada:     •    Total de deportistas (N)     •    Sexo de la persona (S)Datos de s...
Ejemplos de algoritmos (I.c.)Algoritmo:  •    Inicio  •     Inicializar en cero el total de personas del sexo masculino: C...
Ejemplos de algoritmos (I.d.)Algoritmo (continuación):  •    Calcular porcentaje de hombres en el grupo: PM ← CM/N*100  • ...
Ejemplos de algoritmos (II) 1.   Cálculo de la media de N observaciones numéricas 2.   Determinar si un número es primo da...
Diseño de algoritmos (I)                Diseño del                algoritmo  Diseño                      Representacióndes...
Diseño de algoritmos (II)                 Diseño descendente (I)El diseño descendente (top down) es un procedimiento deref...
Diseño de algoritmos (III)                       Diseño descendente (II)                                             Probl...
Diseño de algoritmos (IV)               Diseño descendente (III)El diseño descendente efectúa una relación entre lassucesi...
Diseño de algoritmos (V)                  Diseño descendente (IV)        Ejemplo: el problema del cajero automático       ...
Diseño de algoritmos (VI)            Refinamiento del algoritmo (I)Comúnmente, la primera versión de un algoritmo noconsti...
Diseño de algoritmos (VII)              Refinamiento del algoritmo (II)Algoritmo para el cálculo de la media de la edad y ...
Diseño de algoritmos (VIII)             Refinamiento del algoritmo (III)Algoritmo para el cálculo de la media de la edad y...
Diseño de algoritmos (IX)             Refinamiento del algoritmo (IV)Algoritmo para el cálculo de la media y desviación es...
Diseño de algoritmos (X)  Especificación y representación gráfica del                   algoritmo• Pseudocódigo• Diagramas...
Diseño de algoritmos (XI)  Especificación del algoritmo: pseudocódigo (I)El pseudocódigo es un lenguaje de especificación ...
Diseño de algoritmos (XII)  Especificación del algoritmo: pseudocódigo (II)Las acciones y las estructuras de control se re...
Diseño de algoritmos (XIII)Especificación del algoritmo: pseudocódigo (III)Begin  read N  NE ← 0                          ...
Diseño de algoritmos (XIV)Especificación del algoritmo: pseudocódigo (IV)                                      Cuando se u...
Diseño de algoritmos (XV)      Representación gráfica del algoritmo:              diagramas de flujo (I)Un diagrama de flu...
Diseño de algoritmos (XVI)    Representación gráfica del algoritmo:                diagramas de flujo (II)          Símbol...
Diseño de algoritmos (XVII)      Representación gráfica del algoritmo:                  diagramas de flujo (III)1. Inicio2...
Diseño de algoritmos (XVIII)                                                          1            Continuación (IV)      ...
Diseño de algoritmos (XIX)     Representación gráfica del algoritmo:    diagramas de Nassi-Schneiderman (N-S) (I)El diagra...
Diseño de algoritmos (XX)      Representación gráfica del algoritmo:    diagramas de Nassi-Schneiderman (N-S) (II)Represen...
Diseño de algoritmos (XXI)     Representación gráfica del algoritmo:   diagramas de Nassi-Schneiderman (N-S) (III)   Repre...
Diseño de algoritmos (XXII)     Representación gráfica del algoritmo:   diagramas de Nassi-Schneiderman (N-S) (IV)   Repre...
Diseño de algoritmos (XXIII)      Representación gráfica del algoritmo:    diagramas de Nassi-Schneiderman (N-S) (V)Algori...
Diseño de algoritmos (XXIV)     Representación gráfica del algoritmo:   diagramas de Nassi-Schneiderman (N-S) (VI)   Repre...
Diseño de algoritmos (XXV)      Representación gráfica del algoritmo:   diagramas de Nassi-Schneiderman (N-S) (VII)    Rep...
Diseño de algoritmos (XXVI)     Representación gráfica del algoritmo:  diagramas de Nassi-Schneiderman (N-S) (VIII)   Repr...
Diseño de algoritmos (XXVII)  Representación gráfica del algoritmo:diagramas de Nassi-Schneiderman (N-S) (IX)Representació...
Diseño de algoritmos (XXVIII)      Representación gráfica del algoritmo:    diagramas de Nassi-Schneiderman (N-S) (X)start...
Diseño de algoritmos (XXIX)        Representación gráfica del algoritmo:      diagramas de Nassi-Schneiderman (N-S) (XI)  ...
De los algoritmos a los programas• Elementos, estructura y funcionamiento de un  sistema de cómputo• Lenguajes de programa...
Elementos, estructura y funcionamiento de       un sistema de cómputo (I)         Organización física de una computadora  ...
Elementos, estructura y funcionamiento de         un sistema de cómputo (II)             Funcionamiento de una computadora...
Elementos, estructura y funcionamiento de         un sistema de cómputo (III)             Funcionamiento de una computador...
Elementos, estructura y funcionamiento de         un sistema de cómputo (IV)            Funcionamiento de una computadora ...
Elementos, estructura y funcionamiento de         un sistema de cómputo (V)            Funcionamiento de una computadora (...
Elementos, estructura y funcionamiento de          un sistema de cómputo (VI)            Funcionamiento de una computadora...
Elementos, estructura y funcionamiento de        un sistema de cómputo (VII)                           El microprocesadorE...
Lenguajes de programación: niveles,      sintaxis y semántica (I)Niveles de lenguajes de programación (I)           Lengua...
Lenguajes de programación: niveles,            sintaxis y semántica (II)       Niveles de lenguajes de programación (II)Le...
Lenguajes de programación: niveles,           sintaxis y semántica (III)      Niveles de lenguajes de programación (III)Le...
Lenguajes de programación: niveles,     sintaxis y semántica (IV)Lenguaje de programación =   Léxico + Sintaxis + Semántica
Lenguajes de programación: niveles,          sintaxis y semántica (V)Aspectos a considerar en el diseño e implementación d...
Lenguajes de programación: niveles,              sintaxis y semántica (VI)Aspectos a considerar en el diseño e implementac...
Lenguajes de programación: niveles,            sintaxis y semántica (VII)Aspectos a considerar en el diseño e implementaci...
Lenguajes de programación: niveles,            sintaxis y semántica (VIII) Aspectos a considerar en el diseño e implementa...
Lenguajes de programación: niveles,            sintaxis y semántica (IX) Aspectos a considerar en el diseño e implementaci...
Lenguajes de programación: niveles,             sintaxis y semántica (X) Aspectos a considerar en el diseño e implementaci...
Lenguajes de programación: niveles,           sintaxis y semántica (XI)                        Lenguaje natural           ...
Lenguajes de programación: traductores de               lenguajes (I)                             Traductores de          ...
Lenguajes de programación: traductores de               lenguajes (II)                            IntérpretesUn intérprete...
Lenguajes de programación: traductores de               lenguajes (III)                           CompiladoresUn compilado...
Lenguajes de programación: traductores de                 lenguajes (IV)             Fases de la compilación de un program...
Paradigmas de programación (I)•   Programación imperativa•   Programación funcional•   Programación lógica•   Programación...
Paradigmas de programación (II)Programación imperativaEl programa se define como una serie de acciones o pasos, cada uno d...
Paradigmas de programación (III)Programación lógicaUn lenguaje de programación lógica es un tipo de lenguaje declarativo, ...
Paradigmas de programación (IV)Programación concurrenteLa programación se basa en la ejecución simultánea de procesos, ya ...
Estrategias de construcción de         programas (I) Fases de construcción de un programa   Descripción y    análisis del ...
Estrategias de construcción de               programas (II)                    Programación modular (I)La filosofía subyac...
Estrategias de construcción de                programas (III)                        Programación modular (II)            ...
Estrategias de construcción de             programas (IV)             Programación modular (III)Ejemplo de descomposición ...
Estrategias de construcción de              programas (V) Programación estructurada (programación sin goto)La programación...
Upcoming SlideShare
Loading in...5
×

3 programacion estructurada

842

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
842
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
44
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

3 programacion estructurada

  1. 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. 2. Objetivos (I)Que al final del curso el estudiante sea capaz de: • 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
  3. 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. 4. Contenido Sintético Resolución deproblemas 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. 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. 6. Concepto de algoritmo (I)Un algoritmo es un procedimiento para resolver un problema.Éste describe un conjunto finito y ordenado de pasos, reglas oinstrucciones para producir la solución a un problema dado.Un algoritmo puede ser definido como una secuencia deinstrucciones bien definidas y efectivas, y finaliza con laproducción del resultado esperado a partir de las entradasdadas.
  7. 7. Concepto de algoritmo (II) AlgoritmoEspecificación Acción o Acción o Descripciónde las entradas procedimiento ... procedimiento del resultado o efecto Acción o Acción o procedimiento procedimiento
  8. 8. Un primer ejemplo de algoritmoEl siguiente algoritmo calcula el área y el perímetro de un rectángulo Datos de entrada: b y a (base y altura) Análisis resumido Datos de salida: ar y pe (área y perímetro) del problema Procesos: ar = b*a, pe = 2*(b + a) • 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
  9. 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. 10. Características de los algoritmos (II)Partes que debe describir la definición de un algoritmo: • Entrada • Proceso • Salida Entrada Proceso Salida
  11. 11. 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 Expresado Ejecutado en en Código en C Computadora con los compiladores de C y Pascal Algoritmo Código en Pascal Computadora con el Código en compilador de Fortran Fortran
  12. 12. El rol del algoritmo en la resolución de problemas (I)La resolución de un problema en computadora requiere comopaso previo el diseño de un algoritmo que especifique elprocedimiento para resolver el problema. Es decir, antes decodificar un programa se requiere diseñar el algoritmo. Descripción y Programa en un Diseño del análisis del lenguaje de algoritmo problema programación
  13. 13. Ejemplos de algoritmos (I.a.)Definición del problemaCalcular los porcentajes de hombres y mujeres en un grupo de NdeportistasAnálisis del problemaDatos a considerar: • 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)
  14. 14. Ejemplos de algoritmos (I.b.)Datos de entrada: • Total de deportistas (N) • Sexo de la persona (S)Datos de salida: Continuamos con el análisis del problema • 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. 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 sexo de la persona (S) 6.1 Leer TP < N 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. 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. 17. Ejemplos de algoritmos (II) 1. Cálculo de la media de N observaciones numéricas 2. Determinar si un número es primo dada una lista de N números enteros 3. Cálculo del factorial de un número N 4. Retiro de efectivo en un cajero automático 5. 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. Diseño de algoritmos (I) Diseño del algoritmo Diseño Representacióndescendente Refinamiento gráfica
  19. 19. Diseño de algoritmos (II) Diseño descendente (I)El diseño descendente (top down) es un procedimiento derefinamiento iterativo de un problema, en el cual se parte delmayor nivel de abstracción del problema (sistema o tarea) yse prosigue hacia los niveles inferiores a través de un procesode descomposición del problema en subproblemas.En el diseño descendente se parte de una visión estructuraldel problema sin especificar detalles para ninguna de suspartes componentes. Cada componente del sistema esentonces refinado, mostrando más detalles en cada nivel derefinamiento.
  20. 20. Diseño de algoritmos (III) Diseño descendente (II) Problema Subproblema Subproblema Subproblema ... SubproblemaSubproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema
  21. 21. Diseño de algoritmos (IV) Diseño descendente (III)El diseño descendente efectúa una relación entre lassucesivas etapas de refinamiento, de forma tal que éstas serelacionen unas con otras a través de los flujos de entrada yde salida de información. X Y P U P2 P X Y P1 P4 V Q P3 V R S Q P31 P32 P33
  22. 22. Diseño de algoritmos (V) Diseño descendente (IV) Ejemplo: el problema del cajero automático Cajero automáticoLectura y Selección de Selección devalidación tipo de tipo de ... Finalizar del NIP cuenta operación Consulta de Retiro de Traspaso saldo efectivo entre cuentas ... Pago de propias servicios
  23. 23. Diseño de algoritmos (VI) Refinamiento del algoritmo (I)Comúnmente, la primera versión de un algoritmo noconstituye una versión completa ni específica del mismo. Elrefinamiento del algoritmo se refiere a la conversión delprimer esbozo/versión del algoritmo en una versión másdetallada y completa, haciendo los pasos del algoritmo másespecíficos. Este proceso conduce a la obtención de unalgoritmo claro, preciso y completo.
  24. 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 deestudiantes (primer esbozo)1. Inicio2. Leer cantidad de estudiantes3. Leer edad y peso de los estudiantes4. Calcular las medias de la edad y del peso5. Escribir resultados
  25. 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 deestudiantes (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. 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 ypeso 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. 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. 28. Diseño de algoritmos (XI) Especificación del algoritmo: pseudocódigo (I)El pseudocódigo es un lenguaje de especificación dealgoritmos, comúnmente con una sintaxis para las estructurasde control similar a la expresada en el lenguaje deprogramación al que será traducido el algoritmo. Cuando unalgoritmo es expresado en pseudocódigo, entonces latraducción de éste al lenguaje de programación seleccionadoresultará relativamente fácil. Especificación Algoritmo en Programa pseudocódigo
  29. 29. Diseño de algoritmos (XII) Especificación del algoritmo: pseudocódigo (II)Las acciones y las estructuras de control se representan en elpseudocódigo con palabras reservadas del inglés, similares a las utilizadasen los lenguajes de programación estructurada. Entre estas palabrasreservadas, las más usadas son: start read Comúnmente, la write escritura del pseudocódigo If-then-else requiere el uso de la while-end indentación de las repeat-until diferentes líneas end
  30. 30. Diseño de algoritmos (XIII)Especificación del algoritmo: pseudocódigo (III)Begin read N NE ← 0 Algoritmo para el SE ← 0 cálculo de la media y SP ← 0 desviación estándar while NE < N de la edad y peso de read E, P un grupo de estudiantes (versión SE ← SE + E en pseudocódigo) SP ← SP + P NE ← NE + 1 end while
  31. 31. Diseño de algoritmos (XIV)Especificación del algoritmo: pseudocódigo (IV) Cuando se usa el pseudocódigo como ME ← SE/N lenguaje de MP ← SP/N especificación de un write “La edad promedio es: ”, ME algoritmo, el programador puede write “El peso promedio es: ”, MP concentrarse en laend lógica y en las estructuras de control sin preocuparse por la sintaxis y reglas del lenguaje de programación.
  32. 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 derepresentación gráfica de la lógica o pasos de un algoritmo. El diagramade 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 puedenejecutar en un algoritmo (lectura, asignación, decisión, escritura, etc.),mientras que las flechas muestran la progresión paso a paso a travésdel algoritmo.Con la aparición de los lenguajes de programación estructurada el usode los diagramas de flujo ha disminuído considerablemente, dandopaso a otras técnicas de representación (como por ejemplo, diagramasN-S, tablas procesos-entidades, diagramas estructurales, diagramas deburbujas, etc. ) que capturan en un modo más adecuado la esencia yprincipios de la programación estructurada.
  33. 33. Diseño de algoritmos (XVI) Representación gráfica del algoritmo: diagramas de flujo (II) Símbolo Representación SignificadoFlechas o líneas de flujo Indica el sentido de ejecución de las accionesRectángulo Proceso o acción a realizar (por ejemplo, asignación)Paralelogramo Representa una entrada o salidaRombo Representa el constructor de selección (decisión lógica)Rectángulo redondeado Representa el inicio y fin del diagramaCírculo Se usa como conector entre dos partes del diagrama
  34. 34. Diseño de algoritmos (XVII) Representación gráfica del algoritmo: diagramas de flujo (III)1. Inicio2. Leer cantidad de estudiantes (N) Inicio3. NE <- 0, SE <- 0, SP <- 04. MIENTRAS NE < N Leer N 4.1 Leer edad y peso del estudiante (E, P) 4.2 SE <- SE + E NE <- 0 4.3 SP <- SP + P 4.4 Incrementar el contador: NE <- NE + 1 SE <- 01. FIN-MIENTRAS Calcular la media de la edad: ME <- SE/N2. Calcular la media del peso: MP <- SP/N SP <- 03. Escribir “La edad promedio es: ”, ME4. Escribir “El peso promedio es: ”, MP 15. Fin
  35. 35. Diseño de algoritmos (XVIII) 1 Continuación (IV) Leer E, P1. Inicio SE <- SE+E2. Leer cantidad de estudiantes (N)3. NE <- 0, SE <- 0, SP <- 0 SP <- SP+P4. MIENTRAS NE < N 4.1 Leer edad y peso del estudiante (E, P) NE <- NE+1 4.2 SE <- SE + E Si 4.3 SP <- SP + P NE <N 4.4 Incrementar el contador: NE <- NE + 1 No ME <- SE/N1. FIN-MIENTRAS Calcular la media de la edad: ME <- SE/N2. Calcular la media del peso: MP <- SP/N MP <- SP/N3. Escribir “La edad promedio es: ”, ME Escribir4. Escribir “El peso promedio es: ”, MP ME, MP5. Fin Fin
  36. 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 comodiagrama de Chapin) es una técnica de representación gráfica dealgoritmos que combina la especificación en pseudocódigo con larepresentación gráfica del diagrama de flujo.Cuando se usa el diagrama N-S un algoritmo es representado con unrectángulo dividido en franjas o bandas horizontales, donde cada bandarepresenta una acción a realizar.La especificación de los pasos del algoritmo se hace utilizando laspalabras reservadas ya vistas en el pseudocódigo, mientras que lossímbolos utilizados en el diagrama corresponden a cada tipo deestructura de control: secuencia, selección, iteración.
  37. 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 Begin especificación de las acciones (pueden ser también usadas en español) <acción 1> Begin <acción 2> read write <acción 3> If-then-else while-end ... repeat-until End end
  38. 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 secuencialDeclaración de variables Asignacióntipo : nombre_variable Variable = expresionEjemplos: Ejemplos:entero: edad edadPromedio = sumaEdad/Nreal: edadPromedio, pesoPromedio = sumaPeso/N pesoPromedio sexo = ‘M’caracter: sexo Deporte = “atletismo”cadena: deporte
  39. 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 secuencialInstrucción leerleer <lista de identificadores de variables>Ejemplos:leer edad, pesoleer deporteInstrucción escribirescribir <lista de variables y constantes>Ejemplos:escribir edadPromedio, pesoPromedioescribir deporte
  40. 40. Diseño de algoritmos (XXIII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (V)Algoritmo para calcular el área y Diagrama N-S perímetro de un rectángulo Inicio• Inicio• Leer base y altura (b, a) real: b, a, ar, pe• ar ← b*a Leer b, a• pe ← 2*(b + a)• Escribir “Área: ”, ar ar = b*a• Escribir “Perímetro: ”, pe• Fin pe = 2(b + a) Escribir “área: ”, ar Escribir “perímetro: ”, pe Fin
  41. 41. 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-Ssi <condición> entonces condición <acción 1> Sí Nosi_no <acciones> <acciones> <acción 2> selector Estructura de control otro 1 2 3 ... n condicional CASE
  42. 42. 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 Diagrama N-S Algoritmo S = ‘M’Leer sexo de la persona (S) Sí NoSI S =‘M’, entonces CM ← CM + 1SI S = ‘F’, entonces CF ← CF + 1 }Incrementar el contador: TP ← TP + 1 CM = CM + 1 CF = CF + 1
  43. 43. 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ónRepresentación en el diagrama N-S Representación en el diagrama N-S de la estructura MIENTRAS de la estructura REPITE-HASTAMientras (condición) <acciones que se repiten> <acciones que se repiten> HASTA (condición)
  44. 44. 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 Para Contador ← valor_inicial hasta valor_final hacer <acciones que se repiten>
  45. 45. Diseño de algoritmos (XXVIII) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (X)start Inicio read N real: SE, SP NE ← 0 entero: NE SE ← 0 NE = 0 SP ← 0 SE = 0 SP = 0 while NE < N read E, P Mientras NE <N SE ← SE + E leer E, P SP ← SP + P SE = SE + E SP = SP + P NE ← NE + 1 NE = NE + 1 end while
  46. 46. Diseño de algoritmos (XXIX) Representación gráfica del algoritmo: diagramas de Nassi-Schneiderman (N-S) (XI) ME <- SE/N ME = SE/N MP <- SP/N MP = SP/N write “Edad promedio: ”, ME Escribir “Edad promedio”, ME write “Peso promedio: ”, MP Escribir “Peso promedio”, MPend Fin 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. 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. 48. Elementos, estructura y funcionamiento de un sistema de cómputo (I) Organización física de una computadora CPU Unidad Central de Proceso ALU Unidad lógico-aritmética Dispositivos CU Dispositivos de entrada Unidad de control de salida RAM Memoria externa Memoria (almacenamiento permanente)
  49. 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 lacomputadora. La CPU dirige y controla el proceso de información efectuadopor la computadora, es la unidad donde se ejecutan las instrucciones de losprogramas y donde se controla el funcionamiento de los distintoscomponentes de la computadora. La CPU procesa información almacenadaen la memoria, puede recuperar información desde la memoria (datos oprogramas) y almacenar nueva información o información procesada en lamemoria. La CPU está compuesta por dos componentes: la unidad decontrol (CU) y la unidad lógico-aritmética (ALU)
  50. 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 lacomputadora, determina la secuencia de operaciones a realizar, interpretainstrucciones codificadas, controla las funciones de decodificación,ejecución y almacenamiento. Esta unidad controla y sincroniza todo elproceso 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 derealizar operaciones artiméticas y lógicas (suma, resta, multiplicación,división y comparaciones) sobre datos que provienen de la memoriaprincipal (RAM).
  51. 51. Elementos, estructura y funcionamiento de un sistema de cómputo (IV) Funcionamiento de una computadora (III)La memoria central (RAM)El papel de la memoria central (memoria RAM, Random Access Memory) esel almacenamiento de información: datos y programas. Para que unprograma se pueda ejecutar, debe ser almacenado en la memoria central(carga o load del programa). También los datos que serán usados por elprograma durante su ejecución deben ser situados en la memoria. Es decir,la memoria RAM se usa para mantener los programas mientras se estánejecutando y los datos mientras se están procesando. Memoria Memoria Procesador central caché
  52. 52. Elementos, estructura y funcionamiento de un sistema de cómputo (V) Funcionamiento de una computadora (IV)Dispositivos de entrada/salidaLos dispositivos de entrada/salida establecen la comunicación entre lacomputadora y el usuario. Los dispositivos de entrada (teclado, mouse,unidad CD-ROM, unidad DVD, escaner, cámara, etc.) permiten laintroducción de datos y programas en la computadora para suprocesamiento. Una vez que los datos son leídos de los dispositivos deentrada, éstos son almacenados en la memoria central para suprocesamiento. Los dispositivos de salida (pantalla, impresora, etc.)permiten representar/visualizar el resultado de la ejecución de losprogramas.
  53. 53. Elementos, estructura y funcionamiento de un sistema de cómputo (VI) Funcionamiento de una computadora (V)La memoria externaLa memoria externa es un medio de almacenamiento permanente tanto paraprogramas como para datos. Entre los dispositivos de almacenamiento (omemorias auxiliares) más comúnmente utilizados se encuentran:• El disco duro• Disquetes magnéticos• Unidad CD-ROM• Unidad DVD• Memoria USB
  54. 54. Elementos, estructura y funcionamiento de un sistema de cómputo (VII) El microprocesadorEl microprocesador es un chip, un circuito integrado electrónico que esutilizado como unidad central de proceso en una computadora. Lasfunciones del microprocesador son el cálculo y control computacional. Microprocesador Unidad de Memoria central control Unidad lógico- aritmética
  55. 55. Lenguajes de programación: niveles, sintaxis y semántica (I)Niveles de lenguajes de programación (I) Lenguajes declarativos Lenguajes de alto nivel Lenguajes ensambladores Lenguajes de máquina
  56. 56. Lenguajes de programación: niveles, sintaxis y semántica (II) Niveles de lenguajes de programación (II)Lenguajes de máquinaFue el primer lenguaje utilizado en la programación de computadoras.Constituye la capa más interna en los niveles de lenguaje en lacomputación. Se podría decir que el lenguaje de máquina es el único queentiende directamente la computadora. Este lenguaje se expresa a travésdel alfabeto binario, el cual consta solo de los símbolos 0 y 1. El lenguaje demáquina es dependiente de la computadora.Lenguajes ensambladoresEl lenguaje ensamblador es una representación simbólica del lenguaje demáquina asociado. Es decir, cada computadora tiene un lenguajeensamblador propio. El lenguaje ensamblador usa palabras nemotécnicaspara representar cada instrucción (cadenas de bits) del lenguaje demáquina asociado.
  57. 57. Lenguajes de programación: niveles, sintaxis y semántica (III) Niveles de lenguajes de programación (III)Lenguajes de alto nivelConstituyen los lenguajes de programación más utilizados. Son lenguajesindependientes de la computadora. Un programa escrito en lenguaje de altonivel puede ser ejecutado en cualquier computadora, siempre que éstadisponga del traductor o compilador del lenguaje en cuestión. Losprogramas pueden ser escritos y comprendidos de una forma más sencilla,dada la aproximación de estos lenguajes con el lenguaje natural. Secaracterizan por proporcionar librerías de uso frecuente (entrada/salida,funciones matemáticas, manejo de cadenas, etc.). Ejemplos de estoslenguajes son: Pascal, Fortran, C, C++, Java, Ada, Lisp y Prolog.Lenguajes declarativosSon aquellos lenguajes en los que se indica a la computadora qué es lo quedebe hacer, qué es lo que se desea obtener o qué es lo que se estábuscando. Son comúnmente lenguajes de órdenes, donde se expresa loque hay que hacer en lugar de cómo hacerlo. Ejemplos de lenguajesdeclarativos son SQL y Prolog.
  58. 58. Lenguajes de programación: niveles, sintaxis y semántica (IV)Lenguaje de programación = Léxico + Sintaxis + Semántica
  59. 59. Lenguajes de programación: niveles, sintaxis y semántica (V)Aspectos a considerar en el diseño e implementación de los lenguajes de programación (I) • Léxico • Sintaxis • Semántica • Gestión de memoria • Manejo de excepciones • Implementación • Pragmática
  60. 60. Lenguajes de programación: niveles, sintaxis y semántica (VI)Aspectos a considerar en el diseño e implementación de los lenguajes de programación (II)LéxicoEs el conjunto de categorías gramaticales que definen el vocabulario dellenguaje de programación. Comúnmente, el léxico de un lenguaje deprogramación posee las siguientes categorías gramaticales:• Identifier (nombre de variables, nombre de constantes, nombre de funciones, etc.)• Literal (números enteros y decimales)• Operator (+, -, *, /. etc.)• Separator (; . , etc.)• Keyword (while, read, write, if, for, case, int, real, etc.)
  61. 61. Lenguajes de programación: niveles, sintaxis y semántica (VII)Aspectos a considerar en el diseño e implementación de los lenguajes de programación (III)SintaxisLa sintaxis de un lenguaje de programación es la definición gramatical delo que constituye un programa en dicho lenguaje. La sintaxis se especificaen términos de un conjunto de reglas que rigen la construcción de losprogramas. La definición de la sintaxis de un lenguaje de programacióndebe ser clara, concisa y formal. La sintaxis del lenguaje de programaciónse describe a partir de otros lenguajes, llamados metalenguajes. Uno delos metalenguajes más difundidos es el formalismo BNF (Backus-NaurForm), una gramática libre de contexto.
  62. 62. Lenguajes de programación: niveles, sintaxis y semántica (VIII) Aspectos a considerar en el diseño e implementación de los lenguajes de programación (IV)SemánticaSe refiere al significado de los programas. Es el conjunto de reglas quepermiten determinar el significado de cualquier construcción del lenguaje.La semántica asocia un significado a cada posible construcción gramaticaldel lenguaje.Gestión de memoriaLa gestión de memoria se refiere al proceso de asignar valores a lamemoria, considerando tanto las características estáticas como dinámicasde dichos valores. Los valores pueden ser asignados a una de trescategorías de memoria: memoria estática, la pila en tiempo de ejecución yel montículo.
  63. 63. Lenguajes de programación: niveles, sintaxis y semántica (IX) Aspectos a considerar en el diseño e implementación de los lenguajes de programación (V)Manejo de excepcionesUna excepción es una condición detectada por una operación la cual nose puede resolver en el contexto de la operación. Dos procesos básicosse asocian al manejo de excepciones: (1) lanzamiento de la excepción y(2) captura de la excepción. El lanzamiento de una excepción es señalarque se ha producido una excepción, mientras que la captura de laexcepción consiste en proporcionar una forma de manipular dichaexcepción, transfiriéndose el control del programa al manipulador de laexcepción.
  64. 64. Lenguajes de programación: niveles, sintaxis y semántica (X) Aspectos a considerar en el diseño e implementación de los lenguajes de programación (VI)ImplementaciónCómo se ejecutan los programas.PragmáticaSe refiere a los aspectos prácticos del uso de los programas.
  65. 65. Lenguajes de programación: niveles, sintaxis y semántica (XI) Lenguaje natural Aplicación Lenguaje de programación Compilador/Intérprete Contexto en el Máquina virtual Sistema operativo que se ubicanlos lenguajes de Lenguaje de máquina programación
  66. 66. Lenguajes de programación: traductores de lenguajes (I) Traductores de lenguaje Intérpretes CompiladoresUn traductor de lenguaje es un programa que traduce a código demáquina un programa fuente escrito en un lenguaje de alto nivel.
  67. 67. Lenguajes de programación: traductores de lenguajes (II) IntérpretesUn intérprete es un traductor que recibe como entrada un programafuente, lo traduce y lo ejecuta. Un intérprete traduce y ejecuta unainstrucción en código fuente, a la vez. Los programas interpretadosgeneralmente son más lentos en ejecución que los programas compilados. Traducción y Programa fuente Intérprete ejecución línea a línea
  68. 68. Lenguajes de programación: traductores de lenguajes (III) CompiladoresUn compilador traduce un programa fuente escrito en lenguaje de altonivel al lenguaje de máquina de la computadora. El programa traducido alenguaje de máquina es almacenado como código objeto. Programa fuente Compilador Programa objeto
  69. 69. Lenguajes de programación: traductores de lenguajes (IV) Fases de la compilación de un programa Programa Programa Programa ejecutable fuente Compilador objeto Linker en lenguaje de máquinaAnalizador Analizador Analizador Generador Optimizador Generador léxico sintáctico semántico de código de código de código intermedio objeto
  70. 70. Paradigmas de programación (I)• Programación imperativa• Programación funcional• Programación lógica• Programación orientada a objetos• Programación concurrente• Programación guiada por eventos
  71. 71. Paradigmas de programación (II)Programación imperativaEl programa se define como una serie de acciones o pasos, cada uno delos cuales recibe una entrada, ejecuta un cálculo, o produce comoresultado una salida. La programación imperativa se basa en la asignaciónde valores, en la utilización de variables para almacenar valores y en larealización de operaciones con estos valores almacenados. Ejemplos delenguajes de programación imperativa son los lenguajes de alto nivel(Fortran, C, Pascal, etc.) y los lenguajes ensambladores.Programación funcionalLos programas están formados por una colección de definiciones defunciones. Las funciones interactúan entre sí utilizando condicionales,recursividad y composición funcional. Ejemplos de lenguajes deprogramación funcional son Lisp y Scheme.
  72. 72. Paradigmas de programación (III)Programación lógicaUn lenguaje de programación lógica es un tipo de lenguaje declarativo, enel cual el programa está formado por un conjunto de declaraciones lógicas(predicados, hechos). La ejecución de un programa consiste en aplicarestas declaraciones para obtener todas las soluciones posibles a unproblema. El ejemplo clásico de lenguaje de programación lógica esProlog.Programación orientada a objetosEl programa es una colección de objetos que interactúan entre sí a travésdel paso de mensajes, los cuales comúnmente transforman el estado delos objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk, C++, Eiffel y Java.
  73. 73. Paradigmas de programación (IV)Programación concurrenteLa programación se basa en la ejecución simultánea de procesos, ya seaen una misma computadora con uno o varios procesadores, que en uncluster de computadoras. El programa se define como una colección deprocesos cooperativos y asíncronos. Ejemplos de lenguajes concurrentesson Linda y Fortran de alto rendimiento.Programación guiada por eventosEl programa responde a eventos externos generados en un orden nopredecible. Los eventos comúnmente se generan a partir de acciones delusuario en la pantalla (por ejemplo, clics del mouse o pulsaciones deteclas), pudiendo existir también otras fuentes generadoras de eventos.Ejemplos de lenguajes de programación guida por eventos son VisualBasic y Java.
  74. 74. Estrategias de construcción de programas (I) Fases de construcción de un programa Descripción y análisis del problema Diseño del algoritmo Codificación del programa Ejecución del programa Validación del programa
  75. 75. Estrategias de construcción de programas (II) Programación modular (I)La filosofía subyacente de la programación modular es la descomposicióndel programa en módulos independientes, cada uno de los cuales ejecutauna única actividad o función. Cada módulo se analiza, se diseña, secodifica y se verifica por separado. El programa es una jerarquía demódulos, con un módulo principal (también llamado programa principal) conuna función de controlador. El módulo principal transfiere el control a losmódulos inmediatamente subordinados (o subprogramas), de modo queéstos puedan ejecutar sus funciones. Una véz que el módulo subordinadohaya completado su tarea, devolverá nuevamente el control al módulocontrolador.La descomposición de un módulo en submódulos continúa hasta que sellegue a un punto en que el módulo resultante tenga sólo una tareaespecífica que ejecutar (lectura, salida de resultados, procesamiento dedatos o control de otros módulos).
  76. 76. Estrategias de construcción de programas (III) Programación modular (II) Módulo principal Módulo 1 Módulo 2 Módulo 3 ... Módulo NMódulo 11 Módulo 12 Módulo 31 Módulo 32 Módulo N1 Módulo N2 Módulo 311 Módulo 312
  77. 77. Estrategias de construcción de programas (IV) Programación modular (III)Ejemplo de descomposición de un programa en módulos: programa para el cálculo de estadísticas descriptivas Cálculo de estadísticasLectura de Cálculo de Cálculo de medidas de Generación de Generación de datos medidas de tablas gráficos tendencia dispersión central resumen
  78. 78. Estrategias de construcción de programas (V) Programación estructurada (programación sin goto)La programación estructurada es un conjunto de técnicas queincorporan: Diseño modular Diseño descendente (top-down) Estructuras de control básico: secuencia, selección e iteración
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×