Está en la página 1de 56

Tema 1

Fundamentos de Informática

1.1 Introducción a la informática . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.1.1 Antecedentes y evolución de los ordenadores . . . . . . . . . . . . . . . . . . 8

1.2 Soporte físico del computador: hardware . . . . . . . . . . . . . . . . . . 17

1.2.1 Arquitectura interna del computador . . . . . . . . . . . . . . . . . . . . . . 17

1.2.2 Ejecución de instrucciones por el procesador . . . . . . . . . . . . . . . . . . 22

1.2.3 Periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.3 Soporte lógico del computador: software . . . . . . . . . . . . . . . . . . 26

1.3.1 Sistemas operativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.3.2 Lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

1.3.3 Traductores de lenguajes: compiladores e intérpretes . . . . . . . . . . . . . 33

1.4 Representación interna de la información . . . . . . . . . . . . . . . . . . 35

1.4.1 Sistema binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

1.4.2 Sistemas octal y hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . 42

1.4.3 Aritmética de los sistemas binario, octal y hexadecimal . . . . . . . . . . . 44

1.4.4 Codificación de caracteres alfanuméricos . . . . . . . . . . . . . . . . . . . . 49

1.4.5 Tipos simples de dato, estructuras de datos y ficheros . . . . . . . . . . . . 51

1.5 Fundamentos de redes de computadores . . . . . . . . . . . . . . . . . . . 54

1.5.1 Elementos básicos en la comunicación de datos . . . . . . . . . . . . . . . . 55

1.5.2 Tipos de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

1.5.3 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Este tema tiene como principal objetivo ofrecer una visión general sobre la informática, su evolución
histórica y sus principales conceptos. La mayor parte del contenido se centra en introducir el
computador como máquina para procesar información. Durante esta introducción se analizarán los

5
principios del funcionamiento de los computadores, así como su arquitectura. Además, se conocerán
las distintas formas de representar la información en un computador y los conceptos básicos sobre
redes de ordenadores.

1.1 Introducción a la informática

El concepto de informática se puede definir como el conjunto de recursos, procedimientos y téc-


nicas usadas durante el procesamiento, almacenamiento y transmisión de información, aunque este
concepto se ha ido relacionando cada vez más con el de Tecnologías de la Información y las
Comunicaciones (TIC), pues en la actualidad no basta con hablar de una computadora indepen-
diente cuando se hace referencia al procesamiento de la información, sino de redes formadas por
cientos, miles o millones de computadoras trabajando conjuntamente para ello.
Estrictamente hablando, la Real Academia de la Lengua Española (RAE) define la Informática
como el conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático
de la información por medio de ordenadores. En la bibliografía también se pueden encontrar otras
definiciones similares:

– “La informática trata de la adquisición, representación, almacenamiento, tratamiento y trans-


formación de la información” (Prieto et al., 1989)

– “La disciplina informática es el cuerpo de conocimiento que trata del diseño, análisis, imple-
mentación, eficiencia, y aplicación de procesos que transforman la información” (Tucker et
al., 1994)

En casi todas las definiciones que podemos encontrar sobre informática se utilizan algunos
términos y conceptos que conviene definir para adquirir el vocabulario básico relacionado con esta
asignatura:

Información: es todo aquello capaz de aumentar nuestro nivel de conocimiento de algo. Los
ordenadores nos ayudan a tratar la información, ya que proporcionamos al computador una
cierta información (entrada) y nos devuelve otra información elaborada a partir de la primera
(salida).

Dato: habitualmente a la información manejada por el ordenador la denominamos datos.


Los datos son conjuntos de símbolos utilizados para expresar o representar un valor numérico
(una temperatura o concentración de un elemento gaseoso), un hecho (se ha movido el ratón),
un objeto, etc., en la forma adecuada para ser tratado por un computador. Los datos se
transforman en información cuando se les procesa, a fin de obtener un producto significativo
cargado de conocimientos, ideas o conclusiones. Deberá existir, por tanto, una codificación

6
de dicha información a la entrada (para hacerla comprensible al ordenador), y otra a la salida,
para hacerla de nuevo comprensible al ser humano.

Ordenador o computador: máquina (aparato electrónico) capaz de aceptar unos datos


de entrada, efectuar transformaciones sobre ellos y proporcionar otros datos de salida. Es-
ta transformación debe hacerse de forma automática (sin que intervenga ningún operador
humano), por medio de las instrucciones de un programa almacenado en el ordenador (pre-
viamente introducido). La Figura 1.1 ilustra este esquema.

Figura 1.1: La computadora como transformadora de datos

Un computador no es un sistema aislado. Normalmente forma parte de un sistema mayor


(una organización), dentro del cual tiene funciones de manipulación de la información que
fluye en ese sistema. La organización (empresa, oficina, biblioteca, etc.) constituye lo que de-
nominamos el sistema. Dicho sistema, para su funcionamiento, utiliza y manipula una cierta
información. El conjunto de elementos que manipulan la información (personas, aparatos,
procedimientos, etc.) constituyen el sistema de información. Una parte de este sistema o
su totalidad puede estar informatizada, es decir, automatizada mediante el uso de uno o más
ordenadores. Esta parte es el denominado sistema informático. La Figura 1.2 muestra este
esquema.

Hardware: el computador junto con el conjunto de dispositivos que tenga conectados consti-
tuye lo que se conoce con el término de hardware. Por tanto, con hardware nos referimos a los
elementos físicos que constituyen un sistema informático (el propio ordenador, las impresoras,
los discos, los CDs, los pendrives, las tarjetas de sonido, el ratón, el teclado, etc.).

Software: el hardware del computador es explotado por el programa o conjunto de programas


(aplicaciones) que realizan la manipulación de los datos. Estos programas y todo lo relacionado
con ellos se denominan software. Por tanto, con software nos referimos a elementos lógicos

7
Figura 1.2: El computador como parte de una organización

que dotan al hardware de un sistema informático de capacidad para realizar algún tipo de
trabajo o tarea de manera automática. Los programas y aplicaciones informáticas son software
(sistemas operativos, procesadores de textos, programas de diseño gráfico, videojuegos, etc.).

Figura 1.3: Componentes de un computador

Telecomunicaciones: rama de las ciencias que estudia los sistemas y medios de emitir,
transmitir y recibir información a distancia, a través de medios físicos electromagnéticos y
ópticos.

Telemática: rama de las ciencias que combina el estudio de las telecomunicaciones y la


informática.

1.1.1 Antecedentes y evolución de los ordenadores

El término informática tiene su origen en una palabra francesa, Informatique, y está formado por
la unión de los vocablos INFORmación y autoMÁTICA. Según la historia de los ordenadores, el
dispositivo de cálculo más antiguo que se conoce es el ábaco. Creado por los egipcios dos mil años
antes de nuestra era, el ábaco permite sumar, restar, multiplicar y dividir. Se podía presentar de
dos maneras: una formada por 10 columnas, 2 bolas en la parte superior y 5 en la inferior (Figura

8
1.4), y otra formada por 20 columnas, 1 bola en la parte superior y 10 en la inferior. Posteriormente
fue mejorado por los chinos y japoneses.

Figura 1.4: Abaco de 10 columnas

Figura 1.5: Primera calculadora mecánica (máquina de Pascal)

En 1642, Blaise Pascal (filósofo y matemático francés) inventó la primera calculadora mecá-
nica que permitía sumar (Figura 1.5). Este dispositivo utilizaba una serie de rueda de 10 dientes en
la que cada diente representaba un dígito del 0 al 9. Posteriormente, a finales del S.XVII, Gottfried
Leibniz mejoró la máquina de Pascal, desarrollando una calculadora mecánica que permitía sumar,
restar, multiplicar, dividir y obtener raíces mecánicamente. Las desventajas de este dispositivo eran
que requería de la continua intervención del operador para efectuar maniobras, anotar resultados
intermedios y era propensa a errores. Más tarde, en el S.XVIII, Joseph-Marie Jacquard amplió la
funcionalidad de las calculadoras mecánicas creadas durante el siglo anterior, permitiendo que estas
almacenaran instrucciones (programas) en cartones perforados para controlar el estampado de las
telas (Figura 1.6).
Ya en el S.XIX, el matemático británico Charles Babbage creó la primera máquina analíti-
ca (Figura 1.7) que permitía almacenar información en tarjetas perforadas y seguir la ejecución
secuencial de las instrucciones de un programa (un principio actual en los ordenadores). En esta
primera máquina analítica ya se podía intuir la arquitectura funcional que hoy día tiene cualquier
computador: dispositivos de entrada (instrucciones para las operaciones y los datos de entrada),
memoria (para almacenar los datos introducidos y los resultados de las operaciones intermedias),

9
Figura 1.6: Calculadora mecánica que almacenaba instrucciones para controlar el estampado de
telas

Figura 1.7: Primera máquina analítica que permitía seguir la ejecución de un programa

unidad de control (para supervisar la ejecución de las operaciones según las secuencia adecuada),
unidad aritmético-lógica (que efectuaba las operaciones para las que la máquina estaba preparada)
y un dispositivo de salida (que transmitía los resultados de los cálculos).

Y es en 1890 cuando Herman Hollerith desarrolla lo que se puede considerar el primer or-
denador eléctrico, también conocido como máquina tabuladora (Figura 1.8). Además, Hollerith
desarrolló un sistema de tarjetas perforadas eléctricas basado en la lógica de Boole, aplicándolo a
la máquina tabuladora de su invención, lo que permitía leer y almacenar tarjetas. La máquina de
Hollerith se usó para tabular el censo de aquel año en los Estados Unidos. En 1896, Hollerith crea
la Tabulating Machine Company, con la que pretendía comercializar su máquina. La fusión de esta
empresa con otras tres (International Time Recording Company, la Computing Scale Corporation,

10
y la Bundy Manufacturing Company), dio lugar, en 1924, a la International Business Machines
Corporation (IBM).

Figura 1.8: Máquina tabuladora de Hollerith

Figura 1.9: Ejemplo de tarjeta perforada de la máquina tabuladora

En la máquina tabuladora de Hollerith, los equipos para el tratamiento de las tarjetas perforadas
(ver Figura 1.9) constaban de:

– Perforadora, con punzones que efectuaban diferentes taladros (como máquinas de escribir).

– Verificadora, que comprobaba la exactitud de los datos.

– Clasificadora, que seleccionaba las tarjetas mediante la lectura de las perforaciones de una
determinada columna.

– Intercaladora, que separaba, intercalaba o emparejaba tarjetas.

– Tabuladora, que realizaba operaciones de suma, resta, lectura e impresión.

11
Ya más recientemente, durante el S.XX, la fácil obtención de energía eléctrica implica el desa-
rrollo de máquinas electromecánicas (en lugar de las exclusivamente mecánicas), que utilizaban la
energía eléctrica para producir un movimiento mecánico. En los años cuarenta aparecen los pri-
meros ordenadores electromecánicos, que leían la información previamente perforada de cinta
de papel y tarjetas, y tenían como componentes básicos el relé y el solenoide. El primer ordenador
electromecánico conocido es el Mark I (1944), desarrollado por Howard Aïken e IBM (Figura
1.10). El Mark I multiplicaba dos números en tres segundos, recibía las instrucciones mediante
cintas de papel, recibía los datos mediante tarjetas perforadas, y escribía los resultados utilizando
un teletipo. Tenía 2.5 metros de alto y 17 metros de largo y constaba de 200.00 piezas conectadas
con 800.000 metros de cables. Disponía de unidades de E/S, memoria, Unidad Aritmético-Lógica
y Unidad de Control. En 1947 se crea el Mark II, que ya permitía multiplicar dos números en 0,25
segundos.

Figura 1.10: Mark I, el primer ordenador electromecánico

A mediados del S.XX es cuando arranca la era de los ordenadores electrónicos. El primer
ordenador electrónico, construido con válvulas de vacío, es el ENIAC (Electronic Numerical Inte-
grator and Computer), traducido como ordenador e integrador numérico electrónico (Figura 1.11).
Fue desarrollado en 1946 por J. Presper Eckert, John W. Mauchly y otros investigadores en la
Moore School of Engineering de la Universidad de Pennsylvania. En el ENIAC, las operaciones de
almacenamiento, cálculo y control eran efectuadas por circuitos electrónicos, teniendo que modi-
ficar los circuitos de la máquina para que realizara las operaciones requeridas, con 17.468 tubos
de vacío. Pesaba 30 toneladas, ocupaba una superficie de 160 m2, tenía 2.40 metros de alto y 30
metros de largo, y era capaz de almacenar programas distintos. Resolvía en 1 hora lo que Mark I
lo hacía en una semana.

12
Figura 1.11: ENIAC, el primer ordenador electrónico

Otro hecho fundamental durante la era de los ordenadores electrónicos tiene que ver con el
nacimiento de la arquitectura Von Neumann, ya que la mayoría de computadoras modernas
están basadas en esta arquitectura. Los principios de Von Neumann hacen referencia a la noción
de programa almacenado, ya que tanto datos como instrucciones se representan en código binario
y se almacenan juntos en la memoria del ordenador (en un mismo dispositivo), no haciendo el
ordenador distinciones entre datos e instrucciones. Otros aspectos importantes de esta arquitectura
tienen que ver con la transmisión de datos en paralelo (no en serie), los programas se encuentran
almacenados en memoria (no siendo necesario cambiar sus circuitos internos para cambiar el pro-
grama) y permite aplicar métodos de programación más complejos. Según Von Neumann, “...puesto
que el dispositivo final ha de ser una máquina computadora de propósito general, deberá contener
ciertos órganos fundamentales relacionados con la aritmética, la memoria de almacenamiento, el
control y la comunicación con el operador humano...”. Esos órganos a los que hace referencia Von
Neumann se corresponden con la Unidad Central de Proceso (UCP), compuesta por la Unidad
Aritmético-Lógica (ALU) y la Unidad de Control (UC), la Memoria Principal (MP), un dispositivo
de Entrada/Salida (E/S) y el bus de datos (Figura 1.12).

Figura 1.12: Esquema básico de la arquitectura Von Neumann

13
La primera máquina que se adaptó a la arquitectura Von Neumann fue EDVAC (Figura 1.13),
construida en 1947 en la Universidad de Cambridge. Es a partir de ese año cuando comienza
la primera generación de ordenadores electrónicos, siendo el Univac I (UNIVersal Automatic
Computer) en 1951 el primer ordenador electrónico digital producido en serie, y que se utilizó en
la oficina de censo de EEUU (Figura 1.14).

Figura 1.13: Ordenador electrónico EDVAC Figura 1.14: Ordenador electrónico Univac I

Los cambios socioeconómicos y tecnológicos en los años 50 llevan a la necesidad de controlar la


administración de las grandes empresas y los programas de investigación en las nuevas tecnologías.
Además, se dan las condiciones adecuadas para la aparición del ordenador y su fabricación en serie
(mejoras en los circuitos electrónicos, aparición de los circuitos integrados, métodos de programa-
ción más eficaces...). Los ordenadores comienzan a ser más rápidos, fiables, compactos, baratos y
consumen menos energía. De este modo, los distintos ordenadores aparecidos desde la década de
los cincuenta han sido clasificados en generaciones:

Primera Generación (1946-1958). Utilizan válvulas de vacío (Figura 1.15) para conmutar
la señal eléctrica, de modo que con +12V se representaba un valor 1 (verdadero) y con
-12V el valor 0 (falso). Consumían mucha energía, generaban mucho calor, ocupaban gran
volumen, sufrían frecuentes cuelgues y eran muy lentos. Estos ordenadores estaban orientados
a aplicaciones científico-militares. Entre los modelos más representativos estaban el Univac I
y las series 650 y 700 de IBM.

Segunda Generación (1959-1965). Se pasa del uso de la válvula de vacío al uso del tran-
sistor (Figura 1.16). El transistor era un conmutador de estado sólido o amplificador de
corriente, de pequeño tamaño y bajo consumo de energía, generaba poca calor y operaba
con pequeños voltajes. Estos ordenadores eran más baratos y fiables, efectuaban operaciones
lógicas más eficientes que los de válvulas de vacío y estaban orientados a aplicaciones como

14
Figura 1.15: Válvulas de vacío

reserva de líneas aéreas y control de tráfico aéreo. Es durante esta segunda generación cuando
aparecen los primeros lenguajes de programación (Algol, Cobol y Fortran). Entre los modelos
más representativos estaban el 1620, 1401 y 7094 de IBM.

Figura 1.16: Transistor

Tercera Generación (1966-1970). Aparecen los circuitos integrados (chips o microchips)


(Figura 1.17), placas de silicio donde están conectados muchos transistores y otros compo-
nentes electrónicos. A comienzos de los 60, la escala de integración de estos chips era baja
(10 transistores de media), subiendo progresivamente con el paso de los años (varios cientos
de transistores a finales de los 60, varios cientos de miles de transistores en los 70, y millones
de transistores en la actualidad). Los ordenadores de esta generación estaban más orientados
al teleproceso y la multiprogramación, apareciendo aplicaciones empresariales y científicas.
Entre los modelos más representativos de esta generación se encontraban el 360 y 370 de
IBM, el Spectra70 de RCA, y el SperryRand 1108 y 6600 de CDC.

Figura 1.17: Circuitos integrados (chips o microchips)

15
Cuarta Generación (1971-1980). Aparece el microprocesador (Figura 1.18), con un alto
grado de integración (100.000 transistores en un mismo chip) y las conocidas microcompu-
tadoras PC (Personal Computer). También surgen los lenguajes de programación de alto nivel
como Basic y PL1 e Intel y AMD se comienzan a perfilar como los dos grandes fabricantes
de microprocesadores.

Figura 1.18: Microprocesador Intel 80486

Quinta Generación (1981-?). El inicio teórico de esta generación se fija en el 1981 (debido
al impulso de la I+D por parte de Japón), si bien el inicio comercial se establece en 1991,
siendo el IBM PC uno de los que tuvo más auge (Figura 1.19). La quinta generación se basa
en pequeños ordenadores personales con aplicaciones en todo tipo de tareas, teniendo una
capacidad de cómputo cientos de veces superior a la anterior generación y con software que
permite manejar el ordenador sin apenas conocimientos informáticos.

Figura 1.19: IBM PC Modelo 5150

¿Existirá sexta generación? Es una pregunta cuya respuesta podríamos obtener seguramente en
pocos años... Los futuros computadores de sexta generación podrían ser los llamados Network
Computers u ordenadores de red, siendo sus características el bajo coste, poca memoria (puede
que sin disco duro) y obtendrían todas las prestaciones de las redes a las que se conectasen... los
rápidos avances que se producen en las TIC apuntan a que el futuro de los computadores irá por
ese camino...

16
1.2 Soporte físico del computador: hardware

Al conjunto de elementos mecánicos y electrónicos que constituyen un ordenador se le conoce como


hardware. Recordemos que el ordenador o computador es un máquina formada por elementos
de tipo electrónico, capaz de aceptar unos datos a través de un medio de entrada, procesarlos
automáticamente bajo el control de un programa previamente almacenado y proporcionar la
información resultante a través de un medio de salida (Figura 1.20). Como se ha visto en secciones
anteriores, este esquema básico tiene sus orígenes en la propuesta de la máquina programable del
matemático Von Neumann, capaz de ejecutar una serie de instrucciones u órdenes elementales
almacenadas en memoria principal. Así, la arquitectura Von Neumann constaba de unidad de
entrada, unidad de salida, memoria principal, Unidad Central de Proceso (Central Process Unit,
CPU) y unidad de memoria masiva, siendo una de las primeras arquitecturas que se emplearon en
la construcción de ordenadores, además de ser la arquitectura en la que se sientan las bases para
la mayoría de diseños actuales de computadoras (infinitamente más complejos).

Figura 1.20: Esquema básico del funcionamiento de un computador

1.2.1 Arquitectura interna del computador

La arquitectura interna básica de un ordenador sigue el esquema fundamental establecido por Von
Neumann en 1945 (Figura 1.21). Entre los principales elementos de la arquitectura Von Neumann
se encuentran los siguientes componentes:

Unidad Central de Proceso (UCP o CPU, en inglés). Es el módulo encargado de interpre-


tar y ejecutar instrucciones y procesar los datos, es decir,es donde tienen lugar las operaciones
sobre los datos y se ejecuta el programa que esté activo en ese momento. Está compuesta a
su vez por los siguientes elementos:

• Procesador. Controla el funcionamiento del ordenador y se considera el elemento funda-


mental, es decir, su cerebro. El conjunto de instrucciones que un procesador soporta
definirá que aplicaciones entiende y por tanto cuales puede llegar a ejecutar. Los conjun-

17
Figura 1.21: Arquitectura de Von Neumann

tos de instrucciones más comunes que puede ejecutar el procesador de un PC cualquiera


son el x86 (conjunto que trabaja con datos de 32 bits) y el x64 (extensión de la anterior
para permitir trabajar con datos de 64 bits). Entre las familias de microprocesadores
más conocidas actualmente están Intel y AMD. El procesador está compuesto a su vez
por:

◦ Unidad de Control (UC o CU, en inglés). Interpreta las instrucciones y controla su


ejecución. Dirige y controla el funcionamiento del ordenador, ejecutando las instruc-
ciones almacenadas en la memoria principal. Entre sus funciones básicas destacan:
analizar el estado de cada una de las unidades y captar de memoria las instrucciones
del programa para generar señales de control dirigidas a todas las unidades, orde-
nando las operaciones que llevan a la ejecución de la instrucción. Está formada a su
vez por:

 Registros, pequeñas memorias donde se almacenan temporalmente datos o ins-


trucciones para operar con ellos. Destacan el registro contador de programa
(registro PC), que contiene en cada momento la dirección de memoria en la que
se encuentra la siguiente instrucción a ejecutar, y el registro de instrucción
(registro RI), que contiene la instrucción a ejecutar en cada momento.

 Decodificador. Lleva a cabo la interpretación de la instrucción en lenguaje


máquina y su ejecución.

 Reloj. Sistema generador de impulsos a ritmo constante. Cada pulso del reloj
marca el comienzo de la ejecución de una instrucción máquina. El número de
impulsos generados por segundo marca la velocidad del ordenador y se mide

18
en hertzios (200 Mhz equivale a 200 millones de instrucciones elementales por
segundo). Hoy día una velocidad habitual para el reloj oscila en torno a los 4.000
millones de pulsos por segundos, o lo que es lo mismo, una frecuencia del orden
de 4 GigaHertzios (4 GHz). Por ejemplo, el procesador Intel Core i7 tiene una
velocidad de reloj de 4,2 GHz.

◦ Unidad Aritmético Lógica (UAL o ALU, en inglés). Realiza las operaciones ele-
mentales de tipo aritmético y lógico (sumas, restas, comparaciones...). Los datos con
los que opera deben estar almacenados previamente en la memoria principal, desde
donde se transfieren a los registros de la unidad aritmético-lógica. Estos registros
son:

 Registro acumulador, que almacena el resultado de las operaciones.

 Registro de entrada, que contiene los operandos antes de que se realice la


operación.

 Registro de estados, que indican situaciones que se dieron en la última operación


realizada (por ejemplo si ha sido 0, si ha sido negativa, etc.)

• Memoria principal. Almacena datos e instrucciones necesarios para la ejecución de los


programas, es decir, es la encargada de almacenar la información que va a ser tratada o
que ha sido elaborada por el sistema (datos e instrucciones). En la memoria principal se
pueden realizar operaciones de lectura y escritura a gran velocidad, ya que se encuen-
tra conectada directamente con el procesador. La memoria principal se organiza como
un conjunto de celdillas numeradas correlativamente (ver Figura 1.22), en la que cada
una almacena un número determinado de bits. A estas celdas también se les denomina
palabras de memoria. Cada palabra se identifica por un número (su dirección), que
indica la posición que ocupa en el conjunto. Existen dos tipos de memoria principal:

Figura 1.22: Organización en celdas (palabras) de la memoria principal

19
Figura 1.23: Módulos de memoria ROM Figura 1.24: Módulos DIMM de memoria RAM

◦ Memoria ROM (Read-Only Memory = memoria de sólo-lectura), en la que solo


se puede leer y que es permanente. Viene grabada de fábrica y contiene programas
y datos relevantes del sistema operativo que deben permanecer constantemente en
memoria interna (Figura 1.23) . Es una memoria que solo admite la operación de
lectura (los datos almacenados en la ROM no se pueden modificar, o al menos no
de manera rápida o fácil), y es memoria no volátil, es decir, mantiene la información
independientemente de la presencia o no de una fuente de energía. En las memorias
ROM la información está previamente guardada (mediante procedimientos especia-
les que el ordenador no puede realizar) y sólo puede recuperarse, pero no modificarse,
ni siquiera desconectando la alimentación eléctrica. Existen diversos tipos (PROM,
EPROM, EEPROM), siendo actualizables. La memoria ROM contiene información
de la puesta en marcha del computador y la BIOS (Basic Input Output System,
Sistema Básico de Entradas y Salidas).

◦ Memoria RAM (Random Access Memory = Memoria de acceso aleatorio), es la


memoria principal en sí, es decir, en la que se puede leer y escribir y, además,
es volátil (al apagar el computador se pierde la información que hubiera en ella).
Se utiliza para almacenar los programas, los datos que éstos utilizan y el sistema
operativo residente. Cuanto más memoria RAM tenga un ordenador, mayor número
de programas podrán funcionar al mismo tiempo y programas más grandes podrán
permanecer en memoria. Es expansible mediante la instalación de módulos DIMM
(anteriormente SIMM) (Figura 1.24) de diferentes capacidades (2 GB, 4 GB, etc.)
y tiempos de acceso.

Además de los dos tipos de memoria principal existe otro tipo de memoria de pequeño
tamaño y alta velocidad de acceso, conocida como memoria caché, que se encuentra
generalmente ubicada entre la memoria principal y la CPU, o en los propios dispositivos.
La misión de la memoria caché es acelerar los accesos a la información almacenada en
la memoria principal.

Periféricos de Entrada/Salida. Son los módulos encargados de transferir la información


entre el ordenador y el usuario. Se explican con más detalle en la Sección 1.2.3.

20
Buses. Sistemas digitales que permiten la transmisión de información entre los componentes
de un ordenador. Dicho de una forma más coloquial, un bus (en arquitectura de computadores)
es un cable dentro de un computador que transfiere información (un dato, una dirección, una
instrucción...) entre los componentes del mismo o entre varias computadoras. El ancho de
un bus es el número de hilos que tiene, es decir, el número de bits que puede transmitir
simultáneamente. Existen dos tipos de transferencia en los buses:

• Transferencia en serie, en la que los datos se transfieren bit a bit, es decir, el bus tiene
un único cable que transmite la información.

• Transferencia en paralelo, en la que se transfieren varios bits simultáneamente, por ejem-


plo 8 bits.

La tendencia en los últimos años es reemplazar los buses paralelos por buses serie (que sue-
len ser multicanal). Aunque estos son más difíciles de implementar, consiguen velocidades de
transferencia más elevadas y, además, permiten longitudes de cable mayores. En la arquitec-
tura básica de un computador podemos distinguir los siguientes tipos de buses (ver Figura
1.25):

Figura 1.25: Tipos de buses en la arquitectura básica de un computador

• Bus de control: encargado de llevar las órdenes a todos los elementos del sistema.

• Bus de direcciones: encargado de transmitir direcciones, por ejemplo, la dirección de


la celda en la que se debe hacer una determinada escritura en memoria o la dirección
del periférico al que hay que enviar unos datos, etc.

• Bus de datos: transfiere los datos entre los diferentes componentes del sistema.

21
1.2.2 Ejecución de instrucciones por el procesador

Como se ha comentado en la Sección 1.2.1, la CPU es la encargada de ejecutar el programa que se


encuentra activo en ese momento en el computador. Ese programa normalmente está compuesto
por miles y miles de instrucciones. Las fases para la ejecución de una instrucción en la CPU
son las siguientes:

1. Búsqueda de la instrucción: la unidad de control extrae de la memoria principal la ins-


trucción a ejecutar, cargando en el registro de instrucción (RI) la instrucción que indique
el registro contador de programa (PC), y después se modifica el PC para que apunte a la
siguiente instrucción a ejecutar. La instrucción que se guarda en el RI está formada por dos
partes: una que contiene el código de la operación y otra la dirección de memoria en la que
se encuentran los datos involucrados en dicha operación.

2. Ejecución de la instrucción: se decodifica el código de la instrucción cargada en el registro


RI y se generan las señales de control necesarias, que se envían a los dispositivos correspon-
dientes (por ejemplo a la UAL), a través del bus de control y los datos necesarios a través del
bus de datos.

3. Si no ha terminado la ejecución del programa, volver al paso 1.

1.2.3 Periféricos

Un computador procesa la información en forma de señales eléctricas digitales binarias. Para que
esta información sea útil a las personas, deberá ser tangible e inteligible. La representación eléctrica
digital binaria es adecuada para el ordenador, ya que sus circuitos funcionan así, pero no lo es
para las personas, ya que nuestros sentidos no pueden interpretarla (no estamos capacitados para
percibir la electricidad). Por esta razón, el computador se complementa con un conjunto de aparatos
llamados dispositivos periféricos, que convierten la información del mundo real en señales adecuadas
para el computador, y viceversa. Por tanto, se puede definir periférico como el dispositivo que
permite al ordenador comunicarse con el entorno para obtener, almacenar o transmitir datos.
Uno de los elementos base del computador es la placa base, también llamada placa ma-
dre (motherboard). En ella encontramos el soporte para los elementos principales del ordenador.
Consta de conectores para insertar la CPU, la memoria y los dispositivos que queramos conectar
directamente al bus, así como tomas de corriente, ventilación e indicadores luminosos variados. Los
dispositivos no se suelen conectar directamente al bus, sino que se hace a través de tarjetas adap-
tadoras que proporciona un conector (llamado puerto o bahía) al que se enchufan los cables de
los dispositivos. En este sentido se pueden considerar como extensiones del bus que proporcionan
acceso al mismo con una interfaz electrónica más adecuada. Todo esto (placa base, CPU, memoria,

22
tarjetas adaptadoras), junto con algunos dispositivos de almacenamiento, se guarda en el interior
de una caja protectora (torre), de manera que únicamente quedan accesibles los puertos de los
adaptadores de dispositivos, interruptores de encendido, etc. La Figura 1.26 muestra un ejemplo
de placa base y de la caja protectora donde normalmente se instala.

Figura 1.26: Ejemplo de placa base y de caja protectora (torre) donde normalmente se instala

Los periféricos se clasifican en cuatro tipos principalmente:

De entrada. Sirven para que usuario envíe información al computador, para darle órde-
nes, seleccionar elementos, introducir información (datos de entrada), etc. Ejemplos: teclado,
ratón y algunas variantes de éste (trackball, tabletas gráficas, etc.), las pantallas táctiles,
adaptadores de sonido que permiten conectar micrófonos y otras fuentes de audio, escáner,
capturadoras de vídeo, cámaras, joystick, volantes, lectores ópticos, etc.

De salida. Sirven para mostrar el estado del computador y los resultados de los cálculos.
Ejemplos: monitor, altavoces, impresoras, etc. Con respecto a los monitores, existen dos
tipos fundamentales: de tubo de rayos catódicos (CRT) y pantallas de cristal de cuarzo líquido
(LCD). Con respecto a las impresoras, también existen varios tipos: de impacto (escriben
impactando un martillo sobre una cinta entintada y ésta sobre el papel, para formar un
carácter. Subtipos: margarita y matricial) y sin impacto (escriben utilizando técnicas basadas
en fenómenos térmicos, electrostáticos o químicos, usando tinta líquida o tóner. Son más
silenciosas y rápidas. Subtipos: chorro de tinta, térmicas y láser).

De comunicación. Sirven para comunicar distintos ordenadores entre sí, de manera que
puedan compartir la información. Ejemplos: tarjeta de red, módem, etc.

De almacenamiento. Permiten guardar información del ordenador (programas y datos) en


soporte no volátil, es decir, no pierden la información después de desconectar la alimentación

23
eléctrica. Permiten, por tanto, el almacenamiento masivo de información. Existen distintos
tipos de tecnologías de almacenamiento no volátil:

• Dispositivos magnéticos. Los datos se graban como cambios en la magnetización


(imanes) de ciertos puntos sobre una superficie magnética. Ejemplos: los antiguos dis-
quetes (floppy disks) y cintas magnéticas (ya en desuso), los discos duros (ver Figura
1.27). Los discos duros instalados en un computador conforman lo que se conoce como
memoria auxiliar del equipo.

Figura 1.27: Componentes de un disco duro

• Dispositivos ópticos. Su funcionamiento se basa en propiedades ópticas (reflexión


de la luz). Existen discos ópticos de sólo lectura (CD-ROM y DVD-ROM), grabables
una vez (CD-R, DVD-R y DVD+R) y regrabables (CD-RW, DVD-RW, DVD+RW y
DVD+RAM).

• Dispositivos de estado sólido. También llamados memorias flash, son dispositivos


de almacenamiento extraíbles que utilizan dispositivos de estado sólido (circuitos inte-
grados) en vez de medios ópticos o magnéticos, es decir, no hay partes mecánicas, todo
es electrónico. Sus ventajas son que la transferencia de datos es más rápida y duran más,
mientras entre sus desventajas se encuentran una menor capacidad de almacenamiento
en el mismo espacio que en un disco electromecánico, y un mayor coste por megabyte
(aunque cada vez más barato). Ejemplos: memorias USB (pen drives), memorias ROM,
tarjetas de memoria (SD, CompactFlash, etc.).

Al hablar de periféricos también se deben mencionar aquellos dispositivos que nos permiten
conectarnos o comunicarnos con el exterior y con los propios periféricos. Esta comunicación se

24
realiza a través de los puertos. Al igual que existen dos tipos de transferencia de información en
los buses, existen también dos tipos de puertos de comunicación en un computador:

Puerto paralelo, en el que los bits circulan simultáneamente por cables separados. Si se
establece como unidad de transmisión el byte, serían necesarias 8 líneas distintas para esta-
blecer la comunicación, más alguna otra línea de control del dispositivo, que indique si está
ocupado o libre. Actualmente este tipo de puerto está en desuso (Figura 1.28).

Puerto serie, en el que los datos se transmiten bit a bit, uno después de otro por el mismo
cable (Figura 1.29). Antes de comenzar la comunicación, se deben intercambiar entre el emisor
y receptor la siguiente información: velocidad (expresado en bits por segundo), número de
bits que componen el byte y comprobaciones de paridad (código redundante). Un ejemplo de
puerto serie es el puerto USB (Universal Serial Bus), que es una modificación del tradicional,
permitiendo alcanzar mayores velocidades y la conexión de todo tipo de dispositivos mediante
un solo tipo de conector físico (teclados, ratones, impresoras, cámaras, teléfonos, etc.). Existen
diferentes tipos de conectores USB (ver Figura 1.30), pudiendo alcanzar velocidades desde los
1,5 MB/seg. (USB 1.1) hasta los 600 MB/seg. (USB 3.0).

Figura 1.28: Conector de puerto paralelo Figura 1.29: Conector de puerto serie

Figura 1.30: Diferentes conectores USB

25
1.3 Soporte lógico del computador: software

Se denomina software de un computador al conjunto de elementos lógicos necesarios para realizar


las tareas del usuario. El software que se instala en un computador se puede clasificar en dos tipos:

Software de sistema o software básico, que es el conjunto de programas necesarios para


un correcto funcionamiento del ordenador y de los periféricos. Parte del software básico está
cargado permanentemente en memoria (el sistema operativo, algunos programas de utilidad
para agregar o quitar archivos por ejemplo, o de comunicaciones y programas antivirus). El
sistema operativo es el software básico más importante de un computador, ya que realiza las
tareas básicas del sistema: control, reparto de recursos, gestión de entrada y salida.

Software de aplicación o software específico, que es el conjunto de programas que per-


miten la consecución de tareas específicas para la resolución de los problemas del usuario. Es
lo que se conoce como aplicaciones del computador, entre las que se encuentran los paque-
tes de ofimática, las aplicaciones de gestión, juegos, programas desarrollados para resolver
problemas concretos, etc.

Las licencias del software pretenden disuadir de la utilización de copias no autorizadas de


las aplicaciones, convirtiendo en ilegal (y por lo tanto constitutivo de delito) el uso de aplicaciones
no licenciadas. El creador de una aplicación la distribuye bajo una licencia: un texto legal que
acompaña al software en el que se especifica clara y detalladamente lo que se puede y no se puede
hacer con ese software, tanto en lo que respecta a su distribución y copia, como a su utilización,
e incluso para el acceso a servicios adicionales. Cuando adquirimos una aplicación, no adquirimos
un programa, el programa no pasa a ser de nuestra propiedad, sino que pagamos por una licencia,
un permiso para utilizar el programa bajo las condiciones que indique la licencia. La existencia de
licencias no implica que la copia o distribución de determinadas aplicaciones sea siempre ilegal.
Al contrario, la licencia es también un mecanismo para autorizar la redistribución de copias, eso
sí, de forma ordenada bajo los términos que se recojan en la misma. Se pueden establecer varias
categorías de software en función de la licencia:

Comercial o propietario. Se utiliza en aplicaciones comerciales de pago. La licencia suele


indicar el número de ordenadores en los que se puede instalar, el uso posible y prohibido de
la aplicación, la responsabilidad de la empresa creadora en el caso de posibles fallos en el
software (habitualmente se elude toda responsabilidad), las condiciones en las que el software
puede ser vendido a terceros, y suele proveerse algún mecanismo de soporte para solucionar
eventuales problemas que el cliente pueda tener con el software.

Shareware. Son aplicaciones comerciales (también conocidas como demos) que se distribu-
yen de forma más o menos libre, pero en versiones reducidas, con funcionalidad incompleta,

26
licencias con permisos reducidos, con funcionalidad por un tiempo limitado, sin soporte, etc.,
de manera que el usuario puede probar la aplicación, y si le interesa, adquirir la versión
comercial completa a posteriori.

Freeware. Son aplicaciones de libre distribución (también conocidas como de dominio público
o sin licencia) que pueden ser gratuitas o no (free significa libre, no gratuito). Una vez
adquirida la aplicación (suele ser gratuita) tenemos total libertad sobre la misma. Es posible
que el software acompañe una licencia que indica que efectivamente es de dominio público,
o que simplemente no acompañe ninguna licencia, con lo que podría tratarse de un software
licenciado distribuido ilegalmente (no acompaña la correspondiente licencia). Las licencias
freeware pueden ser a su vez de distintos tipos:

• OpenSource. Su traducción es código fuente libre, lo que significa que el código fuente
de la aplicación debe estar incluido obligatoriamente o poder obtenerse libremente. Una
aplicación OpenSource se puede copiar, vender e incluso se puede utilizar como parte de
una aplicación comercial.

• GPL (General Public License). Este tipo del licencia obliga a distribuir el código fuente,
y permite redistribuir el software, incluso modificado, pero obliga a seguir mantenien-
do la licencia GPL. Así, puede formar parte de otras aplicaciones mayores, pero estas
necesariamente deberán licenciarse bajo GPL.

• BSD (Berkeley Software Distribution). Similar a GPL pero menos restrictiva, permi-
tiendo el uso del código fuente en software comercial o propietario. Es menos frecuente.

• CC (Creative Commons). Permite copiar, distribuir y comunicar públicamente el soft-


ware, pero siempre se debe mantener la firma del autor original y el mismo tipo de
licencia.

Dentro del software básico de un computador, se describirá a continuación qué es el sistema


operativo y los tipos existentes en la actualidad. Después, se analizará el software de aplicación
más relacionado con la programación, como son los lenguajes de programación y los compiladores
e intérpretes.

1.3.1 Sistemas operativos

El sistema operativo pertenece al software básico o software del sistema y se define como el
programa o conjunto de programas de control que sirve de intermediario entre los usuarios y el
hardware, facilitando el uso de la computadora para que se emplee de manera eficiente. El sistema
operativo es un software que se carga y ejecuta en el ordenador automáticamente cada vez que éste

27
se pone en funcionamiento, siendo un elemento fundamental del computador, ya que las aplicaciones
no funcionan sin él. Por lo tanto, es el primer programa que debemos instalar en el ordenador.
Como ya se ha comentado, el usuario no utiliza el computador directamente, sino que se co-
munica con el ordenador a través de las aplicaciones. Las aplicaciones solicitan servicios al sistema
operativo y este ejecuta las instrucciones adecuadas para explotar el computador y sus periféricos.
Así, el sistema operativo se considera una capa intermedia que presta, centraliza y unifica servicios.
La Figura 1.31 ilustra lo que se conoce como el modelo de capas, donde las capas de abajo
que se denominan de bajo nivel representan las cuestiones cercanas (fáciles) al ordenador y lejanas
(difíciles) a las usuarios. En cambio, las capas superiores, denominadas de alto nivel, representan
cuestiones cercanas a los usuarios pero alejadas (complejas) para el ordenador.

Figura 1.31: Relación entre usuario, software y hardware (modelo de capas)

Entre las funciones principales del sistema operativo se encuentran:

Coordinar y gestionar el acceso a todos los recursos del computador (pantalla, impre-
sora, teclado, memoria, ...), impidiendo conflictos entre ellos y con la mayor eficacia posible. A
nivel del sistema operativo deben establecerse unas políticas de funcionamiento y seguridad,
entre las que podemos destacar:

• Reparto de CPU: una CPU sólo puede ejecutar un programa por lo que, si hay que
ejecutar varios programas simultáneamente, la CPU debe ejecutar fragmentos de cada
programa por turnos y repartir el uso de la CPU.

• Reparto de memoria: la memoria principal del ordenador es única y limitada, y debe


repartirse entre los programas que lo necesiten, evitando que unos programas puedan
acceder a la memoria reservada a otros.

Permitir la comunicación entre el usuario y el computador, ofreciendo al usuario


un acceso cómodo a la máquina. Por ejemplo, el sistema operativo proporciona un programa

28
llamado shell que se ejecuta automáticamente y cuya función es atender las órdenes del
usuario mediante comandos. Existen fundamentalmente dos tipos de shell:

• Intérprete de comandos (Figura 1.32), que permite al usuario comunicarse con el


sistema operativo mediante órdenes escritas en un determinado lenguaje y ofreciendo
sus respuestas en forma de texto.

• Interfaz gráfica de usuario (Graphic User Interface, GUI). Este tipo de shell utiliza
representaciones visuales en una pantalla (ventanas, botones, iconos, etc.) para referirse
a los programas y otros elementos del hardware y del software, de manera que el usuario
los selecciona visualmente mediante dispositivos apuntadores (ratón normalmente), de
forma intuitiva, sin necesidad de conocer ningún lenguaje (ver Figura 1.33). Todos los
sistemas operativos modernos utilizan interfaces gráficas, aunque también suelen pro-
porcionar algún intérprete de comandos para realizar operaciones específicas.

Figura 1.32: Intérprete de comandos Figura 1.33: Interfaz gráfica de usuario

En el mundo de los computadores personales (PCs) han aparecido diferentes familias de sistemas
operativos a lo largo de la historia. Se pueden destacar las siguientes:

DOS (Disk Operating System), 1981. Formado por un conjunto de programas cuya ejecución
podía solicitar el usuario mediante órdenes sencillas a través de una consola de comandos en
modo texto. La mayoría de comandos servían para gestionar los dispositivos de almacena-
miento masivo (disquetes, discos duros, etc.). No disponía de interfaz gráfica. Tuvo múltiples
adaptaciones: MS-DOS, PC-DOS, DR-DOS, FreeDOS, PTS-DOS, ROM-DOS, etc.

MS DOS (Microsoft Disk Operating System), 1981. Fue la versión del DOS más popular y
extendida de Microsoft para PCs. Tuvo ocho versiones principales (hasta el año 2000), pero
fue siendo reemplazado de forma gradual por otros sistemas operativos que ofrecían interfaz
gráfica, en particular por varias generaciones del sistema operativo Microsoft Windows.

29
Figura 1.34: Ventana de MS-DOS o Símbolo del Sistema en Windows 98

Unix, 1969. Creado por los laboratorios Bell de AT&T, es un sistema operativo multiusua-
rio y multitarea escrito en lenguaje C. Dispone de un lenguaje ensamblador propio, varios
compiladores y un editor de texto. La interfaz gráfica mediante Sistema de Ventanas X se
incorporó a mediados de la década de los 80.

Figura 1.35: Sistema de Ventanas para UNIX (finales década de los 80)

Linux, 1994. El nombre proviene de su creador, el estudiante finlandés Linus Tordvals. Su


licencia de uso es pública y gratuita (licencia GNU). Es un sistema multitarea y multiproceso
y se han creado múltiples distribuciones (algunas comerciales): Debian, Ubuntu, Fedora, Open-
SUSE, etc.

30
Figura 1.36: Distribución Debian de Linux con interfaz Gnome 3.0

Mac OS (Macintosh Operating System), 1984. Creado por Apple para su línea de compu-
tadoras Macintosh. Fue el primer sistema dirigido al gran público porque contaba con una
interfaz gráfica compuesta por la interacción del ratón con ventanas, iconos y menús. Se man-
tuvo hasta 1999 (versión 9.0), dando paso después a Mac OS X que está basado en UNIX.

Figura 1.37: Mac OS X

Microsoft Windows, 1985. Desarrollado por Microsoft desde 1985 (Windows 1.0) hasta
nuestros días (Windows 10). En sus orígenes era la interfaz gráfica de MS-DOS, desarrollada
propiamente por Microsoft. Surgió un gran éxito comercial con Windows 3.0 debido a la
aparición de multitud de paquetes de ofimática soportadas bajo el mismo sistema operativo.
Dispone de una interfaz gráfica y sencilla que ofrece ayuda permanente.

31
1.3.2 Lenguajes de programación

Antes de definir qué son los lenguajes de programación se debe conocer qué es un programa. En
el ámbito de la informática un programa es un conjunto de órdenes (instrucciones o sentencias)
que se le dan a un computador para que realice una determinada tarea. Dicho de otro modo, las
órdenes de un programa implementan un algoritmo para resolver un problema mediante el uso
del computador. Las órdenes de un programa deben ser escritas en un lenguaje que entienda el
computador, los llamados lenguajes de programación. La Figura 1.38 muestra la relación entre
los conceptos problema, algoritmo, programa y lenguajes de programación.

Figura 1.38: Relación entre los conceptos problema, algoritmo, programa y lenguajes de programa-
ción

Las instrucciones de un programa se construyen utilizando unos símbolos y unas reglas propias
del lenguaje de programación que se esté utilizando para implementar el algoritmo que resuelve el
problema. Existen tres tipos de lenguajes de programación (Figura 1.39):

Lenguaje máquina. También llamado código binario o código máquina, es el lenguaje que
puede ser interpretado directamente por el ordenador, es decir, el ordenador sólo puede eje-
cutar lenguaje máquina (órdenes codificadas en forma binaria). En este tipo de lenguaje las
instrucciones y los datos están compuestos por series de bits (0 o 1) que hacen referencia a
direcciones de memoria y ejecutan acciones con su contenido. Programar en lenguaje máquina
es muy difícil, debido a la facilidad con la que se pueden cometer errores y la dificultad en
localizarlos y corregirlos. El número de instrucciones es bastante reducido y dependen del pro-
cesador, es decir, un programa escrito en lenguaje máquina para una determinada máquina
no podría ejecutarse en otra distinta.

Lenguaje ensamblador. Es una evolución del lenguaje máquina en el que se sustituyen los
códigos binarios por nombres mnemotécnicos llamados etiquetas y el uso de identificadores.
Proporciona las mismas instrucciones que el lenguaje máquina y siguen dependiendo estre-
chamente del procesador en el que se ejecuta el programa. Ofrece al programador elementos
de muy bajo nivel que no facilitan la expresión de soluciones a problemas complejos y re-
quieren del uso de un programa traductor (ensamblador) que traduzca las instrucciones en
ensamblador a lenguaje máquina.

32
Lenguaje de alto nivel. En un lenguaje de alto nivel las órdenes están escritas de forma
similar al lenguaje natural, es decir, son fáciles de recordar. Además, se utilizan representa-
ciones más cercanas al lenguaje humano, lo que facilita la creación y comprensión del código
de los programas. El concepto de identificador se amplía y aparecen variables y estructuras de
datos complejas, de manera que no operamos con datos en direcciones de memoria sino con
objetos que almacenan valores (números, palabras, conjuntos, etc.) que ocupan varias posicio-
nes de memoria. En un lenguaje de alto nivel también es necesario traducir las instrucciones a
código máquina, utilizando para ello los programas traductores. A diferencia de los lenguajes
máquina y ensamblador, un programa escrito en un lenguaje de alto nivel no depende de la
estructura interna del procesador donde se va a ejecutar, por lo que es transportable de una
máquina a otra. No obstante, el programa traductor sí será diferente si se quiere ejecutar
en diferentes procesadores. Existen casi 300 lenguajes diferentes de alto nivel, algunos muy
conocidos como Fortran, C, C++, Java, Perl, Python, etc.

Figura 1.39: Ejemplos de instrucciones escritos en lenguaje máquina, ensamblador y alto nivel

Por último, según el grado de similitud del lenguaje de programación con el lenguaje natural,
los lenguajes de programación también se pueden clasificar en lenguajes de alto nivel (cerca del
lenguaje natural) y de bajo nivel (cerca de la máquina). En este caso, los lenguajes de bajo nivel
se clasifican a su vez en dos tipos: lenguaje máquina y lenguaje ensamblador.

1.3.3 Traductores de lenguajes: compiladores e intérpretes

Los programas traductores transforman las instrucciones escritas en lenguaje ensamblador o en


lenguajes de alto nivel en instrucciones en lenguaje máquina. Por tanto, la entrada de un pro-
grama traductor será un programa escrito en un determinado lenguaje de programación (llamado
programa o código fuente), y la salida será el programa equivalente escrito en código máquina. Ade-
más de traducir, los programas traductores pueden detectar errores en la escritura del programa
(errores sintácticos) e informar al programador para ayudarle a corregirlos. Existen varios tipos de
programas traductores:

33
Ensambladores. Transforman programas escritos en ensamblador a programas escritos en
lenguaje máquina, que son directamente ejecutables.

Compiladores. Transforman programas escritos en un lenguaje de alto nivel (código fuente)


a programas escritos en un lenguaje de bajo nivel (programa objeto). El programa objeto
no es directamente ejecutable, necesita del enlazador (linkador o linker), programa que une
el código objeto con otros códigos (por ejemplo librerías para la escritura en pantalla, etc.),
dando lugar al programa ejecutable. Si se detectan errores sintácticos (que impiden compilar
todo el programa) se informa al programador y no se genera el código objeto.

Intérpretes. Transforman programas escritos en un lenguaje de alto nivel (código fuente)


en las instrucciones necesarias en código máquina y las ejecutan inmediatamente. Es decir,
los intérpretes van analizando cada instrucción y la traducen a código máquina, por lo que
no se genera un programa objeto independiente. La ejecución es supervisada por el programa
intérprete, que tiene que estar instalado el en el ordenador en el que voy a ejecutar el programa.
El proceso de traducción se repite hasta finalizar las instrucciones del programa en lenguaje
de alto nivel, o hasta que se produzca un error.

La Figura 1.40 muestra un esquema de la relación entre los tipos de lenguajes de programación
y los traductores de lenguajes.

Figura 1.40: Relación entre los tipos de lenguajes de programación y los traductores de lenguajes

34
1.4 Representación interna de la información

Antes de explicar cómo se representa la información en un computador, definamos algunos conceptos


relacionados con ese tema:

Dato. Según la RAE es la información dispuesta de manera adecuada para su tratamiento


por un ordenador. Dato en informática es la representación formalizada de hechos o conceptos
susceptible de ser comunicada o procesada. En otras palabras, un conjunto de datos orde-
nado constituye información. Existen diferentes tipos de datos: numéricos (reales o enteros),
alfabéticos, alfanuméricos (2345X, M-7483,...), imágenes, sonido, vídeo, etc.

Información. Es el conjunto de datos que, estructurados en un orden determinado, aportan


conocimiento sobre un tema. Para que el computador pueda manipular la información es
necesario proporcionársela de la manera adecuada, es decir, en un formato que pueda ser
almacenado y procesado por el ordenador.

El computador es un aparato electrónico digital. Que sea electrónico significa que funciona
mediante señales eléctricas, es decir, que la información se representa mediante señales eléctricas
(interruptor abierto-cerrado, paso o no de corriente, magnetización en un sentido u otro, etc.). Que
sea digital significa que se utilizan magnitudes eléctricas discretas (un conjunto finito de valores
posible dentro del rango de funcionamiento). Habitualmente los sistemas digitales son sistemas
binarios, es decir, utilizan sólo 2 valores posibles (0 y 1, verdadero y falso, positivo y negativo,
etc.). Por tanto, para que la información sea procesada por un computador necesitamos traducir
cualquier dato a notación binaria, es decir, una combinación de 0 y 1 normalmente.
La representación escrita de números ha sido una inquietud humana desde los inicios de la
escritura. Existen multitud de sistemas de representación, con diferentes estrategias y reglas de
composición. Uno de los primeros y más extendidos fue el sistema romano, aún utilizado en deter-
minados usos, en el que los números se representan utilizando un conjunto de símbolos (las letras C,
D, I, L, M, V, y X) con unas reglas de composición más o menos complejas, y algunas deficiencias
importantes, por ejemplo la ausencia del número 0.
Actualmente se utiliza de forma generalizada el sistema arábigo, en el que utilizamos 10
símbolos (diferentes de los del alfabeto): 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9, y donde cada símbolo tiene un
valor. Componemos los números mediante sucesiones de cifras representadas con estos símbolos,
de manera que cada cifra multiplica el valor del símbolo por potencias de 10, dependiendo de la
posición que ocupa. Por ejemplo, el número 5.237 se interpreta como:

5,237 = 5 × 103 + 2 × 102 + 3 × 101 + 7 × 100

Es decir, cada cifra tiene un peso dependiendo de la posición que ocupa. Las cifras más a la izquierda

35
tienen mayor peso que las situadas a la derecha, teniendo la situada más a la derecha un peso de
1, es decir, 100. Así, el sistema arábigo se basa en el número 10 y sus potencias. Decimos que es un
sistema en base 10, o también conocido como sistema decimal.
En general podemos considerar un sistema en una base cualquiera, genéricamente en una base
B. En un sistema en base B utilizamos B símbolos distintos, desde 0 hasta B − 1 (por ejemplo para
base 8 utilizamos los símbolos 0 a 7). A la hora de componer números, cada cifra (que también
podemos llamar dígito) Di ocupará una posición i, donde i = 0 en el dígito más a la derecha. Así,
un número cualquiera Dn . . . D3 D2 D1 D0 lo interpretaremos de la siguiente forma:

Dn . . . D3 D2 D1 D0 = Dn × B n + . . . + D3 × B 3 + D2 × B 2 + D1 × B 1 + D0 × B 0 (1.1)

En el sistema arábigo o decimal B = 10, pero habitualmente en el mundo de la informática se utili-


zan otros sistemas, como el binario (B = 2), el octal (B = 8) y el hexadecimal (B = 16). Puesto
que en todas estas bases se utilizan algunos símbolos comunes, para indicar explícitamente en qué
base representamos un número (siempre que sea necesario o exista duda o ambigüedad), escribi-
remos al final la base B separada por una raya o paréntesis. Por ejemplo: 18752, 23)10 , 1001, 1)10 ,
1001, 1)2 , etc.

1.4.1 Sistema binario

El sistema binario es el utilizado normalmente en el computador para representar internamente


toda la información. Es un sistema de representación similar al arábigo, pero en base 2 (B = 2),
por lo que solo se dispone de 2 símbolos: 0 y 1. Una señal binaria se conoce como bit (Binary
digIT ), que se define como la unidad mínima de información que podemos tener acerca de un
hecho, consistente en saber únicamente si el hecho es verdadero o falso. Dicho de otro modo, para
saber si algo es verdadero o falso, necesitamos como mínimo un bit de información.
El bit, como toda unidad de medida, tiene múltiplos (no submúltiplos, porque es la unidad
mínima). 8 bits forman un byte (también llamado octeto), que es una unidad más utilizada, por
lo que un byte permite representar 28 = 256 combinaciones distintas de 0 y 1, que podrían ser 256
informaciones distintas sobre un hecho, 256 símbolos de un alfabeto formado por letras, números,
signos de puntuación, etc. Agrupando suficientes bytes podemos representar cualquier información,
por ejemplo, podríamos escribir un texto que describiera completamente un hecho.
No obstante, un byte sigue siendo una unidad muy pequeña de información, por lo que necesi-
tamos otros múltiplos, que, como con otras magnitudes físicas, construimos mediante los prefijos
kilo-, mega-, giga-, etc., del Sistema Internacional, aunque con una pequeña variación debida a que
las potencias de 2 derivadas del uso de sistemas binarios no son muy compatibles con las potencias
de 10 del sistema decimal que estamos acostumbrados a utilizar. No obstante, se ha querido facili-

36
tar el sistema de unidades de información y cuando trabajamos con bytes el cambio de magnitud
se realiza también multiplicando por 1.000, de manera que un KiloByte (KB) son 1.000 bytes, 1
MegaByte (MB) son 1.000 KB, etc. A continuación se muestra la equivalencia entre las unidades
múltiplo del byte:

1 KiloByte (KB) = 103 bytes = 1.000 bytes

1 MegaByte (MB) = 106 bytes = 1.000 KB

1 GigaByte (GB) = 109 bytes = 1.000 MB

1 TeraByte (TB) = 1012 bytes = 1.000 GB

1 PetaByte (PB) = 1015 bytes = 1.000 TB

1 ExaByte (EB) = 1018 bytes = 1.000 PB

1 ZettaByte (ZB) = 1021 bytes = 1.000 EB

1 YottaByte (YB) = 1024 bytes = 1.000 ZB

La B de bytes pude encontrarse escrita tanto en mayúsculas como en minúsculas, sin que esto afecte
a su significado: 1 MB es lo mismo que 1 Mb. Por otro lado, también es posible que la b pueda
utilizarse para precisar cantidades de información expresadas en bits (especialmente cuando la b es
minúscula). Lo normal es que las cantidades de información se expresen en bytes (no en bits), por
lo que si nos encontramos una b probablemente se refiera a bytes. No obstante el significado real
deberá confirmarse por el contexto donde aparezca escrito.
Siguiendo la fórmula de representación de un número en general (ver Ecuación 1.1) en base 2,
podemos fácilmente convertir un número binario a decimal. Para ello, se deberá multiplicar
cada bit por la potencia en base 2 en función de la posición de dicho bit. Así, por ejemplo, para el
número binario 1010011, su interpretación en decimal será:

1010011)2 =

1 × 26 + 0 × 25 + 1 × 24 + 0 × 23 + 0 × 22 + 1 × 21 + 1 × 20 =

1 × 64 + 0 × 32 + 1 × 16 + 0 × 8 + 0 × 4 + 1 × 2 + 1 × 1 =

64 + 0 + 16 + 0 + 0 + 2 + 1 = 83)10

Para convertir un número decimal a binario debemos tratar por separado la parte entera
de las divisiones y la parte fraccionaria (o resto) de las mismas. El equivalente binario a la parte
entera se obtiene dividiendo por 2 y tomando los sucesivos restos y el último cociente. El último
cociente corresponde al bit más significativo y el primer resto al menos significativo. En la Figura
1.41 se representa cómo se convierten a binario los números decimales 13 y 116.

37
Figura 1.41: Conversión a binario de los números 13 y 116 en decimal

Para convertir la parte fraccionaria de un número decimal a binario, se multiplica por dos
sucesivamente cada cifra de esa parte fraccionaria (si no resulta nulo). El número binario se forma
con las partes enteras que se van obteniendo. De esta forma, para el número en base decimal
116,1875 tendríamos como parte entera 116 y como parte fraccionaria 1875. La parte entera ya la
hemos calculado antes en binario (1110100). La parte fraccionaria se calcularía según se muestra
en la Figura 1.42.

Figura 1.42: Conversión a binario de la parte decimal del número 116,1875 en decimal

Por tanto tendríamos que 116, 1875)10 = 1110100, 0011)2 . También se observa como la repre-
sentación en base 2 de un número ocupa muchos más dígitos que en base 10. En general, cuando
menor sea la base, más dígitos necesitamos para representar los mismos valores. Es posible averi-
guar cuántos dígitos ocupa un número N en otra base B, mediante el logaritmo en base B
de N:
log10 N
 
Número de dígitos de N = dlogB N e = (1.2)
log10 B

La operación d e que encierra al logaritmo se denomina techo de y su resultado es el valor entero


mayor o igual más cercano, es decir, el entero más cercano redondeando por arriba. Por ejemplo,
d13, 75e = 14. Así, para guardar por ejemplo el número 235 en base 2, necesitamos 8 cifras (bits),
tal y como se calcula en la siguiente expresión:

log10 235 2, 371


   
dlog2 235e = = = d7, 8765e = 8 bits (1.3)
log10 2 0, 3010

38
Esta es una operación compleja que requiere de una calculadora (o al menos una tabla de
logaritmos). Para el caso del sistema binario, podemos construir fácilmente una tabla como la que
vemos en la Figura 1.43 que nos relacione el número de bits con el máximo valor decimal que
permite representar. Con N bits tenemos 2N combinaciones, es decir, podremos representar valores
decimales entre el 0 y el 2N − 1.

Figura 1.43: Relación entre número de bits y rango decimal en el sistema binario

Examinando la Figura 1.43 se observa que con 7 bits se representa hasta el número decimal
127 y que con 8 bits se puede representar hasta el 255. Por tanto, para representar el número
235 necesitaremos 8 bits porque con 7 no basta. De esta manera estamos representando números
exclusivamente positivos. Denominamos a esta representación binario natural o representación
binaria sin signo.

1.4.1.1 Representación de números negativos en binario

En ocasiones necesitamos representar en binario números que pueden tomar valores tanto positivos
como negativos. Como se puede intuir, en binario no se utiliza la estrategia que se usa en decimal
de poner el signo negativo delante del número. Para ello, existen tres métodos para realizar la
representación de los números negativos en binario:

Módulo y signo (MS). El número negativo se representa utilizando el bit de más a la


izquierda para representar el signo (0 para el + y 1 para el -). El resto de bits (N-1) representan
el módulo del número. El rango de representación para N dígitos sería:

−2N −1 + 1 ≤ X ≤ 2N −1 − 1

39
Así, por ejemplo, el número decimal 10 se representaría en binario como 00001010, y el valor
decimal -10 se representaría como 10001010.

Complemento a uno (C1). El negativo de un número se obtiene complementando todos


sus dígitos (cambiando ceros por unos y viceversa), incluido el bit de signo. El rango de
representación para N dígitos sería idéntico al método MS anterior:

−2N −1 + 1 ≤ X ≤ 2N −1 − 1

Con este método, el número decimal 10 se representaría en binario como 00001010, y el valor
decimal -10 se representaría como 11110101.

Complemento a dos (C2). Para realizar el complemento a dos de un número existen dos
formas. La primera es obteniendo el C1 del número y sumándole 1, es decir:

1. Se complementa el número positivo en todos sus bits incluido el bit de signo, es decir, se
realiza el C1 del número. Para el caso de representar -10, como hemos calculado antes,
su C1 sería 11110101.

2. Al resultado obtenido en el paso anterior se le suma 1 (en binario), despreciando el


último acarreo (si existe). Para el caso de -10 sería: 11110101 +1 = 11110110.

La segunda forma de calcular el C2 de un número es convirtiendo su valor absoluto a binario


y recorriendo de derecha a izquierda el binario dejando los 0 y el primer 1 tal cual. A partir
del primer 1 se intercambian los 0 y 1 del resto del binario. Por ejemplo, para representar -12
con 8 bits, 12 en binario es 00001100, por lo que, aplicando este segundo método, -12 sería:
11110100.

El principal inconveniente de utilizar el método de complemento a dos (C2) es el rango de


representación que permite, ya que sería asimétrico. Para N dígitos sería:

−2N −1 ≤ X ≤ 2N −1 − 1

Por regla general se suele utilizar como convenio de representación para números negativos
en binario el método complemento a 2 (C2). Cuando interpretamos un número binario de
esta manera decimos que tenemos una representación binaria con signo. Por lo tanto, en una
representación con signo, si uno de los bits se dedica al signo, tenemos un bit menos para hacer
combinaciones, es decir, con N bits tendremos 2N −1 combinaciones positivas y 2N −1 combinaciones
negativas, que corresponderían con rangos desde +0 a +(2N −1 − 1), y desde -0 a −(2N −1 − 1).
Como +0 y -0 representan el mismo número, la combinación correspondiente al -0 se aprovecha
para aumentar el rango de los negativos. Este es el motivo por el que el rango de representación en
C2 se considera asimétrico. De este modo, se puede completar la tabla mostrada en la Figura 1.43
con esta nueva representación con signo, tal y como se muestra en la Figura 1.44.

40
Figura 1.44: Relación entre número de bits y rango decimal para representación binaria con y sin
signo

1.4.1.2 Representación de números fraccionarios en binario

Todo lo visto hasta ahora en relación al sistema binario está relacionado con la representación de
números enteros. No obstante, también se pueden considerar números fraccionarios. A la hora de
representar números fraccionarios en binario se pueden utilizar dos estrategias:

Representación en punto fijo. Consiste en considerar que los números representan valores
en escala. A la hora de interpretarlos, dividimos su valor entre un factor fijo. Es como si para
representar un valor de 1,82 metros utilizáramos el valor entero 182, entendido como 182
centímetros, utilizando una escala de 100. Esta forma de representar los binarios fraccionarios
es muy poco utilizada. De hecho, el término punto fijo suele utilizarse para referirse a números
enteros (escala 1), mientras que los números fraccionarios se representan de forma generalizada
en punto flotante.

Representación en punto flotante. Esta representación parte de la idea de representar


únicamente las primeras cifras del número (que son las más importantes) e indicar cuántas
posiciones hay que desplazar la coma decimal (a la derecha o a la izquierda, es decir, cuántos
ceros hay que añadir por la derecha, o por la izquierda detrás de la coma decimal). Tal y
como se muestra en la Figura 1.45, esta representación se compone de tres partes:

• El bit situado más a la izquierda se deja para representar el signo (1 para negativos, 0
para positivos).

41
• Las cifras más a la derecha del número constituyen lo que se denomina mantisa. Mientras
mayor sea la mantisa, mayor precisión tendrá la representación, ya que dedicamos más
bits a los dígitos del número.

• La posición de la coma viene dada por el exponente, que será positivo para desplazar
la coma a la derecha o negativo para desplazarla a la izquierda. Cuantos más bits se
dediquen a exponente, mayor rango de números se podrá representar, ya que la coma
decimal se podrá desplazar en un mayor rango de valores.

Figura 1.45: Representación del formato de números en punto flotante

El reparto de bits entre mantisa y exponente de un número punto flotante y su interpretación


suele hacerse en los computadores siguiendo el estándar IEEE 754. Normalmente, el IEEE 754
requiere un total de 32 bits: 1 bit para el signo, 8 bits para el exponente y 23 bits para la mantisa.
La interpretación de este estándar para un número N sería la siguiente:

N = (−1)Signo × Mantisa × 2Exponente

donde el exponente es un número entero positivo o negativo y la mantisa es un número positivo que
empieza siempre por 1, ya que contiene las primeras cifras en binario del valor. La coma decimal
está inicialmente detrás del primer 1 de la mantisa y se desplaza tantas posiciones como indique el
exponente.
Para entender mejor la representación en punto flotante, se puede comparar con la represen-
tación que utilizan normalmente las calculadoras científicas para mostrar números muy grandes o
fracciones muy pequeñas sólo que, en este caso, como la representación de la calculadora es en base
decimal, el exponente no se utiliza como potencia de 2, sino como potencia de 10. Por ejemplo,
1,34e − 5 equivale a 0,00001345.

1.4.2 Sistemas octal y hexadecimal

En informática es habitual también utilizar el sistema octal (base 8) y el sistema hexadecimal


(base 16). En octal, al ser base 8, se utilizan únicamente los símbolos (cifras) del 0 al 7. En cambio,
en hexadecimal, al ser base 16, se necesitan 16 símbolos para representar todos los valores, de ahí
que se utilicen los dígitos del 0 al 9 y las letras A, B, C, D, E y F. El hecho de que estos sistemas
se utilicen frecuentemente en informática es porque sus bases son potencias de 2, lo que hace que
la conversión entre binario y octal o hexadecimal o viceversa sea muy sencilla:

Cada cifra octal equivale a tres cifras binarias.

42
Cada cifra hexadecimal equivale a cuatro cifras binarias (medio byte, cantidad de memoria
también conocida como nibble). Por tanto, un byte en hexadecimal se puede representar con
2 símbolos.

En la tabla de la Figura 1.46 se muestran algunos ejemplos de conversión de binario a octal


y hexadecimal. La tabla de la Figura 1.47 muestra las equivalencias entre los sistemas binario,
decimal, octal y hexadecimal.

Figura 1.46: Ejemplos de conversión de binario a octal y hexadecimal

Figura 1.47: Tabla de equivalencias entre decimal, binario, octal y hexadecimal

Para convertir un número binario fraccionario a octal (o hexadecimal), las agrupaciones de 3


(o 4) cifras hay que hacerlas a partir de la coma que separa la parte entera de la fraccionaria, y
completar con ceros las últimas agrupaciones en caso de que fuera necesario (por la izquierda para
la parte entera y por la derecha para la parte fraccionaria). Veamos el siguiente ejemplo (en azul
los ceros que se han añadido para completar las agrupaciones):

43
Un ejemplo de conversión de número octal fraccionario a binario se muestra a continuación:

3245, 765)8 = 11010100101, 111110101)2

La conversión entre decimal y octal o hexadecimal y viceversa se realiza mediante el


método de las divisiones y multiplicaciones visto para el sistema binario (utilizando 8 o 16 res-
pectivamente como multiplicador o divisor, ver Sección 1.4.1), y la tabla de conversiones decimal-
hexadecimal como referencia. Por ejemplo:

234)10 = EA)16

857A)16 = 8 ∗ 163 + 5 ∗ 162 + 7 ∗ 161 + A ∗ 160 = 34170)10

Por último, para convertir entre hexadecimal y octal y viceversa, se utiliza la transforma-
ción intermedia a binario, es decir, se convierte cada cifra del número a binario y luego se transforma
a octal agrupando las cifras de 3 en 3 o a hexadecimal agrupando las cifras de 4 en 4 mediante la
tabla de conversión de la Figura 1.47. Ejemplos:

AF, 16C)16 = 1010 1111,0001 0110 1100)2 ⇒ 010 101 111,000 101 101 100)2 = 257, 0554)8

257, 0554)8 = 010 101 111,000 101 101 100)2 ⇒ 1010 1111,0001 0110 1100)2 = AF, 16C)16

1.4.3 Aritmética de los sistemas binario, octal y hexadecimal

En el sistema binario, las operaciones aritméticas de sumar y restar se calculan teniendo en


cuenta las tablas de sumar y restar en binario (ver Figura 1.48).

Figura 1.48: Tablas de sumar y restar en binario

Haciendo uso de estas tablas podemos calcular la suma y resta entre números binarios tal y
como se muestra en los ejemplos de la Figura 1.49.

Figura 1.49: Ejemplo de suma y resta en binario

Cuando la suma de dos dígitos excede los símbolos numéricos disponibles en la notación, se
lleva un 1 (acarreo) a la posición del dígito inmediatamente superior, tal y como se muestra en la

44
Figura 1.50.

Figura 1.50: Ejemplos de suma con acarreo en binario

Para realizar la resta se puede utilizar la tabla de la suma contando hacia atrás (descontando).
Cuando la resta de dos dígitos excede (por debajo) los símbolos numéricos disponibles en la notación,
se realiza un pedido o deuda de 1 a la posición del dígito inmediatamente superior, tal y como se
muestra en la Figura 1.51.

Figura 1.51: Ejemplos de resta con deuda en binario

Otra técnica eficiente para realizar sustracciones (restas) en binario consiste en sumar al mi-
nuendo el complemento a 1 del sustraendo. El complemento a 1 de un número N, es el número
que resulta de restar cada una de las cifras de N a la base menos uno del sistema de numeración
que se esté utilizando. Dicho de otro modo, es equivalente a intercambiar unos y ceros. Así, el
complemento a 1 de 1011 es 0100. Por tanto, podemos restar dos números sumando al minuendo el
complemento a 1 del sustraendo. Si hubiera una cifra que se arrastra del resultado, se descarta y se
sumaría al resultado obtenido. Por ejemplo, si queremos restar 100011, 101 (minuendo) y 10101, 000
(sustraendo) se realizarían los siguientes pasos:

1. Como la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el
sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal.

2. Se halla el complemento del sustraendo (cambiar 0 por 1 y 1 por 0).

45
3. Se suman el minuendo y el complemento del sustraendo. Si existiera acarreo, se elimina de
la izquierda y se suma con el dígito más a la derecha del resultado, sin importar la coma
decimal, tal y como se muestra en la Figura 1.52.

Figura 1.52: Ejemplo de resta en binario sumando al minuendo el C1 del sustraendo

Por tanto, 100011, 101 − 10101, 000 = 1110, 101. Para verificar que el resultado es correcto
se podrían realizar varias comprobaciones como, por ejemplo, convertir a decimal las cifras del
minuendo y del sustraendo y realizar la respectiva resta; o sumar el resultado al sustraendo, con lo
que se debería obtener el minuendo.
Con respecto a las operaciones aritméticas de multiplicar y dividir en binario, estas se rigen
por las tablas de multiplicar y dividir en binario (ver Figura 1.53).

Figura 1.53: Tablas de multiplicar y dividir en binario

En la Figura 1.54 se muestra un ejemplo de multiplicación y división en binario.

Figura 1.54: Ejemplo de multiplicación y división en binario

46
Por otro lado, la operación aritmética de sumar en los sistemas octal y hexadecimal se hace
teniendo en cuenta las tablas correspondientes para la suma en ambos sistemas (ver Figura 1.55).
Teniendo en cuenta dichas tablas, la Figura 1.56 muestra algunos ejemplos de suma en octal y
hexadecimal.

Figura 1.55: Tablas de sumar en octal y hexadecimal

Figura 1.56: Ejemplos de suma en octal y hexadecimal

Una manera sencilla de realizar la suma en octal y hexadecimal es usando el método del reloj.
Consiste en ordenar todos los símbolos del sistema de numeración en un círculo de menor a mayor
(como en un reloj). Para realizar la suma se procede de la siguiente manera:

1. Posicionarse en el lugar correspondiente al primer sumando.

2. Desplazarse en el sentido de las agujas del reloj, avanzando tantas posiciones como lo indique
el segundo sumando.

3. El resultado de la suma será la última posición a la que se llegue. Cuando al sumar se supere
el valor del último dígito del sistema de numeración, se produce un acarreo y debe añadirse
una unidad a la posición inmediatamente superior.

La Figura 1.57 muestra un par de ejemplos de suma en hexadecimal utilizando el método del
reloj.
La operación aritmética de restar en los sistemas octal y hexadecimal se hace mediante la
técnica del complemento, tal y como se vio para el sistema binario. La resta hexadecimal sigue las
mismas reglas que la resta decimal y binaria, con la salvedad de que un pedido de 1 en la notación

47
Figura 1.57: Ejemplos de suma en hexadecimal mediante el método del reloj

hexadecimal representa el número decimal 16. Usando el método del reloj para la sustracción, se
procedería de la siguiente manera:

1. Posicionarse en el símbolo correspondiente al minuendo.

2. Desplazarse en el sentido contrario a las agujas del reloj la cantidad de veces indicada por el
sustraendo.

3. El resultado de la resta será la última posición a la que se llegue. Cuando al restar se llegue a un
valor inferior a 0, se realiza un pedido y se debe restar una unidad a la posición inmediatamente
superior.

La Figura 1.58 muestra un par de ejemplos de resta en hexadecimal utilizando el método del
reloj.

Figura 1.58: Ejemplos de resta en hexadecimal mediante el método del reloj

48
1.4.4 Codificación de caracteres alfanuméricos

Los caracteres son la representación habitual para el intercambio de información entre el ordenador
y los dispositivos de entrada y salida, de ahí que también se denominen códigos de entrada/salida.
Un carácter en general puede ser un símbolo alfanumérico (numérico o alfabético), especial o de
control. Los caracteres se suelen representar mediante un valor numérico que equivale a un símbolo
del alfabeto según una determinada tabla. Por tanto, los códigos de caracteres se pueden ver como
una correspondencia biunívoca entre un conjunto de caracteres y un conjunto de combinaciones de
bits (tabla).
La tabla de codificación de caracteres utilizada tradicionalmente en la mayoría de computadores
personales es la tabla ASCII (American Standard Code for Information Interchange). ASCII fue
desarrollado por ANSI (American National Standards Institute), por lo que a veces se conoce
también como tabla o código ANSI. En la tabla ASCII básica se emplean 7 bits (27 = 128 valores
posibles, desde el 0 al 127) para representar los siguientes caracteres:

Caracteres de control. Son los caracteres entre el 0 y el 31, y tienen asignados algunos
símbolos gráficos. Sin embargo, lo más normal es que se empleen como códigos especiales con
significados concretos para la pantalla o la impresora, como avance de línea, retorno de carro
(volver a la primera columna de texto), emitir un pitido, fin de página, etc.

Caracteres alfanuméricos. Son los caracteres entre el 32 y el 127, y en ellos se encuentran


las letras (mayúsculas y minúsculas), los dígitos del 0 al 9, y los símbolos de puntuación
habituales (punto, coma, interrogación, etc.).

Las combinaciones que ofrece ASCII resultan insuficientes para representar los símbolos habi-
tuales en los distintos idiomas, por lo que normalmente se utiliza la tabla ASCII extendida (ver
Figura 1.59), que contiene 256 posibles valores (8 bits, 28 = 256). Las posiciones desde la 0 a la 127
representan los mismos caracteres que en la tabla ASCII básica, y desde el carácter 128 hasta el
255 se incluyen diversos grupos de símbolos, entre los que destacan las letras con tilde, letras pro-
pias de alfabetos internacionales (como la ñ), elementos de dibujo (líneas, cuadros, etc.), símbolos
matemáticos, etc. Puesto que las necesidades de caracteres especiales (acentos, etc.) varían de unos
países a otros, la parte alta de la tabla ASCII (del carácter 128 en adelante) no es siempre igual.
Existen un conjunto de páginas internacionales de caracteres que definen el contenido de la parte
alta de la tabla ASCII para cada país o para usos concretos. Esto implica que un texto codificado
utilizando estos caracteres pueda tener apariencia diferente si se utiliza una página internacional
distinta. Esto es un problema importante cuando se comparten documentos en idiomas diferentes,
ya que los textos podrían resultar difícilmente legibles.
Para solucionar este problema, surge Unicode, una tabla estandarizada y universal, donde
cada carácter se representa con 16 bits. Esto da lugar a un máximo de 65.536 símbolos diferentes.

49
Figura 1.59: Tabla ASCII extendida (8 bits)

Todos ellos están dedicados a símbolos, no hay ningún código para caracteres de control como
en ASCII. En Unicode están contemplados todos los posibles caracteres conocidos, incluyendo los
miles de ideogramas de los lenguajes orientales. Unicode está ampliamente extendido, pero tiene el
hándicap de que cada carácter utiliza el doble de memoria que ASCII. Por ello surgió UTF-8, que
es una modificación de Unicode que pretende solucionar el problema del uso de memoria. UTF-8
tiene los mismos caracteres que Unicode, pero diferentes símbolos pueden tener distinto número de
bits: las letras más habituales, las de la tabla ASCII básica, ocupan 1 byte, y las menos habituales
puede ocupar 2, 3 o 4 bytes. Las reglas de composición de UTF-8 están diseñadas de forma que se
pueda convertir fácilmente de UTF-8 a otras versiones de Unicode y otros formatos, y viceversa.

Por último, comentar que el orden de los caracteres en las distintas tablas de caracteres (ASCII,
Unicode, etc.) se utiliza a menudo en informática para ordenar alfabéticamente cadenas de caracte-
res. Según este tipo de orden, y fijándonos, por ejemplo, en la tabla ASCII extendida, una palabra
que empiece por Á (A con tilde), estará ordenada después que otra que comience por B. De la
misma forma, una palabra en mayúsculas precederá a otra en minúsculas, independientemente de
la letra que sea. A este tipo de ordenación, en lugar de alfabética, se le conoce como ordenación
ASCII.

50
1.4.5 Tipos simples de dato, estructuras de datos y ficheros

La procedencia de los datos que deben ser procesados puede ser muy distinta y tener su origen en
unidades muy diferentes del computador. Así, un dato puede ser un carácter leído desde teclado,
estar almacenado en disco o ser un número que se encuentra en memoria principal. En cualquier
situación el dato tiene la misma representación y dicha representación dependerá de su naturaleza,
que podrá ser numérica (entero o real), lógica o alfanumérica. Esa naturaleza intrínseca de los datos
que pueden ser procesados en el computador permite hacer una primera clasificación de cuatro tipos
básicos de dato, conocida como tipos simples de dato o tipos de dato simples:

Carácter o alfanumérico. Un tipo carácter puede representar una letra, un número, un


símbolo o un carácter de control, es decir, cualquier carácter alfanumérico. Cada carácter se
representa mediante un número entero según una determinada tabla de equivalencia. Tradi-
cionalmente se ha utilizado la tabla ASCII en la que cada carácter se representa mediante un
código (número) de 1 byte.

Entero o punto fijo. Es un tipo de dato que permite almacenar valores numéricos enteros
en un rango que depende del número de bytes que se dediquen a su almacenamiento y de si se
permiten o no números negativos. Pueden ser a su vez de dos subtipos: sin signo (sólo positivos,
representados en binario natural) o con signo (números positivos y negativos, representados
mediante el convenio de complemento a 2).

Real o punto flotante. Permite almacenar valores que pueden tener parte decimal en for-
mato de punto flotante, cuyo rango de valores y precisión depende del número de bytes que
ocupen: cuantos más bits se dediquen a la mantisa mayor precisión en las cifras decimales;
cuantos más bits se dediquen al exponente, mayor rango de valores, desde números muy gran-
des (lejanos al 0), hasta fracciones muy pequeñas (números muy cercanos al 0). Así, cuantos
más bits se dediquen a la representación completa, más precisión y más rango. Por ejemplo:
Los números en punto flotante de precisión simple utilizan 32 bits en total, mientras que los
números en punto flotante de precisión doble utilizan 64 bits.

Lógico o boolean. Almacena únicamente dos posibles valores: verdadero (true) o falso (false).
Por tanto, sólo necesita 1 bit para almacenar esta información, pero normalmente utiliza un
byte completo. Esto es debido a que la CPU tarda menos en manipular una palabra (1 byte),
que en separar de una palabra un byte o un bit suelto. Si todos los bits de la palabra son 0
el valor es falso, siendo verdadero en caso contrario.

Un dato de tipo simple no está compuesto de otras estructuras que no sean los bits y, por tanto,
su representación sobre el computador es directa, sin embargo existen unas operaciones propias de
cada tipo que en cierta manera los caracterizan. En la práctica, la mayor parte de la información útil

51
no aparece aislada en forma de datos simples, sino que lo hace de forma organizada y estructurada.
Además, tener estructurada la información supone ventajas adicionales al facilitar el acceso y el
manejo de los datos. Por ello, parece razonable desarrollar la idea de la agrupación de datos, que
tengan un cierto tipo de estructura y organización interna.
Una estructura de datos es, a grandes rasgos, una colección de datos (normalmente de tipo
simple) que se caracterizan por su organización y las operaciones que se definen en ellos, es decir,
permiten representar una información relacionada (distintos datos que están relacionados entre sí
de alguna manera). Por tanto, una estructura de datos vendrá caracterizada tanto por unas ciertas
relaciones entre los datos que la constituyen (por ejemplo el orden de las componentes de un vector
de enteros), como por las operaciones posibles que se pueden realizar con ella.
Las estructuras de datos se pueden clasificar en estáticas o dinámicas según la variabilidad
de su tamaño durante la ejecución del programa que las utiliza. Las estructuras estáticas son
aquellas en las que el tamaño ocupado en memoria se define con anterioridad a la ejecución del
programa (en tiempo de compilación), de forma que su dimensión no puede modificarse durante la
misma (por ejemplo, un vector de números). Por el contrario, ciertas estructuras de datos pueden
crecer o decrecer en tamaño durante la ejecución, dependiendo de las necesidades de la aplicación,
sin que el programador pueda o deba determinarlo previamente: son las llamadas estructuras
dinámicas. Las estructuras dinámicas no tienen limitaciones en su tamaño (teóricamente), salvo
la única restricción de la memoria disponible en el computador. En esta asignatura solamente se
verán estructuras de datos estáticas, que se clasifican en:

Arrays. El tipo array o vector o arreglo representa un conjunto de elementos donde todos son
del mismo tipo. Cada elemento individual del array se identifica mediante un índice (elemento
1 del array, elemento 2, etc.). Por ejemplo, podemos tener un array de enteros que almacena
el número de plazas de 5 autobuses (numerados del 1 al 5): número de plazas del autobús 1,
del autobús 2,... hasta el 5. También se pueden definir arrays cuyos elementos sean a su vez
otros arrays, dando lugar a lo que se conoce como arrays multidimensionales. En concreto, a
los arrays de dos dimensiones se les conoce también como matrices.

Cadenas. Algunos autores consideran el tipo cadena o string como una estructura de
datos diferente a los arrays, ya que muchos lenguajes de programación (como es el caso
de Python, por ejemplo) tienen definido el tipo String como un tipo propio del lenguaje.
Otros autores simplemente consideran que el tipo cadena es un tipo de array especial (un
array de caracteres exclusivamente, como es el caso del lenguaje C). Dependiendo del caso,
el tipo cadena se considerará entonces una estructura de datos estática o dinámica. Para los
lenguajes que tienen definido el tipo cadena como propio, este suele ser un tipo dinámico
(no es necesario establecer la longitud máxima de la cadena antes de ejecutar el programa,

52
en tiempo de compilación). Los lenguajes que no tienen un tipo cadena predefinido suelen
emplear un array de caracteres en su lugar y, por lo general, el tamaño de dicho array sí que
debe definirse en tiempo de compilación. En este caso estaríamos hablando de que las cadenas
son unas estructuras de datos estáticas para ese lenguaje. En esta asignatura se considerarán
estructuras de datos estáticas aparte de los arrays, aunque no será necesario especificar su
tamaño máximo.

Registros. El tipo registro permite representar un conjunto de elementos relacionados, donde


cada elemento puede ser de un tipo diferente. Cada elemento individual del registro se deno-
mina campo y se identifica mediante un nombre. Por ejemplo podemos tener un registro que
almacena la información de una persona, y los campos serían: nombre, apellidos, edad, etc.
Un registro puede contener como campos cualquier tipo de dato simple o incluso estructuras
de datos como arrays u otros registros.

Mediante la agrupación de tipos simples y estructuras de datos se desarrollan lo que se conoce


como estructuras de datos de alto nivel o estructuras elaboradas, que representan informa-
ción de alto nivel (imágenes, sonidos, etc.). Así, una imagen podríamos representarla por ejemplo
de la siguiente forma: una matriz (array de dos dimensiones) cuyo tipo base es un píxel, que, a su
vez consiste en un registro formado por 3 campos que representan los valores de color de ese pixel
(rojo, verde y azul) mediante un entero de 8 bits que indica la cantidad de color (ver Figura 1.60).

Figura 1.60: Ejemplo de estructura de datos de tipo matriz cuyos elementos (píxeles) son registros
de 3 campos (rojo, verde y azul) para representar en memoria los datos de una imagen

Por último, los programas normalmente necesitan también guardar información en dispositivos
de almacenamiento no volátiles (discos, memorias externas, etc.) para que en cualquier momento
la información pueda estar disponible. Para guardar la información en estos dispositivos se utilizan
unas estructuras de datos llamadas ficheros (o archivos). Cada fichero tiene la misma estructura
que la memoria principal, en el sentido de que es una secuencia de bytes. La información de los
distintos tipos y estructuras de datos que se han explicado se guarda en un fichero conservando
la misma representación que tenían en memoria principal, de manera que el intercambio entre

53
memoria principal y el disco se hace copiando byte a byte las celdas de memoria a las celdas del
archivo y viceversa.
Habitualmente se construyen ficheros mediante la repetición de un mismo tipo de registro, o
también podemos tener ficheros en el que aparece una secuencia irregular de estructuras. A este
tipo de ficheros se les conoce como ficheros binarios. Además, existe un tipo de ficheros muy
utilizado, los ficheros de texto, que contienen únicamente secuencias de caracteres. No obstante,
los datos de un fichero no se pueden utilizar directamente en los programas, ya que deben estar
necesariamente en memoria principal, por lo que es necesario que se traspasen a estructuras de
datos en memoria. Como se explicará a lo largo de la asignatura, los lenguajes de programación
proporcionan instrucciones que permiten traspasar parte del contenido de un fichero a estructuras
de datos en memoria y viceversa.

1.5 Fundamentos de redes de computadores

Antes de hablar de redes de ordenadores hay que hacer una pequeña introducción a los conceptos
de comunicación y telecomunicación. Este último está formado por la palabra comunicación
y el prefijo tele (a distancia), luego se puede definir como comunicación a distancia. Más formal-
mente, se dice que se establece una telecomunicación cuando se produce una emisión, transmisión
y recepción de información de cualquier naturaleza a través de un medio capaz de propagar se-
ñales electromagnéticas. Los primeros sistemas que se utilizaron para realizar telecomunicaciones
surgieron durante el S.XIX: el telégrafo (escritura a distancia), el teléfono (sonido a distancia) y el
teletipo (permite utilizar un teclado y una impresora para enviar y recibir los mensajes).
La comunicación es la acción o efecto de hacer partícipe a otra persona del conocimiento o
información que uno tiene. A partir de esta definición se pueden identificar varios elementos básicos:

Emisor, es el ente que hace partícipe de la información que éste tiene.

Receptor, es el ente o unidad que recibe la información que el emisor transmite.

Mensaje, es el contenido de lo que se intercambia.

Desde el punto de vista de las telecomunicaciones, la señal que se transmite en una comu-
nicación se transforma en información (sonido, imagen, vídeo...), constituyendo así la fuente de
información. Tal y como se muestra en la Figura 1.61, esa información debe ser transformada en
señales adecuadas para su transmisión y puesta en el medio transmisor (canal) por el transmisor.
Ese proceso de transformación la realiza un codificador. La señal propagada por el canal llega al re-
ceptor y se transforma por el descodificador al mismo tipo de la información original, entregándose
posteriormente al destinatario de la información para que pueda ser entendida correctamente.

54
Figura 1.61: Transmisión de información desde el punto de vista de las telecomunicaciones

Desde hace varios años, con el nacimiento de la sociedad de la información, las telecomuni-
caciones se han convertido en uno de los principales motores del desarrollo económico de nuestra
sociedad. El avance de las Tecnologías de la Información (TI) se debe precisamente a la mejora en
la infraestructura de las telecomunicaciones, que permite transmitir mejor los grandes volúmenes
de información (voz, textos, datos, imágenes, vídeo) a cualquier punto. Específicamente, el gran
avance de las TI se debe principalmente a tres aspectos importantes:

Microelectrónica. En general, el menor tamaño de los componentes implica una reducción de


costes y una disminución del consumo de energía, aumentando a pesar de ello la capacidad
de almacenamiento que ofrecen.

Digitalización. La posibilidad de transmitir datos (audio, vídeo, gráficos, texto...) en forma


de bits en los diferentes niveles de tratamiento de la información (codificación, transmisión,
conmutación), facilita sin duda las comunicaciones y la cantidad de información que puede
ser enviada sin importar la distancia.

Nuevos medios de transmisión. La aparición de la fibra óptica y la comunicación vía satélite


ha favorecido una mayor calidad, fiabilidad y velocidad de transmisión, así como la capacidad
de acceder a cualquier parte del planeta.

1.5.1 Elementos básicos en la comunicación de datos

Al explicar el funcionamiento del computador se introdujo el concepto de señal discreta. Las señales
discretas son aquellas cuya variación a lo largo del tiempo sólo toma valores de un conjunto finito.
Algunos casos se conocen como digitales porque tienen dos únicos valores lógicos 0 y 1 como,
por ejemplo, la comunicación entre ordenadores, en la que la información se transforma a dígitos
binarios. En cambio, las señales analógicas son aquellas cuya variación a lo largo del tiempo se
realiza de forma continua, es decir, para pasar de un valor a otro necesita tomar todos los valores
intermedios (por ejemplo el voltaje, la velocidad...).
Las principales desventajas de las señales analógicas con respecto a las digitales son la degrada-
ción de la señal con la distancia (atenuación), ya que se pierde calidad cuando la distancia es mayor,
y la influencia de los ruidos, ya que estos se superponen a las señales analógicas, distorsionándolas
la mayoría de veces. Por este motivo, la tendencia actual es ir sustituyendo progresivamente los

55
dispositivos de almacenamiento y transmisión de información de analógicos a digitales, ya que una
señal digital no pierde calidad por la distancia y por los ruidos y, si lo hace, puede ser restaurada.
En la comunicación de datos un elemento fundamental es la velocidad de transmisión. La
velocidad de transmisión de datos es el numero de bits por segundo que salen del ordenador hacia
el módem para que este los module y los transmita hacia el terminal de destino. Se suele medir en
bits por segundo (bps), Kilobits por segundo (Kbps, 1 Kbps = 1000 bps), o Megabits por segundo
(Mbps, 1 Mbps = 1.000.000 bps).
Otro elemento fundamental es el medio de transmisión (también conocido como canal, línea,
ruta, enlace o circuito para la transmisión de la información). La capacidad de un canal es el rango
de frecuencias que puede transmitir el medio que constituye dicho canal, es decir, es el margen entre
las frecuencias inferior y superior que pueden circular por el mismo. Habitualmente esta capacidad
se designa como ancho de banda del canal, e indica el volumen de tráfico que el medio puede
soportar, sin causar distorsión apreciable a la señal para la calidad de servicio establecida. Tres son
los medios de transmisión más utilizados hoy día:

Par trenzado. Es el más antiguo y todavía más usado medio de transmisión. Consiste en
dos hilos de cobre aislados de pequeño diámetro, usualmente 1mm, que se enrollan entre sí
de forma helicoidal (trenzada) para reducir las interferencias producidas por el acoplamiento
capacitivo entre los hilos. Su aplicación se encuentra en los sistemas telefónicos. Los cables
de pares pueden transmitir señales a varios kilómetros, sin embargo para grandes distancias
se precisan dispositivos como repetidores, que amplifican la señal. Se pueden emplear para
transmisión analógica o digital y llegan a alcanzar velocidades de unos pocos Mbps. Son fáciles
de instalar y se utilizan sobre todo en redes locales.

Cable coaxial. Consiste en un hilo de cobre, que constituye el núcleo del cable, rodeado por
un material aislante. Este conjunto está encapsulado por un conductor cilíndrico constituido
normalmente por una tupida malla también de cobre. Todo ello se recubre a su vez por un
plástico de protección. Soporta velocidades elevadas del orden de 10 Mbps o más. Existen dos
tipos principales de cable coaxial:

• Cable de 50 ohmios. Para transmisión digital y se denomina cable coaxial de banda base.
Puede llegar a una velocidad de 10 Mbps en 1 km. Se usan para redes de área local y
para largas distancias en los sistemas telefónicos. Los cables de banda base son los más
baratos y sencillos de instalar.

• Cable de 70 ohmios. Para transmisión analógica y es denominado de banda ancha. Es el


usado para la señal de televisión.

Fibra óptica. Se utiliza como medio físico la fibra de vidrio y como señal la luz, normalmente

56
emitida mediante un proyector de rayos láser, lográndose alcanzar grandes distancias sin
apenas pérdidas. Por convenio, un pulso luminoso representa un bit 1 y su ausencia representa
un bit 0. Transmite energía lumínica en vez de señales eléctricas. Tiene la ventaja de que la
comunicación no es afectada por el ruido y las radiaciones y entre sus inconvenientes figura su
elevado coste y que las conexiones requieren un complejo proceso de soldadura. Está teniendo
un creciente uso en las transmisiones telefónicas. Ha desplazado totalmente al par trenzado
y al cable coaxial en los tendidos submarinos. En la transmisión de redes de área local no
está tan extendido debido a la mayor complejidad de la tecnología que se necesita. Permite
velocidades de 100 Mbps.

Figura 1.62: Ancho de banda soportado por algunos medios de transmisión de datos

1.5.2 Tipos de redes

Una red de comunicación es un conjunto de nodos y los canales que los enlazan. En una red de
ordenadores el conjunto de nodos serían los propios ordenadores, aunque los canales y dispositivos
implicados en la comunicación son también computadores. En la actualidad se pueden realizar varias
clasificaciones de tipos de redes (por la distancia que cubren, por el tipo de medio de transmisión,
etc.). Según la distancia que cubren, las redes se clasifican en:

Redes de Área Local (Local Area Networks, LAN). Las redes locales son aquellas que están
instaladas en un dominio geográfico limitado, como puede ser el interior de una empresa u
organismo, con el objetivo de satisfacer las necesidades informáticas, integrando todos los
equipos existentes (ordenadores, impresoras, servidores de comunicaciones, etc.) para apro-
vechar al máximo sus capacidades de proceso. El alcance varía entre cientos de metros y
kilómetros y la velocidad de transmisión es elevada comparada con la que se alcanza con
las líneas telefónicas. Por ejemplo, Fast Ethernet varía entre 1 Mbps y 100 Mbps, la tec-
nología ATM alcanza 622 Mbps, y Gigabit Ethernet 1 Gbps. Las distintas configuraciones
geométricas que pueden adoptar los equipos que se conectan a un red LAN (topología, ver
Figura 1.63) son: en estrella, en bus o en anillo. Para interconectar redes LAN próximas se
emplean algunos dispositivos como repetidores (repeaters), puentes (bridges), encaminadores
(routers) y pasarelas (gateways). Además de los clásicos par trenzado, coaxial y fibra óptica,

57
se están implementando con éxito redes LAN sin cables, es decir, las conocidas como redes
inalámbricas.

Figura 1.63: Topología en redes LAN

Redes de Área Metropolitana (Metropolitan Area Networks, MAN). Es la conexión de


redes de área local, separadas por algunas decenas de kilómetros, mediante líneas de alta
velocidad, en distancias no superiores al ámbito urbano. La velocidad llega a ser de 155 Mbps
con una topología en bus o anillo. En este caso, el diámetro puede llegar a los 50 km.

Figura 1.64: Ejemplo de Red de Área Metropolitana

Redes de Área Extendida (Wide Area Networks, WAN). Las redes de área extensa son
redes pertenecientes a grandes compañías u organismos oficiales, abiertas a la comunicación
de cualquier usuario que se conecte a ellas, normalmente mediante un contrato de alquiler,
asignándosele un identificativo que le permite intercambiar información con cualquier otro
abonado. Posibilitan la interconexión de LANs situadas a grandes distancias.

Redes Integrales de Servicios Digitales (RDSI). También conocidas como redes ISDN
(Integrated Services Digital Network), se definen como redes telefónicas digitales capaces de

58
proporcionar conectividad digital extremo a extremo, para transportar cualquier tipo de señal:
audio, datos, imágenes, vídeo, etc. RDSI supone la digitalización completa, de forma que toda
la comunicación que se establezca será en forma digital. RDSI ofrece una velocidad básica de
canal de 64 kbps.

Si nos centramos en el tipo de medio de transmisión, las redes se clasifican en:

Cableadas. Son redes que utilizan un medio cableado (coaxial, par trenzado o fibra) para
transmitir la información. Por lo general suelen ser redes cuya velocidad de transmisión es
más rápida. Típicos ejemplos de este tipo de redes son: red telefónica, red de televisión por
cable, red de acceso a Internet de banda ancha (ADSL, fibra)...

No cableadas o inalámbricas (wireless). Son redes cuyo medio de transmisión es el aire.


Precisamente por ese motivo suelen ser redes cuya velocidad de transmisión es más lenta,
porque comparten el mismo medio para transmitir la información. Como ventaja frente a
las cableadas, son redes que requieren menos infraestructura (hardware) para instalarlas,
prácticamente con un único punto de acceso se puede dar conexión a 253 dispositivos.

1.5.3 Internet

El término INTERNET viene de INTERnational NETwork of computers y se define como la gran


red de redes. En Internet todas las redes trabajan como un conjunto, empleando un juego de
protocolos y herramientas con la finalidad de permitir el libre intercambio de información entre sus
usuarios. En Internet la comunicación se controla mediante los protocolos TCP/IP y el acceso se
realiza a través de un Proveedor de Servicios de Internet (ISP, Internet Services Provider), que no
es ni más ni menos que la compañía que permite a sus usuarios tener acceso a Internet, normalmente
a través de líneas telefónicas, mediante un pago por el servicio.
Las direcciones IP (Internet Protocol) en Internet son los números (identificadores) utilizados
para identificar los ordenadores de Internet, es decir, son como las matrículas de los coches. Una
dirección IP está formada por cuatro números unidos por puntos, de los cuales los tres primeros bytes
determinan la red y el último identifica la máquina dentro de la red (por ejemplo 158.49.17.240).
El Sistema de Nombres de Dominio (Domain Name System, DNS) es una base de datos
jerárquica distribuida por la red, que es accedida por las aplicaciones que lo requieren y permite
la existencia de dominios agrupados en niveles descendentes, cada uno de los cuales garantiza la
unicidad de los nombres que se asignan al dominio. Por ejemplo, los dominios de nivel superior
más conocidos son .com (para organizaciones comerciales), .edu (para instituciones educativas),
.gov (para gobiernos), .mil (para organizaciones militares), .net (para gestión de redes) y .org (para
organizaciones no lucrativas). Los nombres de dominio ofrecen numerosa información sobre una
dirección dada.

59
Un protocolo en general es un conjunto de reglas formuladas para controlar el intercambio de
datos entre dos partes de una comunicación. En redes de comunicación, los protocolos especifican
cómo una red debe mover los mensajes y gestionar los errores. Existen muchos tipos de protocolos
(de acceso al medio o enlace, de red, de transporte, de aplicación, de transferencia de ficheros,
de búsqueda y recuperación de información, de transferencia de correo, etc.). Los protocolos más
importantes en Internet son:

PPP (Point-to-Point Protocol), Protocolo Punto a Punto. Es el protocolo de acceso al medio


o enlace y el comúnmente usado para establecer una conexión directa entre dos nodos de una
red de computadoras. El objetivo de la capa de enlace es conseguir que la información fluya,
libre de errores, entre dos máquinas que estén conectadas directamente.

IP (Internet Protocol). Es el protocolo de red. Es un protocolo de conmutación de paquetes


no orientado a la conexión, que transmite los correspondientes datagramas de un ordenador
fuente a un ordenador destino. Los ordenadores intermedios o nodos deciden el camino por el
que retransmitir cada datagrama en función de la dirección destino y de una tabla de encami-
namiento. Es decir, se encarga del direccionamiento individual de las unidades fundamentales
de mensajes entre los nodos de la red.

TCP y DNS son los protocolos utilizados a nivel de transporte. Entre las funciones del Pro-
tocolo de Control de Transporte (TCP) se encuentra el de controlar los errores del flujo de
transmisión, de establecer números de secuencia de los paquetes, retransmisión de paquetes
perdidos, etc. Por otro lado, los servidores DNS relacionan los nombres de dominio reservados
con direcciones IP, por lo que ayudan a que el transporte de la información llegue al desti-
natario correcto. Por ejemplo, el nombre de dominio www.unex.es equivale a la dirección IP
158.49.17.240.

A nivel de aplicación existen varios protocolos importantes: HTTP y HTTPS para páginas
web, FTP para transferencia de archivos, SMTP, IMAP y POP3 para correo electrónico.

60

También podría gustarte