Programación Estructurada Dr. Ruslan Gabbasov • Oficina: HP-8 • Correo: [email protected] • Sitio: https://sites.google.com/site/progestructuradauam2018 • Clases: martes, jueves 16:00 – 18:15 • -Curso de introduccción a la programación en lenguaje "C" dirigido a Ingenieros Electrónicos, Eléctricos y de Producción. - Se presenta el concepto de algoritmo y como representar y diseñar algoritmos para solucionar problemas. - Se introducen los conceptos fundamentales de un lenguaje de programación: tipos de datos, variables, estructuras de control, arreglos, y finalmente subprogramas y funciones. - Se imparten técnicas para lograr un buen estilo de programación. - Enfasis en la programación estructurada. LIBROS DE TEXTO •Brian Kernighan, Dennis Ritchie, El lenguaje de programación C •Deitel H. M. Deitel P. J., Como Programar en C/C++ •Peter Norton, Introducción a la Computación •Luis Joyanes A, Programación en C, Libro de Problemas •Francisco J. Ceballos, Enciclopedia del Lenguaje C EVALUACIÓN - Teoría: 70 % (2 Parciales 35% c/u), - Práctica: 30% (Tareas) - Proyecto final (Requisito) SITIOS DE INTERÉS EN LA WEB https://www.youtube.com/ https://www.tutorialspoint.com/compile_c_online.php http://www.cprogramming.com/ http://www.elrincondelc.com/portal/ Software libre: compilador de C Dev C++ https://sourceforge.net/projects/orwelldevcpp/ Compilador en linea (sin necesidad de instalar y se puede acceder por celular): https://www.onlinegdb.com/online_c_compiler Que no les pase esto :) https://www.youtube.com/watch?v=HigVyp2wtfE Evolución del Computador Antecedentes históricos Máquinas mecánicas: las computadoras de Charles Babbage Máquinas electromecánicas: el computador de Konrad Zuse Generaciones tecnológicas Primera generación: válvulas Segunda generación: transistores Tercera generación: circuitos integrados Cuarta generación: microprocesadores ¿Quinta generación?: el microprocesador como elemento básico Antecedentes históricos Primer reto: operaciones básicas El ábaco: primer instrumento para calcular. Tablilla dividida en varias columnas. Cada una con un conjunto de cuentas engarzadas en una varilla. Su origen se remonta a los siglos III o IV a. de C. Sigue en uso Antecedentes históricos Máquina aritmética Desarrollada por Blas Pascal (1642, a los 18 años) Constaba de un conjunto de ruedas dentadas, cada una de ellas numerada del 0 al 9. Al pasar una rueda del 9 al 0 avanzaba un diente de rueda a la siguiente. Máquina Mecánica. Charles Babbage (1791-1871) “Uno de los padres del computador actual” “Adelantado” para la tecnología de la época Consta de una memoria, una unidad aritmética, sistema de engranajes para transferir datos entre memoria y la unidad aritmética y un dispositivo para introducir y sacar datos de la máquina Empleaba tarjetas perforadas para Programarse Antecedentes históricos Máquina Electromecánicas Herman Hollerith (1860-1929). Censo de los Estados Unidos Tarjetas perforadas Crea la empresa (TMC) que da lugar a IBM Konrad Zuse Construye (1941) el primer máquina universal programable (Z3). Trabaja en binario. Prototipos previos: Z1 (1938) y Z2 (1939) Computador Harvard MARK-I (1947) Howard Aiken Evolución: - Mark-II máquina de relés mecánicos (Babbadge) - Mark-III y Mark-IV máquinas de tubos de vacío con programa almacenado. 1ª Generación: válvulas de vacío Periodo: 1946-1959 Velocidad de proceso en ms. Disipación calorífica muy elevada Gran tamaño y poca capacidad Lenguaje máquina Monoprogramación Sin sistema operativo 1ª Generación: válvulas de vacío Colossus: grupo de científicos ingleses con Alan Turing (1943). Ayudó a descifrar el código enigma de los alemanes. ENIAC Electronic Numerical Integrator and Calculator. Eckert y Mauchly (1943) 1er computador electrónico de propósito general. Programa cableado Cálculo de tablas de fuego de artillería Operativo durante la II Guerra Mundial. Conocido en 1946 1ª Generación: válvulas de vacío ENIAC Características: (1946) 30 Toneladas 18,000 tubos de vacío 160 Kw 100 KHz Operaciones: suma, resta, multiplicación y división (suma: 200µs) 20 registros de 10 dígitos (2 pies/registro) Entrada/Salida de datos: Tarjetas perforadas Tarjeta perforada de formato de 80 columnas de IBM (1928) Instrucción en Fortran: Z(1) = Y + W(1) 1ª Generación: válvulas de vacío EDVAC: (1946) Electronic Discrete Variable Automatic Computer. (Autores: Eckert-Mauchly-von Neumann) Bases de la Arquitectura von Neumann Programa almacenado 6,000 Tubos de vacío + 12,000 diodos Aritmética binaria 5 unidades: Entrada, Memoria, UAL, Control, Salida UNIVAC I - Remington-Rand Co. (Oficina de Censos) 1er computador comercial con éxito (1951) 48 sistemas a 1,250,000 $ 2ª Generación: transistores (1948) Período 1959-1965 Menor tamaño, menor disipación de calor, mayor fiabilidad Primeros lenguajes de alto nivel: FORTRAN COBOL ALGOL Sistema Operativo Extensión de los computadores comerciales 2ª Generación: transistores Innovadores, con poca repercusión comercial: UNIVAC LARC IBM STRETCH (o 7030) Burroughs D-825 ATLAS Comerciales: CDC 1604 y 3600 IBM 1410 PDP 1 de DEC Serie 1100 de Univac 3ª Generación: circuitos integrados Período: 1965-1971 Menor tamaño, más baratos, menor consumo de energía Primera familia de computadores, compatibles a nivel de arquitectura: IBM360 Supercomputadores: 6600 de Control Data (Cray). Minicomputadores: PDP-8 y PDP-11 Sistemas Operativos: Multiprogramación, tiempo compartido Lenguajes: alto nivel estructurado (Dijkstra, 1968) 4ª Generación: microprocesadores VLSI Período 1971 – 1981: Desarrollo de microprocesadores y memorias basados en semiconductores. Very Large Scale Integrated (VLSI) 1971: 1er microprocesador comercial INTEL 4004 (4 bits) 8 bits: Intel 8080-85, Motorola 6800 y Zilog Z-80 16 bits: Intel 8086-88, Motorola 68000 y Z-8000 32 bits: Intel 80386, Motorola 68030 Válvula, transistor, circuito integrado, microprocesador 4ª Generación: microprocesadores VLSI Computadores personales y estaciones de trabajo Otras aplicaciones: electrodomésticos, equipos de música y vídeo, etc. Arquitectura RISC (MIPS R2000, SPARC) Supercomputadores: computadores paralelos Lenguajes de programación: C y Ada Sistemas Operativos. Estandarización: UNIX Interfaces gráficas Generalización de las redes de computadores ¿5ª Generación?: microprocesadores 1982 – ahora. ULSI (Ultra Large Scale Integration) El microprocesador como elemento básico La computación masivamente paralela Inteligencia artificial y proc. lenguaje natural La comunicación y las interfaces multimedia. Internet como una computadora distribuida Las computadoras actuales (+ smarphones, tablets etc..) Integrados con millones de transistores Velocidades > 1 GHz UAL y UC Microprocesador o CPU + GPU Memoria Principal (capacidad > 1 Giga) Unidad de E/S en chipsets Diversidad y compatibilidad de periféricos (USB) Interconectividad de sistemas Futuro de los microprocesadores Chips neuromorfos Límite tecnológico de CMOS Chips con base en graféno Chips orgánicos/biológicos Chips ópticos (fotónica) Computadoras quánticas Nuevos procesadores requieren nuevos lenguajes de programación! Reflexión • Generaciones y dependencia tecnológica: - X (boomers) 1960-1973 - Y (millenials) 1980-1993, - Z (post-millenials) 1995-2007, - T (táctil) 2010-2022 • Tareas a diferentes grados de ejecución: hacer un omelette, pagar recibo de luz, conducir un auto… Discusión • ¿Que es una computadora? ¿Para que? • ¿Cuantas generaciones de computadoras hay y cuales son sus características? • ¿Por qué se necesitan nuevos CPUs? • ¿Qué principios físicos podrían ser la base de los nuevos procesadores?