Mostrando las entradas con la etiqueta Programacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Programacion. Mostrar todas las entradas

sábado, 25 de agosto de 2007

MAKEFILE

El comando de linux make nos ayuda a compilar nuestros programas. Presenta muchas ventajas para programas grandes, en los que hay muchos ficheros fuente (muchos .c y muchos .h) repartidos por varios directorios. Principalmente aporta dos ventajas:

  • Es capaz de saber qué cosas hay que recompilar. Si cuando estamos depurando nuestro programa tocamos un fichero fuente, al compilar con make sólo se recompilaran aquellos ficheros que dependan del que hemos tocado. Si compilamos a mano con cc, (o el compilador que sea), o tenemos en la cabeza esas dependencias para compilar sólo lo que hace falta, o lo compilamos todo. Si el proyecto es grande, se nos olvidará alguna dependencia o nos pasaremos horas compilando.
  • Nos guarda los comandos de compilación con todos sus parámetros para encontrar librerías, ficheros de cabecera (.h), etc, etc. No tendremos que escribir largas líneas de compilación con montones de opciones que debemos saber de memoria o, al menos, sólo tendremos que hacerlo una vez.

Makefile para C

CFLAGS=-I "directorio1" -I "directorio2"...
OBJETOS= "objeto1" "objeto2" ...
FUENTES="fuente1" "fuente2" ...

MiEjecutable: $(OBJETOS)
cc $(OBJETOS) -o MiEjecutable

depend:
makedepend $(CFLGAS) $(FUENTES)

Makefile para java

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java

CLASSES = \
main.java \
ioclass.java \
archivos.java \


default: classes

classes: $(CLASSES:.java=.class)

clean:
$(RM) *.class

domingo, 14 de enero de 2007

Programa que optiene la hora del PC

#include stdio.h
#include stdlib.h
#include time.h

/*struct tm{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};

typedef struct tm *punt;

*/
int main(){
struct tm *punt;
time_t lt;
lt=time('\0');
punt=localtime(<);
printf("%d:, %d:, %d:\n",punt->tm_hour,punt->tm_min, punt->tm_sec);
system("PAUSE");
return 0;
}

Programa que realiza la divicion en forma recursiva

#include stdio.h
#include stdlib.h

int dividir(int x, int y, int a);

int dividir(int x, int y,int a){

if(x>=y){

return dividir(x-y,y,a+1) ;
}
/*if(x==y){
return dividir(x-y,y,a+1) ;
}*/
else{
return a;
}
}

int main(){
int n, m,a;
a=0;
printf("ingrese el numerador\n");
scanf("%d",&n);
printf("ingrese el denominador\n");
scanf("%d",&m);
printf("la sumatoria es : %d \n",dividir(n,m,a));
getchar();
getchar();
return 0;
}

sábado, 13 de enero de 2007

Programa que simula una calculadora

#include stdio.h

/*Cabecera de funciones*/
void menu(void);
void multiplica(void);
void restar(void);
void dividir();
void suma(void);


/**********************/

void suma()
{
int primero, segundo;
printf("Ingrese el primer Numero: ");
scanf("%d", &primero);
printf("\nIngrese el segundo numero: ");
scanf("%d", &segundo);
primero=primero + segundo;
printf("el resultado es: %d", primero);
getchar();getchar();
}


void multiplica()
{
int primero, segundo;
printf("Ingrese el primer Numero: ");
scanf("%d", &primero);
printf("\nIngrese el segundo numero: ");
scanf("%d", &segundo);
primero=primero * segundo;
printf("el resultado es: %d", primero);
getchar();getchar();
}

void restar()
{
int primero, segundo;
printf("Ingrese el primer Numero: ");
scanf("%d", &primero);
printf("\nIngrese el segundo numero: ");
scanf("%d", &segundo);
primero=primero - segundo;
printf("el resultado es: %d", primero);
getchar();getchar();
}

void dividir()
{
float primero, segundo;
printf("Ingrese el primer Numero: ");
scanf("%d", &primero);
printf("\nIngrese el segundo numero: ");
scanf("%d", &segundo);
primero=primero /segundo;
printf("el resultado es: %f", primero);
getchar();getchar();
}

void menu()
{
int op;
int salida;
salida= 0;
do{
printf("*********************Bienvenido a la calculadora**********************");
printf("\n\n\n\n 1.- Si quiere sumar dos numeros");
printf("\n 2.- Si quiere multiplicar dos numeros");
printf ("\n 3.-Si quiere restar dos numeros");
printf ("\n 4.-Si quiere dividir dos numeros");
printf ("\n 5.-Si quiere salir");

printf ("\n\n\n La opcion que usted desea es: ");
scanf("%d", &op);

switch(op)
{
case 1:suma();
break;
case 2:multiplica();
break;
case 3:restar();
break;
case 4: dividir();
break;
case 5: salida=1;
break;
default: printf("opcion invalida");
break;
}

}while(salida==0);
}



main()
{
menu();
}

Programa que simula los movimientos del caballo en el tablero de ajedrez

#include stdio.h
#include stdlib.h

#define MAX 8


void mover(int tablero[][MAX], int i, int pos_x, int pos_y, int *q, int n);
void verificar(int tablero[][MAX], int n);
void inicializar(int tablero[][MAX], int n);


int ejex[8] = {2,1,-1,-2,-2,-1,1,2}; /* Vector de movimiento eje x */
int ejey[8] = {1,2,2,1,-1,-2,-2,-1}; /* Vector de movimiento eje y */

int main(void){
int tab[MAX][MAX];
int n; /* tablero del caballo. */
printf("\ningrese las dimensiones del tablero de ajedrez\n\n");
scanf("%d",&n);
inicializar(tab,n);
verificar(tab,n);
system("PAUSE");
return 0;
}

void inicializar(int tablero[][MAX], int n){
int i, j;
/* inicializa el tablero a cero */
for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
tablero[i][j] = 0;
}
}
}

void verificar(int tablero[][MAX], int n){

int i,j,q;



/* pone el primer movimiento */
tablero[0][0] = 1;
mover(tablero,2,0,0,&q,n);

if (q) { /* hay solucion: la muestra. */
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%3d ", tablero[i][j]);
printf("\n");
}
}
else{
printf("\nNo existe solucion\n");
}
}

void mover(int tablero[][MAX],int i, int pos_x, int pos_y, int *q, int n){
int k, u, v;

k = 0;
*q = 0;
do {
u = pos_x + ejex[k]; v = pos_y + ejey[k]; /* seleccionar candidato */
if (u >= 0 && u <>= 0 && v < MAX) { /* esta dentro de los limites? */
if (tablero[u][v] == 0) { /* es valido? */
tablero[u][v] = i; /* anota el candidato */
if (i < n*n) { /* llega al final del recorrido? */
mover(tablero,i+1,u,v,q,n);
if (!*q) tablero[u][v] = 0; /* borra el candidato */
}
else *q = 1; /* hay solucion */
}
}
k++;
} while (!*q && k < 8);
}