Dedicatoria A: Ana Isabel, Luz Piedad, Juan Pablo y Efraín Alberto Oviedo TABLA DE CONTENIDO Presentación ........................................................................................... XI Capítulo 1. CONOCIMIENTO DE LA COMPUTADORA .............. 1 1.1 Historia de la computadora........................................................... 1 1.2 Definición de una computadora.................................................... 4 1.3 Clasificación de las computadoras................................................ 5 1.4 El computador digital ................................................................... 7 Estructura lógica .......................................................................... 7 Dispositivos de entrada y salida de datos..................................... 8 1.5 Tipos de procesamientos............................................................... 10 1.6 Elaboración de programas para computadora............................... 12 1.7 Terminología básica...................................................................... 15 1.8 Sistemas numéricos ...................................................................... 19 Representación binaria, octal y hexadecimal................................ 21 1.9 Representación de datos ............................................................... 22 Representación alfanumérica........................................................ 23 Representación numérica.............................................................. 25 Representación numérica entera................................................... 26 Representación numérica de punto flotante......................................... 29 1.10 Tipos de campos .......................................................................... 33 1.11 Clases de información................................................................... 34 Capítulo 2. GENERALIDADES SOBRE ALGORITMOS .............. 37 2.1 La lógica....................................................................................... 37 2.2 Procedimiento............................................................................... 38 2.3 La expresión.................................................................................. 39 2.4 Pasos para la solución de un problema a través de la computadora.............................................................................. 42 Definición del problema............................................................... 42 Análisis del problema................................................................... 42 Crear el algoritmo......................................................................... 42 Prueba del escritorio..................................................................... 42 Codificación ................................................................................. 43 Transcripción................................................................................ 43 Compilación.................................................................................. 43 Ejecución...................................................................................... 43 Documentación externa................................................................ 44 2.5 El algoritmo.................................................................................. 44 Características de los algoritmos.................................................. 44 Generalización del algoritmo........................................................ 48 2.6 Concepto de programación ......................................................... 51 2.7 Representación de algoritmos....................................................... 52 2.8 Ejercicios propuestos ................................................................... 55 Capítulo 3. ESTRUCTURA SECUENCIAL ..................................... 57 3.1 Representación.............................................................................. 57 3.2 Instrucción de asignación ............................................................. 58 3.3 Instrucción de entrada de datos..................................................... 58 3.4 Instrucción de salida de datos ...................................................... 59 3.5 Ejercicios propuestos ................................................................... 64 Capítulo 4. ESTRUCTURA DECISIÓN LÓGICA ........................... 67 4.1 Representación.............................................................................. 68 4.2 Funcionamiento ........................................................................... 68 4.3 Ejercicios propuestos.................................................................... 87 Capítulo 5. ESTRUCTURA REPETITIVA.......................................... 89 5.1 Representación.............................................................................. 90 5.2 Funcionamiento............................................................................ 90 5.3 Variables tipo contador................................................................. 90 5.4 Variables tipo acumulador............................................................ 91 5.5 Esquema cuantitativo.................................................................... 95 5.6 Esquema cualitativo...................................................................... 100 5.7 Formato general de los dos esquemas........................................... 108 5.8 Variables tipo bandera o switche.................................................. 108 5.9 Ruptura de ciclos.......................................................................... 113 5.10 Rompimiento de control de ejecución.......................................... 116 5.11 Ejercicios propuestos.................................................................... 135 Capítulo 6. ESTRUCTURAS ADICIONALES ................................. 149 6.1 Estructura CASO o selección múltiple......................................... 149 6.2 Estructura PARA.......................................................................... 155 6.3 Estructura REPETIR (HACER MIENTRAS QUE)..................... 163 6.4 Ejercicios propuestos.................................................................... 174 Capítulo 7. SUBPROGRAMAS ........................................................... 177 7.1 Clasificación de los subprogramas................................................ 179 7.1.1. Procedimientos o subrutinas......................................................... 179 a. Representación.............................................................................. 179 b. Activación de un procedimiento .................................................. 182 7.1.2. Funciones ..................................................................................... 184 a. Representación ............................................................................. 185 b Activación de una función ........................................................... 186 7.2 Documentación de subprogramas ................................................ 187 Aspectos a tener en cuenta............................................................ 198 7.3 Ejercicios propuestos.................................................................... 199 Capítulo 8. ARREGLOS ..................................................................... 201 Clasificación de los arreglos......................................................... 202 8.1 Arreglos de una dimensión o vectores.......................................... 202 Operaciones básicas con arreglos................................................. Búsqueda....................................................................................... 217 Ordenación.................................................................................... 221 Inserción........................................................................................ 228 Borrado......................................................................................... 230 8.2 Arreglos de dos dimensiones o matrices....................................... 236 8.3 Arreglos multidimensionales........................................................ 261 Aspectos a tener en cuenta............................................................ 265 8.4 Ejercicios propuestos.................................................................... 266 Capítulo 9. REGISTROS Y ARCHIVOS............................................. 279 9.1 Registros....................................................................................... 279 9.1.1 Arreglo de registros...................................................................... 283 9.2 Archivos........................................................................................ 287 9.2.1. Componentes de un archivo.......................................................... 287 9.2.2. Clasificación de los archivos según su uso................................... 287 9.2.3. Concepto de clave......................................................................... 290 9.2.4 Almacenamiento de archivos y su acceso a la información.......... 292 9.2.5 Procesamiento de archivos............................................................ 295 9.2.6 Operaciones básicas sobre archivos.............................................. 299 Operaciones sobre archivos secuenciales..................................... 299 Operaciones sobre archivos secuenciales indexados.................... 304 Anotaciones importantes............................................................... 305 Aspectos a tener en cuenta............................................................ 307 9.3. Ejercicios propuestos.................................................................... 307 Bibliografía ............................................................................................ 314 Índice analítico .................................................................................... 315 PRESENTACIÓN Este texto está basado en la segunda edición del libro Algoritmos Estructurados, pero con muchos cambios, tanto en la forma como en su contenido. Además, se le adicionaron y modificaron conceptos, tratando siempre de conservar su forma didáctica para que sea fácil de leer e interpretar por aquellos lectores que se inician en el fantástico mundo de los computadores. La obra llegó a su fin gracias al aporte del Departamento de Recursos de Apoyos Informáticos (DRÁI) , de la Facultad de Ingeniería de la Universidad de Antioquia y de las críticas y aporte de muchos de mis compañeros y colegas, entre ellos: Fabián Ríos, Roberto Florez R, Aldrin Fredy Jaramillo, Leonel Osorno y Ovidio Montoya. Se recomienda a los lectores iniciar la lectura del texto desde el inicio e ir analizando los ejercicios resueltos y solucionando los propuestos, ya que es fundamental dentro del proceso lógico que sigue el libro: esto es importante ya que cada capítulo nuevo utiliza los conceptos de los capítulos anteriores. Los ejercicios resueltos están codificados en C++, y pueden ser consultados en la página web http//ingenieria.udea.edu.co/profesores/poviedo, donde se actualizaran y codificaran en otros lenguajes de programación. El libro está dividido en nueve capítulos, partiendo de lo más elemental hasta llegar en el capítulo final a un tema de mayor profundidad. No implica esto que haya necesidad de comenzar por el primer tema si el lector ya conoce algunos de los tópicos tratados. Está estructurado de forma tal que cualquier persona que esté interesada en un tema específico pueda consultarlos, sin necesidad de seguir el desarrollo completo del texto. El capítulo 1, Conocimiento de la computadora, presenta una reseña histórica de estas máquinas, y da a conocer diferentes definiciones y clasificaciones, hasta introducirnos en la terminología básica de las computadoras y en los sistemas numéricos con los cuales trabaja. El segundo capítulo, Generalidades sobre algoritmos, trata de la lógica y de los pasos necesarios para solucionar problemas a través de la computadora; también nos introduce en los conceptos de la programación y muestra la forma de representar los algoritmos sobre el papel, lo que hace más fácil el paso a un lenguaje de programación. En el capítulo tercero nos encontramos con la primera estructura básica de control: la estructura secuencial. En este capítulo se dan a conocer, paso a paso, las instrucciones de asignación, de entrada y salida de datos, y algunos otros conceptos para los cuales fueron diseñadas estas estructuras. Estructura decisión lógica es el nombre del cuarto capítulo. En él se plantea la representación y el funcionamiento de una de las estructuras más utilizadas en el arte de programar: la estructura SI-CIERTO-FALSO. El quinto capítulo, Estructura repetitiva, trata sobre el funcionamiento de la tercera estructura básica de control: el ciclo HAGA MIENTRAS. Este capítulo nos guía desde las variables tipo contador y acumulador hasta los rompimientos de control de ejecución, pasando por los esquemas cuantitativo y cualitativo y la ruptura de ciclos. En el sexto capítulo, Estructuras adicionales, se encuentra la representación y el funcionamiento de las estructuras no básicas de control: CASO, PARA, HACER MIENTRAS QUE como estructuras que pueden ser usadas en casos excepcionales, ayudando a mejorar la programación. El capítulo siete parte de la representación y documentación de los diferentes clases de subprogramas, para terminar con la forma en la que se activan éstos dentro de los algoritmos. Es un capítulo dinámico que plantea la verdadera utilidad de los subprogramas en la programación modularizada. El capítulo ocho trata sobre el manejo de arreglos, su clasificación de una, dos y tres dimensiones que son los más utilizados en el medio, lo mismo que las operaciones de búsqueda, ordenación, inserción y borrado de elementos. Todos los temas relacionados con este capítulo son manejados con subprogramas y vienen acompañados de una gran cantidad de ejercicios resueltos, fáciles de comprender y que explican a fondo su funcionamiento, además de muchos ejercicios propuestos. En el capítulo nueve se introduce el concepto de registros, arreglo de registros, lo mismo que el concepto de archivos de datos. El lector puede encontrar diversos tópicos sobre archivos, tales como: componentes, clasificación, manejo de claves, procesamiento de archivos secuenciales y secuenciales indexados, lo mismo que ejercicios resueltos de gran utilidad. A lo largo del texto se encuentran noventa ejercicios resueltos, que hacen más fácil comprender cada capítulo. También cuenta con doscientos cincuenta ejercicios propuestos, que dan al lector la oportunidad de practicar todo lo aprendido sobre los temas. Cada sección del libro tiene, al final, una parte dedicada a resumir los aspectos principales de que trata el capítulo y una serie de ejercicios que permite afianzar los conocimientos. Por último, el texto viene acompañado de la página web http://ingenieria. udea.edu.co/profesores/poviedo, donde se encuentran noventa ejercicios que estan resueltos algorítmicamente, codificados en el lenguaje de programación C++. En cda uno de ellos se útiliza una gama de recursos con el fin de darles buena presentación a la captura y salida de información tales como: manejo de colores, tipos de letras, cuadros, menús, validación de información, manejo de teclas y librerías creadas con muchos subprogramas de gran utilidad. El autor 1 Capítulo CONOCIMIENTO DE LA COMPUTADORA 1.1. Historia de la computadora No se tiene una fecha exacta determinada de cuándo se planteó el hombre la necesidad de agilizar a través de una máquina las operaciones que se le presentaban. Una de las primeras máquinas de las cuales se tiene noticia es el Ábaco, cuya operación data de miles de años en el cercano Oriente. Cuando esta técnica se conoció aparecen varias versiones de él, tales como el Ábaco Chino y el Sorobán Japonés. Más tarde, en 1642, el francés Blaise Pascal desarrolló una máquina calculadora que era operada por una serie de discos, unidos en engranajes, que tenían los números del 0 al 9 en circunferencia, de tal forma que cuando un disco daba una vuelta, automáticamente el disco de la izquierda avanzaba un dígito. Los indicadores sobre los discos mostraban las respuestas correctas. Pero esta calculadora sólo servía para sumar. En 1694 Gottfried Withelm Leibnitz creó una máquina que multiplicaba y dividía directamente. El dispositivo que utilizó Leibnitz, en forma de rueda escalonada, aún se usa en algunas calculadoras. Tanto Pascal como Leibnitz se adelantaron a la tecnología de sus tiempos, pero ninguno de sus inventos era confiable; por otra parte, todos estos intentos por conseguir una máquina que pudiera procesar datos se hacían en forma aislada. Más tarde, cuando apareció el interés por la navegación, la astronomía y el hilado textil, se crearon nuevas máquinas para la ayuda en la solución de cálculos complejos y para ingresar patrones a través de tarjetas a los telares. En 1801 Joseph Marie Jacquard diseñó tarjetas perforadas para controlar una máquina de hilado textil, en donde cada línea de tejido se presentaba en una tarjeta perforada como patrón y éste se tejía automáticamente. En 1822 Charles Babbage desarrolló un proyecto denominado máquina diferencial, la cual era capaz de producir tablas logarítmicas de seis cifras decimales de precisión. Animado por los resultados obtenidos, Babbage continuó sus experimentos para obtener una máquina analítica, pero desafortunadamente el bajo nivel de la tecnología metálica de la época impidió que llegara a un buen resultado. El trabajo realizado por Babbage es retomado antes de finalizar el Siglo, cuando se hizo énfasis en las investigaciones para obtener máquinas programables. El norteamericano Hernán Hollerith desarrolló un mecanismo basado en tarjetas perforadas, cuya primera utilización exitosa se llevó a cabo en 1886 durante la tabulación del censo de población de 1880 en los Estados Unidos. Este equipo significó un gran adelanto en el campo de las computadoras. El mayor impulso y fuerza del desarrollo definitivo de las computadoras fue la Segunda Guerra Mundial. Durante esta época técnicos de la IBM, empresa fundada por Hollerith, la Universidad de Harvard y la Universidad de Pennsylvania, desarrollaron simultáneamente el MARK 1 y el ENIAC, cuya utilización estaba relacionada con los misiles guiados de uso militar. La MARK 1 pesaba cinco toneladas y constaba de un complejo de 78 máquinas sumadoras y calculadoras, conectadas con 800 kilómetros de cables. Las instrucciones se le daban en cintas de papel y una vez que la máquina ejecutaba la primera instrucción no requería de la intervención humana. A pesar de que esta máquina electromecánica representaba un avance con respecto a las creaciones anteriores, todavía presentaba restricciones a causa de su lentitud y dificultades en su operación. Para esta misma época, John W. MauhIy y J. P. Eckert desarrollaron una máquina que denominaron EDVAC; capaz de desarrollar operaciones aritméticas con números binarios y de almacenar instrucciones. El control de la computadora se realizaba mediante el alambrado de cables removibles o cinta de papel, y una vez que el procesamiento de los datos había sido iniciado, ninguna modificación podía efectuarse a pesar de que surgiera la necesidad de hacerlo. Aun cuando las primeras computadoras se desarrollaron con propósitos militares, no tardó mucho tiempo en que se emplearan en las tareas comerciales e industriales. El gran empuje de la computadora comercial lo dio el desarrollo del transistor, por parte de los laboratorios de la Bell Telephone, que vinieron a reemplazar los tubos al vacío. Conforme la tecnología avanzó en todas las áreas, la investigación en el campo de las computadoras se extendió y los resultados se hicieron comercialmente más prácticos en tamaño y costo. La UNIVAC 1 (Universal Automatic Computer), instalada en el departamento de censos de los Estados Unidos en 1951, fue la primera computadora que se produjo en forma comercial y contenía varias de las características de las computadoras actuales. El uso comercial de la UNIVAC comenzó en 1954, y a partir de esta fecha la industria del procesamiento de datos comenzó a crecer en forma acelerada. Las máquinas desarrolladas en la década de los años 1948 a 1958 constituyen la primera generación de computadoras. Éstas utilizaban bulbos como componentes básicos de sus circuitos, generando un alto consumo de energía, calor muy intenso. Además a nivel de personal se requería de treinta y cinco a cien programadores, analistas, codificadores y personal de mantenimiento, así como de un sistema de aire acondicionado. En esta generación se desarrollaron los lenguajes de programación: FORTRAN, orientados a la resolución de problemas numéricos y ALGOL, dirigido al tratamiento de problemas científicos. En 1959 surge la segunda generación de computadoras, lo que significó un gran adelanto en el progreso de esta industria, debido a que los bulbos fueron sustituidos por transistores, los cuales permitieron aumentar la confíabilidad y velocidad operativa de estos equipos. Los avances en equipos periféricos también fueron notables: impresoras cada vez más rápidas, mejores lectoras de tarjetas y de cinta perforada, y sobre todo bobinas de cinta magnética capaces de memorizar y de volver a leer datos en número ilimitado. Así mismo, en esta generación proliferan diferentes modelos de computadoras, incorporando su uso en el área de los negocios. Se desarrolla el lenguaje de programación COBOL para estos fines y se incrementa la utilización del lenguaje FORTRAN. Se crean entonces los ensambladores, que utilizan un código nemotécnico para representar las instrucciones. A partir de este momento los avances tecnológicos fueron, y continúan siendo, sorprendentes. Los transistores se sustituyeron por los circuitos integrados (IC). Con este cambio nace la tercera generación, cuya base está en los circuitos integrados monolíticos y en la miniaturización de la electrónica. Las máquinas de esta generación (IBM 360, IBM370, POP6) son fabricadas con la característica de que las pertenecientes a una misma serie son compatibles entre sí, facilitando su uso; además, son utilizables tanto para aplicaciones de tipo científico como comercial. A medida que estas máquinas se fueron perfeccionando surge la multiprogramación, el multiprocesamiento, las comunicaciones de datos, otros lenguajes (BASIC y PL1) y los paquetes especializados de programación. En esta época nacen las calculadoras de bolsillo y las microcomputadoras. En la década de los años setenta se logra una gran reducción de los circuitos integrados incorporando miles de componentes con un espacio menor a una micra, lo cual coloca a las computadoras en una cuarta generación en la que aparece el lenguaje PASCAL como uno de los más poderosos, por ser de aplicación general e incluir los conceptos introductorios de lo que hoy se conoce como programación estructurada. Actualmente existen circuitos que tienen alrededor de 260.000 elementos y se calcula que los adelantos permitirán circuitos mucho más pequeños y cien veces más veloces. Hoy se habla de supercomputadores, que caracterizarán la quinta generación. 1.2. Definición de una computadora Una computadora es una máquina con gran capacidad y velocidad. Se ha convertido en un auxiliar del hombre que le presta ayuda en una enorme gama de actividades, tales como: • Proveer a los médicos información actualizada sobre la salud del paciente. • Preparar gráficas de patrones climatológicos y producir planes de vuelo de acuerdo con las condiciones climatológicas. • Prestar ayuda en la oceanografía y la navegación. • Registrar marcas y evaluar estadísticas de competencias deportivas. • Prestar ayuda a los ingenieros en los cálculos. • Controlar simuladores de vuelo para dar al piloto un entrenamiento inicial en tierra. • Coordinar el funcionamiento de los semáforos para que el tránsito no sufra interrupciones. • Verificar la cantidad de dinero depositado en una cuenta. Un empleado del banco habla con una computadora a través del teléfono. • Proveer información sobre los productos en el mercado. Mucho se habla de que la computadora está influyendo dentro de nuestra privacidad y sustituyendo mano de obra, creando desempleo. Estos aspectos no pueden discutirse, sin conocer a fondo lo que es una computadora, pero a medida que se avanza en su conocimiento, es posible emitir un concepto inteligente. Hay que tener en cuenta que una computadora no puede hacer algo a menos que el ser humano le diga qué hacer. Debemos controlar la computadora y no ella a nosotros. 1.3. Clasificación de las computadoras De acuerdo con el avance tecnológico se pueden establecer categorías de computadoras, así: • Primera generación. Caracterizadas por utilizar tubos al vacío en los componentes básicos de sus circuitos. • Segunda generación. Los tubos al vacío son sustituidos por transistores; la memoria estaba constituida por tubos magnéticos; se usaban en aplicaciones de tipo militar, comercial, científico y utilizaban el disco magnético. • Tercera generación. Caracterizadas por utilizar en sus componentes circuitos integrados monolíticos. En esta época se le adicionan equipos auxiliares, tales como terminales interactivas. • Cuarta generación. Caracterizadas por la incorporación de miles de componentes, integrados en espacios sumamente pequeños. Se crean técnicas para manejar volúmenes grandes de información y se usan computadoras remotas en operación con un computador central mediante la telecomunicación, dando lugar a la telemática. Se popularizan los lenguajes de programación de tipo interactivo, las máquinas virtuales y los manipuladores de datos. La computadora es capaz de elaborar programas. • Quinta generación. Son las computadoras del futuro. Se introduce el uso de la memoria de burbuja magnética y la técnica holográfica con rayos láser; se mejoran las técnicas de comunicación con el procesador central en forma conversacional o interactiva y los lenguajes cada vez son más humanos, inclusive la voz. Según el tipo de información que maneja una computadora, éstos se pueden clasificar en: • Computadoras digitales. Son aquéllas que procesan datos discretos. Trabajan directamente contando números (dígitos) que representan cifras, letras u otros símbolos especiales. Así como los relojes digitales cuentan los segundos y minutos en una hora, los procesadores digitales cuentan valores discretos para alcanzar los resultados deseados. Las computadoras digitales son usadas en el proceso de datos, como puede ser el proceso de una contabilidad. Las computadoras digitales pueden ser: - De propósitos generales. Son utilizadas para almacenar diferentes programas y pueden ser usadas en incontables aplicaciones. Por ejemplo, una máquina que procese información y luego la imprima, que escriba nuevos programas y cambie o borre los anteriores. - De propósitos especiales. Diseñadas para realizar sólo una tarea específica, ya que los programas están permanentemente almacenados en la máquina. • Computadoras analógicas. Procesan datos que están medidos en una escala continua y registrados con un determinado grado de precisión. Por ejemplo, el voltaje que puede ser medido con aproximación de un centésimo de voltio. Las computadoras analógicas son usadas para controlar procesos con alta precisión, pudiendo ser hasta en un 0.1 % el valor correcto. Se dedican al control físico de actividades, como el control de un proceso de ensamble automatizado o un sistema de control de temperatura. • Computadoras híbridas (analógico digitales). Son una combinación de las dos anteriores. Por ejemplo, en la unidad de control interactivo de un hospital los dispositivos analógicos pueden medir el funcionamiento del corazón de un paciente, la temperatura y los signos vitales. Estas medidas pueden ser convertidas a números y enviadas a un componente digital del sistema. Este componente digital del sistema es usado para controlar los signos vitales del paciente y enviar una señal a la estación de las enfermeras cuando sean detectadas lecturas anormales. Tanto las computadoras híbridas como las analógicas son importantísimas, pero las más usuales son las digitales. Por la capacidad y estructura física. Antes de entrar en esta división, es conveniente anotar que estos tipos de computadoras están relacionadas directamente con una época específica en la historia y con el desarrollo de los computadoras. • Computadoras mainframe. Son las computadoras grandes. Inicialmente, las computadoras eran en su mayoría mainframe y su uso estaba restringido a empresas o entidades de gran tamaño. El costo de adquisición y operación era alto y complejo. El uso de los mainframe está limitado a empresas que operan con procesos centralizados. • Minicomputadoras. Son computadoras medianas: su uso ha reemplazado una buena parte a los mainframe. Su utilización es estipulada para empresas grandes. • Microcomputadoras de negocios. Son computadoras pequeñas que se pueden utilizar en aplicaciones comerciales y técnicas, tanto en las pequeñas empresas como en las grandes. • Microcomputadoras personales y del hogar. Son utilizadas en juegos electrónicos, juegos didácticos y diversión. Suplieron en gran parte las calculadoras programables. Se puede decir que éstas dieron origen a las anteriores por la gran demanda que tuvieron. 1.4. La computadora digital Estructura lógica Todas las partes de un sistema de computación operan bajo el control de una de ellas: la unidad de control. Aunque un sistema de computación está compuesto por muchos dispositivos, cada sistema tiene cinco componentes básicos. En la figura, a continuación, se muestran estos componentes y sus relaciones entre sí. FALTA GRAFICO PAG.7 La unidad de entrada alimenta la memoria con datos e instrucciones. La unidad de memoria almacena instrucciones y datos. Es el enlace más común entre todas las unidades o componentes. • La memoria auxiliar proporciona capacidad masiva de almacenamiento. • La unidad aritmética y lógica compara, suma, resta, multiplica y divide. • La unidad de salida registra los datos que le suministra la memoria. • La unidad de control interpreta instrucciones y emite órdenes para todos los demás componentes de la computadora. Independientemente de cómo se introduzcan los datos, éstos se transforman en impulsos eléctricos que se transfieren a direcciones predeterminadas dentro de la memoria. La entrada se divide básicamente en dos tipos: instrucciones para el proceso de datos y los datos a procesar. Las instrucciones pasan de la memoria a la unidad de control, la cual las interpreta e indica a los otros componentes qué debe hacerse con los datos o en dónde se les debe colocar dentro de la memoria. Por ejemplo, si se deben sumar los datos contenidos en dos campos para producir los datos de un tercero, la unidad de control emite la orden apropiada para la unidad aritmética y lógica. Entonces, esta unidad extrae los datos apropiados de la memoria, ejecuta la suma y coloca el resultado en la memoria. En muchas aplicaciones se debe almacenar gran cantidad de datos y no hay espacio suficiente en la memoria. En estos casos se emplea el componente de memoria o almacenamiento auxiliar. Esta unidad se encuentra separada de la unidad central de procesamiento, pero la unidad de control siempre tiene acceso a los datos que se encuentran en ella. La unidad de control, la memoria y la unidad aritmética y lógica, generalmente se encuentran localizadas en lo que se conoce como unidad central de procesamiento CPU (Central Processing Unit). Dispositivos de entrada y salida de datos En algunos casos, los medios de entrada y salida se encuentran combinados en un solo dispositivo. Un método común para registrar datos es emplear cintas magnéticas. En algunos aspectos no es muy diferente de una grabadora común y corriente. Así como se puede grabar música en una grabadora y luego escucharla una y otra vez, también pueden registrarse datos en una cinta magnética y leerlos una y otra vez. El dispositivo que se utiliza es una impulsadora de cinta magnética, la cual puede registrar datos en la cinta y también leerlos repetidas veces, aunque no ejecuta ambas operaciones simultáneamente. Ambas operaciones, registro y lectura, se ejecutan a altas velocidades. Cuando se leen datos que se encuentran en la cinta, la unidad impulsadora actúa como unidad de entrada; los datos son transferidos a la memoria de la computadora. Cuando los datos que están en la memoria son transferidos a la cinta, actúan como dispositivo de salida. Los caracteres se representan en la cinta por medio de pequeños puntos magnetizados en diferentes colocaciones. En las cintas es posible almacenar grandes cantidades de datos debido a que los puntos magnetizados se pueden colocar muy próximos entre sí. Debido a esta particularidad y a su gran velocidad, las impulsadoras de cinta magnética se utilizan con frecuencia como dispositivos de almacenamiento auxiliar. Antes de empezar algún proceso, los datos registrados en ellos se transfieren a la memoria principal. El operador puede quitar las cintas y reemplazarlas por otras; esto significa que si una cinta se usa una vez por semana, se pueden almacenar fuera del sistema cuando no se emplee. Cuando se requieran de nuevo estos datos el operador puede colocar nuevamente la cinta en la unidad impulsadora. Las desventajas de las cintas es que sus datos no se pueden interpretar en la cinta misma; por lo tanto, para verificar sus datos es necesario procesarla y así obtener un informe impreso; además, sus datos no se pueden reordenar fácilmente ni tampoco insertar nuevos registros entre los ya existentes. Otro dispositivo muy útil es la terminal de máquina de escribir comúnmente denominada terminal de teletipo, que puede conectarse al computador mediante una línea telefónica normal, convirtiéndose de esta manera en un dispositivo extremadamente útil. Una sucursal que se encuentre a miles de kilómetros del sistema de computación puede enviar datos de entrada y recibir datos de salida mediante una terminal de teletipo. El operador usa claves específicas para comunicarse con la computadora, envía datos y pide informes. Tanto el envío como la salida que produce la computadora se imprime automáticamente en un rollo de papel que pasa por la terminal. La terminal de pantalla, que a veces recibe el nombre de télex, es muy parecida a la terminal de teletipo: la principal diferencia consiste en que los datos se exhiben en una pantalla en lugar de imprimirse. La terminal de pantalla también se puede conectar al sistema de computación mediante líneas telefónicas. El operador se comunica con el computador por medio de un teclado. Tanto los datos de entrada como de salida aparecen en la pantalla. En la pantalla se pueden mostrar diagramas y gráficos, esto es muy útil para estudios científicos y de ingeniería. En ocasiones los sistemas para reservaciones en aerolíneas muestran un diagrama del avión señalando los sitios reservados para un vuelo en particular. Otro dispositivo de entrada/salida, y quizá el más útil y flexible de todos, es el disco magnético. Consiste en una serie de discos metálicos que se colocan uno sobre otro, dejando un espacio de separación adecuado. Los datos se registran en las dos caras de cada disco, mediante cabezas lectoras/grabadoras, las cuales entran y salen en el espacio que hay entre los discos. Los datos se pueden grabar y leer en el disco. En los discos cabe gran cantidad de datos. Cada dato se almacena en una dirección o localización conocida. Las cabezas lectoras/grabadoras pueden ir directamente a cualquier dirección del disco, con lo cual, la búsqueda de cualquier dato se puede hacer rápidamente. Los datos se registran en el disco mediante pequeños puntos magnéticos. Al igual que las cintas los discos se pueden retirar de la unidad de disco y guardarlos en otra parte hasta que se requieran los datos contenidos en ellos, pero también existen discos fijos que no se pueden mover. En forma parecida operan también los dispositivos de entrada/salida: disquetes y discos compactos. Existen también dispositivos para reconocimiento de caracteres ópticos, comúnmente conocidos como dispositivos OCR (Optical Character Recognition). La mayoría de datos que van a introducirse al computador se registran primero en un documento fuente, que puede ser manuscrito o mecanografiado. Los dispositivos OCR pueden leer estos datos y convertirlos directamente en impulsos eléctricos. A su vez, estos impulsos se pueden registrar directamente en cinta magnética, disco, etc. No se requiere perforar tarjetas, así que no sólo se economiza tiempo y dinero, sino que se disminuyen las posibilidades de error.
Description: