Fundamentos de Informática Tema 1 Introducción a la Informática 1 Contenidos Introducción Histórica Conceptos básicos Estructura Funcional del Ordenador Microprocesador Elementos del Microprocesador La memoria Memoria Principal Medidas de Memoria Periféricos Representación de la Información 2 Sistemas de numeración Caracteres Enteros y Reales Instrucciones Introducción histórica Desde la antigüedad se ha necesitado hacer cálculos para resolver problemas. En el 3000 a.c. los babilonios usaban piedras o semillas para contar (calculus=piedra). El ábaco era la primera máquina que permitía contar (China, año 2500 a.c.) • 3 Introducción histórica Un algoritmo es un conjunto de pasos ordenados que permiten obtener la solución de un problema. Los que usamos se deben a Al-Khwarizmi, matemático y astrónomo árabe, de donde viene la palabra algoritmo (año 800 d.c.) 4 Introdujo algoritmos para realizar operaciones (sumas, restas, …) Introducción histórica Dispositivos y máquinas de calcular mecánicos: Ábaco (2000-3000 A.C.): 4 Operaciones Regla de cálculo (1620): Regla con distintas escalas. Permitía ×,÷ Sumadora Pascal (1642): Los datos se representaban mediante ruedas dentadas (+,−) Calculador Leibniz (1673): Usa cilindros dentados. (+,−, ×,÷). Problemas de fiabilidad. Charles Babbage (1822): Diseño un aparato capaz de ejecutar cualquier cálculo matemático. Tenía memoria, unidad de cálculo y unidad de control de operaciones. 5 Introducción histórica Dispositivos y máquinas de calcular electromecánicos: Tabuladoras Hollerith (1890): Maquinas tabuladoras, basadas en tarjetas perforadas. Usadas para el censo (de 10 años a 3). Germen de IBM. Atanasof-Berry (años 30): Un sistema binario para la aritmética y memoria regenerativa. Zuse (1938): Creo Z1, una calculadora mecánica binaria operada con electricidad y de programabilidad limitada. Coloso (1943): Usado para criptoanálisis contra ENIGMA. Mark1 (1944, IBM): Trataba de construir el diseño de Babbage, usando relés en lugar de engranajes. 6 Introducción histórica Dispositivos y máquinas de calcular electrónicos: 7 ENIAC (1943): Primera computadora de uso general. Con tubos de vacío. Programa almacenado (Von Neumann, 1949 EDSAC. Diodos). UNIVAC 1 (1951) 1ª computadora comercial, IBM650 (1953) 1ª fabricada a gran escala. Se inventa el transistor (1947). Primeras computadoras con transistores (1958). Aparece el intel 4004, el primer microprocesador (1971). Avance rápido de la electrónica (Ley de Moore). Conceptos básicos Datos Representación mediante símbolos de hechos, objetos, ideas, … (información), en forma adecuada para procesarlos. Información Conjunto de ideas, hechos, objetos, etc. que existen en el mundo real. En Informática, es el resultado de procesar datos. Ejemplo de Dato: 25-12-88 Información: "Día Navidad- 88". “Teléfono deFelipe”. “ ClaveBancaria”. Datos (E) Procesamiento Información Manual Automá9co (Ord.) 8 Codificación. Transformación para representar los elementos de un conjunto mediante los de otro conjunto. Ej. DNI→Persona. Conceptos básicos Informática Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático de la información, con ordenadores. Incluye aspectos conceptuales, el uso del ordenador, y las partes lógica (software) y física (hardware). Ordenador Máquina que acepta unos datos de entrada, efectúa una serie de operaciones sobre ellos y devuelve unos datos de salida. Sin intervención humana y bajo el control de una secuencia de instrucciones (programa). Hardware (o soporte físico) Conjunto de componentes físicos que forman un ordenador. Software (o soporte lógico) Conjunto de programas ejecutables por el ordenador que permiten su uso. 9 Estructura funcional de un ordenador La arquitectura de los ordenadores actuales está basada en la arquitectura de Von Neumann. Donde tenemos: • • • • • 10 Unidad de control (UC): Ejecuta las instrucciones. Gestiona el resto de dispositivos mediante señales de control. Unidad Aritmético-Lógica (UAL): Realiza operaciones aritméticas y lógicas. Memoria principal: Donde se almacenan datos y programas. Dispositivos de E/S: Componentes con los que el ordenador se comunica con el exterior. Buses: Líneas de comunicación entre los distintos dispositivos. Hay buses de control y de datos. SISTEMAS DE COMPUTACIÓN Pretende ser el conjunto de circuitos y programas diseñados para proporcionar a la computación un ambiente productivo, y si es posible también agradable. Es el ordenador (Hardware) + los programas (Software) Primeros ordenadores: Funcionamiento según circuitos [Funciona por Hardware. Instrucciones en los circuitos]. Después, órdenes en memoria (circuito fijos) [Funciona por Software. Instrucciones Máquina (órdenes ejecutables directamente por el ordenador, escritas en binario)]. Las instrucciones escritas en Lenguajes de Alto Nivel necesitan traducirse (COMPILACIÓN) al lenguaje Máquina del ordenador. Sistemas de Cómputo: A) Interactivo en tiempo compartido. B) Por lotes (en batch). C) Negocios en línea. D) Red de computadoras. 11 Estructura funcional de un ordenador Líneas de Control 12 De programas cableados a almacenados La estructura Básica es la misma que la de Ch. Babbage Hasta 1946 los programas en los engranajes y circuitos. Cambiar de programa = Cambiar el diseño del circuito del progrma. Los Datos en Memoria interna En 1946 J.Von Newmann establece las características para llegara programas almacenados: 13 El Programa se almacena igual que los datos. El Programa: Una cadena (sucesión) de instrucciones lógicas binarias. Instrucción de bifurcación condicional obligatoria. Microprocesador (CPU) CONTIENE: U. de control, U. aritmético lógica. Reloj: Tiempo que tardan las señales eléctricas que se mueven por la CPU, marca el ritmo de funcionamiento del sistema. Pulsos por segundo (Hertzios, Hz). Palabra: Conjunto de bits que puede manejar a la vez u procesador. 32 ó 64. Registros: Pequeñas memoria del tamaño de una palabra. Memoria Caché: Memoria interna del procesador de gran velocidad. Núcleos: Número de procesadores en un mismo chip. 14 Elementos del microprocesador LA UNIDAD ARITMÉTICO-LÓGICA (UAL). Realiza operaciones Aritméticas y Lógicas que le indica la Unidad de Control. Acumulador: Registro para almacén temporal de datos. Se puede leer y escribir en él, y hacer operaciones de desplazamiento de bits. LA UNIDAD DE CONTROL (UC). 15 Detecta señales eléctricas (de control) del estado del resto de componentes y controla sus acciones. Está sincronizada por una señal de reloj (ciclo), medida en hertzios (HZ). Cada instrucción se ejecuta en un número entero de ciclos. Unidad de Control Capta de la memoria la instrucción (las cuenta con un registro contador), la interpreta y controla su ejecución. a) b) c) d) e) f) g) h) Introduce en la memoria datos del exterior (por U.E.) Trasmite al exterior alguna información (Por la U.S.) Pasa un dato de la memoria al Acumulador (UAL). Ejecuta alguna operación en la UAL. Guarda en la memoria un resultado desde la UAL. Rompe la secuencia normal de ejecución. Detiene la acción temporal o definitivamente. Capta una nueva instrucción y empieza de nuevo. Después mira si continúa con la siguiente o se detiene. 16 La memoria La memoria es el sitio donde se guardan datos y programas. Distinguimos 2 tipos: Memoria principal (o primaria o interna): Cualquier programa o dato que sea ejecutado o procesado, debe estar en esta memoria. Es muy rápida, volátil y cara (por lo que suele ser pequeña de tamaño). Memoria masiva (o secundaria o externa): Permite guardar datos y programas de forma permanente, pero es más lenta que la memoria principal. Tiene gran capacidad debido a que suele más barata que la memoria principal. 17 Memoria principal Está dividida en posiciones llamadas palabras de memoria. Cada palabra tiene asociada una dirección. Está compuesta de: 18 ROM: sólo lectura y permanente. RAM: lectura/escritura y volátil. Medidas de memoria Un bit (b) es la unidad de información más pequeña. Puede tener sólo dos valores 1 ó 0. La capacidad de una memoria se expresa en múltiplos de Byte (B) . Donde 1Byte=8 bits. Múltiplos: o 1 Kilobytes (KB) ≅ 1000 bytes (2 10 =1024) 1 Megabytes (MB) ≅ 1000 Kilobytes (2 20 Bytes) 1 Gigabytes (GB) ≅ 1000 Megabytes (2 30 Bytes) 1 Terabytes (TB) ≅ 1000 Gigabytes (2 40 Bytes) 1 Petabytes (PB) ≅ 1000 Terabytes (2 50 Bytes) Ejemplo: Un libro de 300 páginas, cada una de 50 líneas de 90 caracteres (cada uno 1 byte), ocupa 300x50x90 B= 1350000 B= 1’ 3 MB. 19 Periféricos (unidades de E/S) La potencia de cálculo del ordenador no serviría de nada sino se pudiese comunicar con el exterior. Para ello se utilizan los periféricos. Los periféricos de entrada nos permiten comunicarnos con el ordenador. Los periféricos de salida permiten al ordenador comunicarse con nosotros. 20 Sistemas de Numeración Sistemas de numeración: Binaria: 0 ó 1 (Base 2) Octal: 0,1,2,3,4,5,6 ó 7 (Base 8) Decimal: 0,1,2,3,4,5,6,7,8 ó 9 (Base 10) Hexadecimal: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (Base 16) 21 Sistemas de Numeración (II) Para pasar un número en Base 10 a otra base, se divide sucesivamente el número y los cocientes obtenidos, por la nueva base hasta que el cociente sea cero. Los restos obtenidos forman, escritos en orden inverso, los dígitos en la nueva base. Ejemplo: 12576 304408) Divisor =8 Dividendo 12576 1572 196 24 3 Cociente 1572 196 24 3 0 Resto 0 4 4 0 3 El paso recíproco se hace calculando el valor polinomial del número : 304408) = 3 · 84 + 0 · 83 + 4 · 82 + 4 · 81 + 0 · 80 = = 12228 + 0 + 256 + 32 + 0 = 12576. Para números decimales, la parte entera se hace igual, y la parte decimal se multiplica sucesivamente por la nueva base, tomando la parte entera obtenida como cifra decimal en la nueva base, hasta obtener 0, o la precisión deseada : 25.725 → 31.563146314.... 8) 25 → 318) .725x 8 = 5.800 ; .8x 8 = 6.4 ; .4x 8 = 3.2 ; .2x 8 = 1.6 ; .6x 8=4.8 ; ...... 22 Representación de la Información Un ordenador sólo distingue entre dos estados: 0 y 1 (un bit) 0=No hay electricidad, 1=hay electricidad Sólo podemos trabajar con bits. Por tanto, hay que codificar la información. Ejemplos: Persona-> DNI -> Bits Coche -> Matrícula -> Bits Morse -> Bits 23 Caracteres Necesitamos representar: Alfabeto (a,b,..,z,A,B,…,Z) Números (0,1,2,…,9) Caracteres de control: Espacio, escape, … Símbolos: (,),=,/,&,%, …. Codificación ASCII (8bits = 1Byte) 24 Tipos de codificación de caracteres ASCII: 7+1 bits, representa abecedario inglés. 1 bit para detección de errores. EBCDIC: 8 bits usado por computadoras IBM. IBM adaptó el EBCDIC del código de tarjetas perforadas. Existen versiones ("codepages") con caracteres diferentes. ASCII extendido: 8 bits, uno para cada un conjunto de lenguas. Por ejemplo, Latin-1 (ISO-8859-1) usado en Unix y Windows. Unicode: asigna código único a cada carácter para todos los lenguajes. UTF-8: Unicode Trasformation Format, 8 bits variable. Representa cualquier carácter Unicode. Longitud variable. Incluye ASCII 7 bits. 25 Representación interna de números ¿Caracteres ASCII para representar enteros? Mayor consumo de memoria y dificultad en las operaciones: Números 1 cifra: 1 carácter ASCII (8 bits) 4 bits (24=16>10>23=8) Números 2 cifras: 2 caracteres ASCII (16 bits) 7 bits (27=128>100>26=64) 253 es (ASCII): 253 es (S. Binario): 0110010 00110101 00110011 11111101 UAL trabaja con número binarios. 26 Representación interna de enteros Se reserva el primer bit para signo (0 + ; 1 -). El resto de bits representan el valor del número en binario. En Fortran90 se usan 4Bytes. Para facilitar algunas operaciones, los negativos se escriben: 27 En valor absoluto. Complemento a 1: se cambian los ceros por unos y viceversa. Complemento a 2: se suma uno al número en complemento a I. Representación interna de enteros Rango de valores: [-max , max-1] (max=2p-1, p bits). Ejemplo: (Usaremos solo 2 bytes por facilidad, pero F-90 usa 4 bytes). 12577 0 011 000 100 100 001 - 2045 V. Absoluto : 1 000 011 111 111 101 Complem. a 1: 1 111 100 000 000 010 Complem. a 2: 1 111 100 000 000 011 28 Representación interna de reales Para los números reales se utiliza la notación científica (o normalizada): 34.012 x 104 = 0.34012 x 106 Signo: positivos y negativos Mantisa: cifras que componen el número. Se ajusta: La primera cifra no nula sea la primera cifra decimal (la coma flota) Exponente: potencia de 10 asociada. Representación:1 bit signo + ne Exponente + nm Mantisa. Rango exponente (- 2ne-1 - 2ne-1 -1) El exponente y la mantisa: números enteros en binario. En Fortran 90 se usan 8 Bytes (1 sig, 13 exp., 50 mantisa) El doble de bytes para Double precision. Los complejos se representan como una pareja de reales. 29 Representación interna de reales Ejemplos: (Usaremos 4 bytes (1 + 7 + 24)). a) 24.75 es en base 2, 11000.11 = 0.1100011 x 25 . (exponente 000 indica –64. Se almacena 69: 1000101) 0 1000101 110001100000000000000000 b) - 127.76 = 1111111.11000010100011110 1011100001... Usamos las primeras 24 cifras ; exponente = 7 (escribo 64 + 7 = 71) 1 1000111 111111111000010100011110 c) -0.000076 (usando exponente 10) d) Ver qué numero entero representa la secuencia 1 1000111 111111111000010100011110 30 Representación interna de instrucciones Un programa se compone de instrucciones. Estas se representan mediante 0’s y 1s. Código binario o Código máquina. Cada codificación depende del procesador. Las instrucciones deben ser sencillas. Por ejemplo, suma A,B y no Dibuja una casa. Partes de una instrucción: Código de operación: Codifican una instrucción determinada. Argumentos: Datos de la instrucción: Pueden ser: Direcciones de memoria con datos. Datos a usar directamente. Direcciones de memoria con la siguiente instrucción. Co. Inst. 31 DI PM Argume 1 ····· PM Arg. n PM Resulta 10001110 010 11001010 .. 11110011 01010111 Es importante que el ordenador ‘sepa’ el tipo de dato que esta manejando, primero para reservarle la cantidad de memoria adecuada, y segundo para no confundirse y NO obtener un resultado equivocado. Si el ejemplo b) de Datos Reales (-127.76) se tomara como un entero, el ordenador entendería el número 1207928094, y si lo entiende como una cadena, usaría “Ã !à ” (el segundo carácter es un espacio en blanco y el cuarto es un carácter de control no imprimible). ASÍ, ES BÁSICO DECLARAR EL TIPO DE DATO QUE CORRESPONDE A TODAS LAS VARIABLES QUE SE USEN. 32