Foros del Web » Programación para mayores de 30 ;) » C/C++ »

FAQs del lenguaje C y sus variantes

Estas en el tema de FAQs del lenguaje C y sus variantes en el foro de C/C++ en Foros del Web. Empecemos de una vez con las benditas "frequently asked questions" de este foro. Yo me especializo en C/C++ asi que comenzaremos con estas. El formato ...

  #1 (permalink)  
Antiguo 24/01/2005, 18:21
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
FAQs del lenguaje C y sus variantes

Empecemos de una vez con las benditas "frequently asked questions" de este foro. Yo me especializo en C/C++ asi que comenzaremos con estas.

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.

muy comun no?

Espero que contribuyan todos con estas faqs.

Ah, por cierto. No pongan posts que no sean faqs

Última edición por Instru; 05/05/2005 a las 10:37
  #2 (permalink)  
Antiguo 24/01/2005, 18:25
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 21/07/2007 a las 17:20
  #3 (permalink)  
Antiguo 24/01/2005, 18:29
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 20/05/2007 a las 22:34
  #4 (permalink)  
Antiguo 24/01/2005, 18:37
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 20/05/2007 a las 22:37
  #5 (permalink)  
Antiguo 24/01/2005, 18:44
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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 [SDL]: 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.

Última edición por Instru; 20/05/2007 a las 22:42
  #6 (permalink)  
Antiguo 24/01/2005, 18:50
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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++
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

Última edición por Instru; 20/05/2007 a las 22:43
  #7 (permalink)  
Antiguo 24/01/2005, 19:15
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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);

Última edición por Instru; 25/01/2005 a las 17:12
  #8 (permalink)  
Antiguo 01/05/2005, 15:10
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 17/07/2007 a las 01:02
  #9 (permalink)  
Antiguo 18/05/2005, 19:07
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 17/07/2007 a las 01:31
  #10 (permalink)  
Antiguo 11/06/2005, 07:25
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Cómo imprimir un "caracter especial" por ejemplo tildes?

En Internet y libros estan las guias, pero aqui esta este programita que te muestra algúnos de los caracteres:
Código PHP:
/*Cacracteres*/#include <stdio.h>
#include <stdlib.h>    
int main(){
// Declaramos la varible número, pausa y p_cada:
    
int    numero,pausa,p_cada;
// Cada cuantas lineas quieres la pausa?
    
p_cada=20;
    
pausa=p_cada;
    for(
numero=0;numero<257;numero++){
    
printf("\t\t %i equivale a %c\r\n",numero,numero);
    if(
numero>p_cada){
    
system("pause");
    
p_cada+=pausa;
    }}
    
system("pause");
    return 
0;
    } 
Nota: algo sucede en el caracter [10], y en el [26] ello es lo que provoca el "despelote" en este otro programita:
Código PHP:
/*Cacracteres con tabulado*/#include <stdio.h>
int main(){
// Declaramos las varible a utilizar:
    
int    num_1,num_2,num_3,pausa,p_cada;
// Cada cuantas lineas quieres la pausa?
    
p_cada=50;
    
pausa=p_cada;
    for(
num_1=0;num_1<257;num_1++){
    
num_2=num_1+1;
    
num_3=num_2+1;
    
printf("\t%i equivale a %c\t\t%i equivale a %c\t\t%i equivale a %c\r\n",num_1,num_1,num_2,num_2,num_3,num_3);
    
num_1=num_3;
    if(
num_1>p_cada){
    
system("pause");
    
p_cada+=pausa;
    }}
    
system("pause");
    return 
0;
    } 
  #11 (permalink)  
Antiguo 02/07/2005, 14:44
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Problema: Ya aprendi C y C++, pero no se que hacer y se me olvida.
Variante: C/C++
Solucion:
En el foro se acaba de poner un nuevo taller de ejercicios de varios niveles, asi puedes ir practicando hasta que mejores tu nivel y puedas hacer una aplicacion mas compleja que se te ocurra.
  #12 (permalink)  
Antiguo 02/07/2005, 15:18
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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

Última edición por Instru; 20/04/2006 a las 23:27
  #13 (permalink)  
Antiguo 02/07/2005, 15:31
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 02/07/2005 a las 15:41
  #14 (permalink)  
Antiguo 20/07/2005, 07:55
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.

Última edición por Instru; 14/06/2006 a las 12:24
  #15 (permalink)  
Antiguo 24/07/2005, 17:04
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
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;
}
  #16 (permalink)  
Antiguo 03/11/2005, 12:36
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 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.
  #17 (permalink)  
Antiguo 02/02/2006, 23:03
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Lenguaje: C/C++
Pregunta: Quiero el Visual C++ pero es pago, no existe gratuito?
Respuesta:
http://msdn.microsoft.com/vstudio/ex...ualc/download/

Última edición por X.Cyclop; 02/02/2006 a las 23:15
  #18 (permalink)  
Antiguo 02/02/2006, 23:15
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Lenguaje: C/C++
Pregunta: C o C++?
Respuesta:
http://www.forosdelweb.com/f14/porque-dejar-c-programar-c-362820/
  #19 (permalink)  
Antiguo 02/02/2006, 23:20
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
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

Última edición por X.Cyclop; 02/02/2006 a las 23:26
  #20 (permalink)  
Antiguo 02/02/2006, 23:24
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Lenguaje: Java / C++
Pregunta: Java o C++?
Respuesta
http://www.forosdelweb.com/showthrea...highlight=java
http://www.forosdelweb.com/showthrea...highlight=java
  #21 (permalink)  
Antiguo 17/03/2006, 16:48
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
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.
  #22 (permalink)  
Antiguo 18/03/2006, 21:39
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
¿Más de Asm?: http://www.forosdelweb.com/f14/manuales-asm-379256/#post1469083
  #23 (permalink)  
Antiguo 20/03/2006, 01:21
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Tema: Visual C++
Pregunta: ¿Cuáles son las diferencias en las ediciones del increíble IDE/Compilador Visual C++?
Respuesta:
http://msdn2.microsoft.com/en-us/lib...h9(VS.80).aspx
  #24 (permalink)  
Antiguo 23/03/2006, 16:06
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
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

  #25 (permalink)  
Antiguo 30/03/2006, 17:41
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
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


Al menos, eso dice el help del Dev-C++.
  #26 (permalink)  
Antiguo 30/03/2006, 18:14
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Tema: Dev-C++
Preguna: ¿Cómo se usa el Dev-C++?
Respuesta: http://www.telefonica.net/web/espaiw...os_by_zheo.zip
  #27 (permalink)  
Antiguo 02/04/2006, 23:35
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta: ¿Hay algun manual de referencia a C y/o C++ que use el VC++?
Respuesta:

C
http://msdn2.microsoft.com/en-us/lib...x6(VS.80).aspx
C++
http://msdn2.microsoft.com/en-us/lib...k5(VS.80).aspx
  #28 (permalink)  
Antiguo 03/04/2006, 14:40
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola mundo en C++:

Código:
#include <stdafx.h>
#include <iostream>

using namespace std;

int main () {
	cout << "Hello World!";
	getchar();
}
o

Código:
#include <stdafx.h>
#include <iostream>

int main () {
	std::cout << "Hello World!";
	getchar();
}
Gracias a EI.
  #29 (permalink)  
Antiguo 03/04/2006, 20:42
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta: ¿Cómo crear un compilador?
Respuesta: http://compilers.iecc.com/crenshaw/
  #30 (permalink)  
Antiguo 16/05/2006, 12:33
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Problema: Porque me da errores la libreria graphics.h o la conio.h en Dev-Cpp?
Variante: C/C++
Solucion:

graphics.h y conio.h como algunas otras, no son estandar, es decir, no se incluyen en todos los compiladores de C. Estas librerias, son exclusivas del compilador de Borland, ya sea de Turbo C o Borland C.

Lo mejor seria aprender a usar otras librerias, como sustitutas.
Para graphic.h esta SDL o allegro.
En cuanto a conio.h hay una emulacion disponible para Dev-Cpp en la lista de paquetes.

Es recomendable evitar el uso de estas librerias, ya que no son estandar ni portatiles.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 29 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:26.