You are on page 1of 29

C es un lenguaje de programacin creado en 1972 por Dennis M.

Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos. La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas.

Contenido
[ocultar]

1 Filosofa 2 Caractersticas o 2.1 Propiedades o 2.2 Carencias 3 Historia o 3.1 Desarrollo inicial o 3.2 El C de Kernighan y Ritchie o 3.3 ANSI C e ISO C o 3.4 C99 4 Ventajas 5 Inconvenientes 6 Variantes 7 Proceso de compilacin o 7.1 Ejemplo de cdigo 8 Herramientas de programacin 9 Aplicabilidad o 9.1 Aplicaciones embebidas 10 Bibliotecas C 11 Vase tambin 12 Referencias

13 Enlaces externos

[editar] Filosofa
Uno de los objetivos de diseo del lenguaje C es que slo sean necesarias unas pocas instrucciones en lenguaje mquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecucin. Es muy posible escribir C a bajo nivel de abstraccin; de hecho, C se us como intermediario entre diferentes lenguajes. En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de caractersticas, se pueden desarrollar compiladores de C fcilmente. En consecuencia, el lenguaje C est disponible en un amplio abanico de plataformas (seguramente ms que cualquier otro lenguaje). Adems, a pesar de su naturaleza de bajo nivel, el lenguaje se desarroll para incentivar la programacin independiente de la mquina. Un programa escrito cumpliendo los estndares e intentando que sea porttil puede compilarse en muchos computadores. C se desarroll originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programacin de sistemas, para la que se dise originalmente.

[editar] Caractersticas
[editar] Propiedades

Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros. Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.

Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado").

[editar] Carencias

Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm. Soporte para programacin orientada a objetos, aunque la implementacin original de C++ fue un preprocesador que traduca cdigo fuente de C++ a C. Encapsulacin. Funciones anidadas, aunque GCC tiene esta caracterstica como extensin. Polimorfismo en tiempo de cdigo en forma de sobrecarga, sobrecarga de operadores y slo dispone de un soporte rudimentario para la programacin genrica. Soporte nativo para programacin multihilo y redes de computadores.

Aunque la lista de las caractersticas tiles de las que carece C es larga, este factor ha sido importante para su aceptacin, porque escribir rpidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solucin ms natural para cada plataforma. sta es la causa de que a menudo C sea ms eficiente que otros lenguajes. Tpicamente, slo la programacin cuidadosa en lenguaje ensamblador produce un cdigo ms rpido, pues da control total sobre la mquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia. En algunos casos, una caracterstica inexistente puede aproximarse. Por ejemplo, la implementacin original de C++ consista en un preprocesador que traduca cdigo fuente C++ a C. La mayora de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la funcin. Mediante el paso de este puntero como un argumento de funcin, esta funcionalidad puede desempearse en C. Por ejemplo, en C++ se puede escribir:
stack.push(val);

Mientras que en C, se podra 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.

[editar] Historia

[editar] Desarrollo inicial


El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; segn Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus caractersticas 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 desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Haban estado jugando en el mainframe de su compaa, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenan suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa mquina no tena sistema operativo, as que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que haba en su oficina, pero era muy costoso, pues todo el cdigo estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y porttil para que el sistema operativo se pudiera portar fcilmente de un ordenador a otro. Consideraron usar B, pero careca de las funcionalidades necesarias para aprovechar algunas caractersticas avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C. La justificacin para obtener el ordenador original que se us para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versin original de Unix se desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se desarroll para poder reescribir el sistema operativo.

En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. ste fue uno de los primeros ncleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).

[editar] El C de Kernighan y Ritchie


En 1978, Ritchie y Brian Kernighan publicaron la primera edicin de El lenguaje de programacin C, tambin conocido como La biblia de C. Este libro fue durante aos la especificacin informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edicin del libro cubre el estndar ANSI C, descrito ms abajo.) Kernighan y Ritchie introdujeron las siguientes caractersticas al lenguaje:

El tipo de datos struct. El tipo de datos long int. El tipo de datos unsigned int.

Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigedad sintctica de expresiones como i=-10, que se podra interpretar bien como i =- 10 o bien como i = -10.

El C de Kernighan y Ritchie es el subconjunto ms bsico del lenguaje que un compilador debe de soportar. Durante muchos aos, incluso tras la introduccin del ANSI C, fue considerado "el mnimo comn denominador" en el que los programadores deban programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el cdigo razonablemente bien escrito en K&R C es tambin cdigo ANSI C vlido. En estas primeras versiones de C, las nicas funciones que necesitaban ser declaradas si se usaban antes de la definicin de la funcin eran las que retornaban valores no enteros. Es decir, se presupona que una funcin que se usaba sin declaracin previa (prototipo) devolvera un entero. Ejemplo de llamada que requiere declaracin previa (prototipo):
long int cierta_funcion(); int llamando_funcion() { long int ret; ret = cierta_funcion(); }

Ejemplo de llamada que no requiere declaracin previa:


int llamando_funcion() { int ret; ret = alguna_otra_funcion(); } int alguna_otra_funcion() { return 0; }

Dado que el lenguaje C de K&R no inclua ninguna informacin sobre los argumentos de las funciones, no se realizaba comprobacin de tipos en los parmetros de las funciones, aunque algunos compiladores lanzan mensajes de advertencia si se llamaba a una funcin con un nmero incorrecto de argumentos. A su vez, para indicar los parmetros que se utilizaban en una funcin, estos se declaraban de la siguiente manera:2
int main() { return callme(1, "c"); } int callme(i, s)

int i; char *s; { /*....*/ }

En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron al lenguaje muchas caractersticas no oficiales, que estaba soportadas por los compiladores de AT&T, entre otros. Algunas de estas caractersticas eran:

Funciones void y el tipo de datos void *. Funciones que retornaban tipos de datos struct o union (en lugar de punteros). Asignacin de tipos de datos struct. Calificador const, que hace que un objeto sea de slo lectura. Una biblioteca estndar, que incorporaba la mayora de las funcionalidades implementadas por varios desarrolladores de compiladores. Enumeraciones.

[editar] ANSI C e ISO C


Artculo principal: ANSI C

A finales de la dcada de 1970, C empez a sustituir a BASIC como lenguaje de programacin de microcomputadores predominante. Durante la dcada de 1980 se empez a usar en los IBM PC, lo que increment su popularidad significativamente. Al mismo tiempo, Bjarne Stroustrup empez a trabajar con algunos compaeros de Bell Labs para aadir funcionalidades de programacin orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en da el lenguaje de programacin de aplicaciones ms comn en el sistema operativo Microsoft Windows; mientras que C sigue siendo ms popular en el entorno Unix. Otro lenguaje que se desarroll en esa poca, Objective C, tambin aadi caractersticas de programacin orientada a objetos a C. Aunque hoy en da no es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X. En 1983, el Instituto Nacional Estadounidense de Estndares organiz un comit, X3j11, para establecer una especificacin estndar de C. Tras un proceso largo y arduo, se complet el estndar en 1989 y se ratific como el "Lenguaje de Programacin C" ANSI X3.159-1989. Esta versin del lenguaje se conoce a menudo como ANSI C, o a veces como C89 (para distinguirla de C99). En 1990, el estndar ANSI (con algunas modificaciones menores) fue adoptado por la Organizacin Internacional para la Estandarizacin (ISO) en el estndar ISO/IEC 9899:1990. Esta versin 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 estandarizacin del ANSI C fue producir una extensin al C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin embargo, el comit de estandarizacin incluy tambin muchas funcionalidades nuevas,

como prototipos de funcin, y un preprocesador mejorado. Tambin se cambi la sintaxis de la declaracin de parmetros para hacerla semejante a la empleada habitualmente en C++:
main(argc, argv) int argc; char **argv; { ... }

pas a ser
int main(int argc, char *argv[]) { ... }

ANSI C est soportado hoy en da por casi la totalidad de los compiladores. La mayora del cdigo C que se escribe actualmente est basado en ANSI C. Cualquier programa escrito slo en C estndar sin cdigo que dependa de un hardware determinado funciona correctamente en cualquier plataforma que disponga de una implementacin de C compatible. Sin embargo, muchos programas han sido escritos de forma que slo pueden compilarse en una cierta plataforma, o con un compilador concreto, esto puede ser debido a diversos motivos:

La utilizacin de bibliotecas no estndar, como interfaces grficas de usuario. El uso de compiladores que no cumplen las especificaciones del estndar. El uso de tipos de datos suponiendo que tendrn el mismo tamao u orden de los bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el cdigo en secciones ANSI y K&R para el compilador.
# 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.

[editar] C99
Tras el proceso de estandarizacin de ANSI, la especificacin del lenguaje C permaneci relativamente estable durante algn tiempo, mientras que C++ sigui evolucionando. Sin embargo, el estndar continu bajo revisin a finales de la dcada de 1990, lo que llev a la

publicacin del estndar ISO 9899:1999 en 1999. Este estndar se denomina habitualmente "C99". Se adopt como estndar ANSI en marzo de 2000. Las nuevas caractersticas de C99 incluyen:

Funciones inline. Las variables pueden declararse en cualquier sitio (como en C++), en lugar de poder declararse slo tras otra declaracin o al comienzo de una declaracin compuesta. Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la transicin de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex que representa nmeros complejos. Arrays de longitud variable. Soporte para comentarios de una lnea que empiecen con //, como en BCPL o en C++, caracterstica para la que muchos compiladores haban dado soporte por su cuenta. muchas funciones nuevas, como snprintf() muchos headers nuevos, como stdint.h.

Una consideracin importante es que hasta la publicacin de este estndar, C haba sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un programa de C hacia C++ y mantener ese cdigo compilable en ambos lenguajes. Sin embargo, el nuevo estndar agrega algunas caractersticas que C++ no admite, como por ejemplo los inicializadores estticos de estructuras. Tambin define al tipo "bool" de una manera que no es exactamente la del C++. El compilador GCC, entre muchos otros, soportan hoy en da la mayora de las nuevas caractersticas de C99. Sin embargo, este nuevo estndar 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 caractersticas de C99. Algunas caractersticas tienen ms demanda que otras, y consideraremos incluirlas en versiones futuras siempre que sean compatibles con C++."3

[editar] Ventajas

Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel para realizar implementaciones ptimas. A pesar de su bajo nivel es el lenguaje ms portado en existencia, habiendo compiladores para casi todos los sistemas conocidos. Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o bibliotecas existentes.

[editar] Inconvenientes

El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinmico es la gran diferencia en velocidad de desarrollo: es ms lento programar en C, sobre todo para el principiante. La razn estriba en que el compilador de C se limita a traducir cdigo sin apenas aadir nada. La gestin de la memoria es un ejemplo clsico: en C el programador ha de reservar y liberar la memoria explcitamente. En otros lenguajes (como BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga de trabajo humano y en muchas ocasiones previene errores, aunque tambin supone mayor carga de trabajo para el procesador. El mantenimiento en algunos casos puede ser ms difcil y costoso que con ciertos lenguajes de ms alto nivel. El cdigo en C se presta a sentencias cortas y enrevesadas de difcil interpretacin. Aunque el lenguaje admite cdigo escrito de forma fcilmente legible, si no se siguen normas en el equipo de programacin algunos programadores pueden acabar escribiendo cdigo difcil de leer. Esto complica la revisin y el mantenimiento. Aunque en realidad esto est ms relacionado con el equipo de desarrollo que con el lenguaje en s.

[editar] Variantes
Desde el inicio del lenguaje han surgido varias ramas de evolucin que han generado varios lenguajes:

Objective-C es un primer intento de proporcionar soporte para la programacin orientada a objetos en C, de escasa difusin, pero actualmente usado en Mac OS X y GNUstep. C++ (pronunciado C Plus Plus) diseado por Bjarne Stroustrup fue el segundo intento de proporcionar orientacin a objetos a C y es la variante ms difundida y aceptada. Esta versin combina la flexibilidad y el acceso de bajo nivel de C con las caractersticas de la programacin orientada a objetos como abstraccin, encapsulacin y ocultacin.

Tambin se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con l:

Java, que une una sintaxis inspirada en la del C++ con una orientacin a objetos ms similar a la de Smalltalk y Objective C. JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseado para dar a las pginas web mayor interactividad. A la versin estandarizada se la conoce como ECMAScript. C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java.

[editar] Proceso de compilacin


La compilacin de un programa C se realiza en varias fases que normalmente son automatizadas y ocultadas por los entornos de desarrollo:

1. Preprocesado consistente en modificar el cdigo fuente en C segn una serie de instrucciones (denominadas directivas de preprocesado) simplificando de esta forma el trabajo del compilador. Por ejemplo, una de las acciones ms importantes es la modificacin de las inclusiones (#include) por las declaraciones reales existentes en el archivo indicado. 2. Compilacin que genera el cdigo objeto a partir del cdigo ya preprocesado. 3. Enlazado que une los cdigos objeto de los distintos mdulos y bibliotecas externas (como las bibliotecas del sistema) para generar el programa ejecutable final.

[editar] Ejemplo de cdigo


El siguiente programa imprime en pantalla la frase "Hola Mundo" (C99).
// necesario para utilizar printf() # include <stdio.h> int main(void) { printf("Hola Mundo\n"); return 0; }

El siguiente escribe "Hola Mundo" en C89


/* comentarios con '//' no permitidos en C89, s en C99 */ # include <stdio.h> /* necesario para utilizar printf */ main() /* tipo 'int' de retorno implcito */ { printf ("Hola Mundo\n") ; return 0; }

[editar] Herramientas de programacin


Al programar en C, es habitual usar algunas herramientas de programacin de uso muy extendido, sobre todo en entorno de tipo unix:

make: Herramienta para automatizar el proceso de compilacin, enlazado, etc. lint: Herramienta utilizada para detectar cdigo sospechoso, confuso o incompatible entre distintas arquitecturas valgrind: Herramienta utilizada para detectar posibles fugas de memoria. gdb : Debugger de GNU utilizado para seguir la ejecucin del programa. dbx : Debugger que suele venir instalado con todos los UNIX. ddd : Interfaz grfico para el depurador gdb o dbx.

[editar] Aplicabilidad

Hecho principalmente para la fluidez de programacin en sistemas UNIX. Se usa tambin para el desarrollo de otros sistemas operativos como Windows o GNU/Linux. Igualmente para aplicaciones de escritorio como GIMP, cuyo principal lenguaje de programacin es C. De la misma forma, es muy usado en aplicaciones cientficas (para experimentos informticos, fsicos, qumicos, matemticos, entre otros, parte de ellos conocidos como modelos y simuladores), industriales (industria robtica, ciberntica, sistemas de informacin y base de datos para la industria petrolera y petroqumica. Predominan tambin todo lo que se refiere a simulacin de mquinas de manufactura), simulaciones de vuelo (es la ms delicada, ya que se tienen que usar demasiados recursos tanto de hardware como de software para desarrollar aplicaciones que permitan simular el vuelo real de una aeronave. Se aplica por tanto, en diversas reas desconocidas por gran parte de los usuarios noveles. Los ordenadores de finales de los 90 son varios rdenes de magnitud ms potentes que las mquinas en que C se desarroll originalmente. Programas escritos en lenguajes de tipo dinmico y fcil codificacin (Ruby, Python, Perl...) que antao hubieran resultado demasiado lentos, son lo bastante rpidos como para desplazar en uso a C. Aun as, se puede seguir encontrando cdigo C en grandes desarrollos de animaciones, modelados y escenas en 3D en pelculas y otras aplicaciones multimedia. Actualmente, los grandes proyectos de software se dividen en partes, dentro de un equipo de desarrollo. Aquellas partes que son ms "burocrticas" o "de gestin" con los recursos del sistema, se suelen realizar en lenguajes de tipo dinmico o de guion (script), mientras que aquellas partes "crticas", por su necesidad de rapidez de ejecucin, se realizan en un lenguaje de tipo compilado, como C o C++. Si, despus de hacer la divisin, las partes crticas no superan un cierto porcentaje del total (aproximadamente el 10%) entonces todo el desarrollo se realiza con lenguajes dinmicos. Si la parte crtica no llega a cumplir las expectativas del proyecto, se comparan las alternativas de una inversin en nuevo hardware frente a invertir en el coste de un programador para que reescriba dicha parte crtica.

[editar] Aplicaciones embebidas


C es el lenguaje comn para programar sistemas embebidos.[cita requerida] El cdigo 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. Una caracterstica donde C demuestra comodidad de uso particularmente valiosa en sistemas embebidos es la manipulacin de bits. Los sistemas contienen registros mapeados en memoria (en ingls, MMR) a travs de los cuales los perifricos se configuran. Estos registros mezclan varias configuraciones en la misma direccin de memoria, aunque en bits distintos. Con C es posible modificar fcilmente uno de estos bits sin alterar el resto. Por ejemplo:
int *mmr; /* puntero al registro que queremos modificar */ mmr = 0x40008ABC; /* direccin de memoria del registro */ * mmr |= 1<<7; /* pone a 1 el bit 8 sin modificar los dems */

* mmr &= ~(1<<12) /* pone a 0 el bit 13 sin modificar los dems */

Este tipo de manipulacin es muy tediosa o sencillamente imposible en otros lenguajes de alto nivel, dado que se utilizan operaciones comunes del lenguaje ensamblador como las operaciones a nivel bit OR, AND, SHL y CPL pero que estn disponibles en el lenguaje C. Otras caractersticas de C consideradas desventajas en la programacin para PC -como la ausencia de control de memoria automtico- se convierten en ventajas cuando los sistemas embebidos necesitan cdigo pequeo y optimizado. Ese es el caso de los sistemas basados en microcontroladores de poca potencia como el intel 8051 o muchos sistemas ARM.

[editar] Bibliotecas C
Una biblioteca de C es una coleccin de funciones utilizadas en el lenguaje de programacin C. Las bibliotecas ms comunes son la biblioteca estndar de C y la biblioteca del estndar ANSI C, la cual provee las especificaciones de los estndares que son ampliamente compartidas entre bibliotecas. La biblioteca ANSI C estndar, incluye funciones para la entrada y salida de archivos, alojamiento de memoria y operaciones con datos comunes: funciones matemticas, 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 ncleo. Estas funciones son detalladas en varios estndares 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 cdigo objeto rpido; 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.
Ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ooooo LIBRERIAS EN LENGUAJE C #include <stdio.h> clearerr fgets freopen fclose fopen fscanf feof formato fseek ferror fprintf fsetpos fflush fputc ftell fgetc fputs fwrite fgetpos fread getc

getchar remove sscanf

gets rename tmpfile

perror rewind tmpnam

printf scanf ungetc

putc setbuf vfprintf

putchar setybuf vprintf

puts sprintf vsprintf

#include <stdlib.h> abort calloc malloc srand abs div mblen strtod atexit exit mbstowcs strtol atof free mbtowc strtoul atoi getenv qsort system atol labs rand wctomb bsearch ldiv Realloc

#include <string.h> memchr strcmp strmcmp strxfrm #include <ctype.h> tolower toupper memcmp strcoll strmcpy memcpy strcpy strpbrk memmove strcspn strrchr memset strerror strspn strcat strlen strstr strchr strmcat strtok

#include <locale.h> localeconv setlocale

#include <math.h> Acos Exp log10 tanh #include <setjmp.h> Asin Fabs modf atan floor pow atan2 fmod sin ceil frexp sinh cos ldexp sqrt cosh log tan

longjmp

setjmp

#include <signal.h> raise signal

#include <time.h> asctime strftime clock time ctime difftime Gmtime localtime mktime

Otras librerias que no tienen funciones asociadas. Pero tienen macros constantes y/o estructuras. #include <assert.h> #include <errno.h> #include <float.h> #include <limits.h> #include <stdarg.h> #include <stddef.h> RESUMEN DE LIBRERIAS assert.h Contiene una macro para el diagnstico dentro de los programas. ctype.h Contiene varias funciones para comprobacin de tipos y transformacin de caracteres. errno.h Contiene varias macros usadas para informar de errores. limits.h Contienen varias macros que definen constantes para el tamao de tipo enteros. float.h Contienen varias macros que definen constantes para el tamao de tipo flotante. locale.h Contienen varias macros, funciones y tipos para unidades locales, como unidad monetaria, tiempo, dgitos, etc. math.h Contiene una macro y varias funciones matemticas. setjmp.h Contienen declaraciones que proporcionan una forma de evitar la secuencia normal de llamada y regreso de funciones.

signal.h Contiene un tipo, dos funciones y varias macros para manejar condiciones excepcionales que aparecen durante la ejecucin, tal como una seal de interrupcin de una fuente externa o un error en la ejecucin. stdarg.h Contiene un tipo y tres macros que proporcionan recursos para recorrer una lista de argumentos de funcin de tamao y tipo desconocido. stddef.h Contiene varios tipos y macros que tambin estn definidas en otras libreras, como size_t. stdio.h Contiene tipos, macros y funciones para la realizacin de tareas de E/S. stdlib.h Contiene tipos, macros y funciones para la conversin numrica, generacin de nmeros aleatorios, bsquedas y ordenacin, gestin de memoria y tareas similares. string.h Contiene tipos, macros y funciones para la manipulacin de cadenas de caracteres. time.h Contiene tipos, macros y funciones para la la manipulacin de informacin sobre fechas y horas.

Tipos: char, int, float, long, long long, short, double, void. CADENAS DE FORMATO
d, i o u x X f e g E G c s % p entero decimal con signo entero octal sin signo entero decimal sin signo entero hexadecimal sin signo (en minsculas) entero hexadecimal sin signo (en maysculas) Coma flotante en la forma [-]dddd.dddd Coma flotante en la forma [-]d.dddd e[+/-]ddd Coma flotante segn el valor Como e pero en maysculas Como g pero en maysculas un carcter cadena de caracteres terminada en '\0' imprime el carcter % puntero

SECUENCIA DE ESCAPE \a
\b \f \n \r \t \v \\ \' \" \OOO \xHHH Alerta Espacio atrs Salto de pgina Salto de lnea Retorno de carro Tabulacin horizontal Tabulacin vertical Barra invertida Comilla simple Comillas dobles Visualiza un carcter cuyo cdigo ASCII es OOO en octal Visualiza un carcter cuyo cdigo ASCII es HHH en hexadecimal

Funcionabilidad de la Funcin System, que pertenece a la librera <stlib.h> Colores de Fondo 0 1 2 3 4 5 6 7 8 9 = = = = = = = = = = Negro Azul Verde Aguamarina Rojo Prpura Amarillo Blanco Gris Azul claro

Colores de Fuente a = Verde claro b = Aguamarina claro c = Rojo claro d = Prpura claro e = Amarillo claro f = Blanco brillante. YAHOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

Mejor respuesta - Elegida por la comunidad


Una biblioteca C es una coleccin de bibliotecas utilizadas en el lenguaje de programacin C. Las bibliotecas ms comunes son la biblioteca C estndar y la ISO y estndar ANSI C provee las especificaciones de los estndares, las cuales son ampliamente compartidas entre bibliotecas. La biblioteca ANSI C estndar incluye rutinas para la entrada y salida de archivos, alojamiento de memoria y operaciones con datos comunes como funciones matemticas, funciones de cadenas y funciones de hora y fecha. Otros juegos de bibliotecas C son aquellas utilizadas para desarrollar sistemas Unix, las cuales proveen interfaces hacia el ncleo. Estas funciones son detalladas en varios estndares 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 cdigo objeto rpido; 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. O LAS BIBLIOTECAS DE FUNCIONES No obstante, el estndar de C define un conjunto de bibliotecas de funciones, que necesariamente vienen con todo entorno de compilacin de C y que satisfacen estos servicios elementales. Las interfaces de estos servicios vienen definidas en unos ficheros cabeceras ( header files ). El nombre de estos ficheros suele terminar en .h Algunos de los servicios proporcionados por las bibliotecas estndares son: Bibliotecas 1.-entrada y salida de datos (stdio.h)

2.-manejo de cadenas (string.h) 3.-memoria dinmica (stdlib.h) 4.-rutinas matemticas (math.h) 5.-(conio.h) ESTAS SE USAN DE ESTA FORMA esto va al inicio de tu programa todas las bibliotecas que vas a usar include <stdio.h> include <conio.h> include <math.h>

NUMERO ALEATORIO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOO

Un nmero aleatorio es aquel obtenido al azar, es decir, que todo nmero tenga la misma probabilidad de ser elegido y que la eleccin de uno no dependa de la eleccin del otro. El ejemplo clsico ms utilizado para generarlos es el lanzamiento repetitivo de una moneda o dado ideal no trucado.

PARA QU SIRVEN? CMO PUEDO GENERAR NMEROS ALEATORIOS? QU SON LOS NMEROS PSEUDOALEATORIOS? POR QE HAY QUE RECURRIR A LOS NMEROS PSEUDOALEATORIOS? APLICACIONES EN LA CRIPTOGRAFA SIMULACIONES

PARA QU SIRVEN?
Los nmeros aleatorios permiten a los modelos matemticos representar la realidad. En general cuando se requiere una impredecibilidad en unos determinados datos, se utilizan nmeros aleatorios Los seres humanos vivimos en un medio aleatorio y nuestro comportamiento lo es tambin. Si deseamos predecir el comportamiento de un material, de un fenmeno climatolgico o de un grupo humano podemos inferir a partir de datos estadsticos. Para lograr una mejor aproximacin a la realidad nuestra herramienta predictiva debe funcionar de manera similar: aleatoriamente. De esa necesidad surgieron los modelos de simulacin. En la vida cotidiana se utilizan nmeros aleatorios en situaciones tan dispares como pueden ser los juegos de azar, en el diseo de la cada de los copos de nieve, en una animacin por ordenador, en tests para localizacin de errores en chips, en la transmisin de datos desde un satlite o en las finanzas.

CMO PUEDO GENERAR NMEROS ALEATORIOS?


La lgica nos hace pensar que las personas somos generadores aleatorios imperfectos, hay estudios que demuestran que existen tendencias claras en los humanos para la elaboracin de secuencias sesgadas y estn relacionadas con caractersticas personales, con los conocimientos o informaciones previas o con la edad Podemos aprovecharnos de situaciones reales para obtener una tabla de nmeros aleatorios, como la lista de los nmeros de Lotera Nacional premiados a lo largo de su historia, pues se caracterizan por que cada dgito tiene la misma probabilidad de ser elegido, y su eleccin es independiente de las dems extracciones. Mtodos manuales, lanzamiento de monedas, lanzamientos de dados, dispositivos mecnicos, dispositivos electrnicos Mtodos de computacin analgica, son mtodos que dependen de ciertos procesos fsicos aleatorios, por ejemplo, el comportamiento de una corriente elctrica. Mtodos de computacin digital, cuando se usa el ordenador digital. Tablas de bibliotecas, son nmeros aleatorios que se han publicado; de los cuales podemos encontrar listas en los libros de probabilidad y tablas de matemticas. Estos nmeros fueron generados por alguno de los mtodos de computacin analgica.

QU SON LOS NMEROS PSEUDOALEATORIOS?


Son unos nmeros generados por medio de una funcin (determinista, no aleatoria) y que aparentan ser aleatorios. Estos nmeros pseudoaleatorios se generan a partir de un valor inicial aplicando iterativamente la funcin. La sucesin de nmeros pseudoaleatorios es sometida a diversos tests para medir hasta qu punto se asemeja a una sucesin aleatoria .

POR QU HAY QUE RECURRIR A LOS NMEROS PSEUDOALEATORIOS?


Fundamentalmente porque las sucesiones de nmeros pseudoaleatorios son ms rpidas de generar que las de nmeros aleatorios. Si las personas tenemos dificultad en generar nmeros aleatorios, mucho ms la tiene un ordenador, la dificultad est en que un ordenador es tan "torpe" que no sabe generarlos. Por eso usan nmeros pseudoaleatorios, que para nuestro fin es lo mismo, pues nadie los puede predecir.

APLICACIONES EN LA CRIPTOGRAFA

En el corazn de todos los sistemas criptogrficos, est la generacin de nmeros secretos que no puedan ser adivinados por otra persona, es decir aleatorios. La generacin de nmeros aleatorios es necesaria en diversos sistemas criptogrficos, como por ejemplo en la telefona mvil digital GSM se utilizan para la asignacin de una clave aleatoria que sirve para autenticar al usuario o tambin para dar cierta seguridad a la asignacin inicial de nmeros secretos a las tarjetas de crdito. Un generador de contraseas con javascript

SIMULACIONES (Mtodos de computacin digital)


Simulaciones aleatorias con Javascript Simulaciones aleatorias con Excel de nmeros y letras Imagenes aleatorias con php

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

14. Biblioteca <stdlib.h>


Para usar todas las funciones de sta biblioteca se debe tener la siguiente directiva
#include <stdlib.h>

Las funciones de la biblioteca pueden ser agrupadas en tres categoras bsicas:


Aritmticas; Nmeros aleatorios; y Conversin de cadenas.

El uso de todas las funciones es sencillo. Se consideran dentro del captulo en forma breve.

14.1 Funciones aritmticas


Hay cuatro funciones enteras bsicas:
int abs(int j); long int labs(long int j); div_t div(int numer, int denom); ldiv_t ldiv(long int numer, long int denom);

Fundamentalmente hay dos funciones para enteros y para compatibilidad con enteros largos.

abs() La funcin regresa el valor absoluto del argumento entero j.

div() Calcula el valor numer entre denom y devuelve el cociente y el resto en una estructura llamada div_t que contiene dos miembros llamados quot y rem.

La estructura div_t esta definida en stdlib.h como sigue:


typedef struct { int quot; int rem; } div_t; /* cociente */ /* residuo */

La estructura ldiv_t es definida de una forma similar. Se muestra un ejemplo donde se hace uso de la funcin div_t:
#include <stdlib.h> main() { int num=8, den=3; div_t res; res = div(num,den); printf("Respuesta:\n\t Cociente = %d\n\t Residuo = %d\n", res.quot, res.rem); }

que genera la siguiente salida:


Respuesta: Cociente = 2 Residuo = 2

14.2 Nmeros aleatorios


Los nmeros aleatorios son tiles en programas que necesitan simular eventos aleatorios, tales como juegos, simulaciones y experimentos. En la prctica ninguna funcin produce datos aleatorios verdaderos -- las funciones producen nmeros pseudo-aleatorios. Los nmeros aleatorios son calculados a partir de una frmula dada (los distintos generadores usan diferentes frmulas) y las secuencias de nmeros que son producidas se repiten. Una semilla (seed) es usualmente inicializada para que la secuencia sea generada. Por lo tanto, si la semilla es siempre inicializada con el mismo valor todo el tiempo, el mismo conjunto ser siempre calculado. Una tcnica comn para introducir ms aleatoriedad en el generador de nmeros aleatorios es usando el tiempo y la fecha para inicializar la semilla, ya que ste siempre estar cambiando.

Hay muchas funciones de nmeros (pseudo) aleatorios en la biblioteca estndar. Todas ellas operan con la misma idea bsica pero generan secuencias diferentes de nmeros (basadas en funciones generadoras diferentes) sobre rangos diferentes de nmeros. El conjunto ms simple de funciones es:
int rand(void); void srand(unsigned int semilla);

rand() La funcin devuelve un entero pseudo-aleatorio entre 0 y (RAND_MAX). srand() Establece su argumento como la semilla de una nueva serie de enteros pseudo-aleatorios.

Un ejemplo sencillo del uso del tiempo de la fecha es inicializando la semilla a travs de una llamada:
srand( (unsigned int) time( NULL ) );

El siguiente programa tarjeta.c muestra el uso de estas funciones para simular un paquete de tarjetas que esta siendo revueltas.
/* ** Se usan numeros aleatorios para revolver las "tarjetas" de la baraja. ** El segundo argumento de la funcion indica el numero de tarjetas. ** La primera vez que esta funcion es llamada, srand es ** llamada para inicializar el generador de numeros aleatorios. */ #include <stdlib.h> #include <time.h> #define VERDADERO 1 #define FALSO 0 void intercambiar( int *baraja, int n_cartas ) { int i; static int primera_vez = VERDADERO; /* ** Inicializar el generador de numeros con la fecha actual ** si aun no se ha hecho. */ if( primera_vez ){ primera_vez = FALSO; srand( (unsigned int)time( NULL ) ); } /* ** "intercambiar" empleando pares de cartas. */ for( i = n_cartas - 1; i > 0; i -= 1 ){

int int

alguno; temp;

alguno = rand() % i; temp = baraja[ alguno ]; baraja[ alguno ] = baraja[ i ]; baraja[ i ] = temp; } }

14.3 Conversin de cadenas


Existen unas cuantas funciones para convertir cadenas a enteros, enteros largos y valores flotantes. Estas son:

double atof(const char *cadena) Convierte una cadena a un valor flotante. int atoi(const char *cadena) Convierte una cadena a un valor entero. int atol(const char *cadena) Convierte una cadena a un valor entero largo. double strtod(const char *cadena, char **finap) Convierte una cadena a un valor de punto flotante. double strtol(const char *cadena, char *finap, int base) Convierte una cadena a un entero largo de acuerdo a una base dada, la cual deber estar entre 2 y 36 inclusive. unsigned long strtoul(const char *cadena, char *finap, int base) Convierte una cadena a un entero largo sin signo.

Varias de las funciones se pueden usar en forma directa, por ejemplo:


char char char char char char char *cad1 = *cad2 = *cad3 = *cad4 = *cad5 = *cad6 = *cad7; "100"; "55.444"; " 1234"; "123cuatro"; "invalido123"; "123E23Hola";

int i; float f: i f i i i f = = = = = = atoi(cad1); /* i = atof(cad2); /* f = atoi(cad3); /* i = atoi(cad4); /* i = atoi(cad5); /* i = strtod(cad6, &cad7); 100 */ 55.44 */ 1234 */ 123 */ 0 */ /* f=1.230000E+25 y cad7=hola*/

Nota:

Los caracteres en blanco son saltados. Caracteres ilegales son ignorados.

Si la conversin no puede ser hecha se regresa cero y errno es puesta con el valor ERANGE.

14.4 Bsqueda y ordenamiento


La biblioteca stdlib.h tiene dos funciones tiles para hacer bsqueda y ordenamiento de datos de cualquier tipo. La funcin qsort() ya fue vista previamente en la seccin 10.3. Para completar la lista se anota el prototipo, pero para ver un ejemplo pasar al captulo indicado. La funcin qsort de la biblioteca estndar es muy til, ya que esta diseada para ordenar un arreglo por un valor llave de cualquier tipo en orden ascendente, con tal de que los elementos del arreglo sean de un tipo fijo. El prototipo de la funcin de acuerdo a stdlib.h es:
void qsort(void *base, size_t nmiemb, size_t tam, int (*compar)(const void *, const void *));

Similarmente, hay una funcin para bsqueda binaria, bsearch() la cual tiene el siguiente prototipo en stdlib.h como:
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

A continuacin se muestra un ejemplo que hace uso de la funcin bsearch():


#define TAM 10 #include <stdio.h> #include <stdlib.h> typedef struct { int llave; char informacion[30]; } Registro; int compara_registro(void const *i, void const *j) { int a, b; a = ((Registro *) i)->llave; b = ((Registro *) j)->llave; return a - b; } main() { Registro llave; Registro *resp;

Registro arreglo[TAM]; int long_arreglo = TAM; arreglo[0].llave = -43; arreglo[1].llave = -9; arreglo[2].llave = 0; arreglo[3].llave = 3; arreglo[4].llave = 4; arreglo[5].llave = 9; arreglo[6].llave = 10; arreglo[7].llave = 12; arreglo[8].llave = 30; arreglo[9].llave = 203; printf("Introduce el valor de la llave que se buscara en el arreglo: "); scanf("%d",&llave.llave); /* valor del indice que sera buscado */ resp = (Registro *) bsearch(&llave, arreglo, long_arreglo, sizeof(Registro), compara_registro); if (resp != NULL ) printf("Se localizo la llave %d\n",resp->llave); else printf("No se localizo ningun elemento con la llave %d\n", llave.llave); }

La funcin bsearch() regresa un apuntador al registro que coincide con la llave dada, o bien, el valor NULL si no encuentra el registro. Observar que el tipo del argumento de la llave debe ser del mismo tipo que la del arreglo de los elementos (en nuestro caso Registro).

14.5 Ejercicios
1. Escribir un programa que simule el lanzamiento de un dado. 2. Escribir un programa que simule el melate, en donde se seleccionan 6 nmeros enteros en un rango de 1 al 44 3. Escribir un programa que lea un nmero de la lnea de entrada y genere un nmero flotante aleatorio en el rango de 0 a el nmero de entrada.
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOO BIBLIOTECA GRAFICA

Swing es una biblioteca grfica para Java. Incluye widgets para interfaz grfica de usuario tales como cajas de texto, botones, desplegables y tablas.

Contenido

[ocultar]

1 Historia 2 Arquitectura o 2.1 Ventajas 3 Enlaces externos

[editar] Historia
Las Internet Foundation Classes (IFC) eran una biblioteca grfica para el lenguaje de programacin Java desarrollada originalmente por Netscape y que se public en 1996. Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes grficos conocida como AWT. Esta biblioteca estaba concebida como una API estandarizada que permita utilizar los componentes nativos de cada sistema operativo. Entonces una aplicacin Java corriendo en Microsoft Windows usara el botn estndar de Windows y una aplicacin corriendo en UNIX usara el botn estndar de Motif. En la prctica esta tecnologa no funcion:

Al depender fuertemente de los componentes nativos del sistema operativo el programador AWT estaba confinado a un mnimo denominador comn entre ellos. Es decir que slo se disponen en AWT de las funcionalidades comunes en todos los sistemas operativos. El comportamiento de los controles vara mucho de sistema a sistema y se vuelve muy difcil construir aplicaciones portables. Fue por esto que el eslogan de Java "Escrbalo una vez, ejectelo en todos lados" fue parodiado como "Escrbalo una vez, prubelo en todos lados".

En cambio, los componentes de IFC eran mostrados y controlados directamente por cdigo Java independiente de la plataforma. De dichos componentes se dice con frecuencia que son componentes ligeros, dado que no requieren reservar recursos nativos del sistema de ventanas del sistema operativo. Adems al estar enteramente desarrollado en Java aumenta su portabilidad asegurando un comporamiento idntico en diferentes plataformas. En 1997, Sun Microsystems y Netscape Communications Corporation anunciaron su intencin de combinar IFC con otras tecnologas de las Java Foundation Classes. Adems de los componentes ligeros suministrados originalmente por la IFC, Swing introdujo un mecanismo que permita que el aspecto de cada componente de una aplicacin pudiese cambiar sin introducir cambios sustanciales en el cdigo de la aplicacin. La introduccin de soporte ensamblable para el aspecto permiti a Swing emular la apariencia de los componentes nativos manteniendo las ventajas de la independencia de la plataforma. Tambin contiene un conjunto de herramientas que nos permiten crear una interfaz atractiva para los usuarios.

[editar] Arquitectura

Ejemplo de widgets Swing en Java 5 funcionando en X Window System. Es un framework MVC para desarrollar interfaces grficas para Java con independencia de la plataforma. Sigue un simple modelo de programacin por hilos, y posee las siguientes caractersticas principales:

Independencia de plataforma. Extensibilidad: es una arquitectura altamente particionada: los usuarios pueden proveer sus propias implementaciones modificadas para sobrescribir las implementaciones por defecto. Se puede extender clases existentes proveyendo alternativas de implementacin para elementos esenciales. Personalizable: dado el modelo de representacin programtico del framework de swing, el control permite representar diferentes estilos de apariencia "look and feel" (desde apariencia MacOS hasta apariencia Windows XP pasando por apariencia GTK+, IBM UNIX o HP UX entre otros). Adems, los usuarios pueden proveer su propia implementacin de apariencia, que permitir cambios uniformes en la apariencia existente en las aplicaciones Swing sin efectuar ningn cambio al cdigo de aplicacin.

[editar] Ventajas

El diseo en Java puro posee menos limitaciones de plataforma. El desarrollo de componentes Swing es ms activo. Los componentes de Swing soportan ms caractersticas.

Categora:Bibliotecas grficas
De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda

Subcategoras
Esta categora incluye las siguientes 5 subcategoras:

[] GTK (4 pgs.)

[] Motores de videojuegos (51 pgs.)

[] OpenGL (18 pgs.)

[] Qt (11 pgs.)

[] Widgets (16 pgs.)

Artculos en la categora Bibliotecas grficas


Esta categora incluye las siguientes 36 pginas:

G (cont.)
Allegro (biblioteca de programacin) ARToolKit ATK

O (cont.)

GEGL Gist Glitz GLX GTK+

OpenCV

B H

Batik (Software)

Panda3D Pango PyGTK PyQt

High Level Shader Language

Cairo (biblioteca) Clutter (biblioteca)

Java 2D

D L

SFML Simple DirectMedia Layer SVGALib

Direct Rendering Infrastructure

Libpng

Direct3D DirectFB

Libpolo Librsvg

Tk

W F

WxPython

FLTK FreeType

Motif

X O

G
OGRE 3D

XCB X

GDK

00000000000000000000000000000000000000000000000000000 una biblioteca grfica me suena a un conjunto de funciones que pueden usar los programas para mostrar grficos en la pantalla de manera ms simple. No estoy seguro del ejemplo, pero creo que GTK, QT, WinG, son bibliotecas grficas. 00000000000000000000000000000000000000000000000000000000000000000 BIBLIOTECA DEFINIDA POR EL PROGRAMADOR

You might also like