H

Hechicero_Insa

Usuario

Primer post: 8 oct 2008Último post: 8 oct 2008
1
Posts
0
Puntos totales
3
Comentarios
F
FAQs del lenguaje C y sus variantes
LinuxporAnónimo10/8/2008

Registrate y eliminá la publicidad! El formato de las faqs es lo común: Nombre o problema: algun nombre o descripcion. Variante: (C, C++) Solucion: Aqui iria la solucion del problema. Problema: Donde encuentro algun compilador bueno de C/C++? Variante: C/C++ Solucion: Windows Code::Blocks: Excelente IDE que usa por defecto MinGW32 Dev-C++: Otro excelente IDE que tambien usa MinGW32 Visual C++ toolit 2003: El excelente compilador de Microsoft. GCC: Uno de los mejores compiladores multilataforma que existe. MinGW: El famoso compilador de los mejoes IDEs. DJGPP: Otro buen compilador para DOS LCC-w32: Un compilador con un IDE basico. lcc: Un buen compilador multiplataforma. Cygwin: Excelente para portar aplicaciones linux a windows. GNU/Lunix GCC: La mayoria de las distribuciones GNU/Linux y Unix vienen con este gran compilador incluido. KDevelop: Este es un completisimo IDE para cualquier lenguaje incluyendo C y C++. Debes configurarlo correctamente para que use el gcc como compilador. Usa KDE. Anjuta: Otro excelente IDE que en si no tiene nada que envidiarle a KDevelop. Usa Gnome Eric: IDE que soporta una gran variedad de lenguajes. Igualmente debes configurar para que use gcc. Otros: En GNU/Linux, Unix y toda su variedad hay una infinidad de editores muy buenos. desde el mas basico como nano hasta vi. Incluso Kate y Kwrite pueden ser considerados excelentes IDEs. Gedit tambien es una buena opcion. Estos son los mas usados en todas las plataformas. Existen otros, pero estos son los mas importantes. Problema: Donde puedo encontrar algun tutorial sobre programacion? Variante: C/C++ Solucion: http://www.conclase.net/ El mejor tutorial de C++ que he visto en internet. http://www.abcdatos.com/tutoriales/programacion/c.html Esta web tiene mas de 60 tutoriales sobre la programacion con C y sus variantes. http://www.lawebdelprogramador.com/ Una web mas que aborda el tema de programacion en C. Problema: No se que compilador/IDE es mejor, cual me recomiendan? Variantes: C/C++ Solucion: Code::Blocks.- Es la mejor solucion para los que no quieren pagar el precio de Visual C++. Se trata de un IDE totalmente configurable. Se pude usar cualquier compilador con este IDE. Dev-Cpp.-Es el segundo mejor IDE gratuito que existe. Igualmente se puede configurar todo como el codeblocks para utilizar cualquier compilador. Visual C++.- Este es el mejor IDE y compilador de todos, esta hecho por microsoft y tiene un excelente depurador. Desgraciadamente no es gratuito, y su precio es muy elevado. DJGPP .- Este compilador es una derivacion de GCC para DOS. Es bueno para empezar con C en la linea de comandos o suando un buen IDE. MingW32 .- Uno de los mejores compiladores que deriva de GCC. Es el que se usa generalmente con los IDEs gratuitos. LCC-win .- Este compilador tiene una terrible IDE pero tiene la ventaja de compilar muy rapido y crear buenos ejecutables. Visual C toolkit 2003 .- Este es el compilador de microsoft gratuito. Es muy poderoso y crea ejecutables compactos y rapidos. Solo que no tiene una IDE. Turbo C++ .- Este compilador es malo. No sigue el estandar, mal acostumbra a los programadores a usar cosas como conio.h y aparte esta extremadamente obsoleto. Cygwin .-La ventaja de este compiador es que puede compilar codigo hecho para linux. Tambien viene del GCC. GNU-GCC .- Este es otro de los mejores compiladores ya que es el que cumple con todos los estandares. El compilador puede ser recompilado para poder crear ejecutables para diferentes arquitecturas. Este es el mejor compilador que existe en cuanto al estandar de C. Estos son los mejores que he probado hasta ahora. Problema: ¿Qué es una libreria grafica? Variante: C/C++ Solucion: Una libreria grafica es un conjunto de fucheros que al incluirlos en tu programa te facilitan el uso de graficos en tus programas. ejemplos de estas son: Allegro: Excelente libreria de graficos en 2 dimensiones que tambien maneja sonido, joystick, teclado, mouse y temporizador. tiene algunas expansiones para poder usar graficos en 3D con la ayuda de opengl. DirectX: Este es el API de microsoft. Muy completo y complejo. Se usa en la malloria de los videojuegos y emuladores para programar los graficos el sonido, los controles, etc. OpenGL: Esta es la competencia de DirectX estando un paso abajo del poder de DX pero un paso arriba en su complejidad( menos complejo). Simple DirectMedia Layer : Una libreria grafica muy sencilla. Excelente para proyectos donde no se necesite mucho desempeño de graficos complejos. Tiene bastabtes expansiones para mejor sonido, fonts, carga de imagenes, etc. Problema: Quisiera programar un juego, por donde empiezo? Variantes: Todas Solucion: La programacion de juegos es muy compleja, se necesitan grandes conocimientos sobre el lenguaje que se va a usar y las librerías que se van a usar. Algunos sitios que pueden ayudar a iniciarte en la programacion de juegos son: Beyond 3D Sitio enfocado al análisis de tecnologías de gráficas 3D http://www.beyond3d.com C++ Sitio con tutoriales, artículos, foros y mucha información sobre C++ Problema: Como abrir, leer/escribir en un archivo con C Variante: C Solucion: Código: "#include<stdio.h> int main(int argc, char *argv[]) { FILE *archivo;/*El manejador de archivo*/ archivo=fopen("nombre_del_archivo.txt", "w"; if(archivo==NULL)/*So no lo logramos abrir, salimos*/ return 1; fprintf(archivo, "Hola, mundo\n";/*Escribimos en el archivo*/ fclose(archivo);/*Cerramos el archivo*/ return 0; }" archivo=fopen.... el primer argumento puede ser cualquier nombre.. dibujo.bmp documento.doc . . El segundo argumento indica la forma en que vamos a abrir el archivos: Para modo texto: "r" Solo para leer(Ya existe el archivo) "w"Para escribir en un archivo(si no existe, lo crea). "a"Abre o crea un archivo y le agrega informacion al final de este en vez de al principio. Para modo binario se usa lo smimo bero con un +b: "a+b" "w+b". Por ultimo. Para escribir en un archivo se pueden utilizar varias funciones al igual que para leer de este: Lectura: int fgetc(FILE *archivo); /*Lee un caracter*/ char *fgets(char *s, int n, FILE *archivo);//lee hasta n-1 caracteres y los pone en s que debe ser un arreglo. int getc(FILE *archivo);//Lo mismo que fgetc size_t fread(void *puntero, size_t t, size_t n, FILE *archivo);//Lee un bloque de t elementos de n tamaño cada uno. int fscanf(FILe* archivo, const char *format, ...); //Funciona como scanf. Escritura int fputc(int c, FILE *archivo); int fputs(const char *s, FILE *archivo); int putc(int c, FILE *archivo); int puts(const char *s); int fprintf(FILE *archivo, const char *formato, ...); Nunca olvides cerrar el archivo con fclose: int fclose(FILE *archivo); Problema: El programa Hola mundo en C Variante: C Solucion: Código: #include<stdio.h> int main(int argc, char *argv[]) { printf("Hola mundo desde C"\n); return 0; } En la primera linea se incluye la cabecera de la liberia que vamos a usar, en este caso stdio.h que contiene las funciones estandar de entrada y salida(STDIO- Standar In and Out), con esta podremos leer y escribir en la pantalla entre otras cosas. Despues tenemos: int main(int argc, char *argv[]) main es la funcion principal de un programa. Todo programa escrito en C o en C++ empieza justo donde esta el main. el estandar de C y C++ exige que la funcion devuelva un int, asi que siempre se debe escribir con n tipo de devolucion entero(int). El primer parametro es el numero de parametros con el que se llamó al programa: $-programa.exe ag1 arg2 arg3.... En este case tendrias 3 parametros, pero como el nombre del programa tambien cuenta como parametro, entonces se cuenta y en total tienes 4 parametros. El segundo parametro de la funcion main es un doble puntero, o mejor dicho, es un arreglo de punteros, donde cada puntero apunta a cada uno de los parametros pasados al programa. argv[0] contiene "programa.exe" argv[1] contienes "arg1" y asi sucesivamente. printf("Hola mundo desde C"\n); printf es una funcion que forma parte de la libreria estandar de C y su prototipo esta en stdio.h Su funcion principal es escribir caracteres en el flujo de salida estandar(stdout), que en este case es la pantalla, osea que es para escribir texto en pantalla. printf tiene una gran cantidad de funcionalidades y opciones para dar formato al texto, al igual que existen otras funciones con comportamientos similares, pero no las mencionaré en este post. por ultimo return 0; Como la funcion main regresa un tipo int, pues debemos "cumplirlo", es decir, al finalizar, debemos regresar un entero, que el sistema lo interpreta como codigo de salida que sirve para ver si el programa termino con exito o tuvo alguna falla. En C es obligatorio poner el return 0; al final de la funcion main, indicando que el programa termino bien. En C++ el return 0; esta implicito, por lo que no es necesario ponerlo. Problema: ¿Que son los punteros para que sirven? Variante: Funciona con todas, pero es la manera tradicional en C Solucion: Los punteros o apuntadores son variables que en vez de contener un valor comun como 345, 'h' o 4.56 tienen una dirección de una localidad de memoria. Los punteros pueden ser de distintos tipos, de hecho pueden ser tantos como tipos de variables. Algunos ejemplos de punteros y sus modo de uso son: int *puntero; Puntero que que va a contener la direccion de un dato tipo int. MI_ESTRUCTURA *puntero2; Puntero que va a contener la direccion de memoria de un dato tipo MI_ESTRUCTURA *puntero=10; Si puntero contiene una direccion valida, el 10 se guardara en esta dirección. Si no, el valor 10 se guardara en una direccion desconocida y podria causar problemas. puntero=10; Esto hace que el puntero apunte a la direccion 10(no es muy recomendable hacer eso). puntero=&variable; Apunta a la direccion donde se almacena la variable. & En caso de punteros es el operador de referencia. Es para hacer referencia a una localidad de memoria. * Es el operador de dereferencia, que es para obtener el valor de de una localidad de memoria. Es muy importante saber manejar los punteros con precaucion. El mal uso de un puntero puede llevar a efectos secundarios muy dificiles de depurar. Para empezar siempre hay que tener en mente que un puntero sin inicializar es un peligro andante.... bueno, no tanto asi, pero siempre es mejor tenerlos bien inicializados. Hay varios tipos de inicializacion: int *puntero; 1- puntero=NULL; Esto, pone tu puntero a un valor nulo que puede ser -1(0xFFFFFFFF) ó 0, depende del compilador. Con esto, es mas facil que el compilador te avise si estas usando un puntero con una localidad de memoria no valida. 2- puntero=&variable; Esto le da a puntero una direccion de memoria valida y la memoria es donde variable esta almacenada. 3-puntero=arreglo; Esto hace que el puntero contenga la direccion del primer elemento del arreglo. 4-puntero=&arreglo[0]; Es equivalente al 3. 5-puntero=malloc(4); ó puntero=new int[1]; Esto le da a puntero una direccion de memoria valida lista para usarse en el programa. 6-puntero=0xFFFF0000; Esto es EXTREMADAMENTE PELIGROSO. No deberia usarse asi un puntero almenos que de plano sepas muy bien lo que estas haciendo. Si conoces muy bien el mapa de memoria de tu CPU y quieres hacer cosas medio raras con el sistema operativo puedes intentarlo, pero para esto hay mejores opciones y mucho mas seguras. NUNCA hay que olvidar que si usamos malloc() o new, siempre debemos avisarle a nuestro sistema operativo que la memoria que nos prestó, ya la terminamos de usar. Para esto usamos free o delete en C y en C++ respectivamente. free(puntero); delete puntero; Asi de facil. Para que sirven? Los punteros son la parte mas poderosa del lenguaje C, es lo que hace a este lenguaje tan rico y con infinidad de posibilidades a diferencia de otros lenguajes. Sus usos mas comunes los puedes encontrar en la libreria estantar. Por ejemplo: printf(char *text, ...); Como veras printf resive punteros. Esto es para poder pasarle texto de cualquier extension. Si no pidiera punteros, entonces la funcion estaria limitada a un numero especifico de caracteres por llamada, lo cual obviamente no es muy eficiente. Otro ejemplo tipico son las listas, colas, pilas, etc. dinamicas. Gracias a los punteros, podemos ampliar nuestra memoria en un programa. En vez de usar char variable[64]; que tiene limite y que podemos llegar a este provocando un desbordamiento de memoria, podemos usar memoria dinamica con punteros. char *variable. despues, almacenamos memoria segun nuestras necesidades. variable=(char *)malloc(sizeof(char)*cuantas_necesite); Y los usos mas importantes es el paso de valor por referencia. Esto es, que dentro de una funcion podamos modificar por medio de punteros variables fuera de esa funcion. Si en vez de pasar el valor por referencia se pasa por valor, entonces la variable original no cambiria nunca, con referencia si cambia, tal como en printf. Hay muchas mas utilidades para los punteros. Una lista hecha por MaxExtreme nos da una idea. - Representar una dirección de memoria - Poder operar con ellas - Pasar, en vez de valores, direcciones a un valor. Esto sirve para: # No tener que copiar estructuras enteras # Hacer referencia a variables, funciones, clases, estructuras (...) de fuera que necesiten ser manejadas por la función. - Poder usar la memoria dinámica (según la necesidad) - Poder implementar listas, colas, pilas, etc etc - Poder crear objetos y variables en tiempo de ejecución - Y muchas cosas más detallistas. Hay una infinidad de utilidades, pero eso ya depende del programador. Problema: Como se usa el printf, cuales son todas sus opciones? Variante: C Solucion: printf es una funcion estandar que debe tener todo compilador que compile codigo estandar El prototipo de printf es: int printf(const char *texto, ...); El primer argumento "text" es donde se poner el texto que queremos mostrar en pantalla. Hay varios modificadores y caracteres especiales para poder modificar la salida de printf. En ejemplo de printf para poner texto es: printf("Hola"; El segundo argumento "..." significa que va a ir un numero indefinido de argumentos y sirven para poder poner valores de variables en pantalla, para esto se necesitan los modificadores que se enlistan: %d Para numeros decimales signo %i Para numero "integer" que tambien son decimlaes con signo %o Para poner un numero en forma octal. %x Para poner un numero en forma hexadecimal, se puede usar %X para letras mayusculas. %u Para numeros decimales sin signo %c Para un simple caracter entre comillas simples o un byte. %s Para cadenas de caracteres(palabras, oraciones, etc) %f Para numeros decimales con punto decimal(3.151459) %e Para notacion cientifica en la forma 1.23456e+/-7 Se puede usar %E para que salga la "e" en forma mayuscula. %g y %G No encontre mucha info pero al parecer es lo mismo que %e y %E %p Pone la direccion de un apuntador %n Este es para guardar en su argumento correspondiente el numero total de caracteres escritos %%, %\, etc son para poder poner caracteres especiales dentro del texto. printf regresa el numero de caracteres escritos. Tambien hay otros caracteres especiales para darle formato a la salida: Aun no conosco todos, pero estos se encuentran en la tabla estandar de caracteres. Unos de estos son: \n Para pasar al siguiente renglon \t Para tabulador horizontal \b Para dar un retroceso \r Para regresar hasta la izquierda o regresar el carro. \v Para tabulador vertical \f Avance de hoja Un ejemplo usando varias de las caracteristicas de printf son: Cita: int a=10, b=255, c; float f=3.14159; char texto[]="Hola, mundo"; char caracter='a'; int *puntero; c=printf("\n\tLa variable a contiene:%d.\n\tEn hexadecimal tiene %x.\n\tEn octal tiene %o.\n puntero apunta a: %p, y el texto cice: %s\n\n", a, a, a, *puntero, texto); printf("Se imprimieron %u caracteres.\n", c); printf("La variable f contiene:%f, y dandole un formato de un decimal:%.1f\n); printf("El caracter es: %c", caracter); Este es un ejemplo de como se puede usar printf para poner todo tipo de datos en la pantalla. Tambien se pueden usar otras versiones de printf para diferentes efectos como: int sprintf(char *donde, char *texto, ...); Para escribir dentro de una array de caracteres en vez de la pantalla. Hay otras versiones mas que en si cumplen con el mismo proposito como: vprintf vfprintf vsprintf etc Problema: Como se usa el scanf, cuales son todas sus opciones? Variante: C Solucion: scanf a diferencia de printf recoje los datos metidos en la consola. El prototipo de scanf es: int scanf(const char *texto, ...); El primer argumento son los especificadores de formato que quiere guardar como en un tipo de variable. Los especificadores de formato son los mismo que de printf, y tambien incluye otros que no voy a mencionar porque no se para que sirven aun. En el segundo argumento se ponen una indireccion a las variables donde quieren guardar los datos por eso se usa &. Un ejemplo sencillo del uso de scanf es el siguiente. Entrada: Hola 123, FF Cita: char texto[32]; int a, b; scanf("%s%d&x", texto, &a, &b); Scanf lee hasta encontrar espacios y lo guarda segun el formato especificado en la variable que se ponga. Si es posible hacer que scanf lea con mas precision, sin omitir espacios pero para hacer ese tipo de operaciones se recomienda mas usar metodos manuales con gets, getc, etc. scanf tambien tiene otras veriones. sscanf que en vez de leer de la consola, lee de una variable: int sscanf(char *donde, const char *texto, ...); scanf tambien es equivalente a fscanf(stdin, ...) Y que fscanf lee de un flujo y el flujo stdin es el de la consola. Tambien esta wscanf para texto en forma Unicode. Problema: Cual es la diferencia entre C y C++ Variante: C, C++ Solucion: Antes que nada hay que mencionar las caracteristicas de cada lenguaje para poder saber porque uno es mejor que otro. C es una lenguaje estructurado orientado a procedimientos. ¿Qué quiere decir esto? Con C la programacion se estructura en bloques, en este caso se usan llaves para poder encerrar el codigo en bloques. Las ventajas de este tipo de programacion son las de aplicar condifciones de flujo(if, while, for) a bloques de codigo entero. Gracias a esto se pudo eliminar totalmente el uso del famoso goto que daba dolores de cabeza a los que les tocaba revisar codigo. La base fundamental de C son las funciones Las funciones surgen como resultado de la programacion estructurada(bloques) y son los "ladrillos" de la construccion mas compleja que pueda haber. Gracias a las funciones podemos tener un codigo totalmente limpio y entendible(Claro, esto tambien depende de las habilidades del programador) Ahora veamos que tiene C++ de especial. C++ en primer lugar es totalmente compatible con C Ya que C++ es un superconjunto de C, este tiene todas las caracteristicas de C(programacion orientada a procedimientos y programacion estructurada). Gracias a esto cualquier programa escrito en C(100% estandar) compila en un compilador de C++. De hecho la idea inicial del inventor de C++ fue ampliar C a "C con clases". C++ es orientado a objectos ¿Qué significa esto? Cuando uno esta aprendiendo C++, uno cae en el error de que C++ es C con clases. Y no, es todo un nuevo paradigma. La programacion orientada a objectos es mucha mas que C con clases. Es llevar el codigo a un nivel de abstraccion mucho mas alto del que un lenguaje orientado a procedimientos puede. Es poder tratar casa elemento de un programa como un objeto. Y que al crear este objeto, uno no tenga que meterse realmente en el codigo, sino solo usar el objeto para lo que sirve. Gracias a estos niveles de abstraccion se puede reutilizar el codigo escrito, ya que un objecto como tal es totalmente reciclable, siempre y cuando este bien escrito. C++ incluye una nueva libreria estandar En C++ se incluye una nueva libreria que sustituye a los famosos stdio.h o stdlib.h. Esta libreria mejorada y totalmente orientada a objetos permite un mejor manejo de las funciones estadar que todo compilador debe tener. Aparte se añadieron nuevos tipos como "string" para el manejo de cadenas. Todo esto mas que facilitar el trabajo, ayuda a mantener tu codigo en un solo paradigma y asi tener codigo mas limpio y seguro. C++ y la STL En la estandarizacion de C++ se dicidio incluir esta increible libreria. Su proposito es aun mas grande que el de la misma programacion orientada a objetos. Se centra mas a la programacion generica dando asi un gran paso mas a la carrera de la multiplataforma. Esta libreria hecha para resolver los problemas mas comunes como listas enlazadas, pilas, colas, y otro tipo de manejo de datos, mas sin embargo su uso no solo se queda ahi, ya que con unas buenas habilidades se puede sacar gran provecho de esta increible libreria. Ahora si podremos decir porque uno es mejor que otro y que es lo mas conveniente hacer al intentar aprenderlo. C es un lenguaje multiproposito. Inicialmente creado para la programacion de sistemas, su uso se fue ampliando hasta llegar a ser en el mejor lenguaje de programacion en su tiempo. Con C se pueden programar todo tipo de programas, desde pequeñas calculadoras hasta complejos sistemas operativos(el ejemplo clasico, el kernel de Linux). Algunas personas caen en el error de que C solo se usa para programacion de drivers y/o sistemas operativos. Esto es falso. Cualquier programa puede ser hecho con C. Incluso se puede usar en la programacion web, aunque hay mejores alternativas para esto. C es una lenguaje relativamente facil de aprender. Pocas palabras calves, sintaxis clara y concreta, etc. En teoria el lenguaje se puede aprender en unos meses. Pero para poder desarrollar tecnicas avanzadas y realmente programar codigo digno de llamarse C se recomendaria un año. En cuanto a C++, este es un lenguaje MUCHO mas complicado que C. Pero primero lo primero. Con C++ puedes hacer todo lo que puedes hacer con C ya que este es un superconjunto de C. Pero aparte se tiene la opcion de elegir el nuevo paradigma, la programacion orientada a objetos. La ventaja de este modo de programacion es que el programa puede llegar a mucha complejidad y el programador puede tener el control de toda esta complejidad. No es lo mismo tener 100 modulos de C con funciones que uno ni se acuerda, que tener 100 modulos y 5 objetos que controlen todo y que esos modulos no se toquen para nada. Tambien se puede combinar los 2 lenguajes. Podemos usar programacion orientada a procedimientos y usar ls librerias orientadas objetos. El case tipico: Usar C con DirectX9. C++ NO ES UN LENGUAJE FACIL DE APRENDER. Despues de una año de dominar C, se recomiendan minimo 2 años para poder entender los paradigmas que C++ maneja. Realmente tompa tiempo poder usar este lenguaje de la manera que se debe ya que hay personas que caen en el error de que por saber usar las clases ya se sienten programadores profesionales de C++. Esto es falso, ya que se necesito MUCHO mas que eso para poder dominar el lenguaje. Hoy en dia lo mas recomendable ya seria empezar directamente con C++. Un error comun es cuando dicen que aprendiendo C++ aprendes C. En teoria es correcto, pero en la practica no. Si uno aprende puro C++ pasa por alto las librerias estandar de C. Aunque realmente ya no las va a utilizar siempre es bueno saber que existen. En conlusion: C y C++ son lenguajes diferentes, uno basado en otro. Los 2 son los mas potentes y eficientes en la mayoria de las tareas. C no esta muerto, aun mucha gente lo utiliza. Hay que recordar en nuevo estandar de C99 donde se nota como este lenguaje aun crece. C++ tiene un gran futuro. Es muy improbable que este lenguaje se deje de usar en un corto plazo. Incluso las nuevas tecnologias .NET no superan la eficiencia que los compiladores comunes de deste lenguaje nos dan. Espero que les sirva para poder informarse mas sobre las diferencias entre cada lenguaje. Problema: ¿Cómo hago que mis ejecutables en Dev-C++ se hagan más pequeños? Variante: C++ Solucion: Hay que asegurarse de que no estamos generando código para depuración. Esto lo hacemos siguiendo los siguientes pasos: Herramientas -> Generación/Optimización de código -> Generar información de depuración = No En caso de que este en Yes hay que cambiarlo a No. Despues hay que ir a la siguiente opción: Herramientas -> Generación/Optimización de código -> Optimización -> Más optimizaciones -> Mejor optimización = Yes Y la última y más importante es agregar al enlazador (linker) el parámetro -s. Esto lo hacemos así: Herramientas -> Opciones del compilador -> Activamos la casilla que tiene el texto: "Añadir estos comandos a la linea de comandos del linker" (si aun no está activada) -> En el cuadro de texto de abajo de esa opcion añadimos el texto: -s Prueba ejecutando el siguiente código sin esas opciones, verifica el tamaño de tu ejecutable. Despues, activas estas opciones y presiona Ctrl+F11 (Reconstruir) y verificas el tamaño: Código: #include <iostream> int main(int argc, char* argv[]) { std::cout << "Hola mundo!"; std::cout << "\nPresiona una tecla para continuar..."; std::cin.get(); return 0; } Problema: error al compilar Must use C++ for STDCOMP.H variante: C, C++ solución: segun borland es un problema comun para programadores principiantes si llamas librerias que existen para C++ y tu archivo lo creas con extención .C la solución es cambiar la extencion del archivo de c a cpp. Lenguaje: C/C++ Pregunta: Más manuales? Respuesta http://www.elrincondelc.com/portal/ http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C http://en.wikibooks.org/wiki/Programming:C_contents [inglés] http://en.wikibooks.org/wiki/C++ [inglés] http://www.lawebdelprogramador.com./...xto=C/Visual+C http://solocodigo.com/index.php?node=10 Problema: Donde encuentro algun manual de ensamblador? Variante: asm Solucion: Inglés Título: Assembly Tutor Language Tipo: Html - Online http://thsun1.jinr.ru/%7Ealvladim/man/asm.html Español Título: Tutorial del lenguaje Ensamblador Tipo: Html - Online http://www.itlp.edu.mx/publica/tutor...ador/index.htm Título: Aprenda ensamblador 80x86 en dos patadas* Tipo: Html - Online http://www.rinconsolidario.org/eps/asm8086/asm.html Titulo: The art of assembly Tipo: De todos, libro, html, doc, s-book, etc http://webster.cs.ucr.edu/ En www.abcdatos.com hay varios tutoriales de asm. Tema: Scripts, artículos y más Lenguajes: C, C++, C# & Asm http://www.planet-source-code.com http://www.codeproject.com http://www.codeguru.com http://www.codecranker.com http://www.programmersheaven.com http://www.codesites.com http://www.codesampler.com http://www.devmaster.net Lenguaje: C Pregunta: ¿Para qué sirve C? Respuesta: Para hacer: *Sistemas operativos *Compiladores *Assemblers *Editores de texto *Spoolers *Drivers *Programas modernos *Bases de datos *Intérpretes Pregunta: ¿Cómo crear un compilador? Respuesta: http://compilers.iecc.com/crenshaw/ Lenguaje: C Pregunta: Donde encuentro un manual de Sockets? Respuesta: Sockets para Windows: http://materias.fi.uba.ar/7542/herra...php?i=socketst Sockets para Linux (y con pocos cambios, windows compatible ) :http://www.arrakis.es/~dmrq/beej/index.html fuente http://www.forosdelweb.com/f96/faqs-del-lenguaje-c-variantes-264647/" target="_blank">http://www.cplusplus.com Comunidad Iberoamericana de Desarrolladores de Videojuegos Portal en español enfocado a impulsar el desarrollo de videojuegos a nivel profesional http://www.vjuegos.org DirectX 9.0 Documentación Oficial http://msdn.microsoft.com/library/de...irectx9cpp.asp Flip Code Portal sobre Programación de Videojuegos http://www.flipcode.com GT's Programming & Game tutorials Otra excelente pagina para encontrar recursos. http://www.gametutorials.com/ Gamasutra El portal más importante sobre desarrollo de videojuegos a nivel profesional http://www.gamasutra.com Game Developer Magazine Revista para Desarrolladores de Videojuegos http://www.gdmag.com Game Developers Conference Congreso Internacional de Desarrolladores de Videojuegos http://www.gdconf.com Game Development Excelente pagina para desarrollar videojuegos con cualquier libreria, desgraciadamente esta en ingles. http://www.gamedev.net International Game Developers Association - Capítulo México http://www.igda.org/mexico JFHorizon Muy buena pagina en español con algunos tutoriales sobre la programacion de juegos en español con excelentes tutoriales e programacion de juegos y diseño. http://sp4br75.digiweb.psi.br/principal.htm OpenGL http://www.opengl.org Problema: Como abrir, leer/escribir en un archivo con C Variante: C Solucion: Código: "#include<stdio.h> int main(int argc, char *argv[]) { FILE *archivo;/*El manejador de archivo*/ archivo=fopen("nombre_del_archivo.txt", "w"; if(archivo==NULL)/*So no lo logramos abrir, salimos*/ return 1; fprintf(archivo, "Hola, mundo\n";/*Escribimos en el archivo*/ fclose(archivo);/*Cerramos el archivo*/ return 0; }" archivo=fopen.... el primer argumento puede ser cualquier nombre.. dibujo.bmp documento.doc . . El segundo argumento indica la forma en que vamos a abrir el archivos: Para modo texto: "r" Solo para leer(Ya existe el archivo) "w"Para escribir en un archivo(si no existe, lo crea). "a"Abre o crea un archivo y le agrega informacion al final de este en vez de al principio. Para modo binario se usa lo smimo bero con un +b: "a+b" "w+b". Por ultimo. Para escribir en un archivo se pueden utilizar varias funciones al igual que para leer de este: Lectura: int fgetc(FILE *archivo); /*Lee un caracter*/ char *fgets(char *s, int n, FILE *archivo);//lee hasta n-1 caracteres y los pone en s que debe ser un arreglo. int getc(FILE *archivo);//Lo mismo que fgetc size_t fread(void *puntero, size_t t, size_t n, FILE *archivo);//Lee un bloque de t elementos de n tamaño cada uno. int fscanf(FILe* archivo, const char *format, ...); //Funciona como scanf. Escritura int fputc(int c, FILE *archivo); int fputs(const char *s, FILE *archivo); int putc(int c, FILE *archivo); int puts(const char *s); int fprintf(FILE *archivo, const char *formato, ...); Nunca olvides cerrar el archivo con fclose: int fclose(FILE *archivo); Problema: El programa Hola mundo en C Variante: C Solucion: Código: #include<stdio.h> int main(int argc, char *argv[]) { printf("Hola mundo desde C"\n); return 0; } En la primera linea se incluye la cabecera de la liberia que vamos a usar, en este caso stdio.h que contiene las funciones estandar de entrada y salida(STDIO- Standar In and Out), con esta podremos leer y escribir en la pantalla entre otras cosas. Despues tenemos: int main(int argc, char *argv[]) main es la funcion principal de un programa. Todo programa escrito en C o en C++ empieza justo donde esta el main. el estandar de C y C++ exige que la funcion devuelva un int, asi que siempre se debe escribir con n tipo de devolucion entero(int). El primer parametro es el numero de parametros con el que se llamó al programa: $-programa.exe ag1 arg2 arg3.... En este case tendrias 3 parametros, pero como el nombre del programa tambien cuenta como parametro, entonces se cuenta y en total tienes 4 parametros. El segundo parametro de la funcion main es un doble puntero, o mejor dicho, es un arreglo de punteros, donde cada puntero apunta a cada uno de los parametros pasados al programa. argv[0] contiene "programa.exe" argv[1] contienes "arg1" y asi sucesivamente. printf("Hola mundo desde C"\n); printf es una funcion que forma parte de la libreria estandar de C y su prototipo esta en stdio.h Su funcion principal es escribir caracteres en el flujo de salida estandar(stdout), que en este case es la pantalla, osea que es para escribir texto en pantalla. printf tiene una gran cantidad de funcionalidades y opciones para dar formato al texto, al igual que existen otras funciones con comportamientos similares, pero no las mencionaré en este post. por ultimo return 0; Como la funcion main regresa un tipo int, pues debemos "cumplirlo", es decir, al finalizar, debemos regresar un entero, que el sistema lo interpreta como codigo de salida que sirve para ver si el programa termino con exito o tuvo alguna falla. En C es obligatorio poner el return 0; al final de la funcion main, indicando que el programa termino bien. En C++ el return 0; esta implicito, por lo que no es necesario ponerlo. Problema: ¿Que son los punteros para que sirven? Variante: Funciona con todas, pero es la manera tradicional en C Solucion: Los punteros o apuntadores son variables que en vez de contener un valor comun como 345, 'h' o 4.56 tienen una dirección de una localidad de memoria. Los punteros pueden ser de distintos tipos, de hecho pueden ser tantos como tipos de variables. Algunos ejemplos de punteros y sus modo de uso son: int *puntero; Puntero que que va a contener la direccion de un dato tipo int. MI_ESTRUCTURA *puntero2; Puntero que va a contener la direccion de memoria de un dato tipo MI_ESTRUCTURA *puntero=10; Si puntero contiene una direccion valida, el 10 se guardara en esta dirección. Si no, el valor 10 se guardara en una direccion desconocida y podria causar problemas. puntero=10; Esto hace que el puntero apunte a la direccion 10(no es muy recomendable hacer eso). puntero=&variable; Apunta a la direccion donde se almacena la variable. & En caso de punteros es el operador de referencia. Es para hacer referencia a una localidad de memoria. * Es el operador de dereferencia, que es para obtener el valor de de una localidad de memoria. Es muy importante saber manejar los punteros con precaucion. El mal uso de un puntero puede llevar a efectos secundarios muy dificiles de depurar. Para empezar siempre hay que tener en mente que un puntero sin inicializar es un peligro andante.... bueno, no tanto asi, pero siempre es mejor tenerlos bien inicializados. Hay varios tipos de inicializacion: int *puntero; 1- puntero=NULL; Esto, pone tu puntero a un valor nulo que puede ser -1(0xFFFFFFFF) ó 0, depende del compilador. Con esto, es mas facil que el compilador te avise si estas usando un puntero con una localidad de memoria no valida. 2- puntero=&variable; Esto le da a puntero una direccion de memoria valida y la memoria es donde variable esta almacenada. 3-puntero=arreglo; Esto hace que el puntero contenga la direccion del primer elemento del arreglo. 4-puntero=&arreglo[0]; Es equivalente al 3. 5-puntero=malloc(4); ó puntero=new int[1]; Esto le da a puntero una direccion de memoria valida lista para usarse en el programa. 6-puntero=0xFFFF0000; Esto es EXTREMADAMENTE PELIGROSO. No deberia usarse asi un puntero almenos que de plano sepas muy bien lo que estas haciendo. Si conoces muy bien el mapa de memoria de tu CPU y quieres hacer cosas medio raras con el sistema operativo puedes intentarlo, pero para esto hay mejores opciones y mucho mas seguras. NUNCA hay que olvidar que si usamos malloc() o new, siempre debemos avisarle a nuestro sistema operativo que la memoria que nos prestó, ya la terminamos de usar. Para esto usamos free o delete en C y en C++ respectivamente. free(puntero); delete puntero; Asi de facil. Para que sirven? Los punteros son la parte mas poderosa del lenguaje C, es lo que hace a este lenguaje tan rico y con infinidad de posibilidades a diferencia de otros lenguajes. Sus usos mas comunes los puedes encontrar en la libreria estantar. Por ejemplo: printf(char *text, ...); Como veras printf resive punteros. Esto es para poder pasarle texto de cualquier extension. Si no pidiera punteros, entonces la funcion estaria limitada a un numero especifico de caracteres por llamada, lo cual obviamente no es muy eficiente. Otro ejemplo tipico son las listas, colas, pilas, etc. dinamicas. Gracias a los punteros, podemos ampliar nuestra memoria en un programa. En vez de usar char variable[64]; que tiene limite y que podemos llegar a este provocando un desbordamiento de memoria, podemos usar memoria dinamica con punteros. char *variable. despues, almacenamos memoria segun nuestras necesidades. variable=(char *)malloc(sizeof(char)*cuantas_necesite); Y los usos mas importantes es el paso de valor por referencia. Esto es, que dentro de una funcion podamos modificar por medio de punteros variables fuera de esa funcion. Si en vez de pasar el valor por referencia se pasa por valor, entonces la variable original no cambiria nunca, con referencia si cambia, tal como en printf. Hay muchas mas utilidades para los punteros. Una lista hecha por MaxExtreme nos da una idea. - Representar una dirección de memoria - Poder operar con ellas - Pasar, en vez de valores, direcciones a un valor. Esto sirve para: # No tener que copiar estructuras enteras # Hacer referencia a variables, funciones, clases, estructuras (...) de fuera que necesiten ser manejadas por la función. - Poder usar la memoria dinámica (según la necesidad) - Poder implementar listas, colas, pilas, etc etc - Poder crear objetos y variables en tiempo de ejecución - Y muchas cosas más detallistas. Hay una infinidad de utilidades, pero eso ya depende del programador. Problema: Como se usa el printf, cuales son todas sus opciones? Variante: C Solucion: printf es una funcion estandar que debe tener todo compilador que compile codigo estandar El prototipo de printf es: int printf(const char *texto, ...); El primer argumento "text" es donde se poner el texto que queremos mostrar en pantalla. Hay varios modificadores y caracteres especiales para poder modificar la salida de printf. En ejemplo de printf para poner texto es: printf("Hola"; El segundo argumento "..." significa que va a ir un numero indefinido de argumentos y sirven para poder poner valores de variables en pantalla, para esto se necesitan los modificadores que se enlistan: %d Para numeros decimales signo %i Para numero "integer" que tambien son decimlaes con signo %o Para poner un numero en forma octal. %x Para poner un numero en forma hexadecimal, se puede usar %X para letras mayusculas. %u Para numeros decimales sin signo %c Para un simple caracter entre comillas simples o un byte. %s Para cadenas de caracteres(palabras, oraciones, etc) %f Para numeros decimales con punto decimal(3.151459) %e Para notacion cientifica en la forma 1.23456e+/-7 Se puede usar %E para que salga la "e" en forma mayuscula. %g y %G No encontre mucha info pero al parecer es lo mismo que %e y %E %p Pone la direccion de un apuntador %n Este es para guardar en su argumento correspondiente el numero total de caracteres escritos %%, %\, etc son para poder poner caracteres especiales dentro del texto. printf regresa el numero de caracteres escritos. Tambien hay otros caracteres especiales para darle formato a la salida: Aun no conosco todos, pero estos se encuentran en la tabla estandar de caracteres. Unos de estos son: \n Para pasar al siguiente renglon \t Para tabulador horizontal \b Para dar un retroceso \r Para regresar hasta la izquierda o regresar el carro. \v Para tabulador vertical \f Avance de hoja Un ejemplo usando varias de las caracteristicas de printf son: Cita: int a=10, b=255, c; float f=3.14159; char texto[]="Hola, mundo"; char caracter='a'; int *puntero; c=printf("\n\tLa variable a contiene:%d.\n\tEn hexadecimal tiene %x.\n\tEn octal tiene %o.\n puntero apunta a: %p, y el texto cice: %s\n\n", a, a, a, *puntero, texto); printf("Se imprimieron %u caracteres.\n", c); printf("La variable f contiene:%f, y dandole un formato de un decimal:%.1f\n); printf("El caracter es: %c", caracter); Este es un ejemplo de como se puede usar printf para poner todo tipo de datos en la pantalla. Tambien se pueden usar otras versiones de printf para diferentes efectos como: int sprintf(char *donde, char *texto, ...); Para escribir dentro de una array de caracteres en vez de la pantalla. Hay otras versiones mas que en si cumplen con el mismo proposito como: vprintf vfprintf vsprintf etc Problema: Como se usa el scanf, cuales son todas sus opciones? Variante: C Solucion: scanf a diferencia de printf recoje los datos metidos en la consola. El prototipo de scanf es: int scanf(const char *texto, ...); El primer argumento son los especificadores de formato que quiere guardar como en un tipo de variable. Los especificadores de formato son los mismo que de printf, y tambien incluye otros que no voy a mencionar porque no se para que sirven aun. En el segundo argumento se ponen una indireccion a las variables donde quieren guardar los datos por eso se usa &. Un ejemplo sencillo del uso de scanf es el siguiente. Entrada: Hola 123, FF Cita: char texto[32]; int a, b; scanf("%s%d&x", texto, &a, &b); Scanf lee hasta encontrar espacios y lo guarda segun el formato especificado en la variable que se ponga. Si es posible hacer que scanf lea con mas precision, sin omitir espacios pero para hacer ese tipo de operaciones se recomienda mas usar metodos manuales con gets, getc, etc. scanf tambien tiene otras veriones. sscanf que en vez de leer de la consola, lee de una variable: int sscanf(char *donde, const char *texto, ...); scanf tambien es equivalente a fscanf(stdin, ...) Y que fscanf lee de un flujo y el flujo stdin es el de la consola. Tambien esta wscanf para texto en forma Unicode. Problema: Cual es la diferencia entre C y C++ Variante: C, C++ Solucion: Antes que nada hay que mencionar las caracteristicas de cada lenguaje para poder saber porque uno es mejor que otro. C es una lenguaje estructurado orientado a procedimientos. ¿Qué quiere decir esto? Con C la programacion se estructura en bloques, en este caso se usan llaves para poder encerrar el codigo en bloques. Las ventajas de este tipo de programacion son las de aplicar condifciones de flujo(if, while, for) a bloques de codigo entero. Gracias a esto se pudo eliminar totalmente el uso del famoso goto que daba dolores de cabeza a los que les tocaba revisar codigo. La base fundamental de C son las funciones Las funciones surgen como resultado de la programacion estructurada(bloques) y son los "ladrillos" de la construccion mas compleja que pueda haber. Gracias a las funciones podemos tener un codigo totalmente limpio y entendible(Claro, esto tambien depende de las habilidades del programador) Ahora veamos que tiene C++ de especial. C++ en primer lugar es totalmente compatible con C Ya que C++ es un superconjunto de C, este tiene todas las caracteristicas de C(programacion orientada a procedimientos y programacion estructurada). Gracias a esto cualquier programa escrito en C(100% estandar) compila en un compilador de C++. De hecho la idea inicial del inventor de C++ fue ampliar C a "C con clases". C++ es orientado a objectos ¿Qué significa esto? Cuando uno esta aprendiendo C++, uno cae en el error de que C++ es C con clases. Y no, es todo un nuevo paradigma. La programacion orientada a objectos es mucha mas que C con clases. Es llevar el codigo a un nivel de abstraccion mucho mas alto del que un lenguaje orientado a procedimientos puede. Es poder tratar casa elemento de un programa como un objeto. Y que al crear este objeto, uno no tenga que meterse realmente en el codigo, sino solo usar el objeto para lo que sirve. Gracias a estos niveles de abstraccion se puede reutilizar el codigo escrito, ya que un objecto como tal es totalmente reciclable, siempre y cuando este bien escrito. C++ incluye una nueva libreria estandar En C++ se incluye una nueva libreria que sustituye a los famosos stdio.h o stdlib.h. Esta libreria mejorada y totalmente orientada a objetos permite un mejor manejo de las funciones estadar que todo compilador debe tener. Aparte se añadieron nuevos tipos como "string" para el manejo de cadenas. Todo esto mas que facilitar el trabajo, ayuda a mantener tu codigo en un solo paradigma y asi tener codigo mas limpio y seguro. C++ y la STL En la estandarizacion de C++ se dicidio incluir esta increible libreria. Su proposito es aun mas grande que el de la misma programacion orientada a objetos. Se centra mas a la programacion generica dando asi un gran paso mas a la carrera de la multiplataforma. Esta libreria hecha para resolver los problemas mas comunes como listas enlazadas, pilas, colas, y otro tipo de manejo de datos, mas sin embargo su uso no solo se queda ahi, ya que con unas buenas habilidades se puede sacar gran provecho de esta increible libreria. Ahora si podremos decir porque uno es mejor que otro y que es lo mas conveniente hacer al intentar aprenderlo. C es un lenguaje multiproposito. Inicialmente creado para la programacion de sistemas, su uso se fue ampliando hasta llegar a ser en el mejor lenguaje de programacion en su tiempo. Con C se pueden programar todo tipo de programas, desde pequeñas calculadoras hasta complejos sistemas operativos(el ejemplo clasico, el kernel de Linux). Algunas personas caen en el error de que C solo se usa para programacion de drivers y/o sistemas operativos. Esto es falso. Cualquier programa puede ser hecho con C. Incluso se puede usar en la programacion web, aunque hay mejores alternativas para esto. C es una lenguaje relativamente facil de aprender. Pocas palabras calves, sintaxis clara y concreta, etc. En teoria el lenguaje se puede aprender en unos meses. Pero para poder desarrollar tecnicas avanzadas y realmente programar codigo digno de llamarse C se recomendaria un año. En cuanto a C++, este es un lenguaje MUCHO mas complicado que C. Pero primero lo primero. Con C++ puedes hacer todo lo que puedes hacer con C ya que este es un superconjunto de C. Pero aparte se tiene la opcion de elegir el nuevo paradigma, la programacion orientada a objetos. La ventaja de este modo de programacion es que el programa puede llegar a mucha complejidad y el programador puede tener el control de toda esta complejidad. No es lo mismo tener 100 modulos de C con funciones que uno ni se acuerda, que tener 100 modulos y 5 objetos que controlen todo y que esos modulos no se toquen para nada. Tambien se puede combinar los 2 lenguajes. Podemos usar programacion orientada a procedimientos y usar ls librerias orientadas objetos. El case tipico: Usar C con DirectX9. C++ NO ES UN LENGUAJE FACIL DE APRENDER. Despues de una año de dominar C, se recomiendan minimo 2 años para poder entender los paradigmas que C++ maneja. Realmente tompa tiempo poder usar este lenguaje de la manera que se debe ya que hay personas que caen en el error de que por saber usar las clases ya se sienten programadores profesionales de C++. Esto es falso, ya que se necesito MUCHO mas que eso para poder dominar el lenguaje. Hoy en dia lo mas recomendable ya seria empezar directamente con C++. Un error comun es cuando dicen que aprendiendo C++ aprendes C. En teoria es correcto, pero en la practica no. Si uno aprende puro C++ pasa por alto las librerias estandar de C. Aunque realmente ya no las va a utilizar siempre es bueno saber que existen. En conlusion: C y C++ son lenguajes diferentes, uno basado en otro. Los 2 son los mas potentes y eficientes en la mayoria de las tareas. C no esta muerto, aun mucha gente lo utiliza. Hay que recordar en nuevo estandar de C99 donde se nota como este lenguaje aun crece. C++ tiene un gran futuro. Es muy improbable que este lenguaje se deje de usar en un corto plazo. Incluso las nuevas tecnologias .NET no superan la eficiencia que los compiladores comunes de deste lenguaje nos dan. Espero que les sirva para poder informarse mas sobre las diferencias entre cada lenguaje. Problema: ¿Cómo hago que mis ejecutables en Dev-C++ se hagan más pequeños? Variante: C++ Solucion: Hay que asegurarse de que no estamos generando código para depuración. Esto lo hacemos siguiendo los siguientes pasos: Herramientas -> Generación/Optimización de código -> Generar información de depuración = No En caso de que este en Yes hay que cambiarlo a No. Despues hay que ir a la siguiente opción: Herramientas -> Generación/Optimización de código -> Optimización -> Más optimizaciones -> Mejor optimización = Yes Y la última y más importante es agregar al enlazador (linker) el parámetro -s. Esto lo hacemos así: Herramientas -> Opciones del compilador -> Activamos la casilla que tiene el texto: "Añadir estos comandos a la linea de comandos del linker" (si aun no está activada) -> En el cuadro de texto de abajo de esa opcion añadimos el texto: -s Prueba ejecutando el siguiente código sin esas opciones, verifica el tamaño de tu ejecutable. Despues, activas estas opciones y presiona Ctrl+F11 (Reconstruir) y verificas el tamaño: Código: #include <iostream> int main(int argc, char* argv[]) { std::cout << "Hola mundo!"; std::cout << "\nPresiona una tecla para continuar..."; std::cin.get(); return 0; } Problema: error al compilar Must use C++ for STDCOMP.H variante: C, C++ solución: segun borland es un problema comun para programadores principiantes si llamas librerias que existen para C++ y tu archivo lo creas con extención .C la solución es cambiar la extencion del archivo de c a cpp. Lenguaje: C/C++ Pregunta: Más manuales? Respuesta http://www.elrincondelc.com/portal/ http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C http://en.wikibooks.org/wiki/Programming:C_contents [inglés] http://en.wikibooks.org/wiki/C++ [inglés] http://www.lawebdelprogramador.com./...xto=C/Visual+C http://solocodigo.com/index.php?node=10 Problema: Donde encuentro algun manual de ensamblador? Variante: asm Solucion: Inglés Título: Assembly Tutor Language Tipo: Html - Online http://thsun1.jinr.ru/%7Ealvladim/man/asm.html Español Título: Tutorial del lenguaje Ensamblador Tipo: Html - Online http://www.itlp.edu.mx/publica/tutor...ador/index.htm Título: Aprenda ensamblador 80x86 en dos patadas* Tipo: Html - Online http://www.rinconsolidario.org/eps/asm8086/asm.html Titulo: The art of assembly Tipo: De todos, libro, html, doc, s-book, etc http://webster.cs.ucr.edu/ En www.abcdatos.com hay varios tutoriales de asm. Tema: Scripts, artículos y más Lenguajes: C, C++, C# & Asm http://www.planet-source-code.com http://www.codeproject.com http://www.codeguru.com http://www.codecranker.com http://www.programmersheaven.com http://www.codesites.com http://www.codesampler.com http://www.devmaster.net Lenguaje: C Pregunta: ¿Para qué sirve C? Respuesta: Para hacer: *Sistemas operativos *Compiladores *Assemblers *Editores de texto *Spoolers *Drivers *Programas modernos *Bases de datos *Intérpretes Pregunta: ¿Cómo crear un compilador? Respuesta: http://compilers.iecc.com/crenshaw/ Lenguaje: C Pregunta: Donde encuentro un manual de Sockets? Respuesta: Sockets para Windows: http://materias.fi.uba.ar/7542/herra...php?i=socketst Sockets para Linux (y con pocos cambios, windows compatible ) :http://www.arrakis.es/~dmrq/beej/index.html fuente http://www.forosdelweb.com/f96/faqs-del-lenguaje-c-variantes-264647/ <a href='http://b.t.net.ar/www/delivery/ck.php?n=a2afc290&amp;cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://b.t.net.ar/www/delivery/avw.php?zoneid=58&amp;cb=INSERT_RANDOM_NUMBER_HERE&amp;n=a2afc290' border='0' alt='' /></a>

0
2
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.