Este documento presenta un libro introductorio sobre informática. El libro cubre conceptos básicos de informática, representación de la información, la estructura física de los computadores, sistemas operativos y lenguajes de programación. El libro fue escrito por Cristóbal Pareja, Ángel Andeyro y Manuel Ojeda y publicado en 1994.
Este documento es la tesis de ingeniería de Jimena Garbarino sobre protocolos para redes inalámbricas de sensores. La tesis introduce el tema de las redes de sensores inalámbricos, describe varios tipos de aplicaciones, estándares de comunicación empleados y protocolos de red propuestos. Luego, detalla el diseño de una simulación en Omnet++ para evaluar y comparar protocolos, incluyendo métricas de evaluación. Finalmente, presenta la implementación de módulos de red específicos, como diseminación de
El documento presenta un manual de usuario para un excitador de radio. Explica que el excitador puede configurarse sin computadora usando interruptores o con una computadora a través de un puerto serial. Detalla los pasos para seleccionar la frecuencia y potencia en ambos modos, así como comandos seriales para controlar el excitador y referencias de diagramas y código fuente.
Este libro presenta los conceptos básicos de la econometría aplicada utilizando el software libre Gretl. Explica los modelos de regresión lineal simple y múltiple, contrastes de hipótesis, intervalos de confianza y predicción. Incluye ejemplos y ejercicios resueltos para que los lectores practiquen los métodos econometricos con datos reales.
Este documento introduce los conceptos básicos de diseño digital de computadoras. Explica que las computadoras evolucionaron de ser grandes y caras máquinas reservadas solo para grandes organizaciones a ser más pequeñas y asequibles para un mayor número de personas. Describe los componentes básicos de una computadora digital como microprocesadores y memoria, y cubre temas como sistemas numéricos binarios, puertas lógicas, registros y ALU. El objetivo es proveer una comprensión general de cómo funcionan las computadoras a nivel básico.
Este documento presenta una guía de usuario para Gretl, un paquete de software libre para análisis econométrico. Incluye instrucciones para la instalación del programa en sistemas Linux, Windows y Mac OS. Explica las características principales de Gretl como su interfaz gráfica de usuario intuitiva y su capacidad para una amplia gama de técnicas econométricas. También reconoce las contribuciones de otros autores en el desarrollo de Gretl.
Este documento presenta un resumen de los principales métodos numéricos para la solución de ecuaciones, sistemas de ecuaciones, derivadas numéricas, integrales numéricas y ecuaciones diferenciales. Explica conceptos como precisión, error y convergencia, así como métodos iterativos, de interpolación y de diferenciación/integración numérica. El documento provee una introducción general a estos temas y métodos a través de ejemplos expresados en lenguaje Scheme.
Este documento es un manual de usuario para Dr. Geo, un programa de geometría interactiva y programación en Scheme. Dr. Geo permite crear figuras geométricas y manipularlas interactivamente respetando sus restricciones geométricas. El manual explica las funciones básicas de construcción, herramientas avanzadas como macros y scripts, aplicaciones didácticas y más.
Desarrollo de un Sistema de Juego Ubicuo bajo Plataforma AndroidJuan Pizarro
A multiplayer collaborative GPS game(proof of concept) implementing a SOA architecture, developed as part of a Computer Science Thesis http://dspace.utalca.cl/handle/1950/8674
http://www.slideshare.net/jpizarrom/desarrollo-de-un-sistema-de-juego-ubicuo-bajo-plataforma-android
https://www.slideshare.net/jpizarrom/memoria-18433248
http://youtu.be/IsscoCBuBCI
https://github.com/jpizarrom/thserver-game
Este documento es la tesis de ingeniería de Jimena Garbarino sobre protocolos para redes inalámbricas de sensores. La tesis introduce el tema de las redes de sensores inalámbricos, describe varios tipos de aplicaciones, estándares de comunicación empleados y protocolos de red propuestos. Luego, detalla el diseño de una simulación en Omnet++ para evaluar y comparar protocolos, incluyendo métricas de evaluación. Finalmente, presenta la implementación de módulos de red específicos, como diseminación de
El documento presenta un manual de usuario para un excitador de radio. Explica que el excitador puede configurarse sin computadora usando interruptores o con una computadora a través de un puerto serial. Detalla los pasos para seleccionar la frecuencia y potencia en ambos modos, así como comandos seriales para controlar el excitador y referencias de diagramas y código fuente.
Este libro presenta los conceptos básicos de la econometría aplicada utilizando el software libre Gretl. Explica los modelos de regresión lineal simple y múltiple, contrastes de hipótesis, intervalos de confianza y predicción. Incluye ejemplos y ejercicios resueltos para que los lectores practiquen los métodos econometricos con datos reales.
Este documento introduce los conceptos básicos de diseño digital de computadoras. Explica que las computadoras evolucionaron de ser grandes y caras máquinas reservadas solo para grandes organizaciones a ser más pequeñas y asequibles para un mayor número de personas. Describe los componentes básicos de una computadora digital como microprocesadores y memoria, y cubre temas como sistemas numéricos binarios, puertas lógicas, registros y ALU. El objetivo es proveer una comprensión general de cómo funcionan las computadoras a nivel básico.
Este documento presenta una guía de usuario para Gretl, un paquete de software libre para análisis econométrico. Incluye instrucciones para la instalación del programa en sistemas Linux, Windows y Mac OS. Explica las características principales de Gretl como su interfaz gráfica de usuario intuitiva y su capacidad para una amplia gama de técnicas econométricas. También reconoce las contribuciones de otros autores en el desarrollo de Gretl.
Este documento presenta un resumen de los principales métodos numéricos para la solución de ecuaciones, sistemas de ecuaciones, derivadas numéricas, integrales numéricas y ecuaciones diferenciales. Explica conceptos como precisión, error y convergencia, así como métodos iterativos, de interpolación y de diferenciación/integración numérica. El documento provee una introducción general a estos temas y métodos a través de ejemplos expresados en lenguaje Scheme.
Este documento es un manual de usuario para Dr. Geo, un programa de geometría interactiva y programación en Scheme. Dr. Geo permite crear figuras geométricas y manipularlas interactivamente respetando sus restricciones geométricas. El manual explica las funciones básicas de construcción, herramientas avanzadas como macros y scripts, aplicaciones didácticas y más.
Desarrollo de un Sistema de Juego Ubicuo bajo Plataforma AndroidJuan Pizarro
A multiplayer collaborative GPS game(proof of concept) implementing a SOA architecture, developed as part of a Computer Science Thesis http://dspace.utalca.cl/handle/1950/8674
http://www.slideshare.net/jpizarrom/desarrollo-de-un-sistema-de-juego-ubicuo-bajo-plataforma-android
https://www.slideshare.net/jpizarrom/memoria-18433248
http://youtu.be/IsscoCBuBCI
https://github.com/jpizarrom/thserver-game
Este documento presenta un resumen de conceptos básicos de álgebra, geometría y trigonometría para cursos preuniversitarios. El documento está dividido en tres capítulos que cubren números reales, exponentes y radicales, ecuaciones, sistemas de ecuaciones, ángulos, triángulos, paralelogramos, volúmenes y funciones trigonométricas. El objetivo es proveer material de apoyo para cursos posteriores en el área de ingeniería.
Este documento presenta un resumen de un curso de física I. Incluye secciones sobre conceptos fundamentales de la física como magnitudes, vectores, movimiento en una y tres dimensiones, dinámica y trabajo y energía. El documento provee ejemplos y ejercicios para cada tema cubierto.
Este documento presenta una introducción a las arquitecturas avanzadas de computación paralela. Explica diferentes clasificaciones de sistemas paralelos, fuentes de paralelismo, y métricas para medir el rendimiento de sistemas paralelos. También describe arquitecturas como procesadores vectoriales, procesadores matriciales, redes de interconexión, y multiprocesadores.
Este documento presenta notas de clase para el curso de Control Automático 2. Incluye una introducción al curso con objetivos, bibliografía y calendario. Luego describe diferentes representaciones matemáticas de sistemas de control, incluyendo lineales, discretos y no lineales. Finalmente, presenta herramientas de álgebra lineal útiles para el análisis de sistemas, como vectores, matrices, autovalores y formas canónicas. El documento provee una guía detallada para el estudio de los conceptos teóricos del curso
Este documento presenta un libro titulado "Fundamentos del Cálculo" escrito por Rubén Flores Espinoza, Marco Antonio Valencia Arvizu, Guillermo Dávila Rascón, Martín Gildardo García Alvarado. El libro fue publicado en 2008 por Editorial Garabatos con el apoyo de CONACYT y el Gobierno del Estado. El libro contiene 8 capítulos que cubren temas como los números reales, funciones, sucesiones, derivadas, integrales indefinidas y sus aplicaciones.
Este documento presenta apuntes sobre la teoría de la medida y la integración. Se divide en cinco capítulos principales que cubren temas como σ-álgebras de conjuntos, medidas, integración, espacios de medida producto y diferenciación. Cada capítulo contiene secciones detalladas sobre definiciones, teoremas y propiedades relacionadas con los diferentes conceptos de la teoría de la medida.
Este documento presenta una metodología propia llamada HEFESTO para la construcción de un data warehouse. La metodología propone conceptos clave como dimensiones, jerarquías, granularidad y tablas de hechos para el diseño del esquema del data warehouse. El documento también incluye una licencia que permite copiar y modificar el contenido siempre que se mantenga el nombre de la metodología y el estilo del logotipo.
Este documento presenta una metodología propia llamada HEFESTO para la construcción de un data warehouse. Explica conceptos clave como business intelligence, data warehouse, arquitectura de data warehouse y esquemas multidimensionales. Proporciona detalles sobre cada etapa del proceso ETL y la estructura de un data warehouse incluyendo tablas de hechos y dimensiones.
Este documento presenta una metodología llamada HEFESTO para la construcción de un data warehouse. Explica los conceptos clave de business intelligence, data warehousing, arquitectura de data warehousing y herramientas de análisis. Incluye definiciones de términos como ETL, esquemas estrella y copo de nieve, cubos multidimensionales, y técnicas de consulta como drill-down y drill-across. El autor provee detalles sobre cada etapa del proceso de carga y análisis de datos en un data warehouse.
Este documento proporciona una guía de usuario para Arduino. Explica qué es Arduino y por qué es útil, describe el hardware Arduino Diecimila, cómo instalar el software Arduino en diferentes sistemas operativos, cómo usar el entorno de desarrollo de Arduino e introduce conceptos básicos de programación como variables, tipos de datos, E/S digital y analógica. También incluye ejemplos de aplicaciones simples que pueden construirse con Arduino.
Este documento presenta un libro de texto sobre algoritmos y programación estructurada en Pascal. Se divide en temas que cubren algoritmos e introducción a Pascal, elementos básicos del lenguaje Pascal, programación estructurada con instrucciones como if-then-else y bucles, y aspectos teóricos de la programación estructurada. Cada tema contiene capítulos que explican conceptos clave y proporcionan ejemplos de código.
Este documento es un manual de usuario para Dr. Geo, un programa de geometría interactiva y programación en Scheme. Dr. Geo permite crear figuras geométricas y manipularlas interactivamente respetando sus restricciones geométricas. El manual explica las funciones básicas de construcción, herramientas avanzadas como macros y scripts, aplicaciones didácticas y más.
Este documento presenta una introducción a la teoría y métodos de la investigación operativa. Explica los orígenes y desarrollo de la programación lineal, teoría de juegos y optimización. Luego, cubre temas como modelización de problemas, programación lineal, dualidad, análisis de sensibilidad, problemas de transporte, redes y programación entera. El objetivo es proporcionar los fundamentos teóricos y herramientas prácticas de la investigación operativa a través de teoría, ejercicios y aplicaciones
Este documento presenta una revisión teórica sobre control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento presenta una revisión teórica del control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento presenta un resumen de las metodologías y técnicas de ingeniería del conocimiento. En la primera sección introduce el concepto de ingeniería del conocimiento y los sistemas basados en el conocimiento. La segunda sección describe metodologías como CommonKADS para la construcción de sistemas basados en el conocimiento. La tercera sección se enfoca en el modelado del contexto en CommonKADS.
Este documento presenta una introducción al uso de programación visual basic (VBA) en Excel para propósitos de análisis numérico. Explica cómo evaluar funciones definidas por el usuario, incluyendo funciones predeterminadas de Excel. También describe elementos básicos de programación en VBA como flujos secuenciales, condicionales y repetitivos, y el manejo de rangos y matrices dinámicas. Finalmente, muestra ejemplos de cómo evaluar expresiones matemáticas escritas en lenguaje común y aplicar métodos numéricos como solución
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para análisis científico y enseñanza de
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para ciencias e ingeniería, y su utilidad para la en
Este documento es una guía de programación en Linux que contiene información sobre el sistema operativo Linux, el núcleo Linux, las llamadas al sistema, la comunicación entre procesos, la programación de sonido y gráficos, puertos de E/S y la conversión de aplicaciones a Linux. Cubre temas como pipes, FIFOs, IPC, señales, E/S de terminal, control de procesos y más.
Este documento provee una introducción a las redes de telecomunicaciones. Explica los conceptos básicos como elementos de red, clasificación de redes, direccionamiento, encaminamiento, capas OSI y TCP/IP, redes WAN, integración de redes, control de congestión y evolución a IPv6.
Este documento presenta apuntes sobre control robusto y multiobjetivos de sistemas. Se divide en cuatro capítulos que tratan sobre análisis de sistemas con múltiples objetivos, análisis y síntesis de controladores para sistemas con saturaciones, síntesis de controladores mediante programación semidefinida y sintonización robusta de controladores industriales. El documento proporciona una introducción a cada uno de estos temas y sus aplicaciones en el diseño de controladores.
Este documento presenta un resumen de conceptos básicos de álgebra, geometría y trigonometría para cursos preuniversitarios. El documento está dividido en tres capítulos que cubren números reales, exponentes y radicales, ecuaciones, sistemas de ecuaciones, ángulos, triángulos, paralelogramos, volúmenes y funciones trigonométricas. El objetivo es proveer material de apoyo para cursos posteriores en el área de ingeniería.
Este documento presenta un resumen de un curso de física I. Incluye secciones sobre conceptos fundamentales de la física como magnitudes, vectores, movimiento en una y tres dimensiones, dinámica y trabajo y energía. El documento provee ejemplos y ejercicios para cada tema cubierto.
Este documento presenta una introducción a las arquitecturas avanzadas de computación paralela. Explica diferentes clasificaciones de sistemas paralelos, fuentes de paralelismo, y métricas para medir el rendimiento de sistemas paralelos. También describe arquitecturas como procesadores vectoriales, procesadores matriciales, redes de interconexión, y multiprocesadores.
Este documento presenta notas de clase para el curso de Control Automático 2. Incluye una introducción al curso con objetivos, bibliografía y calendario. Luego describe diferentes representaciones matemáticas de sistemas de control, incluyendo lineales, discretos y no lineales. Finalmente, presenta herramientas de álgebra lineal útiles para el análisis de sistemas, como vectores, matrices, autovalores y formas canónicas. El documento provee una guía detallada para el estudio de los conceptos teóricos del curso
Este documento presenta un libro titulado "Fundamentos del Cálculo" escrito por Rubén Flores Espinoza, Marco Antonio Valencia Arvizu, Guillermo Dávila Rascón, Martín Gildardo García Alvarado. El libro fue publicado en 2008 por Editorial Garabatos con el apoyo de CONACYT y el Gobierno del Estado. El libro contiene 8 capítulos que cubren temas como los números reales, funciones, sucesiones, derivadas, integrales indefinidas y sus aplicaciones.
Este documento presenta apuntes sobre la teoría de la medida y la integración. Se divide en cinco capítulos principales que cubren temas como σ-álgebras de conjuntos, medidas, integración, espacios de medida producto y diferenciación. Cada capítulo contiene secciones detalladas sobre definiciones, teoremas y propiedades relacionadas con los diferentes conceptos de la teoría de la medida.
Este documento presenta una metodología propia llamada HEFESTO para la construcción de un data warehouse. La metodología propone conceptos clave como dimensiones, jerarquías, granularidad y tablas de hechos para el diseño del esquema del data warehouse. El documento también incluye una licencia que permite copiar y modificar el contenido siempre que se mantenga el nombre de la metodología y el estilo del logotipo.
Este documento presenta una metodología propia llamada HEFESTO para la construcción de un data warehouse. Explica conceptos clave como business intelligence, data warehouse, arquitectura de data warehouse y esquemas multidimensionales. Proporciona detalles sobre cada etapa del proceso ETL y la estructura de un data warehouse incluyendo tablas de hechos y dimensiones.
Este documento presenta una metodología llamada HEFESTO para la construcción de un data warehouse. Explica los conceptos clave de business intelligence, data warehousing, arquitectura de data warehousing y herramientas de análisis. Incluye definiciones de términos como ETL, esquemas estrella y copo de nieve, cubos multidimensionales, y técnicas de consulta como drill-down y drill-across. El autor provee detalles sobre cada etapa del proceso de carga y análisis de datos en un data warehouse.
Este documento proporciona una guía de usuario para Arduino. Explica qué es Arduino y por qué es útil, describe el hardware Arduino Diecimila, cómo instalar el software Arduino en diferentes sistemas operativos, cómo usar el entorno de desarrollo de Arduino e introduce conceptos básicos de programación como variables, tipos de datos, E/S digital y analógica. También incluye ejemplos de aplicaciones simples que pueden construirse con Arduino.
Este documento presenta un libro de texto sobre algoritmos y programación estructurada en Pascal. Se divide en temas que cubren algoritmos e introducción a Pascal, elementos básicos del lenguaje Pascal, programación estructurada con instrucciones como if-then-else y bucles, y aspectos teóricos de la programación estructurada. Cada tema contiene capítulos que explican conceptos clave y proporcionan ejemplos de código.
Este documento es un manual de usuario para Dr. Geo, un programa de geometría interactiva y programación en Scheme. Dr. Geo permite crear figuras geométricas y manipularlas interactivamente respetando sus restricciones geométricas. El manual explica las funciones básicas de construcción, herramientas avanzadas como macros y scripts, aplicaciones didácticas y más.
Este documento presenta una introducción a la teoría y métodos de la investigación operativa. Explica los orígenes y desarrollo de la programación lineal, teoría de juegos y optimización. Luego, cubre temas como modelización de problemas, programación lineal, dualidad, análisis de sensibilidad, problemas de transporte, redes y programación entera. El objetivo es proporcionar los fundamentos teóricos y herramientas prácticas de la investigación operativa a través de teoría, ejercicios y aplicaciones
Este documento presenta una revisión teórica sobre control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento presenta una revisión teórica del control de procesos industriales continuos. Explica conceptos clave como modelos de procesos, realimentación, elementos de control, diseño de sistemas de control, clasificación de sistemas, respuesta temporal y de frecuencia, lugar de las raíces, funcionamiento y estabilidad de sistemas de control, y sistemas de tiempo discreto.
Este documento presenta un resumen de las metodologías y técnicas de ingeniería del conocimiento. En la primera sección introduce el concepto de ingeniería del conocimiento y los sistemas basados en el conocimiento. La segunda sección describe metodologías como CommonKADS para la construcción de sistemas basados en el conocimiento. La tercera sección se enfoca en el modelado del contexto en CommonKADS.
Este documento presenta una introducción al uso de programación visual basic (VBA) en Excel para propósitos de análisis numérico. Explica cómo evaluar funciones definidas por el usuario, incluyendo funciones predeterminadas de Excel. También describe elementos básicos de programación en VBA como flujos secuenciales, condicionales y repetitivos, y el manejo de rangos y matrices dinámicas. Finalmente, muestra ejemplos de cómo evaluar expresiones matemáticas escritas en lenguaje común y aplicar métodos numéricos como solución
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para análisis científico y enseñanza de
Este documento presenta una introducción a la programación visual basic (VBA) para Excel y elementos de análisis numérico. Explica cómo evaluar funciones, crear gráficas, programar macros, y usar elementos de programación como flujos secuenciales, condicionales y repetitivos. También cubre temas como la solución de ecuaciones, integración, y problemas de valor inicial para ecuaciones diferenciales ordinarias usando métodos numéricos. El objetivo es mostrar el gran potencial de Excel para ciencias e ingeniería, y su utilidad para la en
Este documento es una guía de programación en Linux que contiene información sobre el sistema operativo Linux, el núcleo Linux, las llamadas al sistema, la comunicación entre procesos, la programación de sonido y gráficos, puertos de E/S y la conversión de aplicaciones a Linux. Cubre temas como pipes, FIFOs, IPC, señales, E/S de terminal, control de procesos y más.
Este documento provee una introducción a las redes de telecomunicaciones. Explica los conceptos básicos como elementos de red, clasificación de redes, direccionamiento, encaminamiento, capas OSI y TCP/IP, redes WAN, integración de redes, control de congestión y evolución a IPv6.
Este documento presenta apuntes sobre control robusto y multiobjetivos de sistemas. Se divide en cuatro capítulos que tratan sobre análisis de sistemas con múltiples objetivos, análisis y síntesis de controladores para sistemas con saturaciones, síntesis de controladores mediante programación semidefinida y sintonización robusta de controladores industriales. El documento proporciona una introducción a cada uno de estos temas y sus aplicaciones en el diseño de controladores.
Este documento presenta una introducción a los periféricos de entrada y salida. Explica brevemente la historia de los periféricos y ofrece dos perspectivas sobre el tema. Además, incluye un plan del curso con los temas que se abordarán como teclados, terminales, interfaz serie, impresoras y más.
Este documento presenta una introducción a la programación con Visual Basic. Explica conceptos básicos como datos, variables, constantes, algoritmos y diagramas de flujo. Luego introduce elementos del lenguaje Visual Basic como tipos de datos, declaración de variables, operadores aritméticos e instrucciones de entrada y salida. Finalmente, cubre estructuras de decisión, repetición, formularios y controles para la construcción de interfaces gráficas. El documento contiene ejemplos y ejercicios para cada tema.
Este documento trata sobre el benchmarking en sistemas Linux. Explica que el benchmarking implica medir la velocidad de ejecución de tareas para comparar diferentes configuraciones de hardware y software. Recomienda utilizar herramientas de benchmarking estándar como el Linux Benchmarking Toolkit (LBT) y proporciona detalles sobre cómo usar esta herramienta y cómo interpretar los resultados. Además, advierte sobre posibles fallos comunes en el proceso de benchmarking y factores irrelevantes a considerar.
Este documento presenta un libro introductorio sobre programación en C. El libro explica conceptos básicos como variables, constantes, operadores aritméticos y lógicos, y estructuras de control como if/else y bucles while y for. El libro está dirigido a estudiantes que deseen aprender el lenguaje de programación C.
Este documento presenta una breve introducción a C++. Explica la estructura básica de un programa en C++, incluyendo la definición de funciones, nombres de variables, tipos de variables, entrada y salida de datos, operadores aritméticos y relacionales. También cubre temas como control de flujo, funciones, matrices, clases, sobrecarga y herencia.
Este documento proporciona una consulta rápida sobre la utilización de los diálogos ISPF, mandatos TSO y directivas de JCL de Tivoli Workload Scheduler for z/OS. Incluye información sobre cómo especificar criterios para listas, utilizar argumentos genéricos de búsqueda, ordenar salidas de listas, localizar datos en listas, visualizar gráficamente listas y asignar teclas de función de programa.
Este documento trata sobre traductores y compiladores construidos con herramientas como Lex/Yacc, JFlex/Cup y JavaCC. Explica conceptos básicos sobre análisis léxico, sintáctico y generación de código. También presenta ejemplos del uso de estas herramientas para construir analizadores léxicos y sintácticos en Java.
Este documento proporciona instrucciones detalladas para administrar un foro usando PHP-Nuke. Explica cómo instalar y configurar PHP-Nuke, crear y moderar contenido de usuarios, y personalizar la apariencia y funcionalidad del sitio a través de temas y módulos. También cubre edición básica en HTML y SQL para principiantes. El objetivo general es enseñar a los lectores a construir y mantener un foro dinámico y participativo usando esta herramienta de código abierto.
La informática es el estudio y uso de la tecnología y la ciencia para ayudar al desarrollo humano, implementando herramientas que facilitan diferentes tareas.
Este documento describe a los nativos digitales, personas nacidas después de 1979 que crecieron con acceso a la tecnología como computadoras y celulares. Explica que los nativos digitales tienen la capacidad de realizar múltiples tareas a la vez, aprenden de forma rápida e interactiva, y están constantemente conectados en línea. Finalmente, concluye que las nuevas generaciones están siendo influenciadas por la tecnología en diversos niveles y que el internet se ha convertido en un recurso esencial en el siglo 21.
Los nativos digitales son aquellos nacidos después de 1979 que crecieron con la tecnología digital. Se caracterizan por su capacidad de realizar múltiples tareas de forma simultánea, procesar información rápidamente de forma no lineal e hipertextual, y aprender de forma lúdica y colaborativa a través de la tecnología. El término fue acuñado por Marc Prensky para referirse a las nuevas generaciones que han pasado su vida rodeadas de computadoras, videojuegos, internet y dispositivos móviles
Este documento describe la diferencia entre nativos digitales e inmigrantes digitales. Los nativos digitales crecieron con las tecnologías de la información y la comunicación (TIC) y las usan de forma paralela, rápida e interactiva. Los inmigrantes digitales se relacionan más tarde con las TIC y las usan de forma secuencial, lenta y lineal. El documento sugiere caracterizar a los estudiantes como nativos o inmigrantes digitales para entender mejor sus estilos de aprendizaje y cerrar la brecha entre ellos.
El documento describe la diferencia entre nativos digitales e inmigrantes digitales. Los nativos digitales crecieron con Internet y las tecnologías, mientras que los inmigrantes se relacionan con ellas más tarde en la vida. Los nativos procesan la información de forma paralela y rápida, comparten datos y aprenden jugando, mientras que los inmigrantes lo hacen de forma secuencial, trabajan individualmente y aprenden de forma más seria. El distanciamiento entre cómo aprenden ambos grupos debe revisarse para entender mejor sus estilos de aprendiz
Este documento describe la informática básica y los programas de informática para niños. Explica que la informática busca tratar la información de manera eficiente usando computadoras. Luego detalla diferentes categorías de programas de informática para niños de 3 a 12 años según su edad, enfocados en desarrollar habilidades como el pensamiento lógico. También resume brevemente que las tecnologías de la información integran la computación, telecomunicaciones y procesamiento de datos, y que la informática educativa emerge de la interacción entre informática y
Este documento discute la importancia de la computación y la educación en computación en la Argentina. Señala que hablar de computación es hablar de la necesión de una fuerza laboral capacitada y de los nuevos empleos y posibilidades de desarrollo que trae. También destaca que la educación en la Argentina está pasando por un momento de grandes expectativas debido a una nueva ley educativa y la necesidad de aprovechar este cambio para evitar escepticismo. Finalmente, resume que se ha avanzado en aceptar las herramientas digitales como necesari
Este documento discute la importancia de la computación y la educación en computación en la Argentina. Señala que hablar de computación es hablar de la necesión de una fuerza laboral capacitada y de los nuevos empleos y posibilidades de desarrollo que trae. También destaca que la educación en la Argentina está pasando por un momento de grandes expectativas debido a la nueva ley federal de educación y su implementación, y que se han dado avances específicamente en computación educativa en términos de la aceptación de las herramientas informáticas como
Este documento describe dos formas de pegar texto copiado de una página web en Word sin los formatos originales no deseados. La primera forma implica usar la opción "Texto sin formato" en el menú "Pegado especial". La segunda forma permite mostrar botones de opciones de pegado que permiten seleccionar opciones como "Conservar solo texto" para eliminar los formatos al pegar.
8. Presentaci´n
o
Hay muchos y excelentes libros sobre inform´tica en un nivel intro-
a
ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de
ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´,
a a a
demasiado profundos para quienes s´lo persiguen aplicar la inform´tica
o a
en su trabajo; muchos otros, en cambio, se dirigen a no profesionales,
por lo que ofrecen una visi´n panor´mica demasiado general de diver-
o a
sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones
a
pr´cticas de esos aspectos.
a
Este libro se sit´a entre ambos extremos, ofreciendo un medio para
u
introducir en la inform´tica a profesionales de otros campos que, sin em-
a
bargo, necesiten aplicar adecuadamente los computadores en su trabajo,
poniendo en marcha programas de aplicaci´n o manejando bancos de
o
datos e incluso, muchas veces, resolviendo por s´ mismos problemas no
ı
contemplados en los programas comercializados.
As´ pues, el contenido del texto incluye los temas que consideramos
ı
b´sicos para una introducci´n pr´ctica a la inform´tica. Quiz´ sea este
a o a a a
enfoque pr´ctico lo que mejor distinga a este texto de otros de intro-
a
ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy
o a
extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar
o e ıcil
los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de
´ e o a
utilidad inform´ticos profesionales.
a
Por lo tanto, este libro se dirige a quienes necesiten una formaci´no
introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu-
a a a
roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
9. 12 ´
Presentacion
de los primeros cursos universitarios que cuenten con asignaturas sobre
inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n
a o
de problemas como si es el propio objeto de estudio.
Este libro se dirige asimismo a aquellas personas que, de una u otra
forma, est´n relacionadas con el mundo de la inform´tica (operadores,
a a
comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde
tras la fachada de un computador (c´mo se almacena la informaci´n,
o o
cu´les son los procesos que se est´n ejecutando en su interior, etc.) y
a a
que utilizan una jerga t´cnica sin entender bien de qu´ hablan.
e e
Por ultimo, este libro se dirige tambi´n a todos los usuarios de com-
´ e
putadores que est´n interesados en conocer mejor su herramienta de
e
trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo
e e
y abaratamiento de los sistemas inform´ticos hace que computadores
a
de gran potencia que antes s´lo se encontraban en grandes centros de
o
c´lculo, atendidos por administradores de sistemas cualificados y dedi-
a
cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el
e
usuario se tenga que encargar de administrar los recursos de su computa-
dor, por ejemplo, gestionando la memoria, haciendo copias de seguridad,
eliminando virus, etc. Por todo ello, cualquier usuario deber´ dedicar
ıa
siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos
n a
de funcionamiento y gesti´n de su computador.
o
A todos ellos, este texto les ofrece la posibilidad de adquirir esos
conocimientos, partiendo de cero, o de actualizarlos.
Se ha seleccionado el contenido partiendo de las directrices se˜aladas
n
en [DCG*89] y [ACM91] aunque, en un nivel introductorio, no sea po-
sible ni deseable abarcar todos los temas que s´lo interesan al futuro
o
profesional de la inform´tica. As´ por ejemplo, quedan completamente
a ı
fuera del alcance de nuestro texto las areas de inteligencia artificial y
´
rob´tica (AI) o la comunicaci´n hombre-m´quina (HU ).
o o a
Es frecuente, en cambio, que los destinatarios mencionados necesi-
ten una parte de conocimientos generales sobre inform´tica y otra sobre
a
desarrollo de algoritmos en un lenguaje de alto nivel: ambas partes se in-
cluyen en los programas de asignaturas de introducci´n a la inform´tica
o a
10. ´
Presentacion 13
de los primeros cursos universitarios, y tambi´n interesan esas dos par-
e
tes a los profesionales que usen la inform´tica como una herramienta y
a
deseen sacar partido de ella.
El presente texto comprende dos vol´menes, complementarios, dedi-
u
cados respectivamente a esas dos partes, separando as´ la presentaci´n
ı o
de los conceptos generales y el desarrollo y organizaci´n de algoritmos
o
y estructuras de datos. En la primera parte, el enfoque pr´ctico nos
a
ha llevado a relacionar los contenidos estudiados con sus repercusiones
pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de
a o
los algoritmos con su desarrollo, haciendo uso de un lenguaje de progra-
maci´n concreto.
o
Este primer volumen se ha dividido en siete cap´ ıtulos, de los cua-
les el primero ofrece una visi´n panor´mica de la inform´tica, de los
o a a
computadores y de su uso en la actualidad: bien poniendo en marcha
aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o
a
preparando soluciones para problemas nuevos. Se presentan asimismo
las primeras aproximaciones a los conceptos de algoritmo, programaci´n o
y lenguajes de programaci´n.
o
En el cap´
ıtulo 2 se aborda la representaci´n digital de la informaci´n.
o o
Conociendo las distintas formas de representaci´n, el programador podr´
o a
elegir las m´s apropiadas a las caracter´
a ısticas y naturaleza de su pro-
blema y prever sus limitaciones. Por otra parte, el usuario de aplicacio-
nes tendr´ una idea aproximada de c´mo se almacena su informaci´n, el
a o o
espacio que ocupa y las circunstancias en que los resultados podr´ noıan
ser del todo fiables.
El cap´ıtulo 3 est´ dedicado al aspecto f´
a ısico de los computadores y
sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes
e
de bajo nivel, y se comentan brevemente las arquitecturas orientadas al
procesamiento en paralelo.
En el cap´
ıtulo 4 se estudian los conceptos b´sicos para entender lo
a
que son los sistemas operativos, cu´les son sus funciones y c´mo las
a o
llevan a cabo.
El cap´
ıtulo 5 se dedica a los lenguajes de programaci´n, en espe-
o
11. 14 ´
Presentacion
cial los lenguajes evolucionados. Se tratan distintos modelos de progra-
maci´n, adem´s del imperativo, de amplia difusi´n en estos a˜os. Se
o a o n
introducen los metalenguajes para describir su sintaxis por su utilidad,
tanto a programadores como a simples usuarios de sistemas operativos,
incluso en el nivel de los comandos. Finalmente, se estudian los distintos
tipos de traductores y los entornos de programaci´n.
o
El cap´
ıtulo 6 trata sobre las bases de datos, una de las aplicaciones
de mayor aplicaci´n en el mundo empresarial. Entre los modelos des-
o
arrollados, destacamos el relacional y, entre los lenguajes de consulta, el
SQL, debido a la extensa difusi´n de ambos en la actualidad.
o
Hemos dedicado el cap´ ıtulo 7 a los or´
ıgenes, estado actual y pers-
pectivas de futuro de la inform´tica. Aunque muchos textos sit´an este
a u
tema al principio, hemos preferido estudiarlo una vez que se conocen
los conceptos y la terminolog´ b´sicos. De esta forma mejora la com-
ıa a
prensi´n del cap´
o ıtulo y puede valorarse en su justa medida cada uno de
los logros hist´ricos que en ´l se recogen.
o e
Debido al enfoque pr´ctico que perseguimos con este libro, se inclu-
a
yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas
e
operativos concretos de gran difusi´n en la actualidad: el DOS y el
o
UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por
ı
un lado, conocer las caracter´
ısticas de cada sistema interesa al estudiante
como un ejemplo particular del cap´ ıtulo 4, permitiendo ver c´mo se lleva
o
a la pr´ctica lo estudiado en la teor´ por otro, siempre resulta de uti-
a ıa;
lidad al principiante disponer de un peque˜o prontuario de las ´rdenes
n o
o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a
a a
desenvolverse en el entorno de esos sistemas operativos.
En la mayor´ de los cap´
ıa ıtulos, se ha incluido una peque˜a colecci´n
n o
de cuestiones y sencillos ejercicios de aplicaci´n, utiles para afianzar los
o ´
conceptos introducidos.
Adem´s, en cada cap´
a ıtulo se han seleccionado unas pocas referencias,
para completar los contenidos presentados con otros enfoques, o bien
para profundizar en el tema.
12. ´
Presentacion 15
Agradecimientos
En primer lugar, es inexcusable agradecer a la Editorial la confianza
que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en
o
el que, ya lo hemos dicho, existen abundantes textos en nuestra lengua,
as´ como su paciencia en la recepci´n de los originales.
ı o
Tambi´n debemos dejar constancia de nuestra gratitud hacia los
e
compa˜eros que nos han alentado, desde el principio, a redactar este
n
ın a a ıa ´
trabajo. En especial, a Benjam´ Hern´ndez Bl´zquez, Mar´ Angeles
Medina S´nchez, Salvador Paz Mart´
a ınez, Inma P´rez de Guzm´n Mo-
e a
lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos
e
que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de
o
clase.
Durante la redacci´n de este trabajo, se han recogido numerosas opi-
o
niones y sugerencias. En particular, debemos agraceder las minuciosas
revisiones y comentarios hechos por Manuel Enciso Garc´ ıa-Oliveros, Car-
los Rossi Jim´nez, Jos´ Luis Gal´n Garc´ Jaime Fern´ndez Mart´
e e a ıa, a ınez,
Ma Angeles Cano Colorado, Oscar Mart´ S´nchez y Cristina Rodr´
´ ´ ın a ıguez
Iglesias.
Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para
e o
subsanar las posibles deficiencias que encuentren.
13. Cap´
ıtulo 1
Conceptos B´sicos
a
1.1 Inform´tica . . . . . . . .
a . . . . . . . . . . . . . . . . . . . . . 17
1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . . . . 21
1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.7 Comentarios bibliogr´ficos
a . . . . . . . . . . . . . . . . . . . . . 28
El objetivo principal de este cap´
ıtulo consiste en ofrecer una visi´n
o
general del contenido del libro, presentando los conceptos generales y
los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n
e a a o
nos permite situar cada uno de los temas siguientes en relaci´n con los
o
dem´s, y dentro del contexto de la inform´tica.
a a
1.1 Inform´tica
a
La inform´tica es la ciencia que estudia el procesamiento autom´tico
a a
de la informaci´n. Aunque la necesidad de razonar sobre este tipo de
o
procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica
a o a
como ciencia s´lo se produce con el desarrollo de los computadores, a
o
partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy
n
joven, pero que ha evolucionado a gran velocidad.
14. 18 Cap´ ´
ıtulo 1. Conceptos Basicos
La piedra maestra sobre la cual se ha podido desarrollar la infor-
m´tica la representa el computador, que es una herramienta de gran
a
eficacia en muy diversos trabajos, y en particular en aqu´llos que ma-
e
nejan un gran volumen de datos o de operaciones. Esta versatilidad
tiene dos aspectos: por un lado, es posible usarlo como herramienta
para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue-
den dise˜ar soluciones a la medida de problemas nuevos, mediante la
n
programaci´n (1.5).
o
El desarrollo de un programa nuevo para resolver un determinado
problema requiere, por una parte, conocer alg´n procedimiento siste-
u
m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de
a o
expresarlo en un lenguaje de programaci´n que el computador pueda
o
comprender y ejecutar.
1.2 Computador
Un computador es una m´quina electr´nica que procesa informaci´n
a o o
siguiendo las instrucciones de un programa registrado.
Para comunicarse con el exterior dispone de unos medios de entrada,
a trav´s de los que recibe la informaci´n, y unos medios de salida, por
e o
donde la env´ Tiene dispositivos que le permiten almacenar la infor-
ıa.
maci´n (los datos, los resultados y el propio programa) y procesarla
o
siguiendo las instrucciones del programa.
La informaci´n que se procesa en el computador (programas, da-
o
tos y resultados) est´ expresada en forma digital binaria, combinando
a
ceros y unos. En consecuencia, tanto los programas como los datos y
resultados deben codificarse en este formato para poder ser procesados.
Una vez obtenidos los resultados, ´stos tienen que ser decodificados para
e
mostrarlos al usuario.
Como hemos visto, un computador se compone de dos partes cla-
ramente diferenciadas: una f´ ısica, que podemos tocar, constituida por
circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado
o
hardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
15. 1.3. Sistema operativo 19
usuario
software de aplicaciones y del sistema
sistema operativo
hardware
Tabla 1.1. Estructura de niveles en un computador.
podemos tocar, constituida por los programas y datos, llamada software
en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´
e o a ıntimamente
relacionadas de forma que una no puede operar sin la otra y viceversa.
1.3 Sistema operativo
Cuando se pone en marcha el computador, el primer programa que
entra en funcionamiento es el sistema operativo, que gestiona y coordina
los dos aspectos, f´
ısico y l´gico, del computador. Se trata de un conjunto
o
de programas que se interrelacionan estrechamente con el hardware, ges-
tionando los procesos en ejecuci´n, las operaciones de entrada y salida y
o
la memoria. Por ello, resulta imprescindible para el funcionamiento del
computador.
Los dem´s programas funcionan sobre el sistema operativo, y son
a
gestionados por ´l. Entre ellos, se encuentran las herramientas para
e
el desarrollo de programas (tales como los editores y traductores de
lenguajes), y tambi´n los programas de aplicaciones.
e
Por lo tanto, podemos decir que dentro del computador existe cierta
organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se
o e a
encuentra el hardware, que por s´ mismo no puede realizar ninguna tarea;
ı
a continuaci´n se encuentra el sistema operativo, y desde ´l se arrancan
o e
los otros programas, que a su vez se relacionan directamente con el
usuario.
En resumen, el hardware no puede funcionar por s´ mismo: nece-
ı
sita la ayuda del software. La uni´n de ambos constituye una m´quina
o a
virtual, tremendamente vers´til.
a
16. 20 Cap´ ´
ıtulo 1. Conceptos Basicos
1.4 Aplicaciones
El software de aplicaciones est´ formado por aquellos programas que
a
han sido desarrollados para realizar tareas concretas. Se llama as´ por-
ı
que el computador “se aplica” a un trabajo determinado, facilitando su
ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja
o o
de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un
a a
programa de contabilidad, juegos, etc.
Entre las aplicaciones m´s utilizadas se encuentran las siguientes:
a
• Los procesadores de textos son programas que facilitan la elabo-
raci´n de textos en el computador, desde una carta hasta un li-
o
bro. Permiten operar con m´rgenes, tabuladores, justificaci´n,
a o
sangrado, tipos de letra, b´squeda y sustituci´n de palabras, pa-
u o
ginaci´n, separaci´n de s´
o o ılabas, sin´nimos, ortograf´ etc. Son
o ıa,
probablemente los programas m´s usados.
a
• Las hojas de c´lculo son programas utilizados en la creaci´n de
a o
tablas, con datos relacionados entre s´ inicialmente ideados para
ı,
el an´lisis financiero. Tienen un formato matricial, en el que se
a
pueden definir operaciones y funciones sobre las distintas compo-
nentes de la matriz. Al modificar alg´n dato, todas las operaciones
u
que lo utilizan son actualizadas de forma autom´tica.
a
• Los gestores de bases de datos permiten gestionar la informaci´n o
referida a personas o art´
ıculos, realizando operaciones de edici´n,
o
ordenaci´n, b´squeda, etc.
o u
• Los generadores de gr´ficos facilitan la creaci´n de distintos tipos
a o
de gr´ficos, a partir de datos de hojas de c´lculo o bases de datos,
a a
o directamente introducidos por el usuario.
Existen muchas otras aplicaciones, de uso menos general, como son
los programas matem´ticos, estad´
a ısticos, de CAD (Dise˜o Asistido por
n
Computador), aplicaciones contables y de gesti´n de empresas, comuni-
o
caciones, juegos, etc.
17. 1.5. Algoritmos y programas 21
El desarrollo del software de aplicaciones ha sido muy grande (se cal-
cula que para los computadores compatibles con IBM hay m´s de cien
a
mil aplicaciones diferentes). A su vez, los distintos programas van evo-
lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor
a
velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia
o e
y memoria.
En algunos casos, varios de estos programas se unen en uno solo,
compartiendo datos e instrucciones, y constituyen un paquete integrado.
En general suele integrarse una hoja de c´lculo con un generador de
a
gr´ficos y, a veces, con una base de datos y un procesador de textos.
a
Gran parte de los programas de aplicaci´n pueden configurarse, en
o
mayor o menor medida, de acuerdo con los gustos y necesidades del
usuario; sin embargo, es posible que un programa concreto no pueda
atender esas necesidades. En este caso, resulta muy dif´ por no decir
ıcil,
imposible (e ilegal en muchos casos), modificar el programa para incluir
una nueva tarea. Conscientes de esta falta de flexibilidad del software,
muchos fabricantes est´n presentando programas de aplicaci´n que a
a o
su vez pueden ser programados, mediante lenguajes de programaci´n o
propios o est´ndares.
a
As´ pues, aunque la mayor´ de las personas que utilizan los compu-
ı ıa
tadores trabajan con programas de aplicaci´n y no necesitan recurrir a
o
la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser
o e u
inform´ticos profesionales, pueden obtener un mayor rendimiento de es-
a
tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas
e o
de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en
a a
d´ son programables.
ıa,
1.5 Algoritmos y programas
El desarrollo de programas es otro de los aspectos fundamentales
de la utilizaci´n de los computadores porque continuamente aparecen
o
nuevos problemas o tareas susceptibles de ser procesados de forma au-
tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias
a
en las aplicaciones existentes, lo que impulsa a su renovaci´n con la
o
18. 22 Cap´ ´
ıtulo 1. Conceptos Basicos
creaci´n de nuevas versiones de los programas existentes. El desarrollo
o
del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s
e o a
potentes y con mayores demandas de recursos.
Desde el planteamiento de un problema hasta la obtenci´n de su
o
soluci´n en el computador hay que recorrer una serie de etapas:
o
1. En primer lugar, antes de resolver un problema en el computador
hay que conocer los pasos y operaciones que hay que realizar para
obtener la soluci´n del problema, es decir, su algoritmo, porque
o
el computador solamente es capaz de seguir aquellas instrucciones
que nosotros le indiquemos. Si no conocemos el proceso que nos
conduce a la soluci´n del problema, el computador no nos la va a
o
dar. Esta secuencia de pasos y operaciones constituye una soluci´n
o
general al problema planteado de forma que, siguiendo el proceso,
se llega a la soluci´n del problema sean cuales fueran los datos
o
proporcionados.
2. Una vez conocida esta soluci´n general del problema, hay que ex-
o
presarla en un lenguaje especial, que pueda ser comprendido y
ejecutado por el computador, es decir, en un lenguaje de progra-
maci´n, creando un programa.
o
3. Posteriormente, hay que comprobar que el programa produce las
soluciones esperadas (ya sea utilizando datos de prueba o mediante
m´todos formales) y subsanar los errores detectados.
e
4. Por ultimo, es importante documentar el programa de forma que
´
si cambiaran algunas de las circunstancias iniciales, sea posible
modificar y adaptar convenientemente, facilitando las labores de
mantenimiento.
1.5.1 Algoritmos
Una de las caracter´ısticas de los seres humanos es su capacidad para
´
plantearse y resolver problemas. Estos pueden ser de naturaleza muy
19. 1.5. Algoritmos y programas 23
diversa, desde los problemas m´s inmediatos relacionados con la pro-
a
pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma-
a
tem´tica o filos´fica.
a o
Un algoritmo es la descripci´n precisa de los pasos que nos permiten
o
obtener la soluci´n de un problema determinado. En general, los pa-
o
sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al
u
comienzo del algoritmo, los objetos tienen unos valores iniciales (los da-
tos) que var´ como consecuencia del proceso descrito por el algoritmo,
ıan
obteni´ndose los valores de salida o resultados.
e
La inform´tica estudia el procesamiento de la informaci´n mediante
a o
algoritmos, aunque el concepto de algoritmo, que proviene de las ma-
tem´ticas, es muy anterior e independiente de la existencia de la in-
a
form´tica y los computadores. 1
a
El concepto de algoritmo tiene una importancia fundamental den-
tro de la inform´tica, por ser previo a la resoluci´n del problema en el
a o
computador; si no se conoce el algoritmo para resolver un problema, no
puede plantearse su resoluci´n en el computador.
o
Aunque existen algoritmos registrados para la realizaci´n de tareas
o
muy variadas, en general los algoritmos desarrollados resuelven s´lo de-
o
terminadas partes de un problema como, por ejemplo, la ordenaci´n de
o
una lista de valores, pero no un problema real completo. En consecuen-
cia, habr´ que dise˜ar un algoritmo para su resoluci´n.
a n o
El dise˜o de algoritmos implica un an´lisis profundo del problema,
n a
de sus datos iniciales, del proceso que se les aplica y de los resultados
esperados. A partir de este an´lisis debe establecerse cu´l es la mejor
a a
estructura de datos para resolver el problema. De hecho, Niklaus Wirth,
uno de los padres de la programaci´n estructurada, titula una de sus
o
obras fundamentales Algoritmos + Estructuras de Datos = Programas,
mostrando la importancia que concede a dichas estructuras [Wir86b].
1
Se conoce un algoritmo para el c´lculo del m´ximo com´n divisor de dos n´meros
a a u u
naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el
“abuelo” de todos los algoritmos.
20. 24 Cap´ ´
ıtulo 1. Conceptos Basicos
Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la
e n
programaci´n estructurada, la programaci´n modular, el refinamiento
o o
por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los
n o o
datos.
Para poder expresar algoritmos se utilizan lenguajes con la necesaria
precisi´n, llamados lenguajes algor´
o ıtmicos, que son independientes de los
lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los
o a o
diagramas de flujo.
Dado un problema concreto y conocido el algoritmo que lo resuelve,
para obtener la soluci´n del problema tenemos que partir de los datos
o
de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso
de ejecutar un algoritmo concreto para unos datos determinados se le
llama c´mputo, de donde procede el t´rmino computador. El procesador
o e
es quien ejecuta materialmente el c´mputo.
o
1.5.2 Programaci´n
o
Como dec´ ıamos al principio, consideramos al computador como una
herramienta que nos ayuda en la resoluci´n de problemas; para ello es
o
preciso conocer previamente un algoritmo que lleve a su soluci´n. A
o
continuaci´n hay que expresar el algoritmo en un lenguaje de progra-
o
maci´n, que pueda ser comprendido y ejecutado por el computador,
o
desarroll´ndose un programa. A este proceso se le llama programaci´n.
a o
Una aportaci´n sustancial para realizar este paso tan delicado con la
o
correcci´n necesaria la constituyen:
o
1. El refinamiento por pasos, que permite aumentar el grado de de-
talle en la expresi´n del algoritmo seg´n convenga, para adaptarlo
o u
a las necesidades del lenguaje.
2. La programaci´n estructurada, que utiliza las estructuras de pro-
o
gramaci´n propias de los lenguajes evolucionados.
o
3. La programaci´n modular que, al permitir el uso de m´dulos o
o o
subprogramas, facilita el empleo de otras t´cnicas de dise˜o de
e n
algoritmos y la depuraci´n de los programas .
o
21. 1.5. Algoritmos y programas 25
4. No debe olvidarse la importancia de la estructuraci´n y abstracci´n
o o
de datos, presente tambi´n en los lenguajes evolucionados, que
e
debe emplearse con todo su potencial en el dise˜o de algoritmos y,
n
posteriormente, en los programas.
El desarrollo de aplicaciones cada vez m´s complejas y el crecimiento
a
del sector de producci´n de software, ha hecho que se apliquen a la pro-
o
gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad
o e ıa
de los grandes proyectos de aplicaciones, lo que se conoce como inge-
nier´ del software.
ıa
1.5.3 Lenguajes de Programaci´n
o
El computador dispone de un conjunto de instrucciones que son reco-
nocidas y ejecutadas por el procesador. Estas instrucciones se expresan,
al igual que los datos, en forma digital binaria, si bien para reconocerlas
mejor y evitar errores se les asignan unos nombres mnemot´cnicos que
e
permiten recordar sus funciones. Estas instrucciones constituyen el len-
guaje de m´quina del computador, y suelen ser diferentes en funci´n del
a o
fabricante del procesador.
El lenguaje de m´quina es ejecutado a gran velocidad por el procesa-
a
dor, en los computadores actuales esta velocidad se mide en millones de
operaciones por segundo; por otra parte, el lenguaje de m´quina permite
a
el acceso directo a todos los ´rganos del computador. Por estos motivos
o
el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea
a
necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos
o
o
´rganos del computador.
Las instrucciones del lenguaje de m´quina son en general muy poco
a
potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no
n n
incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da-
tos mayores o realizar operaciones m´s complejas, tales como potencias
a
o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las
operaciones simples, siguiendo algoritmos espec´ ıficos. Por este motivo,
y por su estrecha relaci´n con el hardware, a los lenguajes de m´quina se
o a
les llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
22. 26 Cap´ ´
ıtulo 1. Conceptos Basicos
problema
t
t dise˜o de algoritmos
n
”
t
algoritmo
t
t programaci´n
o
”
t
programa fuente
t
t traductor
”
t
programa objeto
t
t procesador
”
t
programa en ejecuci´n
o
Figura 1.1. Resoluci´n de un problema mediante la programaci´n.
o o
programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos
a a
errores.
Ante la necesidad de escribir programas cada vez m´s complejos y
a
fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados
a a
de abstracci´n, que inclu´ operaciones y datos m´s complejos a los
o ıan a
que llamaron lenguajes de alto nivel. De esta forma se acorta el camino
entre el algoritmo y su expresi´n en forma de programa, porque los
o
lenguajes de alto nivel pueden expresar mejor las acciones y objetos que
intervienen en los algoritmos.
Una de las grandes ventajas de estos lenguajes radica en que la tra-
ducci´n del programa escrito en lenguaje de alto nivel (programa fuente)
o
al lenguaje de m´quina (programa objeto) que, como recordamos, es el
a
unico que puede ser ejecutado por el computador, es autom´tica y se
´ a
realiza por un programa traductor.
Para ello, junto con las especificaciones del lenguaje, reglas de sinta-
xis y sem´ntica, se desarrollan los necesarios programas de traducci´n.
a o
Durante el proceso de traducci´n se suelen detectar errores, debidos al
o
23. 1.6. Ejercicios 27
incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti-
a a
les, que deben corregirse antes de poder ejecutar el programa. Si durante
la ejecuci´n de un programa se realizan operaciones no permitidas (tales
o
como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los
llamados errores de ejecuci´n.
o
Aunque un programa se haya traducido eliminando todos los errores
sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea
a o u
para la que fue creado, por contener errores l´gicos. Por lo tanto es
o
necesario comprobar el funcionamiento del programa utilizando datos
de prueba que permitan realizar los c´lculos a mano y comprobar as´
a ı
las partes m´s conflictivas del programa. Este proceso se conoce como
a
depuraci´n de los programas.
o
En la actualidad la mayor´ de los programas se escriben en lengua-
ıa
jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas
a
aplicaciones donde se necesite una elevada velocidad o un acceso directo
a los ´rganos del computador; por ejemplo, en los programas traductores
o
o en programas de gesti´n del computador.
o
1.6 Ejercicios
1. Trate de describir con precisi´n mediante frases sencillas algunas tareas
o
cotidianas, como leer un libro o realizar un trayecto en autob´s.
u
2. Dado el algoritmo de Euclides que se menciona en el apartado 1.5.1,
Sean A, B, R ∈ IN.
Mientras B = 0, hacer:
R ← A modulo B
A←B
B←R
Escribir A
trate de seguirlo, utilizando l´piz y papel (por ejemplo, para A = 12 y
a
B = 8). Est´ formulado desde el punto de vista del procesador: cuando se
a
dice “leer A, B”, el procesador debe pedir dos valores para las variables
A y B al usuario; la instrucci´n “mientras b = 0 hacer ...” significa
o
que mientras la condici´n sea cierta hay que realizar las operaciones
o
24. 28 Cap´ ´
ıtulo 1. Conceptos Basicos
comprendidas entre dicha instrucci´n (...) que, en nuestro caso, es una
o
secuencia de tres. La operaci´n “m´dulo” expresa el resto de la divisi´n
o o o
entera, y el s´
ımbolo “←” indica que, tras calcular el resultado de la
expresi´n a su derecha, se retendr´ como el valor de la variable a su
o a
izquierda.
3. Clasifique los siguientes elementos del computador como pertenecientes al
hardware, al software del sistema o al de aplicaciones: pantalla, teclado,
unidad de entrada y salida, programa del sistema operativo, compilador,
procesador de textos, etc.
1.7 Comentarios bibliogr´ficos
a
Existe una gran cantidad de textos de introducci´n a la inform´tica que
o a
se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en
a ne
castellano o traducidos, existen bastantes textos excelentes sobre el tema, con
diversos enfoques.
En [GL86] encontramos un panorama general sobre inform´tica en el que se
a
utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan
como el concepto central de la computaci´n. Se trata de un texto apropiado
o
para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n
e
un libro muy asequible de introducci´n en inform´tica.
o a
[PLT89] trata con gran detalle la estructura f´
ısica de los computadores, por
lo que interesar´ a quienes deseen detenerse en este aspecto de la inform´tica.
a a
Recomendamos [FSV87] a quien desee dirigirse hacia los fundamentos te´ri-o
cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas
a ıa o ıa o
y lenguajes formales).
Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con
´ a
muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em-
ıa
plean de forma ileg´
ıtima, o que se aplican con un sentido equivocado. En [VJ85]
y [MA85] puede consultarse el significado de esos t´rminos.
e
25. Cap´
ıtulo 2
Representaci´n digital de
o
la informaci´n
o
2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Representaci´n digital de los datos
o . . . . . . . . . . . . . . . . 35
2.3 C´digos redundantes . . . . . . . .
o . . . . . . . . . . . . . . . . 49
2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.5 Comentarios bibliogr´ficos . . . . .
a . . . . . . . . . . . . . . . . 57
La representaci´n de la informaci´n en los computadores digitales
o o
persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma-
nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de
o
los que veremos los m´s importantes; y en segundo, asegurarla contra
a
errores durante su almacenamiento o durante las transmisiones, lo que
se consigue incorporando en la codificaci´n el empleo de la redundancia
o
para detectar y corregir dichos errores.
2.1 Conceptos previos
2.1.1 Informaci´n anal´gica y digital
o o
Las magnitudes continuas son las que pueden adoptar los infinitos
valores de un intervalo de n´meros reales, tales como la longitud de un
u
segmento, velocidad, temperatura, intensidad de un sonido, etc.
26. 30 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Las magnitudes discretas tienen naturaleza discontinua, tales como
la longitud (n´mero de s´
u ılabas) de una palabra, capacidad (n´mero de
u
pasajeros) de un veh´
ıculo, etc.
En la pr´ctica, es frecuente que las magnitudes continuas sean trata-
a
das como discretas: el peso de una persona (que se redondea en kilos); la
temperatura (en grados y d´cimas de grado); la longitud de un segmento,
e
medida con un dispositivo de precisi´n hasta los mil´
o ımetros.
En relaci´n con ambos tipos de magnitud se considera la informaci´n
o o
anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo-
o
res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta
o
ultima puede tomar infinitos valores ( IN), en un computador digital la
´
informaci´n es discreta y, adem´s, finita.
o a
En las calculadoras, la digitalizaci´n de variables anal´gicas produce
o o
un efecto de redondeo, que debe ser tenido en cuenta y tratado con-
venientemente para evitar errores de c´lculo (v´ase la secci´n 2.3); en
a e o
el monitor de un ordenador, supone el ajuste de la imagen proyectada
sobre una matriz de puntos.
2.1.2 Unidades de informaci´n en los sistemas digitales
o
La raz´n de ser de un computador es el procesamiento de infor-
o
maci´n. Para poder hablar con propiedad de este procesamiento, debe-
o
mos definir unidades de medida que nos permitan cuantificar de alg´n u
modo la acci´n del computador sobre la informaci´n suministrada. Con-
o o
sideramos las siguientes:
• Bit (BInary digiT ) es la cantidad de informaci´n que puede alma-
o
cenarse en una variable binaria. No hay que confundir el bit con
la variable ni con su valor: una variable binaria es la que puede
tomar dos valores estables: 0 ´ 1, blanco o negro, s´ o no, etc.
o ı
La necesidad de codificar informaciones m´s complejas ha llevado
a
a agrupar varios bits, apareciendo as´ las siguientes unidades:
ı
• El byte u octeto es la cantidad de informaci´n que puede codificarse
o
en 8 bits; representa por tanto 2 8 = 256 valores.
27. 2.1. Conceptos previos 31
• La palabra se define en relaci´n con la m´quina considerada, como
o a
la cantidad de informaci´n que la m´quina puede manejar de una
o a
sola vez. Para evitar equ´ıvocos, se habla de palabras de 8 bits, 16
bits, 32 bits, etc.
• 1 Kbyte = 210 bytes = 1.024 bytes. Se suele llamar kilobyte, aun-
que esto puede resultar equ´
ıvoco, ya que el prefijo “kilo” significa
1.000 (y no 1.024).
• 1 Mbyte = 1.048.576 bytes (220 = 1.0242 ). An´logamente, debe
a
advertirse que “mega” no significa un mill´n en este contexto.
o
2.1.3 Sistemas de numeraci´n posicionales
o
Aunque se conocen sistemas no posicionales, tales como el de nume-
raci´n romana o el sexagesimal, que usamos para medir el tiempo y los
o
a
´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin
o a
duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado
a u
hacia el siglo VIII.
Por otra parte, en el contexto de la inform´tica se usan frecuente-
a
mente sistemas de numeraci´n posicional en bases tales como 2 (ya que
o
el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4
o
bits), etc.
Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa
con el sistema de numeraci´n m´s conocido: el de base 10. Se llama
o a
decimal porque cada cifra o d´
ıgito puede tomar diez posibles valores: del
0 al 9; se llama posicional porque el valor real de cada d´
ıgito depende
de su posici´n.
o
10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100
A la cantidad 10 se le llama base; las potencias de 10 son los pesos
asociados a cada posici´n, y los factores o coeficientes de cada peso son
o
las cifras de la representaci´n. Tambi´n se podr´ haber representado
o e ıa
en forma polin´mica del siguiente modo:
o
10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
28. 32 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
pero la primera forma es la unica donde las cifras son todas menores
´
que la base. En general, esta afirmaci´n adopta la siguiente forma, cuya
o
demostraci´n se incluye al final de este cap´
o ıtulo.
Teorema 2.1 En un sistema de numeraci´n en base b > 1, todo entero
o
N positivo tiene una unica representaci´n de la forma
´ o
N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0
donde 0 ≤ ci < b para todo i = 0, 1, . . . , p
Conversi´n entre sistemas
o
En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0
o u
en base b se obtiene sencillamente sumando los valores reales correspon-
dientes a los diferentes d´
ıgitos:
[cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0
Por ejemplo, 275(8 = 2 ∗ 82 + 7 ∗ 81 + 5 ∗ 80 = 189(10
En segundo lugar, representar el n´mero 241(10 en el sistema de base
u
5, equivale a expresarlo en forma polin´mica con las sucesivas potencias
o
de esa base, siguiendo la idea de la demostraci´n del teorema:
o
241 5 ⇒ 241 = 48 * 5 + 1
1 48 5 ⇒ 48 = 9*5+3
3 9 5 ⇒ 9 = 1*5+4
4 1 ⇒ 1 = 0*5+1
Por lo tanto,
241 = 48 ∗5+1
= (9 ∗ 5 + 3) ∗5+1
= ((1 ∗ 5 + 4) ∗ 5 + 3) ∗5+1
= 1 ∗ 53 + 4 ∗ 52 + 3 ∗ 51 + 1 ∗ 50 = 1431(5
29. 2.1. Conceptos previos 33
Sistemas de numeraci´n m´s usuales
o a
El sistema m´s empleado en electr´nica digital es el de base 2, lla-
a o
mado binario (natural). En inform´tica tienen inter´s los sistemas cuya
a e
base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los
primeros n´meros naturales, expresados en algunos de esos sistemas y
u
en el decimal:
dec. binario octal hexad. dec. binario octal hexad.
0 0 0 0 9 1001 11 9
1 1 1 1 10 1010 12 A
2 10 2 2 11 1011 13 B
3 11 3 3 12 1100 14 C
4 100 4 4 13 1101 15 D
5 101 5 5 14 1110 16 E
6 110 6 6 15 1111 17 F
7 111 7 7 16 10000 20 10
8 1000 10 8 17 10001 21 11
En el sistema hexadecimal se usan los d´ ıgitos 0, . . . , 9, A, . . . F para las
cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por ı
ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los
valores de A y C en el sistema de base 16 son 10 y 12, respectivamente.
Se observa que, en una base cualquiera b, con N cifras (o menos)
es posible expresar bN cantidades distintas; inversamente, para poder
componer C combinaciones distintas se necesita disponer de un n´mero
u
de cifras igual a logb C, redondeado por exceso.
Como consecuencia de lo anterior, cuanto mayor sea la base adoptada
se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo
a u
de cifras; inversamente, cuanto mayor sea la base, es posible usar menos
cifras para expresar una misma cantidad.
30. 34 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Observaci´n
o
La conversi´n de binario en octal o en hexadecimal se puede abreviar
o
del siguiente modo:
11 001 111 010 101 100(2
= 11 001 111 010 101 100
= 3 1 7 2 5 4 = 317254(8
= 1 1001 1110 1010 1100
= 1 9 14 10 12 = 19EAC(16
¿A qu´ se debe el funcionamiento de este mecanismo?
e
Operaciones aritm´ticas en base dos
e
Para las operaciones elementales se usan las tablas correspondientes
a la base de que se trate. Por ejemplo, para el caso binario la tabla de
sumar es la siguiente:
+ 0 1
0 0 1
1 1 10
Y entonces, son v´lidas las reglas conocidas para las operaciones en base
a
diez. Por ejemplo, en el sistema binario natural, tenemos:
1001 100101
+ 1011 − 11011
10100 01010
Para la resta se usa frecuentemente el m´todo del complemento: en
e
lugar de la resta propuesta, se halla la suma correspondiente comple-
mentando el sustraendo (min − sus → min + comp(sus), siendo el com-
plemento (comp) el n´mero resultante de cambiar cada cero por un uno
u
y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por
el arrastre, y sumando una unidad al resultado obtenido:
100101 100101
− 11011 → + 100100
1001001 → 001010
31. ´
2.2. Representacion digital de los datos 35
2.2 Representaci´n digital de los datos
o
En los sistemas digitales, no resulta viable dar una representaci´n
o
v´lida para codificar todos los n´meros; por otra parte, los diversos
a u
sistemas empleados dan diferentes tratamientos a n´meros tan usuales
u
como el uno (seg´n se considere como real o como entero). Estudiaremos
u
diversos convenios para diferentes conjuntos de n´meros, as´ como sus
u ı
limitaciones.
En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.
2.2.1 Representaci´n de los n´ meros enteros
o u
N´ meros enteros positivos
u
Si se considera unicamente n´meros enteros positivos, con N bits de
´ u
espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s
ıa u a
natural de lograrlo consiste en interpretar cada combinaci´n mediante
o
la cantidad que representa en binario. Por ejemplo, con 1 byte (es decir,
N = 8) se representar´ los n´meros 0, . . . , 255 en este sistema.
ıan u
N´ meros enteros con signo. Convenio del signo-magnitud
u
Para representar los n´meros enteros (con signo), el sistema m´s
u a
simple es el convenio de signo-magnitud, consistente en reservar el pri-
mer d´ ıgito binario para codificar el signo (suele representarse el signo
+ con un cero y el − con un uno) y los siguientes N − 1 para el va-
lor absoluto. As´ en este sistema tienen representaci´n las cantidades
ı, o
±0, . . . , ±(2N − 1). En el caso particular de 1 byte, esas cantidades son
−127, . . . , −0, +0, . . . , +127.
En este sistema, la aritm´tica es bastante simple: la suma de canti-
e
dades del mismo signo y la resta de cantidades de distinto signo siguen
la regla b´sica en binario. Para sumar cantidades de distinto signo, o
a
restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del
a a e
complemento.
32. 36 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Se observa el inconveniente de que el cero tiene una doble represen-
taci´n, por lo que el test de la comparaci´n para la igualdad en este
o o
sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos
y valores absolutos necesita dos algoritmos distintos, que no resultan
muy eficientes. Los siguientes sistemas surgen precisamente para tratar
de paliar estas deficiencias.
N´ meros enteros con signo. Complemento restringido
u
Para comprender mejor el funcionamiento de este convenio en bina-
rio, conviene introducirlo primero en base diez. Si consideramos palabras
de N = 2 d´ ıgitos (decimales), es posible representar 102 = 100 canti-
dades distintas. En este convenio se opta por considerar los n´meros u
negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente
modo: los n´meros positivos se representan en decimal natural, mientras
u
que para cada negativo −z se toma la cantidad 99 − z (complemento de
z respecto de 102 − 1, que es la N=2 potencia de la base menos uno).
As´ por ejemplo, tenemos:
ı
repr(29) = 2 9
repr(−29) = 99 − 29 = 7 0
Con este convenio, las cantidades
−49, −48, . . . , −0, 0, 1, . . . , 48, 49
se representan respectivamente mediante
5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9
Aunque se observa el inconveniente de que el cero tiene dos repre-
sentaciones, la ventaja de este convenio consiste en que la suma de dos
n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo,
u
que s´lo se diferencia de la suma de enteros en que el posible arrastre se
o
agrega al resultado final:
+ 23 → 2 3
+ − 15 → + 8 4
+1
1 0 7 → 0 8
33. ´
2.2. Representacion digital de los datos 37
Consideremos ahora esta representaci´n con palabras de N = 4 d´
o ıgitos
binarios: las cantidades representables son
−7, −6, . . . , −0, +0, . . . , +6, +7
→ −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2
que, al complementar las negativas respecto de 1111, resulta:
→ 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111
N´ meros enteros con signo. Complemento aut´ntico
u e
Empezamos nuevamente con la base decimal como punto de partida,
y consideremos tambi´n palabras de longitud N = 2. Ahora se opta por
e
considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de
u
{0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en
u
binario natural, mientras que para cada negativo −z se toma la cantidad
100 − z (complemento de z respecto de 10, que es la base para N = 2).
repr(29) = 2 9
repr(−29) = 100 − 29 = 7 1
Con frecuencia se emplea otra regla equivalente para complementar
los n´meros negativos, consistente en a˜adir una unidad al correspon-
u n
diente complemento restringido.
Con este convenio, las cantidades
−50, −49, . . . , −1, 0, 1, . . . , 48, 49
se representan respectivamente mediante
5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9
Este sistema tiene las mismas ventajas que el anterior, y adem´s el
a
cero se representa de un unico modo.
´
34. 38 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Como en el caso anterior, consideremos ahora la base dos, con pala-
bras de N = 4 d´
ıgitos, donde tienen cabida las cantidades
−8, −7, . . . , −1, +0, . . . , +7
→ −1000(2 , −111(2 , . . . , −1(2 , +0(2 , . . . , +110(2 , +111(2
que, al complementar las negativas respecto de 10000, resulta:
→ 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111.
En este sistema, la suma tambi´n se lleva a cabo con un mismo algo-
e
ritmo, igual al usado para el complemento restringido, pero ignorando
la posible cifra de arrastre:
+ 23 → 2 3
+ − 15 → + 8 5
1 0 8 → 0 8
Funcionamiento de las operaciones aritm´ticas
e
Debe subrayarse que las operaciones anteriores no coinciden con las
aritm´ticas, debido a la posibilidad de que se produzca un desborda-
e
miento; los diferentes sistemas responden ante esta circunstancia de di-
ferentes modos: por ejemplo, ignorando la ultima cifra de arrastre, o
´
interrumpiendo su trabajo para delatar una condici´n de error. Por lo
o
tanto, es necesario prever esta posibilidad y conocer de qu´ modo re-
e
acciona nuestro sistema. Sobre este asunto volveremos m´s adelante,
a
dentro de este mismo cap´ ıtulo.
Formatos de los n´ meros enteros en las computadoras
u
Entre los convenios presentados, el m´s frecuente es el del comple-
a
mento aut´ntico en base dos, llamado simplemente complemento a dos.
e
Ahora bien, depender´ de la longitud de palabra la cantidad de com-
a
binaciones posibles y, por tanto, el rango de enteros considerado. Por
otra parte, aunque ciertos sistemas trabajan con palabras de longitud
variable, lo corriente es optar por uno o varios formatos con tama˜o fijo:
n
simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes).
a ´
35. ´
2.2. Representacion digital de los datos 39
2.2.2 Representaci´n de los n´ meros reales
o u
Debe resaltarse que, en general, s´lo resulta posible representar apro-
o
ximaciones de los n´meros reales mediante n´meros decimales, con s´lo
u u o
unas pocas cifras significativas. En el siguiente apartado estudiaremos
los efectos de este redondeo.
En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.
Convenio con coma fija
Si disponemos de un espacio de N bits para representar un n´mero
u
real, la caracter´
ıstica principal de este convenio es la reserva impl´
ıcita
de algunos bits fijos para la parte decimal, asumi´ndose la coma en una
e
posici´n fija. A su vez, existen los siguientes modos de representaci´n
o o
en coma fija:
• Sistema signo y valor absoluto
En este convenio se reserva un bit para codificar el signo, y del resto
se destina una cantidad fija para representar el valor absoluto de
la parte entera, y los dem´s para la decimal:
a
1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1
.
± p. entera dec.
Si consideramos por ejemplo N = 16, siendo el primer bit el que
codifica el signo, los siguientes 12 los de la parte entera, y los
3 restantes los de la parte decimal, resulta que la representaci´n
o
anterior significar´
ıa
−010010010111.101
= −(210 + 27 + 24 + 22 + 21 + 20 + 2−1 + 2−3 )
= −1175 625.
36. 40 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
• Complemento restringido y complemento aut´ntico
e
Sea D = 3 el n´mero (fijo) de decimales asumidos. La represen-
u
taci´n de un n´mero x, en cualquiera de estos convenios, consiste
o u
en codificar en su lugar la parte entera de x ∗ 23 en el convenio
elegido. La cantidad despreciada al truncar los decimales de x ∗ 23
es menor que 0 125(10 (= 2−3 ).
Por ejemplo, para representar −2 8 en palabras de N = 8 y D = 3,
debemos conformarnos con una aproximaci´n: al ser D = 3, s´lo po-
o o
demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 =
u
2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre-
(10
sentamos −22/8 = −2 75. Comprobamos que esta cantidad es efectiva-
mente m´ltiplo de 0 125, y que el siguiente m´ltiplo (−2 875) excede la
u u
cantidad inicial (−2 8).
• Signo y valor absoluto:
1 1 1 0 0 1 0 1 1 0
2.75 = 2 + + =
2 4 .
± p. entera dec.
• Complemento restringido (8 d´
ıgitos):
11111111
−22 = − → 11101001 = 1 1 1 0 1 0 0 1
10110(2
• Complemento aut´ntico (8 d´
e ıgitos):
100000000
−22 = − → 11101010 = 1 1 1 0 1 0 1 0
10110(2
Convenios con coma flotante
El principal inconveniente de la coma fija consiste en condicionar
el orden de magnitud de las cantidades codificadas. Un sistema m´s a
general deber´ adaptarse a ordenes tan distantes como los de la masa de
a ´
37. ´
2.2. Representacion digital de los datos 41
la tierra y la del atomo. El sistema m´s conocido con esta caracter´
´ a ıstica
es la llamada notaci´n exponencial (o cient´
o ıfica):
140 = +0.14 ∗ 103 = +0.14E3
6.02215 ∗ 1023 = +0.602215E24
0.00000015 = +0.15E − 6
Los convenios con coma flotante funcionan del mismo modo, divi-
diendo la informaci´n sobre una cantidad en tres partes: su signo, su
o
mantisa (es decir, las cifras significativas de mayor orden), y el exponente
(que expresa el orden de magnitud). As´ por ejemplo, consideremos la
ı
siguiente representaci´n en palabras de N bits:
o
• El signo, adscrito al primer bit, donde el uno representa al signo
menos.
• El exponente (z), situado en los siguientes e bits, puede tomar los
valores de {−2e−1 , . . . , 2e−1 − 1}. Frecuentemente se representa
desplazado en +2e−1 unidades:
z ∈ {−2e−1 , . . . , 2e−1 − 1} ⇒ repr(z) ∈ {0, . . . , 2e − 1}
• Para la mantisa quedan M = N − e − 1 bits con lo que, para su
representaci´n, se toman los primeros M d´
o ıgitos de su escritura en
binario natural.
Como ejemplo concreto, consideremos el convenio est´ndar IEEE 754
a
(real con precisi´n simple, o real corto), que es una de las codificaciones
o
de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits,
a o
de los cuales un bit se utiliza para el signo, 8 bits para el exponente
y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco
llamado bit oculto: como el bit m´s significativo de la mantisa es un 1,
a
ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para
e ı
una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un
bit oculto consiste en que se requiere una representaci´n especial para
o
el cero.
38. 42 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
2.2.3 Limitaciones de los sistemas de representaci´n
o
digital de los n´ meros
u
Debido a que los sistemas de codificaci´n considerados est´n inmer-
o a
sos en sistemas finitos, s´lo pueden representar una cantidad finita de
o
elementos distintos. Esta limitaci´n resulta cr´
o ıtica a la hora de repre-
sentar elementos pertenecientes a conjuntos infinitos, como son los de
los n´meros enteros o reales. Como consecuencia, pueden producirse
u
situaciones de error no deseables, por lo cual se hace necesario estudiar
el alcance de esas limitaciones, as´ como la manera de afrontarlas.
ı
Limitaciones en los enteros
En los enteros, las representaciones se limitan a un intervalo reducido
[m´ m´x ], de cardinal no superior a 2n , siendo n el tama˜o (en bits)
ın, a n
de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera
o ı, o u
del rango considerado, se produce el llamado desbordamiento (overflow
en ingl´s).
e
Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con-
o a
figuraciones. Si optamos por el convenio de complementaci´n aut´ntica,
o e
el intervalo considerado ser´ [−8, 7]. Veamos qu´ ocurre al sumar 5 y 6.
a e
5 → 0101
+ 6 → + 0110
1011 → −5
El comportamiento de las operaciones de suma y resta en el sistema
de complementaci´n aut´ntica para una representaci´n de n bits se puede
o e o
describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las
ı: o
operaciones de suma y resta en este sistema, ∀x, y ∈ [−2n−1 , 2n−1 − 1],
tenemos:
(x ± y + 2n ) ,
si x ± y < −2n−1
x ± y = (x ± y) , si x ± y ∈ [−2n−1 , 2n−1 − 1]
(x ± y − 2n ) , si x ± y > 2n−1 − 1
Para paliar en cierta medida esta limitaci´n, es frecuente incorpo-
o
rar tipos de datos correspondientes a rangos de enteros m´s amplios
a