fbpx

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
120.3 K Visitas
lacabra25
Respuestas: 84
Topic starter
(@lacabra25)
Trusted Member
Registrado: hace 18 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 19 años

otia creía que eso lo tenías resuelto...

A ver, desde el principio. La librerías en c (.lib) son ficheros compilados pero no linkados... todas las librerías (en C) tienen asociado un archivo de cabecera (.h) donde generalmente se guardan las declaraciones de las funciones...

Para linkar librerías lo único que tienes que hacer son dos cosas:
- Hacer una llamada la cabecera de la librería. Ejemplo #include <conio>
- Decirle al compilador donde puede encontrar las cabeceras y las librerías (en cada compilador es distinto, pero generalmente va asociado a una variable path).

Una cosa a tener en cuenta, la diferencia entre estas dos llamadas:
#include "conio.h"
#include <conio>

La primera te buscará la cabecera en el directorio "local" (donde estés ejecutando el programa). La segunda te buscará la librería en el path donde le hallas dicho.

Para dividir un programa en varios archivos tienes que hacer casi lo mismo:
Cada programa tiene su .c y su .h, en el .c está el código propiamente dicho (y el include a su cabecera), en el .h estarán los defines, typedef, includes, variables globales, etc.

Un ejemplo de .h: utils.h

#ifndef __UTILS_H__ // Para que el compilador no repita el código
#define __UTILS_H__

// Includes
#include <stdio>
#include "archivo1.h"

// Defines
#define MAXBUFFER 512

// Tipos de datos
typedef enum{FALSE = 0, TRUE = 1} bool;
typedef unsigned char byte;

// Variables globales externas
extern int global1;

// Variables globales internas
int global2[MAXBUFFER];

#endif

Las librerías algunas están escritas en ensamblador (como las de OpenCV), pero sólo aquellas que necesitan un control muy exhaustivo de los recursos que usan (aunque teniendo un sistema operativo como Windows debajo es tontería), y las demás en otros programa de más "alto" nivel, el caso es que al compilarse todas se convierten a lenguaje máquina.

Otro día más.

S2

Ranganok Schahzaman

Responder
mad93
Respuestas: 32
(@mad93)
Eminent Member
Registrado: hace 17 años

No sé si te sirve, pero en SDL hize un programa muy cutre, rollo demo, el código lo tengo aquí http://bloc.majomo.com/fent-un-programa ... l-amb-sdl/ lo siento pero está en catalan los comentarios y tal, pero creo que se entiende, a más de estar las llamadas a las librerias usadas.

Por otro lado, SDL guarda las 'señales' de los periféricos con el tipo SDL_Event:

SDL_Event event;
SDL_WaitEvent(&event);
if(event.key.keysym.sym==SDLK_RETURN)

En este caso creo un evento con el tipo SDL_Event, luego lo cuelgo para que espere un evento y finalmente miro si el evento es de teclado (event.key) y si su valor es el que corresponde a la tecla enter. Para los perifericos 'normales' las teclas ya estan mapeadas, aunque puedes mapear tu mismo los valores, como se hace por ejemplo con el joystic de la gp2x -> http://wiki.gp2x.org/wiki/SDL_Joystick_mapping

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

Otro día más.
OK, segun vayas podiendo. Si sabes de algun pdf con el que ampliar sobre estos aspectos sobre C tambien me vendria bien, pues me gusta guardarlos (aun teniendolos ya leidos) para no olvidar lo aprendido y repasar si cualquier dia necesito repasar algo. 🙂

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

lacabra25, lo que sí que podrías ir haciendo es abrir un tema en la wiki y según te vayan surgiendo dudas (y las vayas resolviendo) las vas apuntando...

De esta forma a parte de tí lo podrá tener todo el mundo que acceda a la web. 😉

S2

Ranganok Schahzaman

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Más para hoy...

Todos los periféricos están "mapeados" en la memoria del ordenador, es decir, para acceder a la tarjeta gráfica lo que haces es acceder a la memoria asignada a la tarjeta gráfica y cambiar los valores, la tarjeta gráfica lo que hace es acceder a esta misma memoria, y enviar los valores que encuentra a la pantalla.

Hoy en día eso se hace siempre por medio de drivers y llamadas al sistema operativo, ya no te tienes que preocupar de dónde está mapeada la memoria de la gráfica, sino que le envías la información directamente a la tarjeta gráfica por medio de las librerías (drivers) que te pone a tu disposición el fabricante.

Esto por un lado permite programar sin tener que preocuparte del hardware que venga debajo, pero por otro lado tienes menos control de la situación, el sistema operativo y los drivers deciden cuándo se ponen las cosas que tú les has enviado, dado la velocidad de los ordenadores hoy en día eso no supone mayor problema y facilita mucho la programación.

S2

Ranganok Schahzaman

Responder
Página 25 / 29
Compartir: