Your SlideShare is downloading. ×
  • Like
Historia y caracteristicas del lenguaje c opt
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Historia y caracteristicas del lenguaje c opt

  • 3,399 views
Published

Historia y caracteristicas del lenguaje C

Historia y caracteristicas del lenguaje C

Published in Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,399
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
27
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. www.miceminfo.net l o ue er ig m M o n nR Sa rvi B a G M U c. LiLic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 2. www.miceminfo.net Introducción. l o ue er El lenguaje C se define como un lenguaje de programación de alto nivel, desarrollado a ig mprincipios de los años 70 por Dennis Ritchie, e implementado por primera vez en un DEC PDP-11, M obajo el sistema operativo UNIX. El siguiente trabajo de investigación estudia los orígenes, n nRcaracterísticas, desarrollo e importancia del lenguaje C además de su estrecha relación con elsistema UNIX. Primero que nada, es vital comentar una breve reseña histórica del lenguaje C, Sa rvidesde su diseño a creación para luego llegar a su consolidación como uno de los lenguajesfavoritos de programadores alrededor de todo el mundo. Luego, de manera sistemática y objetiva, B a G Mse definen los tipos de datos existentes en el lenguaje C para después estudiar las principalescaracterísticas y procedimientos que se deben seguir al programar en esta poderosa U c.herramienta. Es decir, el saber cómo compilar, depurar, ejecutar, editar y enlazar un programa. De Limanera anexada se incluyen ejemplos básicos de estas rutinas, los que facilitan la comprensión yestudio de este lenguaje. Dentro de las características de este lenguaje, se describe la inmensagama de operadores y sentencias, además de los tipos de datos, con lo que se hace un detalladoanálisis de C, su relación con UNIX y las razones de su permanencia en el tiempo. Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 3. www.miceminfo.net Historia y características principales. l o En un principio, C nació en los laboratorios Bell de AT&T como un lenguaje de ue erprogramación de sistemas, y más específicamente de sistemas operativos. En efecto, las ig mprimeras versiones de UNIX se implementaron en ensamblador, pero Dennis Ritchie reescribió M oel código de UNIX ya existente en C, para facilitar su mantenimiento y transportabilidad. Hoy en n nRdía sólo una pequeña parte del núcleo de UNIX se sigue escribiendo en ensamblador, estasson, las partes que se comunican íntimamente con el hardware. Este lenguaje está inspirado Sa rvien el lenguaje B escrito por Ken Thompson en 1970 con intención de decodificar el UNIX, que B aen la fase de arranque está escrito en ensamblador, en vistas a su transportabilidad a otras G Mmáquinas. B era un lenguaje evolucionado e independiente de la máquina, inspirado en ellenguaje BCPL concedido por Martin Richard en 1967. Luego, en 1972, Dennis Ritchie toma el U c.relevo y modifica el lenguaje B, creando el lenguaje C y reescribiendo el UNIX basándose en Lidicho lenguaje. La novedad y ventaja comparativa que proporcionó el lenguaje C sobre B en elmomento de su creación y desarrollo fue el diseño de tipos y estructuras de datos. Los tiposbásicos de datos eran char (carácter), int (entero), float (reales en simple precisión) y double(reales en doble precisión). Posteriormente se le añadieron los tipos short (enteros de longitudmenor a la del int), long (enteros de longitud mayor a la del int) y enumeraciones. Los tiposestructurados básicos de C son las estructuras, las uniones y los arrays. Estos permiten ladefinición y declaración de tipos derivados de mayor complejidad. Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 4. www.miceminfo.net Las instrucciones de control de flujo de C son las habituales de la programaciónestructurada: if, for, while, swith-case, todas incluidas en su predecesor BCPL. El lenguaje C l o ue erincluye también punteros y funciones. Los argumentos de las funciones se pasan por valor,esto es copiando su valor, lo cual hace que no se modifiquen los valores de los argumentos en ig mla llamada. M o n nR Cuando se desea modificar los argumentos en la llamada, éstos se pasan por referencia,es decir, se pasan las direcciones de los argumentos. Por otra parte, cualquier función puede Sa rviser llamada recursivamente. Una de las peculiaridades y más grandes ventajas de C es su riqueza de operadores. B a G MPuede decirse que prácticamente dispone de un operador para cada una de las posiblesoperaciones en código máquina. Sin embargo, hay además toda una serie de operaciones U c.posibles de realizar con el lenguaje C pero que no están incluidas en el compilador Lipropiamente dicho, si no que C las realiza a través de un preprocesador el cual actúa justoantes de cada compilación. Las dos operaciones más importantes en este ámbito son #define(directriz de sustitución simbólica o de definición) e #include (directriz de inclusión en el ficherofuente). Sin embargo, el lenguaje C, que ha sido pensado para ser altamente transportable y paraprogramar lo improgramable, presenta inconvenientes al igual que todos los otros lenguajes: Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 5. www.miceminfo.net  Carece de instrucciones de entrada/salida de instrucciones para manejo decadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la l o ue erconsiguiente pérdida de transportabilidad. ig m  La excesiva libertad en la escritura de los programas puede llevar a errores en la M oprogramación que, por ser correctos sintácticamente no se detectan a simple vista. n nR  Por otra parte, las precedencias de los operadores convierten a veces lasexpresiones en pequeños rompecabezas. Sa rvi B a Los detractores de C resaltan que este lenguaje es de nivel medio. Esto no significa que sea G Mmás complejo que uno de bajo nivel como el ensamblador, ni tampoco menos evolucionado y endefinitiva peor diseñado que uno de alto nivel, como Pascal o su derivado Ada. El “nivel” de un U c.lenguaje no viene dado por su dificultad o su utilidad, si no que por las operaciones que se Lipuedan especificar en él. Se dice que C es un lenguaje de nivel medio porque “aúna” elementosde los lenguajes de alto nivel con las posibilidades que ofrece el lenguaje ensamblador. En estos lenguajes de alto nivel tiene especial importancia el concepto de tipo de dato, quedefine el conjunto de valores que puede tomar una variable, y el conjunto de operaciones que sepueden efectuar sobre ella. Algunos tipos son fácilmente comprensibles intuitivamente, como losenteros o los reales, pero otros son más oscuros, como el tipo de datos vacío (void) de C. Todos Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 6. www.miceminfo.netlos lenguajes de alto nivel controlan el uso de los distintos tipos de datos; o sea, ciertasoperaciones sólo se pueden realizar sobre ciertos tipos; esto se denomina tipificación. Sin l o ue erembargo, este control puede efectuarse rígidamente, como en Pascal o Ada, o ser aplicadomenos estrictamente, como en C; por esto, se dice que C es un lenguaje débilmente tipificado. ig mEsto conlleva que en C se pueda realizar cualquier transformación de datos, la mayoría incluso de M o n nRforma implícita. Por ejemplo, el paso del tipo carácter al tipo entero se realiza implícitamente encualquier expresión de C. Otra característica que C comparte con los otros lenguajes de alto nivel Sa rvies la posibilidad de crear nuevos tipos de datos a partir de los ya existentes. B a Por otro lado, C hereda capacidades del lenguaje ensamblador como la manipulación G Mdirecta de mapas de bits, punteros, y otros tipos que usa el hardware internamente. Es por este U c.motivo que C está particularmente bien adaptado a la programación de sistemas. Li Sin embargo, a pesar de combinar muchas de las ventajas de los lenguajes de alto y bajonivel, C hereda también algunos de sus problemas. La mayoría de estas dificultades provienendel hecho de que C es un lenguaje pensado por y para programadores; su diseño considera laeficiencia del programa final más que la facilidad de desarrollo. De hecho, es un lenguaje que selee difícilmente, al permitir “expresiones idiomáticas” particulares, que fomentan la escritura decódigo difícilmente comprensible para los demás. Además, este lenguaje no implementa ningúntipo de comprobación de errores en tiempo de ejecución; o sea, el compilador asume que Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 7. www.miceminfo.netaquello que se le pide, aunque parezca extraño, procede de un programador experimentado, quesabe exactamente lo que quiere; esto conlleva que ciertas tareas que en otros lenguajes de más l o ue eralto nivel son largas se puedan realizar rápidamente en C, pero también que ciertos errorescomunes que son localizados en otros lenguajes en tiempo de compilación puedan quedar ig mocultos durante mucho tiempo en programa en C. En definitiva, se puede decir que C proporciona M o n nRun gran control al desarrollador sobre cada aspecto de su programa, pero éste debe sermanejado cuidadosamente. Sa rviUn lenguaje estructurado B a G M En un lenguaje estructurado como C, el programa se organiza en una serie de bloques de U c.código independientes que se llaman los unos a los otros. Este método de programación Lisoluciona algunos de los problemas más recurrentes que se le pueden plantear al programador:en vez de tener que seguir atentamente el flujo de ejecución a lo largo de un inmenso programa,se puede controlar la ejecución en el bloque principal, que va llamando a los otros bloques paratareas secundarias o repetitivas. En este aspecto, C es similar a otros muchos lenguajes comoPascal, Ada, Modula, etc. sin embargo, estrictamente hablando, C no es un lenguaje estructuradoen bloques. El motivo es que no se puede declarar una función local a otra función, es decir queno se puede definir una función que sólo se pueda llamar desde el interior de otra. Por otro lado, Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 8. www.miceminfo.netlos lenguajes de alto nivel ofrecen un gran número de construcciones condicionales y bucles. Enestos lenguajes se limita o se elimina el uso de goto y de las etiquetas correspondientes, lo que l o ue erera posible en programas anteriores, como por ejemplo, en Pascal. De hecho, en aquelloslenguajes que lo permiten, como C, el uso de goto está muy mal visto; éste es uno de los criterios ig mque se usan habitualmente para juzgar si un código está bien estructurado o no. En efecto, el uso M o n nRde saltos con goto tiene tendencia a producir un “código espaghetti”, que es difícil de leer y demantener. Por el contrario, en los lenguajes estructurados se usan construcciones más Sa rvifuncionales como if y bucles for y while, que clarifican la estructura del programa. B a G MEl Lenguaje C y el Sistema UNIX. Como fue mencionado al principio, el lenguaje C se desarrolló para tener un lenguaje de U c.alto nivel en el que se pudiera programar el Sistema Operativo UNIX. Por lo mismo, los Liprogramas en C constan de uno o más ficheros con procedimientos y declaraciones. Estosficheros se pueden compilar por separado, generándose ficheros objeto independientes, queel montador (o linker) de enlaces ha de combinar para generar el programa ejecutable. Laautomatización de este proceso se realiza mediante una herramienta que dependerá delsistema en el que se realice la aplicación. En UNIX, esta herramienta es (make). Los ficheros de las aplicaciones codificadas en Cse dividen en dos tipos, según su nombre acabe en: c o en .h. Los ficheros .c contienen la Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 9. www.miceminfo.netimplementación del módulo y los .h (cabeceras o header) contienen la información sintáctica ysemántica sobre el uso de la interfase del módulo. Los ficheros .h pueden ser dependientes de l o ue erla aplicación o propios del sistema operativo. Contienen un bloque de comentarios, sentenciasde inclusión de otros ficheros .h, definiciones de constantes y tipos, y declaraciones de ig mfunciones. Debe recordarse eso sí de que no se permite declarar variables en un fichero .h. M o n nR En toda aplicación existe además un módulo principal, que es el que define la funciónmain. En este sistema existen varias funciones main, debido a que cada una se corresponde Sa rvicon la ejecución de un programa, es decir, un proceso del sistema. Ligado a lo anterior, secorresponderá ahora a explicar el funcionamiento del compilador de C en UNIX, el cual es B a G Mutilizado para la obtención de los ficheros ejecutables necesarios para el funcionamiento de laparte práctica del sistema. La función de este compilador no es sólo traducir programas en U c.lenguajes de alto nivel a código máquina para que sean ejecutados en una computadora Liespecífica. Este compilador además proporciona un entorno de ejecución adecuado en el quese pueden llevar a cabo operaciones de entrada/salida, acceso a ficheros y a otras interfacesdel sistema operativo. En el sistema operativo UNIX, el comando utilizado para compilarprogramas en C es cc. Este proceso de compilación consta de 5 fases: Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
  • 10. www.miceminfo.net1) Preprocesamiento: es realizado por el programa cpp (preprocesador de C). Manejadefiniciones de constantes, inclusión de ficheros, gestión de macros, compilación condicional, l o ue eretc. ig m2) Compilación: tomando como entrada los resultados de la fase anterior, el programa ccom M orealiza chequeos sintácticos, el parsing, y la generación del código ensamblador. n nR3) Optimización: es opcional. Proporciona al generador de código una mayor velocidad.4) Ensamblado: el programa ensamblador asm se utiliza para crear un fichero objeto que Sa rvicontiene código binario y genera la información que va a ser utilizada por el linker/cargador. B a5) Cargado: el programa de cargado constituye un linker/cargador. Combina todos los ficheros G Mobjetos y enlaza (o linca) éste a todas las subrutinas de librerías necesarias para producir un U c.programa ejecutable. Li El comando cc se encarga de tomar un fichero .c como entrada, generando elcorrespondiente fichero .o (objeto). A partir de un fichero .s o ensamblado, se produce este fichero.o. luego, este fichero .o se convierte en un fichero ejecutable. Si esta compilación se realiza en unsolo paso, entonces el fichero .o se borra automáticamente. Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel