Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

empezar en c

143 Respuestas
16 Usuarios
0 Reactions
365.4 K Visitas
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 19 años

Hola, quisiera que me recomendarais algun programa, gratuito si es posible, para compilar y programar en c, y saber si se puede hacer programas en c, que ademas de escribir texto en pantalla pueda manejar graficos, crear entorno grafico propio y similares (como los entornos graficos de un videojuego) y como se puede programar que se muestren imagenes en pantalla con c. Igualmente agradeceria cualquier referencia a manuales lo mas completos posibles sobre programacion en c, preferiblemente en castellano.

Gracias por cualquier ayuda que me podais ofrecer.

Responder
142 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 20 años

Bueno, costó un poco (bastante), pero C++ tiene su estándar, desde 1998

¿Alguien lo cumple? 😛

S2

Ranganok Schahzaman

Responder
aprendiendo
Respuestas: 317
(@aprendiendo)
Reputable Member
Registrado: hace 17 años

Jejeje. Pues como todos los estándares, al 100% creo que nadie o casi nadie, véase por ejemplo el IE respecto HTML y CSS, y Oracle respecto SQL 😉

Pero al menos hay una referencia establecida. Y en lo fundamental, al menos en C y C++ cumplen bastante bien. Si no me falla la memoria Gnu-GCC era de los más cumplidores

A propósito, ¿qué tal cumplen con c#? 😛 😉 De MS me lo creo todo xD

He de reconocer que c++ es mi lenguaje preferido, por motivos históricos. Pero c# me gusta bastante y me es muy cómodo utilizarlo, especialmente por el Visual Studio y para el interfaz gráfico. Por cierto, c# lo estoy utilizando con Bioloid, ¿eras tú quien se planteaba comprarselo?

Realmente con que el lenguaje sea orientado a objetos ya me vale 🙂

Responder
fede
Respuestas: 1
 fede
(@fede)
New Member
Registrado: hace 17 años

Una cuestión es si luego vas a querer usarlo en microcontroladores para robots. Si es así, casi estás limitado a usar el lenguaje C.

Si quieres comenzar a programar en general, estoy de acuerdo con Ranganok, mejor un Java o C#.

Para Java te puedes bajar el JSDK que incluye el compilador y la máquina Java para ejecutar los programas (en java.sun.com). También te puedes bajar un entorno de desarrollo integrado como Eclipse o Netbeans. Netbeans incluye un diseñador de interfaces gráficas visual, bastante majo (también en java.sun.com). En cualquier caso, la programación de interfaces gráficas tiene su miga, si eres novato en programación, mejor comienza sólo con texto.

Esta es la biblia para C: "El Lenguaje de programación C (Kernighan & Ritchie)"

Un saludo

Responder
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 19 años

Quizás debas afianzar tus conocimientos y te vendría mejor hacer un listín telefónico o algo así usando punteros y ficheros.

Hola nuevamente, he estado algun tiempo sin poder conectarme al foro (mejor dicho a, al ordenador) por examenes y viaje, pero ya estoi devuelta y he echo el listín telefónico usando archivos, (lo hice durante la semana santa pero durante esos dias tenia problemas con internet).

Lo hice con punteros, listas enlazadas y todo eso, el listín lo guarda en un archivo de texto plano e hice tambien que fuese posible exportarlo en formato HTML.
#include <stdlib>
#include <stdio>
#include <string>
#include <math>

#define CONTACTOS_A_MOSTRAR 70

/*Definicion del elemento de la lista*/
typedef struct contacto{
int nombre[20], email[30];
unsigned long int telefono;
struct contacto *siguiente;
} contacto;

/*Creacion de la lista vacia*/
contacto *primero=NULL, *ultimo=NULL;

/*Declaracion de funciones*/

/*Muestra todos los contactos de la agenda*/
int ver_contactos();
/*Añade un nuevo contacto al final de la agenda*/
int nuevo_contacto();
/*Guarda todos los contactos en un archivo de texto (.txt)*/
int guardar_agenda();
/*Carga todos los contactos guardados en un archivo de texto*/
int cargar_agenda();
/*Elimina un contacto pidiendo su posicion en la agenda*/
int borrar_contacto();
/*Crea una pagina HTML con os contactos de la agenda*/
int exporta_agenda_html();
/*Borra todos los contactos de la agenda*/
int borrar_todos();

main(){
short int e=1;
char opcion;
while(e!=0){
printf("nOpciones:n 1 - Cargar agenda.n 2 - Guardar agenda.n 3 - Ver contactos.n 4 - Nuevo contacto.n 5 - Eliminar contacto.n 6 - Exportar en formato HTML.n 7 - Borrar todos los contactos.n 8 - Salir.nn");
opcion= getch();
switch(opcion){
case '1': cargar_agenda();
break;
case '2': guardar_agenda();
break;
case '3': ver_contactos();
break;
case '4': nuevo_contacto();
break;
case '5': borrar_contacto();
break;
case '6': exporta_agenda_html();
break;
case '7': printf("Borrando todos los contectos de la agenda, espere.n");
borrar_todos();
break;
case '8': printf("Antes de salir se liberara la memoria utilizada por los contactos de la agenda, espere.n");
borrar_todos();
e=0;
break;
default: printf("La tecla pulsada no se corresponde con ninguna opcion.n");
break;
}
}
return 0;
}

borrar_todos(){
contacto *borrar;
while(ultimo != NULL){
borrar= primero;
if(primero != ultimo){
primero= primero->siguiente;
}
else{
primero= (contacto *) NULL;
ultimo= (contacto *) NULL;
}
free(borrar);
}
printf("Todos los contactos de la agenda borrados, para eliminar la agenda guardada guarde la actual agenda vacia.n");
return 0;
}

exporta_agenda_html(){
if(primero == NULL && ultimo == NULL){
printf("La agenda esta vacia, no tiene ningun contacto.n");
return 1;
}
else{
FILE *archivo;
archivo= fopen("agenda.html", "w");
if(archivo == NULL){
printf("Error exportando la agenda.n");
return 2;
}
else{
printf("Exportando agenda en formato html, espere.n");
if(primero == ultimo){
fprintf(archivo, "<html>n<head>n<title>Agenda</title>n</head>n<body>n<p><br>n<ol>n<li>%s<br>nTelefono: %lu<br>nEmail: <a>%s</a>n</li>n</ol>n</body>n</html>", primero->nombre, primero->telefono, primero->email, primero->email);
}
else{
contacto *temporal;
temporal=primero;
fprintf(archivo, "<html>n<head>n<title>Agenda</title>n</head>n<body>n<p><br>n<ol>n");
while(temporal != NULL){
fprintf(archivo, "<li>%s<br>nTelefono: %lu<br>nEmail: <a>%s</a>n</li>n", temporal->nombre, temporal->telefono, temporal->email, temporal->email);
temporal=temporal->siguiente;
}
fprintf(archivo, "</ol>n</body>n</html>");
}
fclose(archivo);
printf("Agenda exportada en formato html correctamente.n");
return 0;
}
}
}

borrar_contacto(){
register unsigned long int i=1;
unsigned long int c;
ver_contactos();
printf("n Numero del contacto a eliminar: ");
scanf("%i", &c);
contacto *temporal, *borrar;
temporal=primero;
while(temporal != NULL){
if(c==1){
if(primero == ultimo){
borrar=primero;
free(borrar);
primero= (contacto *) NULL;
ultimo= (contacto *) NULL;
}
else{
borrar=primero;
primero=primero->siguiente;
free(borrar);
}
printf("nContacto eliminado correctamente.n");
temporal= (contacto *) NULL;
break;
}
else{
if(i == (c-1)){
if(temporal->siguiente == ultimo){
borrar=ultimo;
ultimo=temporal;
free(borrar);
}
else{
borrar=temporal->siguiente;
temporal->siguiente=borrar->siguiente;
free(borrar);
}
printf("nContacto eliminado correctamente.n");
temporal= (contacto *) NULL;
break;
}
else{
i++;
temporal=temporal->siguiente;
}
}
}
return 0;
}

cargar_agenda(){
FILE *archivo;
archivo= fopen("agenda.txt", "r");
if(archivo == NULL){
printf("Error abriendo el archivo agenda.txt para cargar los contactos.n");
return 3;
}
else{
printf("Cargando agenda, espere.n");
contacto *nuevo;
while(feof(archivo)==0){
nuevo= (contacto *) malloc (sizeof(contacto));
if(nuevo == NULL){
printf("Memoria insuficiente.n");
return 1;
}
else{
fscanf(archivo, "%s %lu %s", nuevo->nombre, &nuevo->telefono, nuevo->email);
nuevo->siguiente= (contacto *) NULL;
if(primero == NULL){
primero=nuevo;
}
else{
ultimo->siguiente=nuevo;
}
ultimo=nuevo;
}
}
fclose(archivo);
printf("Agenda cargada correctamente.n");
return 0;
}
}

guardar_agenda(){
if(primero == NULL && ultimo == NULL){
printf("La agenda esta vacia, no se ha guardado ningun contacto.n");
FILE *archivo;
archivo= fopen("agenda.txt", "r");
if(archivo != NULL){
fclose(archivo);
remove("agenda.txt");
}
return 1;
}
else{
FILE *archivo;
archivo= fopen("agenda.txt", "w");
if(archivo == NULL){
printf("Error guardando la agenda.n");
return 2;
}
else{
printf("Guardando agenda, espere.n");
if(primero == ultimo){
fprintf(archivo, "%sn%lun%s", primero->nombre, primero->telefono, primero->email);
}
else{
contacto *temporal;
temporal=primero;
fprintf(archivo, "%sn%lun%s", temporal->nombre, temporal->telefono, temporal->email);
temporal=temporal->siguiente;
while(temporal != NULL){
fprintf(archivo, "n%sn%lun%s", temporal->nombre, temporal->telefono, temporal->email);
temporal=temporal->siguiente;
}
}
fclose(archivo);
printf("Agenda guardada correctamente.n");
return 0;
}
}
}

nuevo_contacto(){
contacto *nuevo;
nuevo= (contacto *) malloc (sizeof(contacto));
if(nuevo == NULL){
printf("Memoria insuficiente.n");
return 1;
}
else{
printf("nNombre: ");
scanf("%s", nuevo->nombre);
printf("n Telefono: ");
scanf("%lu", &nuevo->telefono);
printf("n Email: ");
scanf("%s", nuevo->email);
printf("n");
nuevo->siguiente= (contacto *) NULL;
if(primero == NULL){
primero=nuevo;
}
else{
ultimo->siguiente=nuevo;
}
ultimo=nuevo;
printf("Contacto a244adido correctamente.n");
return 0;
}
}

ver_contactos(){
if(primero == NULL && ultimo == NULL){
printf("La agenda esta vacia, no tiene ningun contacto.n");
return 1;
}
else{
if(primero == ultimo){
printf("Contacto:n1 - %sn telefono: %lun email: %snn", primero->nombre, primero->telefono, primero->email);
return 0;
}
else{
contacto *temporal;
temporal=primero;
printf("Contactos:n");
register unsigned long int i=1, p=0;
char op;
while(temporal != NULL){
printf("%i - %sn telefono: %lun email: %sn", i, temporal->nombre, temporal->telefono, temporal->email);
if(p == 0){
if(fmod(i, CONTACTOS_A_MOSTRAR) == 0){
printf("n %u contactos siguientes (pulsar s), seguir sin pausas (f), volver al menu de opciones (a) ", CONTACTOS_A_MOSTRAR);
op= getch();
}
switch(op){
case 'f': p=1;
break;
case 'a': p=2;
break;
default: break;
}
if(p == 2){
temporal= (contacto *) NULL;
break;
}
printf("n");
}
i++;
temporal=temporal->siguiente;
}
printf("n");
return 0;
}
}
}

Como no estoi seguro de que al insertar el codigo en el foro no se cambie alguna letra o algo, adjunto el archivo del codigo.

¿Ahora como continuo progresando?, manejar archivos con fscanf y fprintf no ha sido facil en un principio pero una vez se le coje el truco es facil.

Gracias a todos por la ayuda.

Responder
aprendiendo
Respuestas: 317
(@aprendiendo)
Reputable Member
Registrado: hace 17 años

¿Cual es el objetivo de ese progreso? Quiero decir...

¿Cual es tu objetivo "final"?, ¿diversión? (a mí me divierte aprender), ¿trabajar profesionalmente en desarrollo de software?, o si ya trabajas en el sector, ¿conocer nuevas herramientas?

Responder
Página 18 / 29
Compartir: