La Importancia Del Lenguaje C
La Importancia Del Lenguaje C
La Importancia Del Lenguaje C
Ir a la navegaci�nIr a la b�squeda
Commons-emblem-issue.svg
En este art�culo se detectaron varios problemas, por favor, ed�talo para mejorarlo:
No tiene una redacci�n neutral. Por favor, discute este problema en la discusi�n.
Necesita referencias adicionales para su verificaci�n.
Existen dudas o desacuerdos sobre la exactitud de su redacci�n.
Por favor, debate este problema en la p�gina de discusi�n.
Podr�a contener informaci�n desactualizada.
Podr�a ser dif�cil de entender para lectores interesados en el tema.
Estas deficiencias fueron encontradas el 4 de mayo de 2019.
Puedes avisar al redactor principal pegando lo siguiente en su p�gina de discusi�n:
{{sust:Aviso PA|C (lenguaje de programaci�n)|enmara�ado|noneutral|referencias}}
~~~~
Para el libro, v�ase El lenguaje de programaci�n C.
Para otros usos de este t�rmino, v�ase C (desambiguaci�n).
C
The C Programming Language logo.svg
Gedit hello world.png
Desarrollador(es)
Dennis Ritchie y Laboratorios Bell
Informaci�n general
Extensiones comunes .h .c
Paradigma Imperativo (procedural), estructurado
Apareci� en 1972
Dise�ado por Dennis Ritchie
�ltima versi�n estable C11 (diciembre de 2011)
Sistema de tipos D�bil, est�tico
Implementaciones GCC, Intel C, entre muchas m�s.
Dialectos Cyclone, Unified Parallel C, Split-C, Cilk, C*
Influido por
B (BCPL, CPL), ALGOL 68,1?:201-208
�ndice
1 Filosof�a
2 Caracter�sticas
2.1 Propiedades
2.2 Precauciones que se debe tener por ser un lenguaje de bajo nivel
3 Historia
3.1 Desarrollo inicial
3.2 El C de Kernighan y Ritchie
3.3 ANSI C e ISO C
3.3.1 Palabras reservadas de ANSI-C
3.4 C99
3.5 C11
3.6 C embebido
3.7 C18
4 Lenguajes derivados de C
5 Proceso de compilaci�n
5.1 Ejemplo de c�digo
6 Herramientas de programaci�n
7 Aplicabilidad
7.1 Aplicaciones embebidas
8 Bibliotecas C
9 V�ase tambi�n
10 Referencias
11 Enlaces externos
Filosof�a
Uno de los objetivos de dise�o del lenguaje C es que solo sean necesarias unas
pocas instrucciones en lenguaje m�quina para traducir cada elemento del lenguaje,
sin que haga falta un soporte intenso en tiempo de ejecuci�n. Es muy posible
escribir C a bajo nivel de abstracci�n; de hecho, C se us� como intermediario entre
diferentes lenguajes.
Caracter�sticas
Commons-emblem-issue.svg
En esta secci�n se detectaron varios problemas, para mejorarla, pulsa [editar]
junto a su t�tulo:
No tiene una redacci�n neutral. Por favor, discute este problema en la discusi�n.
Necesita referencias adicionales para su verificaci�n.
Existen dudas o desacuerdos sobre la exactitud de su redacci�n.
Por favor, debate este problema en la p�gina de discusi�n.
Estas deficiencias fueron encontradas el 4 de mayo de 2019.
Puedes avisar al redactor principal pegando lo siguiente en su p�gina de discusi�n:
{{sust:Aviso PA|C (lenguaje de programaci�n)|noneutral|referencias}} ~~~~
Propiedades
N�cleo del lenguaje simple, con funcionalidades a�adidas importantes, como
funciones matem�ticas y de manejo de archivos, proporcionadas por bibliotecas.
Es un lenguaje estructurado, i.e. tiene estructuras de control y tipos de datos
estructurados definidos por el programador a partir de los tipos at�micos t�picos y
mediante arreglos, estructuras, uniones y apuntadores, incluidos los apuntadores a
funci�n.
En su primera edici�n no hab�a advertencias sobre asignar a una variable un valor
un tipo distinto. Por lo que hab�a un programa llamado lint que detectaba este tipo
de errores. Actualmente los compiladores pueden detectar inconsistencias de tipos y
otros errores.
Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir
macros e incluir m�ltiples archivos de c�digo fuente.
Acceso a memoria de bajo nivel mediante el uso de apuntadores o punteros.
Manejo de Interrupciones mediante la biblioteca signal.
Un conjunto reducido de palabras clave.
El llamado a funciones es por valor. Aunque se pueden pasar apuntadores a variables
para hacer llamados por referencia.
Distintos tipos de almacenamiento que permiten un dise�o modular.
La palabra clave static permite encapsular variables y funciones.
Lenguaje muy eficiente puesto que es posible utilizar sus caracter�sticas de bajo
nivel para realizar implementaciones �ptimas.
Se dise�� como un lenguaje de programaci�n de sistemas port�til.
Es muy poco lo que requiere uso de ensamblador, lo que permiti� portar Unix y otros
sistemas operativos a distintos equipos.
Por esta raz�n es muy importante que los reci�n iniciados adopten buenas pr�cticas
a la hora de escribir en C y manejar la memoria, como por ejemplo un uso intensivo
de indentaci�n y conocer a fondo todo lo que implica el manejo de punteros y
direcciones de memoria.
stack.push(val);
Mientras que en C se podr�a escribir:
push(stack, val);
Donde el argumento stack es un puntero a una struct equivalente al puntero this de
C++, que es un puntero a un objeto. La limitaci�n de esto es que al no ser
nativamente orientado a objetos no permite a�adir polimorfismo a la encapsulaci�n,
donde una serie de clases superiores utilizan funcionalidad desconociendo las
clases inferiores que las implementan. Forzosamente, en alg�n punto de las clases
superiores habr� un if comprobando la pertenencia del objeto a distintas subclases,
impidiendo la abstracci�n de las clases superiores respecto a las inferiores.Al
igual que esto se le declaran las variables a cualquier operaci�n de C++.
Historia
Desarrollo inicial
Ken Thompson (izquierda) con Dennis Ritchie (derecha, el inventor del lenguaje de
programaci�n C)
El desarrollo inicial de C se llev� a cabo en los Laboratorios Bell de AT&T entre
1969 y 1973; seg�n Dennis Ritchie, el periodo m�s creativo tuvo lugar en 1972.1? Se
le dio el nombre "C" porque muchas de sus caracter�sticas fueron tomadas de un
lenguaje anterior llamado "B".
Hay muchas leyendas acerca del origen de C y el sistema operativo con el que est�
�ntimamente relacionado, Unix. Algunas de ellas son:
El C de Kernighan y Ritchie
En 1978, Ritchie y Brian Kernighan publicaron la primera edici�n de El lenguaje de
programaci�n C, tambi�n conocido como La biblia de C. Este libro fue durante a�os
la especificaci�n informal del lenguaje.2?:2 El lenguaje descrito en este libro
recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R
C" (La segunda edici�n del libro cubre el est�ndar ANSI C, descrito m�s abajo).
power(a,b)
int a, b;
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}
Ejemplo de la nueva definici�n:
En 1990, el est�ndar ANSI (con algunas modificaciones menores) fue adoptado por la
Organizaci�n Internacional para la Estandarizaci�n (ISO) en el est�ndar ISO/IEC
9899:1990. Esta versi�n se conoce a veces como C90. No obstante, "C89" y "C90" se
refieren en esencia al mismo lenguaje.
Uno de los objetivos del proceso de estandarizaci�n del ANSI C fue producir una
extensi�n al C de Kernighan y Ritchie, incorporando muchas funcionalidades no
oficiales. Sin embargo, el comit� de estandarizaci�n incluy� tambi�n muchas
funcionalidades nuevas, como prototipos de funci�n, y un preprocesador mejorado.
Tambi�n se cambi� la sintaxis de la declaraci�n de par�metros para hacerla
semejante a la empleada habitualmente en C++:
main(argc, argv)
int argc;
char **argv;
{
...
}
pas� a ser:
# if __STDC__
extern int getopt(int, char * const *, const char *);
# else
extern int getopt();
# endif
Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo, en lugar
de "#ifdef __STDC__" porque algunos compiladores le asignan el valor cero a
__STDC__ para indicar que no son compatibles con ANSI.
#include <stdio.h>
int main(void) {
int numero;
fputs("Introduzca un numero entero par: ", stdout);
scanf("%d", &numero);
if (!numero) {
fputs("Error: numero no valido.\n", stderr);
return -1;
}
int i = 1;
while (numero%2 == 0) {
printf ("%.3d| %d/2 =", i++, numero);
numero /=2;
printf("%d\n", numero);
}
printf ("No se puede seguir dividiendo: El numero %d es impar.\n", numero);
return 0;
}
Palabras reservadas de ANSI-C
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
C99
Commons-emblem-issue.svg
En esta secci�n se detect� el siguiente problema, para mejorarla, pulsa [editar]
junto a su t�tulo:
Podr�a contener informaci�n desactualizada.
Estas deficiencias fueron encontradas el 7 de mayo de 2019.
Puedes avisar al redactor principal pegando lo siguiente en su p�gina de discusi�n:
{{sust:Aviso PA|C (lenguaje de programaci�n)}} ~~~~
Tras el proceso de estandarizaci�n de ANSI, la especificaci�n del lenguaje C
permaneci� relativamente estable durante alg�n tiempo, mientras que C++ sigui�
evolucionando. Sin embargo, el est�ndar continu� bajo revisi�n a finales de la
d�cada de 1990, lo que llev� a la publicaci�n del est�ndar ISO 9899:1999 en 1999.5?
Este est�ndar se denomina habitualmente "C99". Se adopt� como est�ndar ANSI en
marzo de 2000.
Funciones inline.
Las variables pueden declararse en cualquier sitio (como en C++), en lugar de poder
declararse s�lo tras otra declaraci�n o al comienzo de una declaraci�n compuesta.
Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la
transici�n de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex que
representa n�meros complejos.
Arrays de longitud variable.
Soporte para comentarios de una l�nea que empiecen con //, como en BCPL o en C++,
caracter�stica para la que muchos compiladores hab�an dado soporte por su cuenta.
muchas funciones nuevas, como snprintf()
algunos headers nuevos, como stdint.h.
Una consideraci�n importante es que hasta la publicaci�n de este est�ndar, C hab�a
sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un
programa de C hacia C++ y mantener ese c�digo compilable en ambos lenguajes. Sin
embargo, el nuevo est�ndar agrega algunas caracter�sticas que C++ no admite, como
por ejemplo los inicializadores est�ticos de estructuras. Tambi�n define al tipo
"bool" de una manera que no es exactamente la del C++.
El compilador GCC, entre muchos otros, soportan hoy en d�a la mayor�a de las nuevas
caracter�sticas de C99. Sin embargo, este nuevo est�ndar ha tenido poca acogida
entre algunos desarrolladores de compiladores, como Microsoft y Borland, que se han
centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de muchas caracter�sticas de C99. Algunas
caracter�sticas tienen m�s demanda que otras, y consideraremos incluirlas en
versiones futuras siempre que sean compatibles con C++."7?
C11
C11 (antes conocido como C1X) es un nombre informal para ISO/IEC 9899:20118?. El
borrador final, N1570, fue publicado en abril de 2011.9? El nuevo est�ndar super�
su �ltima revisi�n el 10 de octubre de 2011 y fue oficialmente ratificado por la
ISO y publicado el 8 de diciembre de 2011.
C embebido
Hist�ricamente la programaci�n en C embebido ha requerido extensiones no est�ndar
del lenguaje C para implementar caracter�sticas no oficiales tales como aritm�tica
de punto fijo y operaciones b�sicas de entrada y salida.
C18
El �ltimo est�ndar publicado para C ISO/IEC 9899:201810?.
Lenguajes derivados de C
Desde el inicio del lenguaje han surgido varias ramas de evoluci�n que han generado
varios lenguajes:
Java, que une una sintaxis inspirada en la del C++ con una orientaci�n a objetos
m�s similar a la de Smalltalk y Objective C.
JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis
de Java dise�ado para dar a las p�ginas web mayor interactividad. A la versi�n
estandarizada se la conoce como ECMAScript.
C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C+
+ y Java.
Proceso de compilaci�n
La compilaci�n de un programa C se realiza en varias fases que normalmente son
automatizadas y ocultadas por los entornos de desarrollo:
int main(void)
{
printf("HOLA MUNDO\n");
return 0;
}
El siguiente escribe "HOLA MUNDO" en C89
if (condicion 1) {
sentencia 1
} else if (condicion 2){
sentencia 2
} else if (condicion n){
sentencia n
} else {
sentencias por defecto
}
Herramientas de programaci�n
Al programar en C, es habitual usar algunas herramientas de programaci�n de uso muy
extendido, sobre todo en entorno de tipo Unix:
Los ordenadores de finales de los 90 son varios �rdenes de magnitud m�s potentes
que las m�quinas en que C se desarroll� originalmente. Programas escritos en
lenguajes de tipo din�mico y f�cil codificaci�n (Ruby, Python, Perl...) que anta�o
hubieran resultado demasiado lentos, son lo bastante r�pidos como para desplazar en
uso a C. Aun as�, se puede seguir encontrando c�digo C en grandes desarrollos de
animaciones, modelados y escenas en 3D en pel�culas y otras aplicaciones
multimedia.
Aplicaciones embebidas
C es el lenguaje com�n para programar sistemas embebidos.[cita requerida] El c�digo
ligero que un compilador C genera, combinado con la capacidad de acceso a capas del
software cercanas al hardware son la causa de su popularidad en estas aplicaciones.
Bibliotecas C
Una biblioteca de C es una colecci�n de funciones utilizadas en el lenguaje de
programaci�n C. Las bibliotecas m�s comunes son la biblioteca est�ndar de C y la
biblioteca del est�ndar ANSI C, la cual provee las especificaciones de los
est�ndares que son ampliamente compartidas entre bibliotecas. La biblioteca ANSI C
est�ndar, incluye funciones para la entrada y salida de archivos, alojamiento de
memoria y operaciones con datos comunes: funciones matem�ticas, funciones de manejo
de cadenas de texto y funciones de hora y fecha.
Otras bibliotecas C son aquellas utilizadas para desarrollar sistemas Unix, las
cuales proveen interfaces hacia el n�cleo. Estas funciones son detalladas en varios
est�ndares tales como POSIX y el Single UNIX Specification.
Ya que muchos programas han sido escritos en el lenguaje C existe una gran variedad
de bibliotecas disponibles. Muchas bibliotecas son escritas en C debido a que C
genera c�digo objeto r�pido; los programadores luego generan interfaces a la
biblioteca para que las rutinas puedan ser utilizadas desde lenguajes de mayor
nivel, tales como Java, Perl y Python.
V�ase tambi�n
Anexo:Operadores de C y C++
Referencias
Ritchie, Dennis (1993). �The Development of the C Language�. ACM SIGPLAN Notices
(en ingl�s) (ACM Press) 28 (3): 201-208. doi:10.1145/155360.155580. Consultado el
10 de marzo de 2019.
Kernighan, Brian W.; Ritchie, Dennis M. (1991). El lenguaje de programaci�n C (2�
edici�n). Prentice Hall Hispanoamericana. ISBN 968-880-205-0.
Raymond, Eric S. (2003). The Art of Unix Programming (en ingl�s). Addison-Wesley.
ISBN 0-13-142901-9.
Raymond, Eric S. (2003). �Evolution of C�. The Art of Unix Programming (en
ingl�s). Consultado el 7 de mayo de 2019.
�ISO/IEC 9899:1999�. International Organization for Standardization (en ingl�s).
Consultado el 10 de marzo de 2019.
�WG14/N1256 Committee Draft � Septermber 7, 2007 ISO/IEC 9899:TC3� (PDF).
International Organization for Standardization (en ingl�s). 7 de septiembre de
2007. Consultado el 7 de mayo de 2019.
�Content not found�. Consultado el 2009.
�ISO/IEC 9899:2011�. International Organization for Standardization (en ingl�s).
Consultado el 10 de marzo de 2019.
�N1570 Committee Draft � April 12, 2011 ISO/IEC 9899:201x� (PDF). International
Organization for Standardization (en ingl�s). 12 de abril de 2011. Consultado el 7
de mayo de 2019.
14:00-17:00. �ISO/IEC 9899:2018�. ISO (en ingl�s). Consultado el 18 de mayo de
2019.
Enlaces externos
Wikiversidad alberga proyectos de aprendizaje sobre C (lenguaje de programaci�n).
Wikilibros alberga un libro o manual sobre Programaci�n en C.
P�gina web oficial del est�ndar ISO/IEC 9899 - lenguaje de programaci�n C
P�gina web oficial del grupo de trabajo de ISO/IEC JTC1/SC22/WG14 encargado de la
estandarizaci�n del lenguaje de programaci�n C
Control de autoridades
Proyectos Wikimedia Wd Datos: Q15777 Commonscat Multimedia: C (programming
language) Wikibooks Libros: Programaci�n en C Wikiversity Recursos did�cticos:
Programaci�n en C
Identificadores BNF: 119665180 (data) GND: 4113195-2 LCCN: sh85018532 SUDOC:
027672441 Diccionarios y enciclopedias Britannica: url
Categor�as: Lenguaje de programaci�n CLenguajes de programaci�n por
procedimientosLenguajes de programaci�n de bajo nivelLaboratorios BellLenguajes de
programaci�n creados en 1972
Men� de navegaci�n
No has accedidoDiscusi�nContribucionesCrear una
cuentaAccederArt�culoDiscusi�nLeerEditarVer historialBuscar
Buscar en Wikipedia
Portada
Portal de la comunidad
Actualidad
Cambios recientes
P�ginas nuevas
P�gina aleatoria
Ayuda
Donaciones
Notificar un error
En otros proyectos
Wikimedia Commons
Wikilibros
Wikiversidad
Imprimir/exportar
Crear un libro
Descargar como PDF
Versi�n para imprimir
Herramientas
Lo que enlaza aqu�
Cambios en enlazadas
Subir archivo
P�ginas especiales
Enlace permanente
Informaci�n de la p�gina
Elemento de Wikidata
Citar esta p�gina
En otros idiomas
???????
English
??????
Bahasa Indonesia
Latina
Bahasa Melayu
???????
????
??
100 m�s
Editar enlaces
Esta p�gina se edit� por �ltima vez el 16 jul 2019 a las 23:13.
El texto est� disponible bajo la Licencia Creative Commons Atribuci�n Compartir
Igual 3.0; pueden aplicarse cl�usulas adicionales. Al usar este sitio, usted acepta
nuestros t�rminos de uso y nuestra pol�tica de privacidad.
Wikipedia� es una marca registrada de la Fundaci�n Wikimedia, Inc., una
organizaci�n sin �nimo de lucro.
Pol�tica de privacidadAcerca de WikipediaLimitaci�n de
responsabilidadDesarrolladoresDeclaraci�n de cookiesVersi�n para m�vilesWikimedia
Foundation Powered by MediaWiki