Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - [L]ord [R]NA

#351
Habia olvidado poner mis votos...

ASM, C, C++, C# y Python.
#352
Programación C/C++ / Re: ejercicio en c
4 Octubre 2010, 16:11 PM
Etiquetas Geshi.
#353
ShellRoot estas dañandole el post al usuario... si te interesa el codigo haz la descarga.
#354
Scripting / Re: IDE para Python
4 Octubre 2010, 06:24 AM
Yo utilizo SPE (Stani's Python Editor), es muy bueno.
#355
Programación C/C++ / Re: Simulacion Banco
4 Octubre 2010, 05:38 AM
Evita utilizar 'conio.h' no es del standard.
#356
[Taller] Programacion Avanzada en C/C++ (Linux)





EN CONSTRUCCION

Nota: No postear en este tema, lo tomare para organizar un poco el taller debido a que sera un trabajo un poquito extenso para un solo post. En caso de querer comentar, hacerlo en el post de dicho capitulo.
#357
Compilando con GCC

   Un compilador transforma desde un codigo fuente legible por los humanos en un objeto legible para una maquina. En los sistemas operativos basados en Linux los compiladores por excelencia forman parte del GNU Compiler Collection, usualmente conocidos como GCC. GCC incluye compiladores para C, C++, Java y Fortran.

   Supongamos que tenemos un codigo simple, por ejemplo verificar si un numero es o no perfecto, en el cual tenemos un codigo fuente en C++ llamado "perfect.cpp", un archivo de cabecera C++ llamado "perfect.hpp" un codigo fuente en C llamado "main.c", supongamos que ambos archivos seran compilados, luego seran enlazados para crear un programa llamado "perfect" el cual nos dira si un numero es o no un numero perfecto.

main.c:
#include <stdio.h>
#include <stdlib.h>
#include "perfect.hpp"

int main(int argc,char *argv[])
{
int a;
if(argc>1)
{
a = atoi(argv[1]);
if(perfect(a))printf("El numero %i es perfecto\n",a);
else printf("El numero %i no es perfecto\n",a);
}
return 0;
}


perfect.cpp:
Código (cpp) [Seleccionar]
#include "perfect.hpp"

int perfect(int a)
{
int b=0;
for(int i=1;i<a;i++)if(a%i==0)b+=i;
if(a==b)return 1;
else return 0;
}


perfect.hpp:
Código (cpp) [Seleccionar]
#ifndef _Perfect
#define _Perfect
#ifdef __cplusplus
extern "C" {
#endif

extern int perfect(int);

#ifdef __cplusplus
}
#endif
#endif



El nombre del compilador de C es gcc y para compilar un archivo se utiliza la opcion -c. El compilador de C++ es g++ y al igual que el compilador de C se utiliza la opcion -c. Compilando los codigo fuente antes vistos tendriamos:


lordrna@personal-laptop:~$ gcc -c main.c
lordrna@personal-laptop:~$ g++ -c perfect.cpp


En caso de que no suceda ningun error se crearan los archivos "main.o" y "perfect.o".

Para mas informacion del compilador:


lordrna@personal-laptop:~$ info gcc


Enlazar archivos compilados

Cuando obtengamos los archivos compilados que ya necesitemos enlazarlos, deberemos utilizar siempre g++ en caso de que alguno de los compilados a enlazar contenga codigo en C++, incluso si es simplemente un solo archivo compilado contiene codigo fuente en C++. Para esto utilizaremos:

lordrna@personal-laptop:~$ g++ -o Perfecto main.o perfect.o

Entre las principales ventajas que nos brinda compilar y luego enlazar  es que en caso de que uno de los archivos fuente tenga un error simplemente tendriamos que reparar el error, compilar el codigo fuente modificado y enlazar con los demas.


Utilizando el Debugger de GNU (GDB)

   Para agregar informacion extra para poder buscar posibles errores con el debugger de GNU añadiremos la opcion '-g', esto agrega informacion extra para poder tracear el programa. La forma de compilar y enlazar quedaria de la siguiente forma:


lordrna@personal-laptop:~$ gcc -g -c main.c
lordrna@personal-laptop:~$ g++ -g -c perfect.cpp
lordrna@personal-laptop:~$ g++ -g -o Perfecto main.o perfect.o


Cuando compilamos y enlazamos de esta forma el debugger obtiene informacion de que direccion de memoria corresponde a cada linea del codigo fuente, como mostrar variables locales entre otras cosas.

Para ejecutar el GNU Debbuger escribimos en consola:

lordrna@personal-laptop:~$ gdb perfecto


Para mas informacion 'man gdb'

En caso de que el programa perfecto exista en consola aparecera:

(gdb)

para ejecutar el programa escribimos 'run' y seguido los parametros, en caso de ser necesarios:

(gdb) run 6

En caso de que exista un error con 'where' nos mostrara la porcion del codigo donde el debugger tuvo problemas para ejecutar y asi podremos en el codigo fuente modificar la parte defectuosa:

(gdb) where

Podremos tambien colocar breakpoints dando el nombre de la funcion donde queremos colocarlo:

(gdb) break main

Para ver el valor de una variable utilizamos 'print' seguido del nombre de la variable.

(gdb) print argv[1]

Si quieres avanzar un paso, pero recibiendo los valores de retorno de las funciones se utiliza 'next'.

(gdb) next

Si quieres adentrarte en las funciones mientras avanzas se utiliza 'step'.

(gdb) step
#358
calma con los ataques y las polemicas por una simple diferencia... creo que Aqui explican las medidas que tomaron en facebook el pasado Septiembre 30.
#359
Dudas Generales / Re: Por favor respondan!!!
3 Octubre 2010, 19:49 PM
sabes programar?
#360
Foro Libre / Re: Seguridad en Mercadona
3 Octubre 2010, 19:40 PM
Cita de: Komodo en  3 Octubre 2010, 18:17 PM
osea que unas simples tijeras, se puede inutilizar, sin tener que ser el robot de aluminio.

PD: No es el precio de los RedBulls es el reto de romper "la seguridad" en el caso de los redbulls nada..pero con las colonias/prendas y tal ya hay que currarselo.

Yo personalmente no me arriesgaria a pasar verguenza porque me agarren con algo que cuesta menos de 5€