1 CONCEPTOS GENERALES 1.1. Concepto de información. Introducción a la teoría de la información. Concepto de dato. Estructuras de datos. Principios fundamentales históricos de la informática. Información es un término general que abarca hechos y representaciones que pueden no estar relacionados. El concepto es conocido en general y es un término aceptado comúnmente. La información puede ser trivial o transcendente, verdadera o falsa. La palabra dato tiene, por otra parte, un significado mucho más preciso. Los datos son información en forma codificada, aceptable para ser introducida y procesada por un ordenador. Es pues una representación de la información, que usualmente viene en una estructura de datos; siendo entonces los datos representativos en sí y en relación con la estructura de la que forman parte. Un punto a tener en cuenta es que los datos por sí solos carecen de significado, es decir: datos + interpretación = información útil Los principios fundamentales que subyacen tras el diseño y la construcción de los ordenadores electrónicos digitales se han desarrollado durante un período de casi un siglo. Aunque un gran número de personas han contribuido de diversas formas al desarrollo y comprensión de estas ideas, el trabajo de cuatro de ellas ha sido particularmente importante: Charles Babbage, George Boole, Alan Turing y John Von Neumann. - Babbage (1791-1871). Identificó los estados de una tarea informática: entrada, tratamiento, salida. De él partió la idea de programa como un conjunto de instrucciones que controlan la operación de un ordenador. 13 Apuntes de Informática - Boole (1815-1864). Es el fundador de la teoría de la lógica matemática. Nos legó un álgebra para representar cantidades lógicas (Verdadero ó Falso, Sí ó No) e investigó las operaciones que se pueden realizar con estas cantidades. - Turing (1912-1954). Formuló el concepto general de máquina informática. Expreso sus ideas en términos de una máquina abstracta denominada máquina de Turing. Aunque la máquina de Turing sólo puede ejecutar una operación simple a la vez, identificó una amplia clase de problemas que podían resolverse en un número finito de pasos. - Von Neumann (1903-1957). Colaboró en el diseño y construcción de varios ordenadores, publicando en 1946 un artículo esbozando los principios generales de un ordenador electrónico digital. Los dos puntos más importantes de este artículo son: 1. Todos los datos e instrucciones se representan en código binario y se almacenaran juntos en la memoria del ordenador. 2. El ordenador no hará distinciones entre datos e instrucciones. 1.2. Definición de sistema, subsistema y sistemas informáticos El concepto de sistema es muy importante en el mundo de los ordenadores. Generalmente se hace referencia a un ordenador en términos de sistema de ordenador. Básicamente un sistema es un conjunto de partes que trabajan juntos para realizar una tarea común. Los sistemas se dividen a su vez en subsistemas, que son las encargadas de realizar cada una de las subtareas en que se divide la tarea principal. Un sistema desarrollado para realizar tareas en el mundo de la informática es un sistema informático. 1.3. Noción de ordenador. Conceptos de hardware y software. Nociones de sistema operativo y redes locales. Un ordenador es una máquina capaz de aceptar unos datos de entrada, efectuar con ellos operaciones lógicas y aritméticas, y proporcionar la información resultante a través de un medio de salida. Todo ello sin intervención de un operador humano y bajo el control de un programa de instrucciones previamente almacenado en el propio ordenador. Así pues automáticamente acepta y procesa datos proporcionando los resultados de dicha tarea, que deben de ser interpretados por el usuario del ordenador. Siendo el programa un conjunto de instrucciones que controlan el funcionamiento del ordenador y que están almacenadas en la memoria 14 TEMA 1 – Conceptos generales del ordenador. Los datos y las instrucciones se almacenan juntos. En algunas circunstancias las instrucciones se manejan como datos. Se denomina hardware (hard=duro) a los componentes físicos de un ordenador, siendo el software (soft=blando) los programas que dirigen el funcionamiento del ordenador. En teoría la distinción entre ambos términos es clara, sin embargo conviene reconocer (por ejemplo) que mientras las operaciones de multiplicación en algunos ordenadores se realizan directamente por el hardware en otros se realizan en forma de sumas múltiples controladas por el software. Además los ordenadores tienen parte del software almacenado permanentemente en memorias de solo lectura (ROM). Esto se conoce como firmware y es un concepto intermedio entre el hardware y el software. Será necesario disponer de un software diseñado específicamente para utilizar los recursos de los que dispone el ordenador, de una forma eficiente y facilitando al usuario dicha gestión. Este software se conoce como sistema operativo. Normalmente se dispone de varios ordenadores conectados entre sí, facilitando así la utilización de los recursos, de que dispone cada uno, para el resto de usuarios. Estas configuraciones se denominan redes de ordenadores. Las que disponen sus recursos en un espacio reducido se denominan redes de área local (LAN), siendo redes de área distribuida aquellas que conectan ordenadores muy distantes entre sí (WAN). 1.4. Estructura de los ordenadores. Tipos de ordenadores: mainframes, miniordenadores y microordenadores. Descripción general de cada tipo. De una forma muy general pueden considerarse tres tipos de ordenadores, de acuerdo a su tamaño y complejidad. Estos son, por orden de importancia en cuanto tamaño y complejidad: mainframes (grandes ordenadores), miniordenadores y microordenadores. Analizaremos los módulos que constituyen las distintas configuraciones de estos ordenadores. Debe de hacerse notar que estas configuraciones no son sino ejemplos. En la práctica hay una variación continua en tamaño y complejidad de los sistemas más pequeños a los más grandes. No hay pues fronteras claramente definidas sino meramente orientativas. Cabe citar un fuerte incremento en prestaciones de los microordenadores, que en entornos concretos y configuraciones concretas se introducen claramente en los miniordenadores. En el extremo más alto de la escala están los mainframes, con una potencia (y un coste) de decenas de miles de veces la de un microordenador, que es la parte mas baja de la escala. En la figura siguiente se representa un mainframe típico que se caracteriza por tener varias unidades de proceso y una gran variedad de dispositivos periféricos. Se observa la existencia de un procesador de terminales (front-end), encargado de controlar el flujo de datos entre los procesadores principales y los distintos periféricos. Se necesita también un procesador de comunicaciones independiente, encargado de controlar el flujo de datos entre los terminales y los enlaces de comunicaciones. Un mainframe puede soportar cientos de terminales. Una unidad de control de los dispositivos de almacenamiento masivo regula el flujo de datos entre las distintas unidades de almacenamiento. 15 Apuntes de Informática El procesador de terminales, el de comunicaciones y el controlador de los sistemas de almacenamiento masivo son por sí solos procesadores muy potentes. Disponen de facilidades para almacenar una cierta cantidad de datos, para dirigir los datos a un canal determinado y para traducir datos de un código a otro. Una unidad esencial en todos los mainframes, aunque carece de conexiones de datos con las demás unidades, es una fuente de alimentación ininterrumpida. Este dispositivo estabiliza la entrada de energía eléctrica y la supervisa continuamente, de tal forma que los cortes y microcortes de luz que puedan afectar al sistema informático por su duración son filtrados, entrando en servicio las baterías de alimentación para asegurar el suministro de energía eléctrica. Mainframe típico La siguiente figura representa las unidades típicas de un ordenador de tamaño medio y el flujo de datos entre ellas. El ordenador podría ser un mainframe pequeño o un miniordenador grande. Ordenador típico de tamaño medio 16 TEMA 1 – Conceptos generales Observamos que hay una única unidad de proceso, la unidad central de proceso. Los terminales y las unidades de disco están en menor número que en su hermano mayor, no cabe esperar procesadores dedicados exclusivamente a los terminales. Obviamente, se han abaratado costes y perdido potencia en cálculo y en comunicaciones. Se soportan, pues, menos terminales y menos dispositivos como impresoras, plotters u otros. La consola del operador permite a la persona encargada del sistema (el operador) controlar éste. Su apariencia recuerda a un terminal. Aunque compuesto por unidades separadas, debe recordarse que un ordenador es un sistema. Es decir, las unidades que lo componen cooperan para lograr algún objetivo común. El control detallado del sistema está en manos del procesador. El control general, en manos del operador. El microordenador tiene como procesador un solo chip, el microprocesador, estando en la misma placa madre todos los restantes elementos como memoria, puertos de comunicaciones, y circuitos de control. Sobre esta placa madre se establecen todas las conexiones de discos flexibles, discos rígidos, y cualquier controladora que soporte el ordenador. Quedando todo en una sola unidad, a falta de monitor y teclado. Es normal encontrarse el ordenador conectado a una impresora. Microordenador típico 1.5. Números binarios, octales y hexadecimales. Bits y bytes. Los humanos estamos acostumbrados a representar los números en base 10, es decir, un número tal como 1234 significa en realidad 1×103+2×10 2+3×10 1+4×10 0. Esta representación se puede hacer también cambiando el 10 por cualquier número entero positivo, b. En ese caso se habla de representación de los números en base b, y cada número entero positivo admite una representación única de la forma an×bn+an-1×bn-1+...+a1×b1+a 0×b 0 los dígitos (ai) en ese caso son números del 0 al b-1. 17 Apuntes de Informática Los ordenadores emplean como base para representar los números el 2, por tanto los dígitos en dicha base son sólo 0 y 1. Los números representados en dicha base se llaman números binarios. Para distinguir en que base se escribe un número se suele poner un subíndice, por ejemplo: 1010 = 1010 2, 123410 = 10011010010 2. Como se puede observar, para representar números pequeños en base 2 hace falta poner muchas cifras, por ello también se emplean mucho las bases 8 y 16. Los números representados en dichas bases se llaman respectivamente octales y hexadecimales. Para pasar un número de base 2 a base 8 (= 23) sólo hay que agrupar las cifras del original de tres en tres y cambiar 000 por 0, 001 por 1, ... y 111 por 7. Por ejemplo 123410 = 10.011.010.010 2 = 2322 8. Para la base 16 los dígitos son del 0 al 15, como se quieren representar con una sola cifra se usa 10 = A, 11 = B, ..., 15 = F. Para pasar un número de base 2 a base 16 (= 24) se agrupan las cifras de cuatro en cuatro, por ejemplo: 123410 = 100.1101.00102 = 4D2 16. Las conversiones en sentido contrario son también inmediatas, es suficiente cambiar cada dígito hexadecimal por los cuatro binarios que le corresponden. Dado que en el ordenador todos los objetos se representan en binario, la unidad básica de información es un dígito binario (en inglés binary digit) y se denomina bit. Por ejemplo, como el número 1234 10 necesita 11 dígitos binarios para representarse se dice que es un número de 11 bits. Como el bit es una cantidad pequeña, los ordenadores agrupan los datos en bloques de varios bits. Los primeros ordenadores empleaban grupos de 8 bits, es lo que se llama byte, y pueden contener 28 = 256 números distintos. Los ordenadores actuales emplean 16, 32 o incluso 64 bits, pero, por mantener la compatibilidad con los anteriores, la memoria se sigue midiendo en bytes. Los múltiplos del byte son el Kilobyte (que se abrevia Kb), el Megabyte (abreviado Mb), el Gigabyte (abreviado Gb) y el Terabyte (abreviado Tb); pero en el caso de los ordenadores 1 Kb no son 1000 bytes ya que 1000 no es una potencia de 2, la potencia de 2 más próxima es 210 = 1024, por lo tanto 1 Kb = 1024 bytes. Lo mismo ocurre para el resto como se resume en la tabla siguiente: Unidad Kilobyte Megabyte Gigabyte Terabyte Símbolo Kb Mb Gb Tb Bytes 210 220 230 240 Equivalencia 1024 bytes 1024 Kb 1024 Mb 1024 Gb 1.6. Cambio de base. Pese a que las conversiones entre base 2 y base 8 y 16 son prácticamente directas, existe un sistema general para realizar el cambio de una base a otra. El paso de cualquier base a base 10: 3B716 = 3 x 16 2 + 11 x 161 + 7 x 160 = 95110 Inversamente, si queremos pasar de base 10 a cualquier otra base, habrá que realizar sucesivas divisiones por la base y tomar los restos: 18 TEMA 1 – Conceptos generales 1534 16 94 14 95 15 16 5 153410 = 5FE 16 donde 5 es el último cociente (menor que la base) y los restantes dígitos son los restos en orden inverso. Para números con decimales, el paso de binario a decimal es inmediato, es suficiente con poner el número en forma de productos por potencias de 2 y efectuar las operaciones, por ejemplo: 1100.11101012=2 3 + 22 + 2-1 + 2-2 + 2-3 + 2-5 + 2-7 = 8 + 4 + 0.5 + 0.25 + 0.125 + 0.03125 + 0.0078125 = 12.9140625 Para convertir números con parte decimal de decimal a binario, se hace de forma independiente. Para la parte entera se utiliza lo visto anteriormente y para la parte decimal, lo que hacemos es multiplicaciones sucesivas por la base y la parte entera nos da los decimales, y la fraccionaria se emplea para repetir. Ejemplo: 8.687510 = 1000.10112 = 1 x 23 + 1 x 2-1+ 1 x 2 -3 + 1 x 2 -4 810 = 10002 0.6875 × 2 1.3750 0.3750 × 2 0.7500 0.7500 × 2 1.5000 0.5000 × 2 1.0000 0.687510 = 0.10112 El proceso acaba cuando la parte decimal es igual a cero. Si esto no ocurre, habrá que aproximar, eligiendo el número de bits que equivalga a la precisión que tengamos en el decimal, cada dígito son 1/log10(2) (aproximadamente 3.3) bits. 1.7. Operaciones aritméticas sencillas en binario. Para sumar números, tanto en base 2 como hexadecimal, se sigue el mismo proceso que en base 10: 1010 10102 + 0011 11002 1110 01102 Podemos observar que la suma se desarrolla de la forma tradicional; es decir: sumamos normalmente, salvo en el caso de 1 + 1 = 102, en cuyo caso tenemos un acarreo de 1 (lo que nos llevamos). Si los números tienen parte decimal, como en el caso de la base 10, hay que alinear los números por el punto a la hora de sumar. El producto se realiza también de forma análoga. Supongamos que queremos multiplicar 1011 por 101, el proceso es el siguiente: 19 Apuntes de Informática 10112 × 1012 1011 0000 1011 1101112 Si pasamos los números anteriores a decimal, obtenemos 1011 2=11, 101 2=5 y 1101112=55; con lo que se comprueba que en efecto la operación es correcta. Si tenemos decimales, se opera como si fueran enteros, poniendo al final tantos decimales como la suma de los que tengan ambos operandos. Resumiendo, la suma y el producto se realizan de forma análoga a como se hacen en decimal, pero empleando las siguientes tablas para realizar las operaciones: + 0 1 0 0 1 1 1 10 × 0 1 0 0 0 1 0 1 EJERCICIOS 1. Escribir el número 12345 en binario, octal y hexadecimal. 2. Convertir a decimal el número binario 10101.11. 3. Sumar y multiplicar los números binarios 101110 y 1001. Comprobar el resultado pasando a decimal los operandos y los resultados. 4. Sumar y restar en binario los números 110111 y 101001. 20