Descargar

Programación 2004

Enviado por c-zar


    1. ¿Qué es una computadora?
    2. Organización de la computadora
    3. Procesamiento por lotes, multiprogramación y tiempo compartido
    4. Computación personal, computación distribuida y computación
    5. Lenguajes de máquina, lenguajes ensambladores y lenguaje de alto nivel
    6. La historia de C
    7. La biblioteca estándar de C
    8. Otros lenguajes de alto nivel
    9. Programación estructurada
    10. Los fundamentos del entorno de C
    11. Claves generales en la implementación de C
    12. C Concurrente
    13. Programación orientada a objetos C++

    ¿Qué es una computadora?

    1. Una computadora es un dispositivo capaz de ejecutar cálculos y tomar decisiones lógicas a velocidades millones y a veces miles de millones de veces más rápidas de lo que pueden hacerlo los seres humanos. Por ejemplo, muchas de las computadoras personales de hoy día, pueden ejecutar decenas de millones de adiciones por segundo. Una persona utilizando una calculadora de escritorio pudiera requerir décadas para completar el mismo número de cálculos de lo que puede ejecutar una computadora personal poderosa en sólo un segundo. (Puntos a considerar: ¿cómo sabría si la persona sumó correctamente las cifras?, ¿cómo sabría si la computadora sumó correctamente las cifras?) Hoy día las supercomputadoras más rápidas pueden ejecutar cientos de miles de millones de sumas por segundo ¡aproximadamente laníos cálculos podrían ejecutar cientos de miles de personas en un ano! y en los laboratorios de investigación ya están en funcionamiento computadoras de trillones de instrucciones por segundo.

      Las computadoras procesan datos bajo el control de un conjunto de instrucciones que se conocen como programas de computación. Estos programas de computación guían a la computadora a Ira ves de conjuntos ordenados de acciones, especificados por personas a las que se conoce como programadores de computadora.

      Los varios dispositivos (como el teclado, la pantalla, los discos, la memoria y las unidades procesadoras) que conforman un sistema de computación se conocen como el hardware. Los programas de computación que se ejecutan en una computadora se conocen como el software. Los costos del hardware han venido reduciéndose de forma drástica en años recientes, hasta el punto que las computadoras personales se han convertido en mercancía. Desafortunadamente, los costos de desarrollo de software han ido creciendo continuamente, conforme los programadores cada día desarrollan aplicaciones más poderosas y complejas, sin la capacidad de hacer mejorías paralelas en la tecnología del desarrollo del software.

    2. Organización de la computadora

    Si no se toman en cuenta las diferencias en apariencia física, virtualmente todas las computadoras pueden ser concebidas como divididas en seis unidades lógicas o secciones. Estas son:

    1. Unidad de entrada. Esta es la sección "de recepción" de la computadora. Obtiene información (datos y programas de computadora) a partir de varios dispositivos de entrada y pone esta información a la disposición de las otras unidades, de tal forma que la información pueda ser procesada. La mayor parte de la información se introduce en las computadoras hoy día a través de teclados de tipo maquina de escribir.
    2. Unidad de salida. Esta es la sección "de embarques" de la computadora. Toma la información que ha sido procesada por la computadora y la coloca en varios dispositivos de salida para dejar la información disponible para su uso fuera de la computadora. La mayor parte de la información sale de las computadoras hoy día mediante despliegue en pantallas o mediante impresión en papel.
    3. Unidad de memoria. Esta es la sección de "almacén" de rápido acceso y de capacidad relativamente baja de la computadora. Retiene información que ha sido introducida a través de la unidad de entrada, de tal forma que esta información pueda estar de inmediato disponible para su proceso cuando sea necesario. La unidad de memoria también retiene información ya procesada, hasta que dicha información pueda ser colocada por la unidad de salida en dispositivos de salida. La unidad de memoria se conoce a menudo como memoria o memoria primaria.
    4. Unidad aritmética y lógica (ALU). Esta es la sección de "fabricación" de la computadora. Es responsable de la ejecución de cálculos como es suma, resta, multiplicación y división. Contiene los mecanismos de decisión que permiten que la computadora, por ejemplo, compare dos elementos existentes de la unidad de memoria para determinar si son o no iguales.
    5. Unidad de procesamiento central (CPU). Esta es la sección "administrativa" de la computadora. Es el coordinador de la computadora que es responsable de la supervisión de la operación de las demás secciones. El CPU le indica a la unidad de entrada cuando debe leerse la información y colocarse en la unidad de memoria, le indica al ALU cuándo deberá utilizar información de la unidad de memoria en cálculos, y le indica a la unidad de salida cuándo enviar información de la unidad de memoria a ciertos dispositivos de salida.
    6. Unidad de almacenamiento secundario. Esta es la sección de "almacén" a largo plazo de alta capacidad de la computadora. Los programas o los datos que no se estén utilizando de forma activa por otras unidades, están por lo regular colocados en dispositivos de almacenamiento secundario (como discos) en tanto se necesiten otra vez, es posible que sean horas, días, meses o inclusive años después.
    1. Procesamiento por lotes, multiprogramación y tiempo compartido

    1. Las primeras computadoras sólo eran capaces de ejecutar un trabajo o tarea a la vez. Esta forma de operación de las computadoras, a menudo se conoce como procesamiento por lotes de un solo usuario. La computadora ejecuta un programa a la vez al procesar datos en grupos o en lotes. En estos sistemas primarios, los usuarios por lo general entregaban sus trabajos al centro de cómputo en paquetes de tarjetas perforadas. Los usuarios a menudo tenían que esperar horas e inclusive días, antes que se les devolvieran impresiones a sus escritorios.

      Conforme las computadoras se hicieron más poderosas, se hizo evidente que el procesamiento por lotes de un solo usuario rara vez utilizaba los recursos de la computadora de manera eficazmente. En vez de ello, se pensó que muchos trabajos o tareas podían hacer que compartieran los recursos de la computadora para obtener mejor utilización. Esto se conoce como multiprogramación. La multiprogramación implica la operación "simultánea" de muchos trabajos en una computadora. La computadora comparte sus recursos entre los trabajos que compiten por su atención. En el caso de los primeros sistemas de multiprogramación, los usuarios aún entregaban los trabajos en paquetes de tárjelas perforadas, y tenían que esperar horas o días para los resultados.

      En los años 60, varios grupos en la industria y en las universidades se hicieron pioneros en el concepto de tiempo compartido. El tiempo compartido es un caso especial de la multiprogramación, en el cual los usuarios tienen acceso a la computadora a través de dispositivos de entrada, salida o terminales. En un sistema típico de computadora a tiempo compartido, pudieran existir docenas e inclusive cíenlos de usuarios, compartiendo a la vez la computadora. La computadora de hecho, no ejecuta las órdenes de todos los usuarios en forma simultánea. En vez de ello, ejecuta una pequeña porción del trabajo de un usuario, y de inmediato pasa a darle servicio al siguiente. La computadora hace esto tan aprisa, que puede darle servicio a cada usuario varias veces por segundo. Por lo tanto, los usuarios parece que estuvieran ejecutando su trabajo de forma simultanea.

      cliente/servidor

      En 1977, Apple Computer popularizó el fenómeno de la computación personal. Al principio, era el sueño de los aficionados a la computación. Las computadoras se hicieron lo bastante económicas para que las personas las adquirieran para su uso personal o de negocios. En 1981, IBM, el fabricante mas grande del inundo do computadoras, introdujo la computadora personal IBM. Literalmente de la noche a In mañana, la computación personal se legitimizó en negocios, industrias y organizaciones gubernamentales.

      Pero estas computadoras eran unidades "independientes", las personas hacían el trabajo en sus propias máquinas y a continuación transportaban discos de ida y vuelta para compartir la información. Aunque las primeras computadoras personales no eran lo bastante poderosas para compartirse entre varios usuarios, estas máquinas podían ser enlazadas juntas en redes de computación, a veces mediante líneas telefónicas y otras en redes de área local dentro de una organización. Esto condujo al fenómeno de la computación distribuida, en la cual la carga de trabajo de computación de una organización, en vez de ser ejecutada de manera estrictamente en alguna instalación central de cómputo, se distribuye sobre la red a los lugares donde en realidad se ejecuta el trabajo de la organización. Las computadoras personales eran lo bastante poderosas para manejar las necesidades de cómputo de usuarios individuales, así como para manejar las tareas básicas de comunicación, de pasar la información electrónicamente de ida y vuelta.

      Hoy día las computadoras personales más potentes son tan poderosas como las máquinas de un millón de dólares de hace una década. Las máquinas de escritorio más poderosas que se conocen como estaciones de trabajo proporcionan a usuarios individuales enormes capacidades. La información puede compartirse, con facilidad a través de redes de cómputo, donde algunas computadoras denominadas servidores de archivo ofrecen un almacén común de programas y de datos, que pueden ser utilizados por computadoras cliente distribuidas a lodo lo largo de la red, y de ahí el termino de computación cliente/servicio. C y C++ se han convertido en los lenguajes de elección para escribir software para sistemas operativos, para redes de computación y para aplicaciones distribuidas cliente/servidor.

    2. Computación personal, computación distribuida y computación

      Los programadores escriben instrucciones en diferentes lenguajes de programación, algunos comprensibles de forma directa por la computadora y otros que requieren pasos intermedios de traducción. Existen hoy día cientos de lenguajes de computadora. Estos pueden ser categorizados en tres tipos generales:

      1-Lenguajes maquina

      2-Lenguaje ensambladores

      3-Lenguajes de alto nivel

      Cualquier computadora solo puede entender directamente su propio lenguaje de maquina. El lenguaje de maquina es "el lenguaje natural"de una computadora particular. Esta relacionado íntimamente con el diseño hardware. Los lenguajes de maquina por lo general consisten, en cadenas de números (es decir reducidas a unos y a ceros)que instruyen en las computadoras para que ejecuten sus operaciones más elementales. Los lenguajes de maquina son dependientes de la maquina, es decir, en particular pueden ser utilizados en solo un tipo de computadoras. Son difíciles de manejar por los seres humanos.

      Conforme las computadoras se hicieron más populares, se hizo aparente que la programación en lenguaje de maquina era demasiado lenta y tediosa. En vez de de utilizar las cadenas de números que las computadoras pueden entender de forma directa, los programadores empezaron a hacer abreviaturas similares al ingles. Estas abreviaturas similares al ingles formaron la base de los los lenguajes de ensambladores. Se desarrollaron programas de traducción denominados ensambladores para convertir los lenguajes ensamblador a lenguaje de maquina a la velocidad de las computadoras.

      Para acelerar el proceso de programación de desarrollaron lenguajes de alto nivel, en los cuales se podían escribir simples enunciados para poder llevar a cabo tareas sustanciales. Los programadores de traducción que convierten los programas de lenguaje alto nivel al lenguaje de maquina se llaman compiladores. Los programas de alto nivel le permite a los programadores escribir instrucciones que parecen prácticamente como el ingles de todos los días y contiene notaciones matemáticas. Un programa de nomina escrito en un lenguaje de alto nivel pudiera contener un enunciado como el siguiente:

      Grosspay = basepay + overtimepay

    3. Lenguajes de máquina, lenguajes ensambladores y lenguaje de alto nivel

    1. Los lenguajes de alto nivel son mucho más deseables desde el punto de vista del programador que los lenguajes de maquina o ensambladores. C y C++ son, de entre los lenguajes de alto nivel, los más poderosos y más utilizados.

      C evoluciono a partir de dos lenguajes previos, BCPI, y B.BCPL fue desarrollado en 1967 por Martín Richards, como lenguaje para escribir software y compiladores de sistemas operativos.

      El lenguaje C fue derivado del lenguaje B por Dennis Ritchie y al inicio se implanto una computadora PDP-11 de DEC. C al inicio de hizo muy conocido como lenguaje de desarrollo de sistema operativo UNÍS . Hoy DIA, virtualmente todos los sistemas principales están escritos en C y/o C++.

      Con un diseño cuidadoso, es posible escribir programas en C que sean portátiles hacia la mayor parte de las computadoras.

      Hacia fines de los 70, C había evolucionado a lo que hoy se conoce como C "tradicional". La publicación en 1978 del libro de Kernighan y de Ritchie, The C Programming Language , atrajo gran atención sobre este lenguaje..

      La Expansión rápida de C trajo consigo muchas variantes. Estas eran similares, pero a menudo no eran compatibles.

      Dado que C es un lenguaje independiente del hardware y ampliamente disponible, las aplicaciones que están escritas en C pueden ejecutarse con poca o ninguna modificación en una amplia gama de sistemas distino de computo.

    2. La historia de C

      Los programas C consisten de módulos o piezas que se denominan funciones. Usted puede programar todas las funciones que necesita para formar un programa C, pero la mayor parte de los programadores de C aprovechan una gran recopilación de funciones existentes, que se conocen como Biblioteca estándar C. Para aprender el "universo" C, de hecho existen dos partes. El primero es aprender el lenguaje C mismo, y el segundo aprender como utilizar las funciones de la Biblioteca estándar C.

    3. La biblioteca estándar de C

      Se han desarrollado cientos de lenguajes de alto nivel, pero solo unos pocos han alcanzado una amplia aceptación. FORTRAN fue desarrollado por IBM entre 1954 y 1957. FORTRAN es aun muy utilizado.

      COBOL fue desarrollado en 1959 por un grupo de fabricantes de computadoras y de usuarios industriales y de gobierno. Hoy DIA mas de la mitad del software de negocios se programa aun en COBOL. PASCAL fue diseñado casi al mismo tiempo que C. Se concibió para uso académico,

    4. Otros lenguajes de alto nivel

      Durante los años 60, el desarrollo de software se encotro con severas dificultades. Los programas de entrega del software se retrasaban, sus costos excedían en gran medida los presupuestos, y los productos terminados no eran confiables. La actividad de investigación de los años 60 dio como resultado la evolución de la programación estructurada- un método disciplinado de escribir programas que sean claros, que se demuestre que son correctos y fáciles de modificar.

      Uno de los resultados más tangibles de esta investigación, fue el desarrollo en 1971 hecho por el profesor Nicklaus Wirth del lenguaje de programación Pascal. Pascal fue diseñado par4a la enseñanza de la programación estructurada en entorno académicos, y se convirtió con rapidez en el lenguaje introductorio de programación de la mayor parte de las universidades.

      ADA fue desarrollado bajo el patrocinio del Departamento de Defensa de los Estados Unidos (DOD) durante los años 70 y principios de los 80.

      DOD deseaba un solo lenguaje que pudiera llenar sus objetivos. Pascal fue seleccionado como base, pero el lenguaje final ADA.

      A Lady Lovelace se le da por lo general crédito de haber escrito el primer programa de computación del mundo a principios de 1800. Una capacidad importante de Ada se conoce como multitareas.

      Otros lenguajes muy utilizados de alto nivel que hemos analizado incluyendo C y C++ permiten al programador escribir programas que solo ejecuten una actividad a la vez,

    5. Programación estructurada

      Todos los sistemas de C consisten, de tres partes: el entorno, el lenguaje y la biblioteca estandar C.

      Los programas C casi siempre pasan a través de 6 fases para su ejecución. Estas fases son: Editar, procesar, compilar; enlazar, cargar y ejecutar.

      La primera fase consiste en editar un archivo.

      El programa a continuación se almacena en un dispositivo de almacenamiento secundario, como seria un disco. Los nombres de archivo de los programas C deben terminar con la extensión.c.

    6. Los fundamentos del entorno de C

      Como C es un lenguaje bastante difícil, muchas veces los programadores con experiencia toman esta particularidad para generar formas muy complicadas y extrañas de este lenguaje. Esto en realidad es una mala práctica de programación; ya que hace que los programas sean difíciles de probar y depurar. Por eso, para mantener la claridad de los programas que hacemos debemos guiarnos por algunas buenas prácticas.

      1. Práctica sana de programación
      2. Escribir los programas de una manera simple y sencilla. Esto se conoce como KIS (del inglés "keep it simple"). NO "le saque punta al lenguaje" intentando "rarezas"

        Para mantener la portabilidad de los programas escritos en C, aunque puede resultar difícil por que existen algunas sutilezas del lenguaje del ANSI C que no lo hacen compatible con versiones anteriores así como con versiones posteriores a este tipo de lenguaje. Por lo que nuevamente para que exista la mayor portabilidad del programa escrito se debe mantener simple.

      3. Sugerencia de portabilidad

        Hay que leer los manuales de la versión C que se está utilizando y tener en cuenta la gran cantidad de características que C contiene y estar seguro de estarlas utilizando de forma correcta.

      4. Práctica sana de programación 2
      5. Práctica sana de programación 3

      Su computadora y su compilador son buenos maestros. Si no está seguro de cómo funciona una característica de C, escriba un programa de muestra con la característica, compile y ejecute el programa y vea qué es lo que ocurre. La práctica es la base de la buena programación.

    7. Claves generales en la implementación de C
    8. C Concurrente

    1. Otras versiones de C se han desarrollado tras continuos esfuerzos, como ser en los laboratorios Bell que desarrollaron la forma C Concurrente, un superconjunto de C que incluye capacidades de especificación de actividades múltiples en paralelo. Este tipo de lenguajes y las funciones de sistemas operativos que dan soporte a paralelismo de aplicaciones a aplicaciones de usuarios, se harán cada vez más populares en esta década conforme vaya aumentando el uso de multiprocesadores

    2. Programación orientada a objetos C++

    Otro superconjunto de C es C++, que fue desarrollado por Stroustrup en los laboratorios Bell. C++ Proporciona un nuevo número de características que engalanan el lenguaje C. Pero la gran característica es la programación orientada a objetos.

    Los objetos son componentes de software reutilizable que modelan elementos del mundo real. Se crean este tipo de versiones por la busqueda de nuevos software que sean rápidos, correctos y económicos, porque la demanda de este tipo de software es muy grande.

    Los desarrolladores están descubriendo que, utilizando este tipo de programación orientada a objetos, se logra que los grupos de desarrollo de software sean de 10 a100 veces más productivos que antes con las antiguas técnicas de programación.

    Se lograron desarrollar muchos lenguajes orientados a objetos pero el más popular de nuestra época tiende a ser C++. Claro está que lo más conveniente es primero aprender C para luego estudiar C++

    César Affonso

    BACHILLERATO

    TECNOLÓGICO DE INFORMATICA