Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Del computador a la programación, Resúmenes de Programación de Red

Acerca de las bases fundamentales de la programación

Tipo: Resúmenes

2015/2016

Subido el 13/12/2022

JavierGlzLopez
JavierGlzLopez 🇲🇽

1 documento

1 / 321

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
III
CONTENIDOS
PRÓLOGO..............................................................................................VIII
1. CONCEPTO DE COMPUTADOR.........................................................1
1.1. UNA PRIMERA APROXIMACIÓN AL COMPUTADOR ........................1
1.1.1 OPERACIONES BÁSICAS DEL PROCESADO DE DATOS ......................2
1.1.2 ALGORITMOS Y PROGRAMAS..................................................................3
1.2. ANTECEDENTES HISTÓRICOS.................................................................5
1.3. ORGANIZACIÓN DE UN COMPUTADOR................................................ 9
1.3.1 LA ARQUITECTURA DE VON NEUMANN ............................................... 9
1.3.2 UNIDADES FUNCIONALES....................................................................... 10
1.4. EL CONCEPTO DE PROGRAMA ALMACENADO ............................... 16
1.4.1 TIPOS DE INSTRUCCIONES......................................................................17
1.4.2 LENGUAJE MÁQUINA Y LENGUAJE ENSAMBLADOR.......................18
1.4.3 EJECUCIÓN DE UN PROGRAMA .............................................................20
1.5. CONCEPTO ACTUAL DEL COMPUTADOR.......................................... 24
1.5.1 DEFINICIÓN ACTUAL................................................................................ 24
1.5.2 PARÁMETROS BÁSICOS DE LA MÁQUINA ..........................................25
1.6. DEL COMPUTADOR A LA PROGRAMACIÓN .....................................26
1.6.1 LOS DATOS.................................................................................................. 27
1.6.2 LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL........................... 27
1.6.3 ELEMENTOS BÁSICOS DE UN LENGUAJE DE ALTO NIVEL.............31
1.6.4 ORGANIZACIÓN DE UN PROGRAMA.....................................................35
1.6.5 TRADUCCIÓN DE PROGRAMAS..............................................................36
1.7. SISTEMA OPERATIVO Y PROGRAMAS DEL SISTEMA....................37
1.8. TIPOS DE COMPUTADORES....................................................................39
1.9. COMUNICACIÓN DE DATOS Y REDES .................................................40
1.9.1 TRANSMISIÓN DE DATOS DENTRO DEL COMPUTADOR .................40
1.9.2 COMUNICACIÓN DE DATOS A LARGA DISTANCIA........................... 42
1.9.3 REDES DE ORDENADORES ...................................................................... 43
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Del computador a la programación y más Resúmenes en PDF de Programación de Red solo en Docsity!

III

CONTENIDOS

    1. CONCEPTO DE COMPUTADOR......................................................... PRÓLOGO.............................................................................................. VIII
  • 1.1. UNA PRIMERA APROXIMACIÓN AL COMPUTADOR ........................
  • 1.1.1 OPERACIONES BÁSICAS DEL PROCESADO DE DATOS ......................
  • 1.1.2 ALGORITMOS Y PROGRAMAS ..................................................................
  • 1.2. ANTECEDENTES HISTÓRICOS .................................................................
  • 1.3. ORGANIZACIÓN DE UN COMPUTADOR................................................
  • 1.3.1 LA ARQUITECTURA DE VON NEUMANN ...............................................
  • 1.3.2 UNIDADES FUNCIONALES.......................................................................
  • 1.4. EL CONCEPTO DE PROGRAMA ALMACENADO ...............................
  • 1.4.1 TIPOS DE INSTRUCCIONES......................................................................
  • 1.4.2 LENGUAJE MÁQUINA Y LENGUAJE ENSAMBLADOR.......................
  • 1.4.3 EJECUCIÓN DE UN PROGRAMA .............................................................
  • 1.5. CONCEPTO ACTUAL DEL COMPUTADOR..........................................
  • 1.5.1 DEFINICIÓN ACTUAL................................................................................
  • 1.5.2 PARÁMETROS BÁSICOS DE LA MÁQUINA ..........................................
  • 1.6. DEL COMPUTADOR A LA PROGRAMACIÓN .....................................
  • 1.6.1 LOS DATOS..................................................................................................
  • 1.6.2 LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL...........................
  • 1.6.3 ELEMENTOS BÁSICOS DE UN LENGUAJE DE ALTO NIVEL .............
  • 1.6.4 ORGANIZACIÓN DE UN PROGRAMA.....................................................
  • 1.6.5 TRADUCCIÓN DE PROGRAMAS..............................................................
  • 1.7. SISTEMA OPERATIVO Y PROGRAMAS DEL SISTEMA....................
  • 1.8. TIPOS DE COMPUTADORES ....................................................................
  • 1.9. COMUNICACIÓN DE DATOS Y REDES .................................................
  • 1.9.1 TRANSMISIÓN DE DATOS DENTRO DEL COMPUTADOR .................
  • 1.9.2 COMUNICACIÓN DE DATOS A LARGA DISTANCIA...........................
  • 1.9.3 REDES DE ORDENADORES ......................................................................
    1. SOPORTE LÓGICO DE UN COMPUTADOR IV FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN
  • 2.1. CONCEPTO DE SOPORTE LÓGICO........................................................
  • 2.2. AYUDAS PARA LA PROGRAMACIÓN....................................................
  • 2.2.1 TRADUCTORES ...........................................................................................
  • 2.2.2 TIPOS DE LENGUAJES DE ALTO NIVEL ................................................
  • 2.2.3 UTILIDADES Y FASES EN LA EJECUCIÓN DE UN PROGRAMA........
  • 2.3. PROGRAMA DE ARRANQUE....................................................................
  • 2.4. SISTEMAS OPERATIVOS (SO)..................................................................
  • 2.4.1 FUNCIONES DE LOS SISTEMAS OPERATIVOS.....................................
  • 2.4.2 LA ESTRUCTURA DE UN SISTEMA OPERATIVO TÍPICO ...................
  • 2.4.3 ADMINISTRACIÓN DEL HARDWARE.....................................................
  • 2.4.4 ADMINISTRACIÓN DEL SISTEMA DE ARCHIVOS...............................
  • 2.4.5 APOYO A LA EJECUCIÓN DE PROGRAMAS DE APLICACIÓN ..........
  • 2.4.6 MÓDULOS PARA LA GESTIÓN DE REDES ............................................
  • 2.4.7 EJEMPLOS DE SISTEMAS OPERATIVOS................................................
  • 2.5. SOPORTE LÓGICO DE LAS REDES DE COMPUTADORES ..............
  • 2.5.1 SOPORTE LÓGICO BÁSICO.......................................................................
  • 2.5.2 RELACIONES EN UNA RED ......................................................................
  • 2.5.3 PROGRAMAS DE APLICACIONES DE LAS COMUNICACIONES .......
    1. ALGORITMOS Y PROGRAMAS.......................................................
  • 3.1. CONCEPTO DE ALGORITMO ..................................................................
  • 3.2. LA RESOLUCIÓN DE PROBLEMAS Y EL USO DEL ORDENADOR
  • 3.2.1 ANÁLISIS DEL PROBLEMA ......................................................................
  • 3.2.2 DISEÑO DEL ALGORITMO........................................................................
  • 3.2.3 PROGRAMACIÓN DEL ALGORITMO ......................................................
  • 3.3. REPRESENTACIÓN DE ALGORITMOS .................................................
  • 3.3.1 PSEUDOCODIGO .........................................................................................
  • 3.3.2 ORGANIGRAMAS .......................................................................................
  • 3.4. ESTRUCTURAS DE CONTROL.................................................................
  • 3.4.1 ESTRUCTURAS SECUENCIALES .............................................................
  • 3.4.2 ESTRUCTURAS SELECTIVAS...................................................................
  • 3.4.3 ESTRUCTURAS REPETITIVAS .................................................................
  • 3.5. PROGRAMACIÓN MODULAR................................................................
  • 3.5.1 FUNCIONES ............................................................................................... FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN V
  • 3.5.2 PROCEDIMIENTOS O SUBRUTINAS .....................................................
  • 3.5.3 ÁMBITO DE LAS VARIABLES................................................................
  • 3.5.4 PASO DE PARÁMETROS .........................................................................
  • 3.6. CONCEPTO DE PROGRAMACIÓN ESTRUCTURADA .....................
  • 3.7. RECURSIVIDAD.........................................................................................
  • 3.8. DESARROLLO Y GENERACIÓN DEL SOFTWARE...........................
  • 3.8.1 INGENIERÍA DEL SOFTWARE ...............................................................
  • 3.8.2 CICLO DE VIDA DEL SOFTWARE .........................................................
  • EN EL COMPUTADOR .......................................................................... 4. ARITMÉTICA Y REPRESENTACIÓN DE LA INFORMACIÓN
  • 4.1. SISTEMAS DE NUMERACIÓN EN INFORMÁTICA...........................
  • 4.1.1 DEFINICIÓN DEL SISTEMA BINARIO...................................................
  • 4.1.2 TRANSFORMACIONES ENTRE BASES BINARIA Y DECIMAL ........
  • 4.1.3 CÓDIGOS INTERMEDIOS ........................................................................
  • 4.2. OPERACIONES ARITMÉTICAS Y LÓGICAS......................................
  • 4.2.1 OPERACIONES ARITMÉTICAS CON NÚMEROS BINARIOS.............
  • 4.2.2 VALORES BOOLEANOS Y OPERACIONES LÓGICAS........................
  • 4.2.3 PUERTAS LÓGICAS..................................................................................
  • 4.2.4 ARITMÉTICA CON PUERTAS LÓGICAS...............................................
  • 4.3. REPRESENTACIÓN DE INFORMACIÓN EN EL COMPUTADOR ..
  • 4.3.1 LA CODIFICACIÓN EN INFORMÁTICA................................................
  • 4.3.2 REPRESENTACIÓN INTERNA DE DATOS............................................
  • 4.3.3 REPRESENTACIÓN INTERNA DE PROGRAMAS ................................
  • 4.4. EL CONCEPTO DE TIPO DE DATO.......................................................
    1. ESTRUCTURAS DE DATOS .............................................................
  • 5.1. EL CONCEPTO DE DATOS ESTRUCTURADOS. ................................
  • 5.2. TIPOS DE DATOS ESTRUCTURADOS ..................................................
  • 5.3. ESTRUCTURAS DE DATOS CONTIGUAS............................................
  • 5.3.1 CADENAS...................................................................................................
  • 5.3.2 ARRAYS......................................................................................................
  • 5.3.3 REGISTROS ................................................................................................
  • 5.4. ESTRUCTURAS DINÁMICAS Y PUNTEROS ....................................... VI FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN
  • 5.5. ESTRUCTURAS LINEALES .....................................................................
  • 5.5.1 LISTAS ENLAZADAS................................................................................
  • 5.5.2 VECTORES VS LISTAS ENLAZADAS....................................................
  • 5.5.3 PILAS...........................................................................................................
  • 5.5.4 COLAS.........................................................................................................
  • 5.6. ESTRUCTURAS NO LINEALES (ÁRBOLES)........................................
  • 5.6.1 ÁRBOLES BINARIOS ................................................................................
  • 5.6.2 ÁRBOL BINARIO DE BÚSQUEDA ..........................................................
    1. ARCHIVOS Y BASES DE DATOS
  • 6.1. ARCHIVOS: DEFINICIONES Y CONCEPTOS .....................................
  • 6.2. SOPORTE Y ACCESO A LOS ARCHIVOS ............................................
  • 6.3. EL SISTEMA OPERATIVO Y LA GESTIÓN DE ARCHIVOS ............
  • 6.4. ORGANIZACIÓN DE ARCHIVOS...........................................................
  • 6.5. OPERACIONES SOBRE ARCHIVOS......................................................
  • 6.5.1 APERTURA Y CIERRE DE UN ARCHIVO..............................................
  • 6.5.2 LECTURA Y ESCRITURA EN UN ARCHIVO ........................................
  • 6.6. PROCESAMIENTO DE ARCHIVOS .......................................................
  • 6.6.1 PROCESAMIENTO DE ARCHIVOS SECUENCIALES ..........................
  • 6.6.2 PROCESAMIENTO DE FICHEROS SECUENCIALES INDEXADOS ...
  • 6.6.3 PROCESAMIENTO DE FICHEROS DE ORGANIZACIÓN DIRECTA ..
  • 6.7. TIPOS DE ARCHIVOS ...............................................................................
  • 6.8. BASES DE DATOS ......................................................................................
  • 6.8.1 CONCEPTO DE BASE DE DATOS...........................................................
  • 6.8.2 ESTRUCTURA GENERAL DE UNA BASE DE DATOS.........................
  • 6.8.3 TIPOS DE BASES DE DATOS...................................................................
  • 6.8.4 SISTEMA DE GESTIÓN DE LA BASE DE DATOS ................................
    1. ALGORITMOS Y SU COMPLEJIDAD
  • ALGORITMICA ................................................................................................. 7.1. MEDIDA DE LA EFICIENCIA Y DE LA COMPLEJIDAD
  • 7.1.1 ORDEN DE COMPLEJIDAD .....................................................................
  • 7.1.2 ANÁLISIS DE LOS ALGORITMOS DE BÚSQUEDA .............................
  • 7.2. ALGORITMOS DE ORDENACIÓN Y SU COMPLEJIDAD ................ FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN VII
  • 7.2.1 ORDENACIÓN POR INSERCIÓN ............................................................
  • 7.2.2 ORDENACIÓN POR INTERCAMBIO ......................................................
  • 7.2.3 ALGORITMO DE SHELL ..........................................................................
  • 7.2.4 ALGORITMO DE ORDENACIÓN RÁPIDA (“QUICKSORT”) ..............
  • 7.3. EVALUACIÓN DE UN POLINOMIO ......................................................
  • 7.3.1 EVALUACIÓN DIRECTA .........................................................................
  • 7.3.2 ALGORITMO DE HORNER ......................................................................
  • 7.3.3 MÉTODO DEL ÁRBOL .............................................................................
  • CARACTERES ................................................................................................... 7.4. ALGORITMOS PARA LA BÚSQUEDA DE CADENAS DE
  • 7.4.1 ALGORITMO DE COMPARACIÓN .........................................................
  • 7.4.2 ALGORITMO DE BOYER-MOORE .........................................................
  • 7.5. NOTAS FINALES SOBRE COMPLEJIDAD...........................................
  • 7.5.1 ALGORITMOS NO-DETERMINISTAS....................................................
  • 7.5.2 PROBLEMAS DE CLASE P Y NP.............................................................
  • PROBLEMAS ALGORITMICAMENTE IRRESOLUBLES .............................. 7.5.3 INTRODUCCION A LAS MAQUINAS DE TURING Y A LOS
  • ANEXO: SOPORTE FÍSICO DE UN COMPUTADOR......................
  • ARQUITECTURA DE COMPUTADORES ....................................................
  • PERIFÉRICOS DE LOS COMPUTADORES.................................................
  • REDES Y CONEXIONES ENTRE COMPUTADORES................................
  • BIBLIOGRAFÍA ......................................................................................

FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN IX

de otras titulaciones científicas. El primero, en sus primeras incursiones en su nueva carrera, tiende a identificar el aprendizaje de la informática, con el dominio de un lenguaje de programación y un conocimiento más o menos profundo de la estructura interna de la máquina. El segundo, sin embargo, aspira a que le enseñen el manejo del ordenador y la utilización de algunos paquetes de software que le vayan a resultar útiles para su futura profesión, además de alguna introducción elemental a la programación. Para ambos en este texto, hay un mensaje común: la Informática es mucho más que una serie de paradigmas ó filosofías de la programación y hay que aceptar que con su advenimiento, al árbol luliano de la ciencia, le ha brotado una nueva rama que con una cierta influencia anglosajona venimos llamando Ciencias de la Computación y con este nuevo bagaje tiene que iniciar su formación universitaria.

Desde el punto de vista del estudiante de Informática, la filosofía de este texto esta en la línea de proporcionar un texto introductorio, que adapte los conocimientos de un estudiante español de primer ciclo, a las ideas desarrolladas por el Comité que elaboro el “ACM/IEEE Joint Curriculum”, que constituye uno de los esfuerzos más saludables que existen, de enlazar las necesidades profesionales, con los contenidos académicos. Para el universitario que ha elegido otra rama científica, este libro aspira a proporcionarle una cultura informática básica, que le permita por un lado poderla aplicar en su respectivo campo de conocimiento y por otro, al conocer sus principios básicos, poder hacer frente a las posibilidades que nos ofrecen los ordenadores, conociendo tanto sus fantásticas potencialidades, como sus limitaciones.

Para tratar de cumplir, estos objetivos un tanto generalistas, apresurémonos a indicar, que este libro ha sido escrito, intentando abstraernos de cualquier lenguaje de programación concreto y en la medida de lo posible de cualquier máquina o sistema operativo de los que utilizamos diariamente. Esta tarea ha sido especialmente difícil, pues los autores tienen sus propias preferencias y profesionalmente están marcados, como todo el mundo, por sus experiencias personales. Esperamos que esta profilaxis haya sido fructífera, ya que estamos convencidos de que la única manera de introducir a un estudiante en la Informática, es tratando de separar constantemente lo que hay de contingente, en materia de útiles informáticos en el mercado en cada momento y lo que hay de nuevo para permanecer, por un cierto tiempo, en el acervo de la cultura informática. A pesar de lo anterior, es evidente que la programación debe probarse y experimentarse, mas allá de su cuerpo teórico, y para ello es necesario, que el estudiante maneje una máquina concreta, un sistema operativo determinado, adquiera ciertas habilidades de programación con un lenguaje de alto nivel razonablemente actual y maneje los últimos paquetes de software que le resulten útiles; esto tendrá lugar en el Laboratorio. Por ello no queda otro remedio que tomar decisiones en la planificación del curso; así el estudiante podrá trabajar sobre una terminal de un gran ordenador o moverse en al campo de la informática de PC o de Apple,

X FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN

manejar DOS, UNIX u otro sistema, aprender C, Pascal, Fortran, Modula ó C++. Sin embargo, el libro si ha conseguido sus objetivos debe ser igual de útil para cualquiera que sea la decisión tomada.

SUGERENCIAS PARA USAR ESTE LIBRO

Este texto se ha elaborado pensando en un curso introductorio de nivel de primer ciclo, para estudiantes de Ciencias o Ingeniería. El material que aquí se presenta , asume que el estudiante va a recibir en paralelo un curso de carácter práctico, en el que se le explicará y ejercitará en un lenguaje de programación de alto nivel. Ello supone que en el laboratorio y frente al ordenador, el interesado acabará habituándose a una cierta máquina, a un sistema operativo, a un lenguaje y seguramente a un entorno de programación, que debe ser el complemento práctico de los conceptos aquí desarrollados.

El material que aquí presentamos está dividido en 7 Capítulos y un anexo. El Capítulo 1 trata de recoger los conceptos que se consideran imprescindibles para poder enfrentarse a un ordenador y al proceso de programación. En nuestra opinión todo el contenido allí desarrollado tiene la vitola de fundamental y en consecuencia estos conceptos no deberían ser orillados en un curso de introducción.

El Capítulo 2 dedicado al Soporte Lógico de la máquina puede considerarse como una profundización de los aspectos relacionados con el software, vistos en el Capítulo anterior; por tanto este capítulo puede evitarse si el número de créditos asignados al curso no fuera suficiente. Sin embargo el capítulo puede ser de utilidad como referencia durante las clases prácticas donde constantemente se usarán y practicarán módulos pertenecientes a este soporte lógico.

El Capítulo 4 está dedicado a la representación interna de información en el ordenador, éste es un tópico que debe ser tratado en cualquier curso, sin embargo la profundidad con la que ello se haga, dependerá de la orientación que se pretenda dar en cada caso. En consecuencia queda al criterio del profesor la selección del material que considere oportuno para sus objetivos finales.

Los Capítulos 3 (Algoritmos y Programas) y Capítulo 5 (Estructuras de Datos) constituyen el núcleo de un curso de Introducción a la Programación. De hecho, el texto se mueve constantemente bajo el principio de Programación = Algoritmo + Estructuras de Datos y de esta forma se ha estructurado el material con la intención que el estudiante termine su lectura habiendo conseguido una cierta destreza en las técnicas y metodología de la programación estructurada. Es posible que se considere que algunas de las estructuras descritas superen los niveles de algunos cursos, especialmente en lo que se refiere a las estructuras dinámicas. No existe ninguna dificultad en evitar este material, en una primera lectura, aunque consideramos que los recursos que el uso de punteros proporciona no deben ser

XII FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN

Valencia, Septiembre de 1995

LOS AUTORES

CAPÍTULO 1

CONCEPTO DE COMPUTADOR

La Informática, definida por la Real Academia como el conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático de la información por medio de computadoras, requiere previamente contestar a determinadas preguntas sobre el funcionamiento de estas máquinas.

En este primer capítulo se pretende dar los conceptos mínimos e imprescindibles, para que el lector tenga una visión panorámica del contenido del libro, de forma que cuando se adentre en los próximos capítulos sepa enmarcar el sentido e importancia de cada uno de ellos.

3030" WPC"RTKOGTC"CRTQZKOCEKłP"CN"EQORWVCFQT

De forma genérica y en una primera aproximación, un computador puede definirse como una “ máquina digital, electrónica, programable para el procesamiento de información ”. Notemos por tanto, que el computador^1 , en cuanto a “ máquina ” se refiere, está en la categoría de los molinos de vientos, telares, etc., que pueden funcionar correcta e incorrectamente. “ Digital ” significa que estas máquinas trabajan almacenando información, en forma de códigos, que representan las letras o dígitos de los números. “ Electrónica ” sugiere que está construida usando componentes electrónicos de estado sólido, conocidos por circuitos integrados. Programable significa que admite la posibilidad de ejecutar instrucciones a demanda de una sucesión de órdenes preestablecidas. Un ejemplo de máquina programable, son las lavadoras automáticas actuales ó los más tradicionales carrillones.

(^1) Al definir computador como un tipo de máquina (femenino), podríamos utilizar la palabra computadora, como se hace en Sudamérica. Por las funcionalidades de la máquina, el término “computador/a”, que proviene del latín computare, debería ser preferido al más popular de ordenador (ordenar es sólo una de las múltiples funciones que la máquina es capaz de llevar a cabo). En este libro usaremos libremente cualquiera de estos tres sinónimos.

CONCEPTO DE COMPUTADOR 3

  • Entrada de datos: Suministrar información al computador desde su entorno exterior (ej. pulsar el teclado, o leer un código de barras).
  • Salida de datos: Obtener información de un computador. (ej. visualizar los resultados en una pantalla o impresora).
  • Almacenamiento: Hacer una copia permanente de la información con el objetivo, que el computador pueda emplearla de nuevo (ej. copiar en cintas y discos magnéticos).
  • Recuperación: Leer de nuevo la información almacenada (en cinta o discos magnéticos).
  • Transmisión: Transferir la información a otro computador a través de una red de comunicación de datos.
  • Recepción: Recibir la información enviada por otro computador.
  • Tratamiento: Operaciones sobre datos, tales como la ordenación, selección, combinación, reclasificación, así como la ejecución de cálculos, que permita obtener la información deseada.

30304" CNIQTKVOQU"["RTQITCOCU

Llamaremos algoritmo a un conjunto de pasos y acciones, que especifican de forma no ambigua y finita, la secuencia de operaciones a realizar para procesar datos con un determinado objetivo. (Este concepto abarca, desde un método de resolución de ecuaciones, hasta la ejecución de una receta de cocina). Hagamos dos aclaraciones previas: a) La algorítmica existe con anterioridad al desarrollo de los computadores actuales (el propio origen de la palabra proviene de un matemático árabe que describió en el siglo VIII el método manual con el cual dividimos dos números). b) Una vez encontrada este conjunto de instrucciones que resuelven el problema, éstas se pueden ejecutar sin que sea necesaria la comprensión de los principios en los que se basa el algoritmo. Así cuando dividimos dos números o construimos una pajarita a partir de una cuartilla, nos limitamos a ejecutar una serie de acciones en un determinado orden, sin preocuparnos demasiado por sus correspondientes bases teóricas.

Para el caso en que el procesador sea un computador, la forma de expresión de este algoritmo se llama programa. Cada paso del algoritmo se expresa en el programa, por medio de un conjunto de instrucciones escritas en un determinado lenguaje. Uno de los aspectos más llamativos de los computadores es el hecho de que con un reducido número de instrucciones básicas, pueda llevarse a cabo una gran cantidad de tareas.

El conjunto de pasos que constituyen el programa debe escribirse de forma muy precisa. La ambigüedad inmanente a los lenguajes naturales (español, inglés, etc.) los invalida para expresar algoritmos, por ello existe un cierto tipo de lenguajes que

4 FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN

reúne la suficiente precisión como para expresar algoritmos: son los llamados lenguajes de programación. Estos lenguajes tienen, como todo lenguaje una sintaxis (cómo agrupar las símbolos y elementos propios del lenguaje para formar frases válidas) y una semántica (qué significa cada frase válida de este lenguaje) diferenciándose de los lenguajes naturales en cuatro características:

  1. Su vocabulario y su sintaxis son sencillos y limitados. Esto los hace, inadecuados para describir cualquier tipo de prosa no algorítmica.
  2. El vocabulario de un lenguaje de programación contiene solamente aquellos tipos de acciones básicas que puede ejecutar un ordenador (operaciones aritméticas, lógicas, entrada/salida, etc.) y no otras.
  3. La sintaxis es muy rígida y no permite excepciones ni muchas variaciones. Por ejemplo para calcular una división de “X” por “A”, hay que escribir obligatoriamente “X/A”.
  4. Su semántica es estricta y la ambigüedad no tiene cabida en ellos.

Un mismo algoritmo puede expresarse en diferentes lenguajes y ejecutarse en distintos ordenadores. Contar con un algoritmo es una condición necesaria para la obtención de un programa, aunque no es suficiente, ya que su realización requiere además, creatividad y conocimientos sobre los recursos físicos y lógicos del ordenador. La fase de conversión del algoritmo a programa se denomina codificación , ya que el algoritmo escrito en un lenguaje específico de programación se denomina código.

Para que se puedan procesar los datos por medio de un programa, el conjunto de instrucciones que lo constituyen debe ser accesible para la máquina y en consecuencia, ésta debe tener la capacidad de almacenarlo internamente, al objeto que pueda efectuar el control de las operaciones que constituyen el algoritmo. Aunque todavía no hayamos profundizado en el concepto de computador, sí que podemos deducir que éste tiene que ser capaz de trabajar y reconocer simultáneamente tanto las instrucciones, que determinan lo que hay que hacer, como los datos que se van a procesar. Este requisito es tan fundamental, que la forma como éste se ha venido plasmando, conceptual y técnicamente a lo largo de la historia, permite rastrear los orígenes de la informática.

3040" CPVGEGFGPVGU"JKUVłTKEQU

En 1982, la revista TIME nombró “hombre del año” a la computadora. La noticia supuso un impacto cultural importante y oficializó el hecho de que esta máquina es un personaje más de la historia de la humanidad. Aunque considerada como un paradigma de la etapa moderna y con sólo 30 años de verdadera historia

6 FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN

Fig. 1.2 Representación en un ábaco del número 1610

Calculadoras mecánicas

A medida que las distintas otras ramas científicas se desarrollaron, se puso en evidencia la necesidad de optimizar la capacidad de cálculo habida cuenta de lo dificultoso de las operaciones que se tenían que llevar a cabo. Ello hizo que muchos matemáticos se plantearan el desarrollo de instrumentos que facilitaran al menos teóricamente esta labor. Así, John Napier, que recordamos por los logaritmos neperianos, publicó un estudio en 1617 que describía la utilización de cuentas con una marca especial, para realizar multiplicaciones y divisiones (la obra matemática de Napier condujo mucho más adelante al desarrollo de la regla de cálculo, venerable instrumento que durante muchos años fue para algunos de nosotros la “máquina” primaria para llevar a cabo cálculos complejos). En 1642, Blaise Pascal inventó la primera “sumadora” real, parecida a las calculadoras mecánicas que se popularizarian en nuestros años sesenta. Se trataba de una compleja combinación de ruedas, engranajes y ventanas a través de las cuales aparecían los números. A finales del siglo XVII, otro famoso matemático, Gottfried Leibnitz, desarrolló una máquina parecida, pero más avanzada; podía sumar, restar, multiplicar y dividir mecánicamente, e incluso sacar raíces cuadradas.

CONCEPTO DE COMPUTADOR 7

A pesar de la ingeniosidad de estos planteamientos mecánicos, hasta 1820 no se pudo disponer de la tecnología que permitiera la aparición de las primeras máquinas comerciales capaces de efectuar las cuatro operaciones matemáticas básicas. Esta es una constante en la historia de las máquinas de calcular, el decalaje existente entre los diseños originales y las disponibilidades tecnológicas para llevarlos a la práctica. En la máquina de Leibnitz, se produce un avance respecto al ábaco, puesto que el algoritmo esta ya incorporado en la propia estructura de la máquina y además respecto a la de Pascal supone un incremento en flexibilidad, pues el usuario puede seleccionar, la operación que desea llevar a cabo. Sin embargo, en su tiempo no pasaron de ser meras curiosidades, sin posibilidad de aplicación práctica.

Las tarjetas perforadas y los computadores mecánicos

A comienzos del siglo XIX se producen aportaciones, curiosamente ligadas a la resolución de problemas de naturaleza no numérica. En 1801, Joseph Jacquard, inventó un telar controlado mediante instrucciones almacenadas según un código representado en tarjetas perforadas; de esta forma, el algoritmo que segue la máquina podrá cambiarse fácilmente para conseguir un dibujo distinto sobre la tela. La máquina de Jacquard incorporó varios elementos básicos que constituyen los computadores actuales.

La idea de usar en tarjetas perforadas, para guardar tanto números como instrucciones datos indujo, en 1835, a Charles Babbage, a inventar un computador digital matemático de tipo mecánico que recibió el nombre de máquina analítica. Babbage utilizó las tarjetas perforadas para programar su máquina, que podía utilizar los resultados de un cálculo como entrada del siguiente y que era capaz de manejar cálculos repetitivos, que más adelante llamaremos bucles. Un logro, aun más significativo, de la máquina analítica fue que, en vez de seguir las instrucciones del programa en la secuencia prefijada, podía saltar de una a otra (los programadores actuales hablamos de bifurcaciones condicionales). Aunque los computadores actuales están basados en muchos de los principios que Babbage utilizó, en su tiempo no existía ningún procedimiento que pudiera mover su cada vez más complejo artilugio mecánico. Una vez más, la tecnología no era la adecuada para el desarrollo teórico propuesto y el trabajo de Babbage se saldó con un fracaso, sólo mitigado por el apoyo de Ada Lovelace, hija de Lord Byron, considerada como la primera programadora de la historia y en cuyo honor el lenguaje de programación ADA lleva su nombre.

El concepto de la tarjeta perforada para almacenar programas y datos llegó a prender, y Herman Hollerith para procesar el censo de 1890 en EEUU la recuperó con notable éxito (consiguió un ahorro de tiempo de varios meses) al incorporarla a máquinas alimentadas eléctrica y no mecánicamente. Hollerith puso las bases de

CONCEPTO DE COMPUTADOR 9

Otro avance tecnológico posterior, los circuitos integrados , permitieron integrar en un único sustrato de silicio cientos de transistores (actualmente esta integración es ya del orden de millones, en los llamados chips^2 ), con lo que quedaron sentadas las bases de los computadores actuales. A pesar de que quedaban muchos problemas por resolver, a principios de los años sesenta, las ideas y las tecnologías estaban ya maduras y se trataba de seguir una evolución, cuyos resultados no han dejado de sorprendernos hasta ahora. El computador es uno de los elementos claves de la actual revolución científico-industrial y su papel, en la historia de la humanidad, no será menor que el que jugaron en su día, la rueda, el motor de explosión o la energía nuclear.

3050" QTICPK\CEKłP"FG"WP"EQORWVCFQT

30503" NC"CTSWKVGEVWTC"FG"XQP"PGWOCPP

John von Neumann^3 (1903-1957), que había colaborado en el diseño de varios computadores durante la Segunda Guerra Mundial, publica en 1946 un artículo que esboza los principios generales de diseño de un computador en su sentido actual:

  • La máquina es controlada por un conjunto de instrucciones, con un pequeño número de elementos centrales de proceso.
  • El programa se almacena en el computador de forma que en su representación interna no se hacen distinciones entre datos e instrucciones, ambos almacenados en código binario.

De esta forma el programa pasa a estar “dentro” del computador, y así el cambio de un programa a otro sólo implica un cambio en el valor de posiciones de memoria, en contraposición con lo hecho hasta la fecha que requería cambios manuales de clavijas. Estos principios, enriquecidos con importantes aportaciones tecnológicas,

(^2). La forma que adoptan estos circuitos encapsulados con sus conectores, los asemeja a las pulgas ( chip en inglés), por lo que esta denominación es la que ha terminado por imponerse.

(^3) Von Neumann y sus colaboradores describieron una máquina constituida por dos órganos, uno constituido por

las unidades de control, de aritmética y de entrada salida y otro formado por la memoria. En esta máquina la memoria ocupaba 4096 palabras o posiciones de memoria cada una de 40 bits. Cuando una palabra se interpretaba como dato, estos 40 bits representaban un número en notación binaria y cuando lo hacía como instrucción, cada palabra contenía 2 instrucciones de 20 bits. Los datos eran todos enteros y las operaciones aritméticas que podía efectuar eran suma, resta, multiplicación, división y valor absoluto, de forma que el resultado de cualquiera de ellas se situaba en un registro llamado acumulador. A cada posición de memoria podía asignársele el valor contenido en el acumulador, de forma que se reemplazaba el valor anterior almacenado en esta posición de memoria. El flujo de control del programa era el de pasar de una instrucción a la siguiente, pudiendo ser interrumpida esta secuencialidad a través de un salto incondicional (goto) de forma que la siguiente instrucción a ser ejectuada era la de la palabra de memoria que se mencionaba en la instrucción del salto incondicional.

10 FUNDAMENTOS DE INFORMÁTICA Y PROGRAMACIÓN

se han mantenido vigentes hasta nuestros días en lo que llamamos máquina de von Neumann, y cuyo esquema general es el de la Figura 1.3.

30504" WPKFCFGU"HWPEKQPCNGU

Las unidades funcionales de una máquina de von Neumann son cinco: Unidad de Control (UC), Unidad Aritmético-Lógica (ALU), Unidad de Entrada , Unidad de Salida y Memoria (principal y secundaria). Por su disposición y función, se llama unidad de central de proceso (CPU = Central Process Unit) al conjunto formado por la UC y la ALU, donde reside la ‘inteligencia’ de la máquina, es decir, la capacidad de procesamiento de la información. La memoria es el lugar donde se almacenan los datos y las instrucciones de forma permanente o transitoria. Un vistazo al esquema de la Figura 1.3., justifica que llamemos periféricos al conjunto de unidades de E/S y de memoria masiva ó auxiliar.

Fig. 1.3 Esquema de una máquina de von Neumann

Veamos ahora con más detalle las unidades funcionales:

UNIDAD DE ENTRADA (E). Son los dispositivos por donde se introducen los datos e instrucciones. En estas unidades se transforman las informaciones de entrada, en señales binarias de naturaleza eléctrica. Son unidades de entrada: el