SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
www.miceminfo.net




                   l o
                 ue er
               ig m
             M o
            n nR
          Sa rvi
        B a
       G M
      U c.
       Li




Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
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 m
principios de los años 70 por Dennis Ritchie, e implementado por primera vez en un DEC PDP-11,




                                 M o
bajo el sistema operativo UNIX. El siguiente trabajo de investigación estudia los orígenes,




                                n nR
características, desarrollo e importancia del lenguaje C además de su estrecha relación con el
sistema UNIX. Primero que nada, es vital comentar una breve reseña histórica del lenguaje C,




                              Sa rvi
desde su diseño a creación para luego llegar a su consolidación como uno de los lenguajes
favoritos de programadores alrededor de todo el mundo. Luego, de manera sistemática y objetiva,



                            B a
                           G M
se definen los tipos de datos existentes en el lenguaje C para después estudiar las principales
caracterí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
                           Li

manera anexada se incluyen ejemplos básicos de estas rutinas, los que facilitan la comprensión y
estudio de este lenguaje. Dentro de las características de este lenguaje, se describe la inmensa
gama de operadores y sentencias, además de los tipos de datos, con lo que se hace un detallado
aná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
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 er
programación de sistemas, y más específicamente de sistemas operativos. En efecto, las




                                   ig m
primeras versiones de UNIX se implementaron en ensamblador, pero Dennis Ritchie reescribió




                                 M o
el código de UNIX ya existente en C, para facilitar su mantenimiento y transportabilidad. Hoy en




                                n nR
día sólo una pequeña parte del núcleo de UNIX se sigue escribiendo en ensamblador, estas
son, las partes que se comunican íntimamente con el hardware. Este lenguaje está inspirado




                              Sa rvi
en el lenguaje B escrito por Ken Thompson en 1970 con intención de decodificar el UNIX, que




                            B a
en la fase de arranque está escrito en ensamblador, en vistas a su transportabilidad a otras

                           G M
máquinas. B era un lenguaje evolucionado e independiente de la máquina, inspirado en el
lenguaje 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
                           Li

dicho lenguaje. La novedad y ventaja comparativa que proporcionó el lenguaje C sobre B en el
momento de su creación y desarrollo fue el diseño de tipos y estructuras de datos. Los tipos
bá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 longitud
menor a la del int), long (enteros de longitud mayor a la del int) y enumeraciones. Los tipos
estructurados básicos de C son las estructuras, las uniones y los arrays. Estos permiten la
definición y declaración de tipos derivados de mayor complejidad.



                    Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
www.miceminfo.net




     Las instrucciones de control de flujo de C son las habituales de la programación
estructurada: if, for, while, swith-case, todas incluidas en su predecesor BCPL. El lenguaje C




                                         l o
                                       ue er
incluye 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 m
la 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 rvi
ser llamada recursivamente.
     Una de las peculiaridades y más grandes ventajas de C es su riqueza de operadores.



                              B a
                             G M
Puede decirse que prácticamente dispone de un operador para cada una de las posibles
operaciones 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
                             Li

propiamente dicho, si no que C las realiza a través de un preprocesador el cual actúa justo
antes 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 fichero
fuente).
     Sin embargo, el lenguaje C, que ha sido pensado para ser altamente transportable y para
programar lo improgramable, presenta inconvenientes al igual que todos los otros lenguajes:




                      Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
www.miceminfo.net




      Carece de instrucciones de entrada/salida de instrucciones para manejo de
cadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la




                                       l o
                                     ue er
consiguiente pérdida de transportabilidad.




                                   ig m
      La excesiva libertad en la escritura de los programas puede llevar a errores en la




                                 M o
programació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 las
expresiones 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 M
más complejo que uno de bajo nivel como el ensamblador, ni tampoco menos evolucionado y en
definitiva 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
                           Li

puedan especificar en él. Se dice que C es un lenguaje de nivel medio porque “aúna” elementos
de 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, que
define el conjunto de valores que puede tomar una variable, y el conjunto de operaciones que se
pueden efectuar sobre ella. Algunos tipos son fácilmente comprensibles intuitivamente, como los
enteros 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
www.miceminfo.net




los lenguajes de alto nivel controlan el uso de los distintos tipos de datos; o sea, ciertas
operaciones sólo se pueden realizar sobre ciertos tipos; esto se denomina tipificación. Sin




                                        l o
                                      ue er
embargo, este control puede efectuarse rígidamente, como en Pascal o Ada, o ser aplicado
menos estrictamente, como en C; por esto, se dice que C es un lenguaje débilmente tipificado.




                                    ig m
Esto conlleva que en C se pueda realizar cualquier transformación de datos, la mayoría incluso de




                                  M o
                                 n nR
forma implícita. Por ejemplo, el paso del tipo carácter al tipo entero se realiza implícitamente en
cualquier expresión de C. Otra característica que C comparte con los otros lenguajes de alto nivel




                               Sa rvi
es 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 M
directa 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 bajo
nivel, C hereda también algunos de sus problemas. La mayoría de estas dificultades provienen
del hecho de que C es un lenguaje pensado por y para programadores; su diseño considera la
eficiencia del programa final más que la facilidad de desarrollo. De hecho, es un lenguaje que se
lee difícilmente, al permitir “expresiones idiomáticas” particulares, que fomentan la escritura de
código difícilmente comprensible para los demás. Además, este lenguaje no implementa ningún
tipo 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
www.miceminfo.net




aquello que se le pide, aunque parezca extraño, procede de un programador experimentado, que
sabe exactamente lo que quiere; esto conlleva que ciertas tareas que en otros lenguajes de más




                                       l o
                                     ue er
alto nivel son largas se puedan realizar rápidamente en C, pero también que ciertos errores
comunes que son localizados en otros lenguajes en tiempo de compilación puedan quedar




                                   ig m
ocultos durante mucho tiempo en programa en C. En definitiva, se puede decir que C proporciona




                                 M o
                                n nR
un gran control al desarrollador sobre cada aspecto de su programa, pero éste debe ser
manejado cuidadosamente.




                              Sa rvi
Un 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
                           Li

soluciona 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 para
tareas secundarias o repetitivas. En este aspecto, C es similar a otros muchos lenguajes como
Pascal, Ada, Modula, etc. sin embargo, estrictamente hablando, C no es un lenguaje estructurado
en bloques. El motivo es que no se puede declarar una función local a otra función, es decir que
no 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
www.miceminfo.net




los lenguajes de alto nivel ofrecen un gran número de construcciones condicionales y bucles. En
estos lenguajes se limita o se elimina el uso de goto y de las etiquetas correspondientes, lo que




                                        l o
                                      ue er
era posible en programas anteriores, como por ejemplo, en Pascal. De hecho, en aquellos
lenguajes que lo permiten, como C, el uso de goto está muy mal visto; éste es uno de los criterios




                                    ig m
que se usan habitualmente para juzgar si un código está bien estructurado o no. En efecto, el uso




                                  M o
                                 n nR
de saltos con goto tiene tendencia a producir un “código espaghetti”, que es difícil de leer y de
mantener. Por el contrario, en los lenguajes estructurados se usan construcciones más




                               Sa rvi
funcionales como if y bucles for y while, que clarifican la estructura del programa.




                             B a
                            G M
El 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
                            Li

programas en C constan de uno o más ficheros con procedimientos y declaraciones. Estos
ficheros se pueden compilar por separado, generándose ficheros objeto independientes, que
el montador (o linker) de enlaces ha de combinar para generar el programa ejecutable. La
automatización de este proceso se realiza mediante una herramienta que dependerá del
sistema en el que se realice la aplicación.
      En UNIX, esta herramienta es (make). Los ficheros de las aplicaciones codificadas en C
se 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
www.miceminfo.net




implementación del módulo y los .h (cabeceras o header) contienen la información sintáctica y
semántica sobre el uso de la interfase del módulo. Los ficheros .h pueden ser dependientes de




                                       l o
                                     ue er
la aplicación o propios del sistema operativo. Contienen un bloque de comentarios, sentencias
de inclusión de otros ficheros .h, definiciones de constantes y tipos, y declaraciones de




                                   ig m
funciones. 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ón
main. En este sistema existen varias funciones main, debido a que cada una se corresponde




                              Sa rvi
con la ejecución de un programa, es decir, un proceso del sistema. Ligado a lo anterior, se
corresponderá ahora a explicar el funcionamiento del compilador de C en UNIX, el cual es




                            B a
                           G M
utilizado para la obtención de los ficheros ejecutables necesarios para el funcionamiento de la
parte 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
                           Li

específica. Este compilador además proporciona un entorno de ejecución adecuado en el que
se pueden llevar a cabo operaciones de entrada/salida, acceso a ficheros y a otras interfaces
del sistema operativo. En el sistema operativo UNIX, el comando utilizado para compilar
programas en C es cc. Este proceso de compilación consta de 5 fases:




                    Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel
www.miceminfo.net




1) Preprocesamiento: es realizado por el programa cpp (preprocesador de C). Maneja
definiciones de constantes, inclusión de ficheros, gestión de macros, compilación condicional,




                                        l o
                                      ue er
etc.




                                    ig m
2) Compilación: tomando como entrada los resultados de la fase anterior, el programa ccom




                                  M o
realiza chequeos sintácticos, el parsing, y la generación del código ensamblador.




                                 n nR
3) 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 rvi
contiene código binario y genera la información que va a ser utilizada por el linker/cargador.




                             B a
5) Cargado: el programa de cargado constituye un linker/cargador. Combina todos los ficheros

                            G M
objetos 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 el
correspondiente 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 un
solo paso, entonces el fichero .o se borra automáticamente.




                     Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel

Más contenido relacionado

La actualidad más candente

Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Rayco Paucar
 
Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++bastard1
 
historia de de lenguaje de programacion
historia de de lenguaje de programacionhistoria de de lenguaje de programacion
historia de de lenguaje de programacionreychivas_07
 
PRESENTACION LENGUAJE C
 PRESENTACION LENGUAJE C  PRESENTACION LENGUAJE C
PRESENTACION LENGUAJE C Niel Velasquez
 
Programacion en C
Programacion en CProgramacion en C
Programacion en CDHERNAN1993
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacionFausto Orozco
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++Sylvert
 
historia del lenguaje c++.c
historia del lenguaje c++.chistoria del lenguaje c++.c
historia del lenguaje c++.cRayco Paucar
 
Historia de lenguaje c
Historia de lenguaje cHistoria de lenguaje c
Historia de lenguaje cines1307
 
Introduccion al lenguaje_c
Introduccion al lenguaje_cIntroduccion al lenguaje_c
Introduccion al lenguaje_cNelson1914
 

La actualidad más candente (14)

Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
 
Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++Mi lenguaje de programación de preferencia c++
Mi lenguaje de programación de preferencia c++
 
historia de de lenguaje de programacion
historia de de lenguaje de programacionhistoria de de lenguaje de programacion
historia de de lenguaje de programacion
 
PRESENTACION LENGUAJE C
 PRESENTACION LENGUAJE C  PRESENTACION LENGUAJE C
PRESENTACION LENGUAJE C
 
Programacion en C
Programacion en CProgramacion en C
Programacion en C
 
Programacion 1 feli
Programacion 1 feliProgramacion 1 feli
Programacion 1 feli
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++
 
historia del lenguaje c++.c
historia del lenguaje c++.chistoria del lenguaje c++.c
historia del lenguaje c++.c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Historia de lenguaje c
Historia de lenguaje cHistoria de lenguaje c
Historia de lenguaje c
 
Introduccion al lenguaje_c
Introduccion al lenguaje_cIntroduccion al lenguaje_c
Introduccion al lenguaje_c
 

Destacado

Lenguaje, caracteristicas y funcuiones
Lenguaje, caracteristicas y  funcuionesLenguaje, caracteristicas y  funcuiones
Lenguaje, caracteristicas y funcuionesSirlogynall
 
Características del lenguaje (1)
Características del lenguaje (1)Características del lenguaje (1)
Características del lenguaje (1)Minho Shawol
 
Tema 1 repres mentales alumnos parte 1
Tema 1 repres mentales alumnos parte 1Tema 1 repres mentales alumnos parte 1
Tema 1 repres mentales alumnos parte 1snieva
 
Relación entre el pensamiento y el lenguaje
Relación entre el pensamiento y el lenguajeRelación entre el pensamiento y el lenguaje
Relación entre el pensamiento y el lenguajeLiliana Henríquez
 
Historia Y Dialectos De La Lengua Castellana
Historia Y Dialectos De La Lengua CastellanaHistoria Y Dialectos De La Lengua Castellana
Historia Y Dialectos De La Lengua Castellanaguestccc509
 
PSICOLOGÍA del LENGUAJE
PSICOLOGÍA del LENGUAJEPSICOLOGÍA del LENGUAJE
PSICOLOGÍA del LENGUAJEAna Balcarce
 
Semana 1 Características del lenguaje Norma y habla
Semana 1 Características del lenguaje Norma y hablaSemana 1 Características del lenguaje Norma y habla
Semana 1 Características del lenguaje Norma y hablaLuis Carrasco
 
Psicología educativa
Psicología educativaPsicología educativa
Psicología educativaRene Bazaldua
 

Destacado (10)

Lenguaje, caracteristicas y funcuiones
Lenguaje, caracteristicas y  funcuionesLenguaje, caracteristicas y  funcuiones
Lenguaje, caracteristicas y funcuiones
 
Características del lenguaje (1)
Características del lenguaje (1)Características del lenguaje (1)
Características del lenguaje (1)
 
Tema 1 repres mentales alumnos parte 1
Tema 1 repres mentales alumnos parte 1Tema 1 repres mentales alumnos parte 1
Tema 1 repres mentales alumnos parte 1
 
Relación entre el pensamiento y el lenguaje
Relación entre el pensamiento y el lenguajeRelación entre el pensamiento y el lenguaje
Relación entre el pensamiento y el lenguaje
 
El lenguaje - Psicología
El lenguaje - PsicologíaEl lenguaje - Psicología
El lenguaje - Psicología
 
Lenguaje (Psicologia)
Lenguaje (Psicologia)Lenguaje (Psicologia)
Lenguaje (Psicologia)
 
Historia Y Dialectos De La Lengua Castellana
Historia Y Dialectos De La Lengua CastellanaHistoria Y Dialectos De La Lengua Castellana
Historia Y Dialectos De La Lengua Castellana
 
PSICOLOGÍA del LENGUAJE
PSICOLOGÍA del LENGUAJEPSICOLOGÍA del LENGUAJE
PSICOLOGÍA del LENGUAJE
 
Semana 1 Características del lenguaje Norma y habla
Semana 1 Características del lenguaje Norma y hablaSemana 1 Características del lenguaje Norma y habla
Semana 1 Características del lenguaje Norma y habla
 
Psicología educativa
Psicología educativaPsicología educativa
Psicología educativa
 

Similar a Orígenes e historia del lenguaje C

Lenguaje c
Lenguaje cLenguaje c
Lenguaje cAle2417
 
Lenguaje c josequerales
Lenguaje c josequeralesLenguaje c josequerales
Lenguaje c josequeralesleonardo213200
 
C ++ Estatutos ciclos
C ++ Estatutos ciclosC ++ Estatutos ciclos
C ++ Estatutos ciclosernest1960
 
Poner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacionPoner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacionlupitagarcia07
 
Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180Luiscarrodeguas
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)pedrolrc
 
Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de chek_sk8
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesJhon Jairo C Q
 
Lenguaje C Version Final 1.pptx
Lenguaje C Version Final 1.pptxLenguaje C Version Final 1.pptx
Lenguaje C Version Final 1.pptxLaloLpez15
 

Similar a Orígenes e historia del lenguaje C (20)

Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje c 1
Lenguaje c 1Lenguaje c 1
Lenguaje c 1
 
ENSAYO SOBRE EL LENGUAJE C
ENSAYO SOBRE EL LENGUAJE C ENSAYO SOBRE EL LENGUAJE C
ENSAYO SOBRE EL LENGUAJE C
 
Lenguaje c josequerales
Lenguaje c josequeralesLenguaje c josequerales
Lenguaje c josequerales
 
C ++ Estatutos ciclos
C ++ Estatutos ciclosC ++ Estatutos ciclos
C ++ Estatutos ciclos
 
Poner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacionPoner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacion
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180
 
Informe.
Informe.Informe.
Informe.
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de c
 
Informe lpi
Informe lpiInforme lpi
Informe lpi
 
Lenguaje de programación C
Lenguaje de programación CLenguaje de programación C
Lenguaje de programación C
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantes
 
Lenguaje C Version Final 1.pptx
Lenguaje C Version Final 1.pptxLenguaje C Version Final 1.pptx
Lenguaje C Version Final 1.pptx
 
Lenguaje c1
Lenguaje c1Lenguaje c1
Lenguaje c1
 
C#
C#C#
C#
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 

Más de Marvin Romero

Procesos e Hilos, Sistemas Operativos
Procesos e Hilos, Sistemas OperativosProcesos e Hilos, Sistemas Operativos
Procesos e Hilos, Sistemas OperativosMarvin Romero
 
Gestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas OperativosGestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas OperativosMarvin Romero
 
Guía de Ejercicios de Fundamentos de Programación
Guía de Ejercicios de Fundamentos de ProgramaciónGuía de Ejercicios de Fundamentos de Programación
Guía de Ejercicios de Fundamentos de ProgramaciónMarvin Romero
 
Guia de Ejercicios Fundamentos de Programacion
Guia de Ejercicios Fundamentos de ProgramacionGuia de Ejercicios Fundamentos de Programacion
Guia de Ejercicios Fundamentos de ProgramacionMarvin Romero
 
Todo sobre Sistemas Operativos
Todo sobre Sistemas OperativosTodo sobre Sistemas Operativos
Todo sobre Sistemas OperativosMarvin Romero
 
Estructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoEstructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoMarvin Romero
 
Clasificación de los Sistemas Operativos
Clasificación de los Sistemas OperativosClasificación de los Sistemas Operativos
Clasificación de los Sistemas OperativosMarvin Romero
 
Introducción a los Sistemas Operativos
Introducción a los Sistemas OperativosIntroducción a los Sistemas Operativos
Introducción a los Sistemas OperativosMarvin Romero
 
Importancia de los Sistemas Operativos
Importancia de los Sistemas OperativosImportancia de los Sistemas Operativos
Importancia de los Sistemas OperativosMarvin Romero
 
Máquina de von neumann
Máquina de von neumannMáquina de von neumann
Máquina de von neumannMarvin Romero
 
Estructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CEstructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CMarvin Romero
 
Variables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CVariables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CMarvin Romero
 
Importancia de la programación estructurada opt
Importancia de la programación estructurada optImportancia de la programación estructurada opt
Importancia de la programación estructurada optMarvin Romero
 
Jornalizacion Sistemas Operativos I-2012
Jornalizacion Sistemas Operativos I-2012Jornalizacion Sistemas Operativos I-2012
Jornalizacion Sistemas Operativos I-2012Marvin Romero
 
Jornalizacion Fundamentos de Programación I-2012
Jornalizacion Fundamentos de Programación I-2012Jornalizacion Fundamentos de Programación I-2012
Jornalizacion Fundamentos de Programación I-2012Marvin Romero
 
Metodologías y Técnicas de Diseño de Software
Metodologías y Técnicas de Diseño de SoftwareMetodologías y Técnicas de Diseño de Software
Metodologías y Técnicas de Diseño de SoftwareMarvin Romero
 
Especificación de requerimientos, Ingenieria de Software
Especificación de requerimientos, Ingenieria de SoftwareEspecificación de requerimientos, Ingenieria de Software
Especificación de requerimientos, Ingenieria de SoftwareMarvin Romero
 
Planificacion y gestion de proyectos primera parte
Planificacion y gestion de proyectos primera partePlanificacion y gestion de proyectos primera parte
Planificacion y gestion de proyectos primera parteMarvin Romero
 
VB. NET manejo estructurado de excepciones
VB. NET manejo estructurado de excepcionesVB. NET manejo estructurado de excepciones
VB. NET manejo estructurado de excepcionesMarvin Romero
 

Más de Marvin Romero (20)

Procesos e Hilos, Sistemas Operativos
Procesos e Hilos, Sistemas OperativosProcesos e Hilos, Sistemas Operativos
Procesos e Hilos, Sistemas Operativos
 
Gestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas OperativosGestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas Operativos
 
Guía de Ejercicios de Fundamentos de Programación
Guía de Ejercicios de Fundamentos de ProgramaciónGuía de Ejercicios de Fundamentos de Programación
Guía de Ejercicios de Fundamentos de Programación
 
Guia de Ejercicios Fundamentos de Programacion
Guia de Ejercicios Fundamentos de ProgramacionGuia de Ejercicios Fundamentos de Programacion
Guia de Ejercicios Fundamentos de Programacion
 
Todo sobre Sistemas Operativos
Todo sobre Sistemas OperativosTodo sobre Sistemas Operativos
Todo sobre Sistemas Operativos
 
Estructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoEstructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativo
 
Clasificación de los Sistemas Operativos
Clasificación de los Sistemas OperativosClasificación de los Sistemas Operativos
Clasificación de los Sistemas Operativos
 
Introducción a los Sistemas Operativos
Introducción a los Sistemas OperativosIntroducción a los Sistemas Operativos
Introducción a los Sistemas Operativos
 
Importancia de los Sistemas Operativos
Importancia de los Sistemas OperativosImportancia de los Sistemas Operativos
Importancia de los Sistemas Operativos
 
Máquina de von neumann
Máquina de von neumannMáquina de von neumann
Máquina de von neumann
 
Estructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje CEstructuras de Control en Lenguaje C
Estructuras de Control en Lenguaje C
 
Variables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CVariables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en C
 
Importancia de la programación estructurada opt
Importancia de la programación estructurada optImportancia de la programación estructurada opt
Importancia de la programación estructurada opt
 
Jornalizacion Sistemas Operativos I-2012
Jornalizacion Sistemas Operativos I-2012Jornalizacion Sistemas Operativos I-2012
Jornalizacion Sistemas Operativos I-2012
 
Jornalizacion Fundamentos de Programación I-2012
Jornalizacion Fundamentos de Programación I-2012Jornalizacion Fundamentos de Programación I-2012
Jornalizacion Fundamentos de Programación I-2012
 
Metodologías y Técnicas de Diseño de Software
Metodologías y Técnicas de Diseño de SoftwareMetodologías y Técnicas de Diseño de Software
Metodologías y Técnicas de Diseño de Software
 
Especificación de requerimientos, Ingenieria de Software
Especificación de requerimientos, Ingenieria de SoftwareEspecificación de requerimientos, Ingenieria de Software
Especificación de requerimientos, Ingenieria de Software
 
Cocomo ejemplo
Cocomo ejemploCocomo ejemplo
Cocomo ejemplo
 
Planificacion y gestion de proyectos primera parte
Planificacion y gestion de proyectos primera partePlanificacion y gestion de proyectos primera parte
Planificacion y gestion de proyectos primera parte
 
VB. NET manejo estructurado de excepciones
VB. NET manejo estructurado de excepcionesVB. NET manejo estructurado de excepciones
VB. NET manejo estructurado de excepciones
 

Último

La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 

Último (20)

La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 

Orígenes e historia del lenguaje C

  • 1. www.miceminfo.net l o ue er ig m M o n nR Sa rvi B a G M U c. Li Lic. 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 m principios de los años 70 por Dennis Ritchie, e implementado por primera vez en un DEC PDP-11, M o bajo el sistema operativo UNIX. El siguiente trabajo de investigación estudia los orígenes, n nR características, desarrollo e importancia del lenguaje C además de su estrecha relación con el sistema UNIX. Primero que nada, es vital comentar una breve reseña histórica del lenguaje C, Sa rvi desde su diseño a creación para luego llegar a su consolidación como uno de los lenguajes favoritos de programadores alrededor de todo el mundo. Luego, de manera sistemática y objetiva, B a G M se definen los tipos de datos existentes en el lenguaje C para después estudiar las principales caracterí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 Li manera anexada se incluyen ejemplos básicos de estas rutinas, los que facilitan la comprensión y estudio de este lenguaje. Dentro de las características de este lenguaje, se describe la inmensa gama de operadores y sentencias, además de los tipos de datos, con lo que se hace un detallado aná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 er programación de sistemas, y más específicamente de sistemas operativos. En efecto, las ig m primeras versiones de UNIX se implementaron en ensamblador, pero Dennis Ritchie reescribió M o el código de UNIX ya existente en C, para facilitar su mantenimiento y transportabilidad. Hoy en n nR día sólo una pequeña parte del núcleo de UNIX se sigue escribiendo en ensamblador, estas son, las partes que se comunican íntimamente con el hardware. Este lenguaje está inspirado Sa rvi en el lenguaje B escrito por Ken Thompson en 1970 con intención de decodificar el UNIX, que B a en la fase de arranque está escrito en ensamblador, en vistas a su transportabilidad a otras G M máquinas. B era un lenguaje evolucionado e independiente de la máquina, inspirado en el lenguaje 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 Li dicho lenguaje. La novedad y ventaja comparativa que proporcionó el lenguaje C sobre B en el momento de su creación y desarrollo fue el diseño de tipos y estructuras de datos. Los tipos bá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 longitud menor a la del int), long (enteros de longitud mayor a la del int) y enumeraciones. Los tipos estructurados básicos de C son las estructuras, las uniones y los arrays. Estos permiten la definició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ón estructurada: if, for, while, swith-case, todas incluidas en su predecesor BCPL. El lenguaje C l o ue er incluye 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 m la 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 rvi ser llamada recursivamente. Una de las peculiaridades y más grandes ventajas de C es su riqueza de operadores. B a G M Puede decirse que prácticamente dispone de un operador para cada una de las posibles operaciones 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 Li propiamente dicho, si no que C las realiza a través de un preprocesador el cual actúa justo antes 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 fichero fuente). Sin embargo, el lenguaje C, que ha sido pensado para ser altamente transportable y para programar 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 de cadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la l o ue er consiguiente pérdida de transportabilidad. ig m  La excesiva libertad en la escritura de los programas puede llevar a errores en la M o programació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 las expresiones 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 M más complejo que uno de bajo nivel como el ensamblador, ni tampoco menos evolucionado y en definitiva 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 Li puedan especificar en él. Se dice que C es un lenguaje de nivel medio porque “aúna” elementos de 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, que define el conjunto de valores que puede tomar una variable, y el conjunto de operaciones que se pueden efectuar sobre ella. Algunos tipos son fácilmente comprensibles intuitivamente, como los enteros 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.net los lenguajes de alto nivel controlan el uso de los distintos tipos de datos; o sea, ciertas operaciones sólo se pueden realizar sobre ciertos tipos; esto se denomina tipificación. Sin l o ue er embargo, este control puede efectuarse rígidamente, como en Pascal o Ada, o ser aplicado menos estrictamente, como en C; por esto, se dice que C es un lenguaje débilmente tipificado. ig m Esto conlleva que en C se pueda realizar cualquier transformación de datos, la mayoría incluso de M o n nR forma implícita. Por ejemplo, el paso del tipo carácter al tipo entero se realiza implícitamente en cualquier expresión de C. Otra característica que C comparte con los otros lenguajes de alto nivel Sa rvi es 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 M directa 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 bajo nivel, C hereda también algunos de sus problemas. La mayoría de estas dificultades provienen del hecho de que C es un lenguaje pensado por y para programadores; su diseño considera la eficiencia del programa final más que la facilidad de desarrollo. De hecho, es un lenguaje que se lee difícilmente, al permitir “expresiones idiomáticas” particulares, que fomentan la escritura de código difícilmente comprensible para los demás. Además, este lenguaje no implementa ningún tipo 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.net aquello que se le pide, aunque parezca extraño, procede de un programador experimentado, que sabe exactamente lo que quiere; esto conlleva que ciertas tareas que en otros lenguajes de más l o ue er alto nivel son largas se puedan realizar rápidamente en C, pero también que ciertos errores comunes que son localizados en otros lenguajes en tiempo de compilación puedan quedar ig m ocultos durante mucho tiempo en programa en C. En definitiva, se puede decir que C proporciona M o n nR un gran control al desarrollador sobre cada aspecto de su programa, pero éste debe ser manejado cuidadosamente. Sa rvi Un 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 Li soluciona 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 para tareas secundarias o repetitivas. En este aspecto, C es similar a otros muchos lenguajes como Pascal, Ada, Modula, etc. sin embargo, estrictamente hablando, C no es un lenguaje estructurado en bloques. El motivo es que no se puede declarar una función local a otra función, es decir que no 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.net los lenguajes de alto nivel ofrecen un gran número de construcciones condicionales y bucles. En estos lenguajes se limita o se elimina el uso de goto y de las etiquetas correspondientes, lo que l o ue er era posible en programas anteriores, como por ejemplo, en Pascal. De hecho, en aquellos lenguajes que lo permiten, como C, el uso de goto está muy mal visto; éste es uno de los criterios ig m que se usan habitualmente para juzgar si un código está bien estructurado o no. En efecto, el uso M o n nR de saltos con goto tiene tendencia a producir un “código espaghetti”, que es difícil de leer y de mantener. Por el contrario, en los lenguajes estructurados se usan construcciones más Sa rvi funcionales como if y bucles for y while, que clarifican la estructura del programa. B a G M El 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 Li programas en C constan de uno o más ficheros con procedimientos y declaraciones. Estos ficheros se pueden compilar por separado, generándose ficheros objeto independientes, que el montador (o linker) de enlaces ha de combinar para generar el programa ejecutable. La automatización de este proceso se realiza mediante una herramienta que dependerá del sistema en el que se realice la aplicación. En UNIX, esta herramienta es (make). Los ficheros de las aplicaciones codificadas en C se 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.net implementación del módulo y los .h (cabeceras o header) contienen la información sintáctica y semántica sobre el uso de la interfase del módulo. Los ficheros .h pueden ser dependientes de l o ue er la aplicación o propios del sistema operativo. Contienen un bloque de comentarios, sentencias de inclusión de otros ficheros .h, definiciones de constantes y tipos, y declaraciones de ig m funciones. 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ón main. En este sistema existen varias funciones main, debido a que cada una se corresponde Sa rvi con la ejecución de un programa, es decir, un proceso del sistema. Ligado a lo anterior, se corresponderá ahora a explicar el funcionamiento del compilador de C en UNIX, el cual es B a G M utilizado para la obtención de los ficheros ejecutables necesarios para el funcionamiento de la parte 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 Li específica. Este compilador además proporciona un entorno de ejecución adecuado en el que se pueden llevar a cabo operaciones de entrada/salida, acceso a ficheros y a otras interfaces del sistema operativo. En el sistema operativo UNIX, el comando utilizado para compilar programas 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.net 1) Preprocesamiento: es realizado por el programa cpp (preprocesador de C). Maneja definiciones de constantes, inclusión de ficheros, gestión de macros, compilación condicional, l o ue er etc. ig m 2) Compilación: tomando como entrada los resultados de la fase anterior, el programa ccom M o realiza chequeos sintácticos, el parsing, y la generación del código ensamblador. n nR 3) 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 rvi contiene código binario y genera la información que va a ser utilizada por el linker/cargador. B a 5) Cargado: el programa de cargado constituye un linker/cargador. Combina todos los ficheros G M objetos 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 el correspondiente 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 un solo paso, entonces el fichero .o se borra automáticamente. Lic. Marvin Romero _:_:_ marfonline@gmail.com _:_:_ UGB, San MIguel