TEMA 1. INTRODUCCIÓN Y CONCEPTOS BÁSICOS Contenido del Tema TT E E M M A A 11 1. Introducción 2. Clasificación 3. Evolución histórica 4. Representación de la información 4.1. Códigos 4.2. Sistemas de numeración 4.3. Representación de números en el ordenador 4.4. Códigos de Entrada/Salida 5. Estructura básica de un ordenador 5.1. Hardware y Software 5.2. Estructura del Hardware 5.3. Estructura del Software 6. Funcionamiento de un ordenador Elementos de Programación I Introducción INFORMÁTICA = INFORmación + autoMÁTICA INFOR – Informació Información: Conjunto de símbolos usados para representar magnitudes, hechos, objetos o ideas. – Computadora: Computadora Máquina para procesar información. Proceso informático o computació computación Proceso Informático Computadora Información de entrada e instrucciones Información de salida o resultados Elementos de Programación Curso 2006-2007 Introducción • Informática como ciencia y técnica – Ciencia: Ciencia Estudio de la información y los métodos para tratarla. – Técnica: cnica Estudio y diseño de los ordenadores. Elementos de Programación Curso 2006-2007 Introducción • Ambitos de aplicación de la informática. – Industria. "Robótica”, "Cibernética”, CAM (Computer Aided Manufacturing), CIM (Computer Integrated Manufacturing) – Medicina. "Informática médica" – Agricultura y ganadería. "Agrónica" – Enseñanza. CAI (Computer Aided Instruction) – Diseño (industrial y artístico). CAD (Computer Aided Design), Infografía – Ambitos científicos y técnicos. Navegación, Meteorología, Astronomía, "Simulación por ordenador”, SIG (Sistemas de Información Geográficos) – Ingeniería. CAE (Computer Aided Engineering) – Telecomunicaciones. "Teleinformática" o "Telemática" – Administración y negocios: "Informática de gestión”, Electronic Data Processing (EDP), Management Information Systems (MIS), Enterprise Resource Planing (ERP), Electronic Document Interchange (EDI) – Oficina. “Ofimática”. – Mundo doméstico. “Domótica”, Multimedia, video juegos. Elementos de Programación Curso 2006-2007 Clasificación • Métricas de la potencia de un ordenador. – – – – Velocidad. Fiabilidad. Capacidad de almacenamiento. Costo. La potencia de un ordenador es proporcional a su velocidad de cá cálculo, a su fiabilidad, su capacidad de almacenamiento y normalmente a su coste. Es decir, los ordenadores má más potentes son los má á s rá á pidos, fiables y con mayor m r capacidad de almacenamiento pero tambié también los má más caros. Elementos de Programación Curso 2006-2007 Clasificación • Tipos de ordenadores por su potencia – – – – – – – – – Supercomputadores (“Number crunchers”) Macrocomputadores (“Mainframes”) Minicomputadores. Servidores (“Servers”) Estaciones de trabajo (“Workstations”) Supercomputador CRAY Computadores Personales/Profesionales (PS/PC) Computadores portátiles (Notebook, PDA Hand-Held) Network Computers (NC) Nanocomputadores (“domésticos” o “familiares”) Elementos de Programación Curso 2006-2007 Clasificación Number Cruncher WorkStation Mainframe PC Portátil Servidor NC PDA Elementos de Programación Curso 2006-2007 Evolución Histórica • Prehistoria – Abaco (siglo XI A.C.). – Sistemas de numeración. • Calculadores mecánicos – Reglas de cálculo (logaritmos). – Calculadora de Pascal (1642) – Máquina de Leibnitz. Regla de cálculo Ábaco Pascalina Elementos de Programación Curso 2006-2007 Evolución Histórica • Procesadores mecánicos – Tarjetas perforadas de Jacquard. – Cajas de música. – Primer ordenador moderno: Máquina Analítica (Babbage) – Primeros programas de ordenador (Ada Byron) Telar de Jacquard • Tabuladores mecánicos – Álgebra de Boole – Tabuladora de Hollerith – ASCC de Aiken Tabuladora de Hollerith Elementos de Programación Curso 2006-2007 Evolución Histórica Ibn Mohammed al-Khowârizmî Charles Babbage John Napier Ada Byron Blaise Pascal Gottfried Von Leibnitz Joseph Marie Jacquard George Boole Herman Hollerith Howard Aiken Elementos de Programación Curso 2006-2007 Evolución Histórica Máquina de Leibnitz Tarjetas de Jacquard Máquina Diferencial (detalle) Máquina Diferencial Elementos de Programación Curso 2006-2007 Evolución Histórica ASCC Reproducción de la Máquina Analítica de Babbage Calculador mecánico de Bollee Elementos de Programación Curso 2006-2007 Evolución Histórica • Primera Generación. Válvulas electrónicas (1940-50). – Avances en la electrónica. • Cinta y tambor magnético (Poulsen) • Válvula de vacío (Lee de Forest) • Principios de Shannon Válvula de vacío Tambor magnético – Calculadores electrónicos en la 2ª guerra mundial. • Z3 de Zuse, Colossus de Turing – Ejemplos: • ENIAC. Primer calculador totalmente electrónico (Eckert y Mauchly). • ABC, Mark I, EDSAC, EDVAC, LEO, WHIRLWIND, UNIVAC I, IBM 701 – Arquitectura de Von Neumann Elementos de Programación Curso 2006-2007 Evolución Histórica Cinta magnética Tambor magnético Válvula de vacío Tarjeta y cinta perforada Elementos de Programación Curso 2006-2007 Evolución Histórica Colossus Konrad Zusse Alan Turing Eckert y Mauchly Claude Shanon John Von Neumman Elementos de Programación Curso 2006-2007 Evolución Histórica ENIAC Elementos de Programación Curso 2006-2007 Evolución Histórica EDVAC ABC EDSAC Atanasanoff MARK I UNIVAC I Elementos de Programación Curso 2006-2007 Evolución Histórica ACE (1950) ORACLE WHIRLWIND LEO IBM 650 Elementos de Programación Curso 2006-2007 Evolución Histórica • Segunda Generación. Transistores (1950-65). – Nuevas tecnologías en electrónica. • Máquinas más pequeñas y rápidas. • Memorias de ferritas y disco magnético. • Transistor (Shockley) 1958 Transistores – Ejemplos: TXO, IBM-7000, Atlas, ... – Primeros lenguajes de programación. • • • • • FORTRAN (Backus) ALGOL (Naur) COBOL (CODASYL) BASIC (Kemeny & Kurtz) PL-I (IBM) Evolución de los discos magnéticos Elementos de Programación Curso 2006-2007 Evolución Histórica Discos duros primitivos (RAMAC) Memoria de Ferritas Transistores Elementos de Programación Curso 2006-2007 Evolución Histórica Grace Murray Hopper John Backus Thomas Kurtz y John Kemeny P. Naur Primer transistor CODASYL (Cobol) William Shockey Elementos de Programación Curso 2006-2007 Evolución Histórica MIT TX-0 DIGITAL PDP-1 IBM 7030 IBM 1401 UNIVAC 1107 CDC 1600 Elementos de Programación Curso 2006-2007 Evolución Histórica • Tercera generación. Circuitos integrados (1965-75). – Avances en componentes y dispositivos. • Circuitos integrados (Kilby, Noyce & Moore) • Terminales de video, impresoras, módem, ... Circuito integrado – Ejemplos: IBM-360, PDP-8, UNIVAC-1108, CDC-6000 – Software: • Sistemas operativos: OS/360, MVS, VMS, UNIX, ... – Permiten compartir el ordenador entre varios usuarios • Bases de datos (Codd) • Lenguajes de programación estructurados (Dijkstra): APL, Pascal, C, ... • Lenguajes de programación entrelazados: Forth, Logo, ... Elementos de Programación Curso 2006-2007 Evolución Histórica MODEM acústico Circuito integrado primitivo Primer Circuito Integrado Perforadora y lectora de tarjetas Impresora de líneas Elementos de Programación Curso 2006-2007 Evolución Histórica Jack Kilby Gene Amdahl Robert Noyce Kenneth Thompson Seymour Papert Dennis Ritchie Brian Kernigan E. Dijkstra Niklaus Wirth Elementos de Programación Curso 2006-2007 Evolución Histórica Evolución de los disquetes IBM 360 CDC 6600 CPU Apollo XI DEC PDP-11 UNIX DEC VAX 11-750 Elementos de Programación Curso 2006-2007 Evolución Histórica • Cuarta Generación. Microprocesadores (1975-). – Avances espectaculares en microelectrónica. • Microprocesadores (Intel 4004) y circuitos LSI. – Aparecen los ordenadores personales: Apple, IBM, Sinclair, Amstrad, Commodore, Atari, ... • • • • • Sistemas operativos personales: CP/M, MS-DOS, MacOS, ... Ofimática. Procesadores de textos, hojas de cálculo, ... Entornos gráficos: Windows, Next, Motif, ... Lenguajes orientados a objetos: ADA, C++, ... Multimedia – Teleinformática: Redes, Internet. Elementos de Programación Curso 2006-2007 Evolución Histórica INTEL 4004 Calculadora BUSICOM Pentium IV INTEL 8008 Obleas de silicio con μP Elementos de Programación Curso 2006-2007 Evolución Histórica John Sculley (APPLE) Paul Allen y Bill Gates (MICROSOFT) Sir Clive Sinclair Ed Roberts (ALTAIR) C. Moore (INTEL) Steve Jobs y Stephen Wozniak (APPLE) Gary Kildall (DR) Linus Torvalds (LINUX) Elementos de Programación Curso 2006-2007 Evolución Histórica APPLE I APPLE II MACINTOSH iMAC II APPLE LISA iBOOK iMAC Elementos de Programación Curso 2006-2007 Evolución Histórica COMMODORE VIC-20 ZX-81 ALTAIR 8800 ZX SPECTRUM IBM PS-2 IBM-PC AMSTRAD CPC 64 Elementos de Programación Curso 2006-2007 Evolución Histórica ATARI ST COMPAQ - 1 ATARI PONG SONY MSX TANDY TRS-80 GALAXY COMMODORE 64 OSBORNE 1 XBOX SONY PS-2 Elementos de Programación Curso 2006-2007 Evolución Histórica Fibra Óptica Cableado de red local Router Teleinformática WIRELESS Networking INTERNET Elementos de Programación Curso 2006-2007 Evolución Histórica Entornos gráficos Be OS OS/2 WARP GEM (DR) XEROX STAR LINUX / MOTIF Elementos de Programación Curso 2006-2007 Evolución Histórica WINDOWS 1 WINDOWS 98 WINDOWS 3.11 WINDOWS 2 WINDOWS NT WINDOWS XP Elementos de Programación Curso 2006-2007 Evolución Histórica • Quinta Generación. Inteligencia Artificial (1990-). – Juego de la imitación de Turing – Nuevas arquitecturas de ordenadores • Procesamiento paralelo • Redes neuronales • Nuevas tecnologías de materiales – Nuevos enfoques en el tratamiento de la información • • • • Datos → Conocimientos Lenguajes no procedurales: LISP, PROLOG, ... Lenguaje natural Sistemas expertos, sistemas inteligentes. Elementos de Programación Curso 2006-2007 Evolución Histórica LISP C++ John McCarthy Bjarne Stroustrup SMALLTALK Negroponte Alan Kay PROLOG Red Neuronal Elementos de Programación Curso 2006-2007 Evolución Histórica Vídeo 2001 una odisea en el espacio HAL 9000 Superconductor Oblea de circuitos con tecnología de Cobre (IBM) DEEP BLUE (IBM) EARTH SIMULATOR (NEC) ROBOTS (SONY) Nanotecnología Elementos de Programación Curso 2006-2007 Evolución Histórica • Situación actual – Globalización. • La tecnología al alcance de todos. – Espectaculares avances de la telemática. • • • • Redes locales de más de 1 Gbit/seg. Redes Wireless (inalhámbricas) Redes públicas de banda ancha (ATM, ADSL, XDSL) Integración de telefonía y datos, tanto fija como móvil (GPRS, UMTS, telefonía IP) • Seguridad informática (firewalls, cifrado de clave pública) • Internet y sus tecnologías aplicadas: – WWW, HTML, JAVA, XML, etc. Elementos de Programación Curso 2006-2007 Evolución Histórica – Lenguajes visuales para los entornos GUI. • Integración de elementos mutimedia en los programas. • Lenguajes orientados a la infografía (FLASH, …) – CBSE (Component-Based Software Engineering) – Procesamiento distribuido. • Procesamiento simétrico (SMP). • Procesamiento en red (grid). Elementos de Programación Curso 2006-2007 Evolución Histórica • Videos y animaciones Historia de la informá informática Macintosh IBM 701 PowerPC IBM RAMAC iMac Funcionamiento válvula de vací vacío Mecanismo caja de mú música IBM 360 IBM NORC Fabricació Fabricación Microprocesadores IBM 1401 Pentium Elementos de Programación Curso 2006-2007 Códigos • DATO: DATO Característica de una información expresada en forma adecuada para su tratamiento. • Representación de los datos (valores): – Valores analógicos. – Valores discretos o digitales. • Necesidad de convertir los valores analógicos a discretos. – Sistema digital: digital Sistema de N estados estables – Dígito: gito Variable capaz de asumir un estado discreto. • Los dígitos se agrupan para representar más estados. Elementos de Programación Curso 2006-2007 Códigos • Código: digo Ley de correspondencia entre valores de información y combinaciones de dígitos de un sistema digital utilizadas para representarlos. – Codificació Codificación: Información → Código azul → verde → rojo → 0 1 2 ó azul → verde → rojo → 100 101 111 – Decodificació Decodificación: Código → Información azul ← verde ← rojo ← 0 1 2 ó azul ← verde ← rojo ← 100 101 111 • Código binario. binario Cuando el sistema digital utilizado tiene sólo 2 estados (0,1). Elementos de Programación Curso 2006-2007 Códigos • BIT (BInary digiT): Unidad elemental BI de información. Variable lógica que sólo admite dos valores. • Agrupaciones de bits: – Para N valores hacen falta x bits ⇒ 2 x-1 < N ≤ 2 x – BYTE u OCTETO: OCTETO Agrupación de bits necesaria para representar y almacenar un símbolo de escritura (8). – Medidas clásicas de la capacidad de almacenamiento: KILOBYTE (KB) 210 bytes, MEGABYTE (MB) 210 KB, GIGABYTE (GB) 210 MB, TERABYTE (TB) 210 GB. Elementos de Programación Curso 2006-2007 Códigos • Nuevos prefijos para múltiplos binarios Factor Nombre Símbolo Origen Derivación 2 10 kibi Ki kilobinary: (2 10) 1 kilo: (10 3) 1 2 20 mebi Mi megabinary: (2 10) 2 mega: (10 3) 2 2 30 gibi Gi gigabinary: (2 10) 3 giga: (10 3) 3 2 40 tebi Ti terabinary: (2 10) 4 tera: (10 3) 4 2 50 pebi Pi petabinary: (2 10) 5 peta: (10 3) 5 2 60 exbi Ei exabinary: (2 10) 6 exa: (10 3) 6 Ejemplos y comparaciones con prefijos del SI métrico 1 kibibit 1 kilobit 1 mebibyte 1 megabyte 1 Kibit = 2 10 bits = 1.024 bits 1 kbit = 10 3 bits = 1.000 bits 1 MiB = 2 20 Bytes = 1.048.576 Bytes 1 MB = 10 6 Bytes = 1.000.000 Bytes 1 gibibyte 1 GiB = 2 30 Bytes = 1.073.741.824 Bytes 1 gigabyte 1 GB = 10 9 Bytes = 1.000.000.000 Bytes Elementos de Programación Curso 2006-2007 Sistemas de numeración • Sistema de numeración posicional en base "b”: Utiliza un alfabeto compuesto por b símbolos o cifras. El valor de cada cifra depende de: – La cifra en sí. – La posició posición de la cifra en el número. • Ejemplo: El sistema decimal (b=10) Alfabeto: {0,1,2,3,4,5,6,7,8,9} 3278.52 (10 = 3·103+2·102+7·101+8·100+5·10-1+2·10-2 • Generalizando, para N =...+n =...+n3·b3 +n2·b2 +n1·b1 ...n ...n3n2n1n0.n-1n-2... (b +n0·b0 + n-1·b-1 + n-2·b-2 +... Exp. 1.1 Elementos de Programación Curso 2006-2007 Sistemas de numeración • Propiedades de los Sistemas de Numeración Posicionales. 1. La existencia de representaciones para cualquier número natural se basa en que la sucesión b0, b1, b2, ... bn, ... para b > 1 es estrictamente creciente. 2. Unicidad. Permite utilizar una única combinación de símbolos para representar cualquier número, eliminando cualquier ambigüedad. 3. En todo sistema de numeración posicional existe un símbolo unidad o de orden 0 y un símbolo nulo. Todos los símbolos menos el nulo se llaman "significativos" porque representan cantidades, el símbolo nulo en cambio representa su ausencia. 4. Los números mayores que la base se representan por medio de varias cifras. La primera de la derecha indica el número de unidades de orden 0 que posee el número, la segunda expresa las unidades de orden 1 y así sucesivamente. Elementos de Programación Curso 2006-2007 Sistemas de numeración 5. Para un sistema de numeración con base "b", cada "b" unidades de un cierto orden constituyen una unidad de orden superior. Una unidad de orden "n" equivale a "b" unidades de orden "n-1", o "b2" unidades de orden "n-2" o "bn" unidades de orden 0. 6. La representación en un sistema posicional de un número es un polinomio en el que la indeterminada es la base y los coeficientes se restringen a los números naturales inferiores a la base: ab...uvw = a·xn + b·xn-1 + ... + u·x2 + v·x + w 7. Las potencias de la base (bn) se expresan siempre como la unidad seguida de n ceros. 8. En base "b", el valor "bn-1" es una colección de n veces la cifra (b-1) que es el último símbolo básico para dicha base. 9. La cantidad de cifras para representar un número es inversamente proporcional al valor de la base. La relación entre un número y la cantidad de cifras necesaria para expresarlo en base "b" es: número de cifras = INT ((log b N) + 1) Elementos de Programación Curso 2006-2007 Sistemas de numeración • Sistema de numeración binario. binario Aquí la base es 2 (b=2) sólo se necesitan dos símbolos : {0,1} Binario Decimal 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 Tabla 1 Elementos de Programación Curso 2006-2007 Sistemas de numeración – Conversió Conversión de decimal a binario. binario Se aplica el método de las “divisiones divisiones y multiplicaciones” multiplicaciones sucesivas por la base con divisor y multiplicador b=2. Ejemplo: 26.1875 (10 = Para la parte entera: 26 | 2 0 Para la parte fraccionaria: 0.1875 0.3750 x 2 x 2 0.3750 0.7500 11010.0011 (2 13 | 2 1 6 | 2 0 3 | 2 1 1 | 2 1 0 0.7500 x 2 1.5000 0.5000 x 2 1.0000 Elementos de Programación Curso 2006-2007 Sistemas de numeración – Conversió Conversión de binario a decimal. decimal Se desarrolla la representación binaria (con b=2) y se opera el polinomio en decimal. Ejemplos: 110100(2 = 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 0·20 = 52 (10 10100.001(2 = 1·24 + 0·23 + 1·22 + 0·21 + 0·20 + 0·2- 1 +0·2- 2 + 1·2-3 = 20.125 (10 • Realmente basta con sumar los pesos (2 i ) de las posiciones (i) en las que hay un 1. Elementos de Programación Curso 2006-2007 Sistemas de numeración • Sistema de numeración octal. octal La base es 8 y el conjunto de símbolos es: {0,1,2,3,4,5,6,7} – Conversió Conversión de octal a decimal. decimal Se desarrolla el polinomio con b=8 y se opera en decimal. – Conversió Conversión de decimal a octal. octal Aplicar el método de “divisiones y productos” con divisor y multiplicador 8. – Conversió Conversión “rápida” pida” de binario a octal. octal Agrupar cifras binarias de 3 en 3 y transformar con la tabla 1. • Ejemplo: 10001101100.11010 (2 = 2154.64 (8 – Conversió Conversión “rápida” pida” de octal a binario. binario Aplicar tabla 1. • Ejemplo: 537.24 (8 = 101011111.010100 (2 Elementos de Programación Curso 2006-2007 Sistemas de numeración Binario Decimal Octal • Sistema de numeración hexadecimal. hexadecimal La base es 16 y el conjunto de símbolos es: {0,1,2,3,4,5,6,7,8, 9,A,B,C,D,E,F} Hexadecimal 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 9 10 11 12 13 14 15 10 11 12 13 14 15 16 17 8 9 A B C D E F Tabla 2. Elementos de Programación Curso 2006-2007 Sistemas de numeración – Conversió Conversión de hexadecimal a decimal. decimal Se desarrolla el polinomio con b=16 y se opera en decimal. – Conversió Conversión de decimal a hexadecimal. hexadecimal Aplicar el método de “divisiones y productos” con divisor y multiplicador 16. – Conversió Conversión “rápida” pida” de binario a hexadecimal. hexadecimal Agrupar cifras binarias de 4 en 4 y aplicar la tabla 2. • Ejemplo: 100 1011 1011 111 . 1011 1010 (2 = 25DF.BA (16 – Conversió Conversión “rápida” pida” de hexadecimal a binario. binario Convertir cada cifra hexadecimal mediante la tabla 2. • Ejemplo: 1ABC.C4 (16 = 0001 1010 1011 1100 . 1100 0100 (2 Elementos de Programación Curso 2006-2007 Sistemas de numeración • Resumen de cambios de base ex. I.1 Decimal Binario "d y m" ex. I.1 Binario grupos 3 bits Decimal Octal "d y m" "d y m" ex. I.1 ex. I.1 Binario grupos 4 bits Decimal Hexadecimal "d y m" "d y m" ex. I.1 Elementos de Programación Curso 2006-2007 Representación de números en el ordenador • Números de precisión finita: finita La memoria es limitada. Sólo se dispone de n bits para las representaciones. • Coma fija sin signo o binario puro. puro Permite representar sólo números enteros positivos. – Rango: 0 a 2n - 1 • 000...n...0 ⇔ 111...n...1 (en binario puro) – Inconvenientes: • Desbordamiento al realizar sumas. • Al no poder representarse los negativos, antes de realizar A - B, se ha de comprobar que A ≥ B. Elementos de Programación Curso 2006-2007 Representación de números en el ordenador • Coma fija signo-magnitud. magnitud Se reserva un bit para indicar el signo. Se utiliza para productos. – MSB (Most Significant Bit) : 0 positivo, 1 negativo. – Rango: - (2n-1 - 1) a (2n-1 - 1) • 000...n...0 a 011...n...1para positivos • 100...n...0 a 111...n...1para negativos • primer bit para signo y el resto en binario puro. – Inconvenientes : • El cero tiene dos representaciones. • La operación que se realiza (suma o resta) depende de los operandos. Elementos de Programación Curso 2006-2007 Representación de números en el ordenador • Complemento a dos. dos Simplifica sumas y restas, quedando reducidas a sumas (el acarreo se elimina). + – Rango: - 2n-1 a (2n-1 - 1) • 000...n...0 a 011...n...1 para positivos (en binario puro) • 100...n...0 a 111...n...1 para negativos (en complemento a dos) • Los valores negativos (-x) se representan como: 2n - |x| – Una sola representación para el cero. – Ejemplo: para n = 8, para realizar la resta 7-5 = 2: +7 -5 +2 = = (complemento a dos) 00000111 11111011 + 100000010 = 2 acarreo final se elimina Elementos de Programación Curso 2006-2007 Representación de números en el ordenador • Complemento a uno. uno Representación de negativos muy simple. – Rango: - (2n-1 - 1) a (2n-1 - 1) • 000...n...0 a 011...n...1 para positivos (en binario puro) • 100...n...0 a 111...n...1 para negativos (en complemento a uno) • Los valores negativos (-x) se representan como: (2n -1) - |x| – Ventajas: • Representación de negativos muy simple (cambio de ceros por unos y unos por ceros). • Las sumas y restas se reducen a sumas, pero hay que tener en cuenta el acarreo final, sumándolo al resultado. – Inconvenientes: • El cero tiene dos representaciones (no unicidad). Elementos de Programación Curso 2006-2007 Representación de números en el ordenador – Ejemplo: para n = 8, para realizar la resta 7 - 3: +7 -3 = en complemento a uno es luego 00000111 11111100 00000111 11111100 100000011 1 00000100 + + = 4 Elementos de Programación Curso 2006-2007 Códigos de Entrada/Salida • Asocian a cada símbolo de la escritura (carácter) una determinada combinación de bits. – Caracteres grá gráficos. ficos. Representan símbolos. – Caracteres de control. control. Órdenes para controlar los dispositivos de E/S. (p.e. cambio de línea, pitido, etc.) • Para codificar m símbolos distintos se necesitan n bits, siendo n ≥ log2 m, donde n ∈ Ν. código E/S : a→b a = {0,1,2,...,8,9,A,B,...,Y,Z,a,b,...,y,z,*,",/,...} b = {0,1}n • Existen muchos códigos de E/S normalizados. Elementos de Programación Curso 2006-2007 Códigos de Entrada/Salida • Código ASCII. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI CARACTERES DE CONTROL (nulo) 16 DLE (escape de enlace de datos) (comienzo de cabecera) 17 DC1 (control de dispositivo 1) (comienzo de texto) 18 DC2 (control de dispositivo 2) (fin de texto) 19 DC3 (control de dispositivo 3) (fin de transmisión) 20 DC4 (control de dispositivo 4) (pregunta) 21 NAK (acuse de recibo negativo) (acuse de recibo) 22 SYN (sincronización) (campana sonora) 23 ETB (fin de bloque de transmisión) (retroceso de un espacio) 24 CAN (anulación) (tabulación horizontal) 25 EM (fin de medio físico) (cambio de renglón) 26 SUB (carácter de sustitución) (tabulación vertical) 27 ESC (escape) (página siguiente) 28 FS (separador de ficheros) (retroceso del carro) 29 GS (separador de grupos) (fuera de código) 30 RS (separador de registros) (en código) 31 US (separador de unidades) Elementos de Programación Curso 2006-2007 Códigos de Entrada/Salida CARACTERES GRÁ GRÁFICOS 32 33 34 35 36 37 38 39 40 41 42 43 44 45 SP ! " # $ % & ' ( ) * + , - 48 49 50 51 52 53 54 55 56 57 58 59 60 61 0 1 2 3 4 5 6 7 8 9 : ; < = 64 65 66 67 68 69 70 71 72 73 74 75 76 77 @ A B C D E F G H I J K L M 80 81 82 83 84 85 86 87 88 89 90 91 92 93 P Q R S T U V W X Y Z [ \ ] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 46 . 62 > 78 N 94 ^ 95 _ 47 / 63 ? 79 O ` a b c d e f g h i j k l m 112 113 114 115 116 117 118 119 120 121 122 123 124 125 p q r s t u v w x y z { | } 110 n 126 ~ 111 o 127 DEL Elementos de Programación Curso 2006-2007 Hardware y Software • HARDWARE. HARDWARE Elementos físicos del ordenador – Existen diferentes tipos de ordenadores respecto del tipo y funcionamiento del hardware de los mismos y al modo en que tratan y representan la información: • COMPUTADORAS ANALOGICAS: Las magnitudes físicas que se utilizan para representar la información pueden tomar un valor cualquiera dentro de un rango prefijado. • COMPUTADORAS DIGITALES : Sólo toman valores discretos. – Otro criterio está basado en su construcción: • De Lógica Cableada. La secuencia de operaciones a realizar está implantada en el cableado de los circuitos (calculadoras). • De Lógica Programada. La secuencia de operaciones está almacenada y puede cambiarse sin alterar los circuitos. Elementos de Programación Curso 2006-2007 Hardware y Software Ordenador ANALÓGICO Ordenador DIGITAL Elementos de Programación Curso 2006-2007 Hardware y Software • SOFTWARE. SOFTWARE Elementos lógicos del ordenador. – Instrucció Instrucción. Conjunto de símbolos que representan una orden de operación para el ordenador. – Programa. Programa Conjunto de instrucciones encadenadas para resolver un problema. – Software. Software Conjunto de programas que puede realizar un ordenador. – Lenguaje de programació programación. Conjunto de reglas para describir programas. Elementos de Programación Curso 2006-2007 Estructura del Hardware Señales de control Memoria Masiva Datos e instrucciones Memoria Principal datos e instrucciones Datos e instrucciones Instrucciones ENTRADA Datos Datos SALIDA Unidad AritméticoLógica (ALU) Unidad de Control Procesador Central (CPU) Elementos de Programación Curso 2006-2007 Estructura del Hardware Elementos bá básicos de un ordenador Unidad central Monitor Impresora Ratón Teclado Elementos de Programación Curso 2006-2007 Estructura del Hardware • Unidad Central de Proceso (CPU) – Unidad Aritmé Aritméticotico-Lógica (ALU). Realiza operaciones. – Unidad de Control (UC). Controla la ejecución de instrucciones. • Contador de programa, Registro de instrucción, Reloj. • Memoria. Almacena información e instrucciones. – Principal. Gran velocidad, poca capacidad. • Dos tipos básicos: RAM y ROM. • Organizada en celdas, accesibles por posición (dirección). – Secundaria o Masiva. Poca velocidad, gran capacidad. Elementos de Programación Curso 2006-2007 Estructura del Hardware • Periféricos. Dispositivos de comunicación con el exterior. – Entrada. Recogida de información e instrucciones. – Salida. Obtención de resultados. • Buses. – Señales de datos. datos Transfieren información e instrucciones. – Señales de direcció dirección. Selección de celdas de memoria/periféricos. – Señales de control y estado. estado Elementos de Programación Curso 2006-2007 Estructura del Hardware CPU MEMORIA ENTRADA SALIDA BUSES Circuito de Memoria RAM Circuito de Memoria ROM Disco Duro (Memoria Secundaria) Ratón CPU Monitor Circuitos Impresos PCB (BUSES) Teclado Impresora Inyección Elementos de Programación Curso 2006-2007 Estructura del Hardware Impresora Matricial Escáner Impresora Láser Tableta digitalizadora Plotter PC-Cam Tarjeta de TV y radio Multifunción Vídeo Proyector Tarjeta gráfica Teclado y ratón inalhámbrico Teclado musical Sistema de sonido Elementos de Programación Curso 2006-2007 Estructura del Hardware UPS Networking Grabador DVD Disco magneto-óptico Unidad ZIP externa Unidad de cinta DDS Disquetera Router ADSL Módem Pen drive Wireless Elementos de Programación Curso 2006-2007 Estructura del Software • Software de aplicación. – Programas de usuario. – Programas verticales. – Paquetes estándar. • Software de sistema. sistema – – – – – Usuario Final Software de aplicaciones Software de sistema Hardware Lenguajes, entornos de programación y traductores. Soporte y sistema de gestión de datos (DBMS). Entorno gráfico de usuario (GUI). Sistema operativo (OS). Rutinas básicas de entrada/salida (BIOS). Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador • Principios de la Arquitectura de Von Neumann. Neumann – Datos e instrucciones se codifican en dígitos binarios. – Tanto instrucciones como datos se almacenan juntos en la memoria del computador. – El computador procesa tanto instrucciones como datos. – Un programa es una cadena secuencial de instrucciones. – Existe una instrucción de bifurcación condicional (capacidad lógica binaria) que permita mediante un dato elegir entre dos secuencias de instrucciones a ejecutar. Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador • Para ejecutar un programa escrito en lenguaje máquina, lo primero que hay que hacer es introducirlo en la memoria principal: El "cargador" cargador se encarga de introducir el programa en posiciones consecutivas de memoria a partir de una dada "i". • Una vez cargado, la UC (unidad de control) pone el registro CP (contador de programa) a "i", para que empiece a ejecutarse el programa. Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador • La UC repite sucesivamente las siguientes fases: a) Fase de captación de la instrucción. • Memoria (CP) --- (instrucción) ---> UC • Incremento de CP b) Fase de ejecución de instrucción, y vuelta a fase a). • Si la ejecución de una instrucción implica saltar a una instrucción distinta a la siguiente, se pondrá el CP al valor de la posición de dicha instrucción, con lo que se cogerá en la siguiente fase a). Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador • Ejemplo: se dispone de un ordenador con las siguientes instrucciones máquina: – ENT M (m). Lee de teclado un valor y lo almacena en la posición m de memoria. – SAL M (m). Escribe en impresora el contenido de la posición m de memoria. – CAR M (m). Carga en la ALU un dato procedente de la posición m de memoria. – MEM M (m). Almacena en la posición m de memoria el contenido de la ALU. – SUM M (m). Suma el contenido de la ALU con el de la posición m de memoria, y el resultado queda en la ALU. • Se desea ejecutar un programa que sume dos números dados por teclado y muestre el resultado en la impresora. • El programador, en lenguaje máquina, ha de determinar las posiciones de memoria que va a utilizar. Por ejemplo: – Primer sumando, en posición 16 – Segundo sumando, en posición 17 – Suma, en posición 18. Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador (7) (8) ENT M(16) (9) ENT M(17) (10) CAR M(16) (11) SUM M(17) (12) MEM M(18) (13) SAL M(18) (14) (15) (16) 50 (17) 16 (18) 66 (19) 50 , 16 Teclado instrucciones 66 Impresora Memoria 50 UC 66 ALU Elementos de Programación Curso 2006-2007 Funcionamiento de un ordenador • Animaciones y simuladores Animació Animación 1 Ejecució Ejecución de instrucciones. Universidad Queensland Animació Animación 2 Ejecució Ejecución de instrucciones. Animació Animación 3 Programa para contar Simulador 1 Simulador ABACO Simulador 2 Simulador de procesador EJEMEJEM-1 ETSIETSI-UAM Simulador 3 EDSAC Simulador 4 IMSAI 8080 Animació Animación 4 Programa para Sumar Simulador 5 MARK I Elementos de Programación Curso 2006-2007 Otra estructura de ordenador Elementos de Programación Curso 2006-2007 Bibliografía • Estudio general del ordenador. P. Bishop. Ed. Alhambra 1985. • Las computadoras y la información. Lawrence S. Orilia. Ed. McGraw Hill 1987. • Perspectivas de la revolución de los computadores. Selección de Zenon W. Pylyshyn. Alianza Editorial 1975. • El computador pensante. Bertram Raphael. Ediciones Cátedra 1984. • El ordenador de quinta generación. Thoru Moto-oka y Masaru Kitsuregawa. Ed. Ariel 1986. • Organización de computadoras: Un enfoque estructurado. Andrew S. Tanenbaum. Ed. Prentice-Hall 1999. • Una introducción moderna a la ciencia de la computación con un enfoque algorítmico. Goldschlager, Les & Lister, Andrew. Ed. Prentice-Hall. 1988. • Fundamentos de los computadores. Anasagasti, P. de Miguel. Ed Paraninfo 1990. Elementos de Programación Curso 2006-2007