Fundamentos de programación: introducción a los algoritmos.
En esta presentación se explica lo que es un algoritmo y las formas de representar uno. Se explica detalladamente el concepto de variable y cómo realizar una prueba de escritorio de un algoritmo. Como una buena práctica de programación, se incentiva la documentación de un algoritmo.
Fundamentos de programación: introducción a los algoritmos.
En esta presentación se explica lo que es un algoritmo y las formas de representar uno. Se explica detalladamente el concepto de variable y cómo realizar una prueba de escritorio de un algoritmo. Como una buena práctica de programación, se incentiva la documentación de un algoritmo.
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁClaude LaCombe
Recuerdo perfectamente la primera vez que oí hablar de las imágenes subliminales de los Testigos de Jehová. Fue en los primeros años del foro de religión “Yahoo respuestas” (que, por cierto, desapareció definitivamente el 30 de junio de 2021). El tema del debate era el “arte religioso”. Todos compartíamos nuestros puntos de vista sobre cuadros como “La Mona Lisa” o el arte apocalíptico de los adventistas, cuando repentinamente uno de los participantes dijo que en las publicaciones de los Testigos de Jehová se ocultaban imágenes subliminales demoniacas.
Lo que pasó después se halla plasmado en la presente obra.
LA PEDAGOGIA AUTOGESTONARIA EN EL PROCESO DE ENSEÑANZA APRENDIZAJEjecgjv
La Pedagogía Autogestionaria es un enfoque educativo que busca transformar la educación mediante la participación directa de estudiantes, profesores y padres en la gestión de todas las esferas de la vida escolar.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Programación estructurada
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.
3.
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.
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. Concepto de algoritmo (II) Algoritmo Especificación de las entradas Acción o procedimiento Acción o procedimiento Acción o procedimiento Acción o procedimiento Descripción del resultado o efecto . . .
8.
9.
10.
11.
12. 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. Descripción y análisis del problema Diseño del algoritmo Programa en un lenguaje de programación
13.
14.
15.
16.
17.
18. Diseño de algoritmos (I) Diseño del algoritmo Diseño descendente Refinamiento Representación gráfica
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. Diseño de algoritmos (III) Diseño descendente (II) . . . Problema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema Subproblema
21. 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. X Y P P1 P2 P3 P4 X Y U V P Q P31 P32 P33 V Q R S
22. Diseño de algoritmos (V) Diseño descendente (IV) Ejemplo: el problema del cajero automático Cajero automático Lectura y validación del NIP Selección de tipo de cuenta Selección de tipo de operación Finalizar Consulta de saldo Traspaso entre cuentas propias Retiro de efectivo Pago de servicios . . . . . .
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.
25.
26.
27.
28. 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. Algoritmo Especificación en pseudocódigo Programa
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) ME ← SE/N MP ← SP/N write “La edad promedio es: ”, ME write “El peso promedio es: ”, MP end 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.
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) Símbolo Representación Significado Flechas o líneas de flujo Indica el sentido de ejecución de las acciones Rectángulo Proceso o acción a realizar (por ejemplo, asignación) Paralelogramo Representa una entrada o salida Rombo Representa el constructor de selección (decisión lógica) Rectángulo redondeado Representa el inicio y fin del diagrama Círculo Se usa como conector entre dos partes del diagrama
34.
35.
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) Begin End <acción 1> <acción 2> <acción 3> . . . Begin read write If-then-else while-end repeat-until end 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)
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.
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 condición Sí No <acciones> <acciones> Algoritmo Diagrama N-S si <condición> entonces <acción 1> si_no <acción 2> selector otro 1 2 3 . . . n Estructura de control condicional CASE
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 S = ‘M’ Sí No CM = CM + 1 CF = CF + 1 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 Algoritmo Diagrama N-S
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ón Representación en el diagrama N-S de la estructura MIENTRAS Representación en el diagrama N-S de la estructura REPITE-HASTA Mientras (condición) <acciones que se repiten> HASTA (condición) <acciones que se repiten>
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. 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 Inicio real: SE, SP entero: NE Mientras NE <N leer E, P SE = SE + E SP = SP + P NE = NE + 1 NE = 0 SE = 0 SP = 0
46. 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 ME = SE/N MP = SP/N Escribir “Edad promedio”, ME Escribir “Peso promedio”, MP ME <- SE/N MP <- SP/N write “Edad promedio: ”, ME write “Peso promedio: ”, MP end Fin
47.
48. Elementos, estructura y funcionamiento de un sistema de cómputo (I) Organización física de una computadora CPU Unidad Central de Proceso CU Unidad de control ALU Unidad lógico-aritmética RAM Memoria Dispositivos de entrada Dispositivos de salida Memoria externa (almacenamiento permanente)
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) 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) La unidad central de proceso (del inglés, CPU)
50. Elementos, estructura y funcionamiento de un sistema de cómputo (III) Funcionamiento de una computadora (II) 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). La unidad lógico-aritmética (ALU) 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 de control (CU)
51. Elementos, estructura y funcionamiento de un sistema de cómputo (IV) Funcionamiento de una computadora (III) El papel de la memoria central (memoria RAM, Random Access Memory ) es el almacenamiento de información: datos y programas. Para que un programa se pueda ejecutar, debe ser almacenado en la memoria central (carga o load del programa). También los datos que serán usados por el programa durante su ejecución deben ser situados en la memoria. Es decir, la memoria RAM se usa para mantener los programas mientras se están ejecutando y los datos mientras se están procesando. La memoria central (RAM) Memoria central Memoria caché Procesador
52. Elementos, estructura y funcionamiento de un sistema de cómputo (V) Funcionamiento de una computadora (IV) Los dispositivos de entrada/salida establecen la comunicación entre la computadora y el usuario. Los dispositivos de entrada (teclado, mouse, unidad CD-ROM, unidad DVD, escaner, cámara, etc.) permiten la introducción de datos y programas en la computadora para su procesamiento. Una vez que los datos son leídos de los dispositivos de entrada, éstos son almacenados en la memoria central para su procesamiento. Los dispositivos de salida (pantalla, impresora, etc.) permiten representar/visualizar el resultado de la ejecución de los programas. Dispositivos de entrada/salida
53.
54. Elementos, estructura y funcionamiento de un sistema de cómputo (VII) El microprocesador El microprocesador es un chip, un circuito integrado electrónico que es utilizado como unidad central de proceso en una computadora. Las funciones del microprocesador son el cálculo y control computacional. Memoria central Unidad de control Unidad lógico-aritmética Microprocesador
55. Lenguajes de programación: niveles, sintaxis y semántica (I) Niveles de lenguajes de programación (I) Lenguajes de máquina Lenguajes ensambladores Lenguajes de alto nivel Lenguajes declarativos
56. Lenguajes de programación: niveles, sintaxis y semántica (II) Niveles de lenguajes de programación (II) Fue el primer lenguaje utilizado en la programación de computadoras. Constituye la capa más interna en los niveles de lenguaje en la computación. Se podría decir que el lenguaje de máquina es el único que entiende directamente la computadora. Este lenguaje se expresa a través del alfabeto binario, el cual consta solo de los símbolos 0 y 1. El lenguaje de máquina es dependiente de la computadora. Lenguajes de máquina El lenguaje ensamblador es una representación simbólica del lenguaje de máquina asociado. Es decir, cada computadora tiene un lenguaje ensamblador propio. El lenguaje ensamblador usa palabras nemotécnicas para representar cada instrucción (cadenas de bits) del lenguaje de máquina asociado. Lenguajes ensambladores
57. Lenguajes de programación: niveles, sintaxis y semántica (III) Niveles de lenguajes de programación (III) Constituyen los lenguajes de programación más utilizados. Son lenguajes independientes de la computadora. Un programa escrito en lenguaje de alto nivel puede ser ejecutado en cualquier computadora, siempre que ésta disponga del traductor o compilador del lenguaje en cuestión. Los programas pueden ser escritos y comprendidos de una forma más sencilla, dada la aproximación de estos lenguajes con el lenguaje natural. Se caracterizan por proporcionar librerías de uso frecuente (entrada/salida, funciones matemáticas, manejo de cadenas, etc.). Ejemplos de estos lenguajes son: Pascal, Fortran, C, C++, Java, Ada, Lisp y Prolog. Lenguajes de alto nivel Son aquellos lenguajes en los que se indica a la computadora qué es lo que debe 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 lo que hay que hacer en lugar de cómo hacerlo. Ejemplos de lenguajes declarativos son SQL y Prolog. Lenguajes declarativos
58. Lenguajes de programación: niveles, sintaxis y semántica (IV) Lenguaje de programación = Léxico + Sintaxis + Semántica
59.
60.
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) La sintaxis de un lenguaje de programación es la definición gramatical de lo que constituye un programa en dicho lenguaje. La sintaxis se especifica en términos de un conjunto de reglas que rigen la construcción de los programas. La definición de la sintaxis de un lenguaje de programación debe ser clara, concisa y formal. La sintaxis del lenguaje de programación se describe a partir de otros lenguajes, llamados metalenguajes. Uno de los metalenguajes más difundidos es el formalismo BNF (Backus-Naur Form), una gramática libre de contexto. Sintaxis
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) Se refiere al significado de los programas. Es el conjunto de reglas que permiten determinar el significado de cualquier construcción del lenguaje. La semántica asocia un significado a cada posible construcción gramatical del lenguaje. Semántica La gestión de memoria se refiere al proceso de asignar valores a la memoria, considerando tanto las características estáticas como dinámicas de dichos valores. Los valores pueden ser asignados a una de tres categorías de memoria: memoria estática, la pila en tiempo de ejecución y el montículo. Gestión de memoria
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) Una excepción es una condición detectada por una operación la cual no se puede resolver en el contexto de la operación. Dos procesos básicos se 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ñalar que se ha producido una excepción, mientras que la captura de la excepción consiste en proporcionar una forma de manipular dicha excepción, transfiriéndose el control del programa al manipulador de la excepción. Manejo de excepciones
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) Cómo se ejecutan los programas. Implementación Se refiere a los aspectos prácticos del uso de los programas. Pragmática
65. Lenguajes de programación: niveles, sintaxis y semántica (XI) Contexto en el que se ubican los lenguajes de programación Lenguaje natural Aplicación Lenguaje de programación Compilador/Intérprete Máquina virtual Sistema operativo Lenguaje de máquina
66. Lenguajes de programación: traductores de lenguajes (I) Un traductor de lenguaje es un programa que traduce a código de máquina un programa fuente escrito en un lenguaje de alto nivel. Traductores de lenguaje Intérpretes Compiladores
67. Lenguajes de programación: traductores de lenguajes (II) Intérpretes Un intérprete es un traductor que recibe como entrada un programa fuente, lo traduce y lo ejecuta. Un intérprete traduce y ejecuta una instrucción en código fuente, a la vez. Los programas interpretados generalmente son más lentos en ejecución que los programas compilados. Programa fuente Intérprete Traducción y ejecución línea a línea
68. Lenguajes de programación: traductores de lenguajes (III) Compiladores Un compilador traduce un programa fuente escrito en lenguaje de alto nivel al lenguaje de máquina de la computadora. El programa traducido a lenguaje de máquina es almacenado como código objeto. Programa fuente Compilador Programa objeto
69. Lenguajes de programación: traductores de lenguajes (IV) Fases de la compilación de un programa Programa fuente Compilador Programa objeto Linker Programa ejecutable en lenguaje de máquina Analizador léxico Analizador sintáctico Analizador semántico Generador de código intermedio Optimizador de código Generador de código objeto
70.
71. Paradigmas de programación (II) El programa se define como una serie de acciones o pasos, cada uno de los cuales recibe una entrada, ejecuta un cálculo, o produce como resultado una salida. La programación imperativa se basa en la asignación de valores, en la utilización de variables para almacenar valores y en la realización de operaciones con estos valores almacenados. Ejemplos de lenguajes de programación imperativa son los lenguajes de alto nivel (Fortran, C, Pascal, etc.) y los lenguajes ensambladores. Programación imperativa Los programas están formados por una colección de definiciones de funciones. Las funciones interactúan entre sí utilizando condicionales, recursividad y composición funcional. Ejemplos de lenguajes de programación funcional son Lisp y Scheme. Programación funcional
72. Paradigmas de programación (III) Un lenguaje de programación lógica es un tipo de lenguaje declarativo, en el cual el programa está formado por un conjunto de declaraciones lógicas (predicados, hechos). La ejecución de un programa consiste en aplicar estas declaraciones para obtener todas las soluciones posibles a un problema. El ejemplo clásico de lenguaje de programación lógica es Prolog. Programación lógica El programa es una colección de objetos que interactúan entre sí a través del paso de mensajes, los cuales comúnmente transforman el estado de los objetos. Ejemplos de lenguajes orientados a objetos son Smalltalk, C++, Eiffel y Java. Programación orientada a objetos
73. Paradigmas de programación (IV) La programación se basa en la ejecución simultánea de procesos, ya sea en una misma computadora con uno o varios procesadores, que en un cluster de computadoras. El programa se define como una colección de procesos cooperativos y asíncronos. Ejemplos de lenguajes concurrentes son Linda y Fortran de alto rendimiento. Programación concurrente El programa responde a eventos externos generados en un orden no predecible. Los eventos comúnmente se generan a partir de acciones del usuario en la pantalla (por ejemplo, clics del mouse o pulsaciones de teclas), pudiendo existir también otras fuentes generadoras de eventos. Ejemplos de lenguajes de programación guida por eventos son Visual Basic y Java. Programación guiada por eventos
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. Estrategias de construcción de programas (II) Programación modular (I) La filosofía subyacente de la programación modular es la descomposición del programa en módulos independientes, cada uno de los cuales ejecuta una única actividad o función. Cada módulo se analiza, se diseña, se codifica y se verifica por separado. El programa es una jerarquía de módulos, con un módulo principal (también llamado programa principal) con una función de controlador. El módulo principal transfiere el control a los módulos inmediatamente subordinados (o subprogramas), de modo que éstos puedan ejecutar sus funciones. Una véz que el módulo subordinado haya completado su tarea, devolverá nuevamente el control al módulo controlador. La descomposición de un módulo en submódulos continúa hasta que se llegue a un punto en que el módulo resultante tenga sólo una tarea específica que ejecutar (lectura, salida de resultados, procesamiento de datos o control de otros módulos).
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 N Módulo 12 Módulo 31 Módulo 32 Módulo N1 Módulo N2 Módulo 11 Módulo 311 Módulo 312
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ísticas Lectura de datos Cálculo de medidas de tendencia central Cálculo de medidas de dispersión Generación de tablas resumen Generación de gráficos
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 que incorporan: Diseño modular Diseño descendente ( top-down ) Estructuras de control básico: secuencia, selección e iteración