martes, 29 de mayo de 2012

Lista de librerias Java más usadas




Hola a todos...

Si habéis mirando alguna vez un poco el tema de java habréis visto que hay una cantidad enorme de librerias y funcionalidades.

Para que no os perdáis en un océano de exceso de información os expongo las que para mi son las más básicas. Controlando estas librerías teneis casi todo hecho.


java.lang: Información fundamental. Tipos básicos, objetos, clases, threads, excepciones, etc...
java.io  : Entrada y salida.
java.net : Uso de Red
java.util: Dicionarios, timers, hash, pilas, etc...
java.awt : Abstract Windowing Toolkit. Usado para crear interficies gráficas (botones, eventos,colores,etc...)

Espero que os haya gustado

Si queréis buscar más librerías tenéis la lista oficial en este link
Si quieres aprender más cosas de java  puedes mirar el siguiente link: Curso de java desde 0
Si lo que quieres es aprender programación en general puedes mirar el siguiente link: Curso de programación de C/C++ desde 0

Si te interesa también puedes mirar alguno de los libros que hay en la red sobre java:

Nos vemos
LordPakusBlog

lunes, 28 de mayo de 2012

Tutorial Java desde 0: Capitulo 1. Hola Mundo


Hola a todos

El capitulo de hoy es el equivalente en java de este otro tutorial que hice para C/C++

Veréis que es muy sencillo pero que nos permitirá aprender a hacer nuestro primer proyecto para que luego sigáis aprendiendo por vuestra cuenta.

Primero de todo, arrancad el netbeans (ya lo deberiais tener instalado y funcional gracias al capitulo anterior)

1. Una vez arrancado haced File->New Project

File->New Project


2. Seleccionad Categoria Java y Proyecto : Java Application


 3. Dadle un nombre, yo le he llamado LordPakusJava como le podía haber llamado achilipú


4. Escribid dentro del main que os aparecerá el código para el hola mundo de java:
 System.out.println("Hola mundo");


5. Ejecutad vuestro proyecto de prueba ya sea mediante F6 o mediante los botones del entorno gráfico (flecha de play verde)



6. Si todo ha ido bien en la consola de output deberíais ver algo de este estilo:


Observareis que la forma de imprimir texto difiere bastante entre java y C, pero realmente solamente es un detalle al que te acostumbras rapidamente. En java todas las entradas y salidas de texto se relizan a través del objeto System que es el que nos da acceso al sistema. Jugad un poco con el y contadme como os va.

Espero que haya quedado todo claro, de no ser así, decidmelo e intentaré arreglarlo.

Nos vemos

sábado, 26 de mayo de 2012

Tutorial Java desde 0: Capitulo 0.Como empezar


Hola a todos...

Si estáis leyendo este tutorial es por que os gustaría aprender Java.

Lo primero que os tengo que decir es que Java es tremendamente parecido a C/C++ así que si no lo habéis hecho os recomiendo que os miréis los tutoriales de C/C++: 1 y 2

La segunda cosa importante es que Java es un lenguaje en esencia interpretado, es decir, que no generaremos un ejecutable como en C/C++ sino que nuestro código se ejecutará sobre un máquina virtual. Este hecho hará que nuestras aplicaciones sean un poco más lentas de lo deseable (al menos para mi gusto) pero que funcionen en prácticamente cualquier hardware y sistema operativo (PC, moviles, etc...)

Como me instalo el "compilador" de Java?
Lo primero que hemos de entender es que por un lado nos tendremos que instalar la máquina virtual de Java y el kit de desarrollo y por otro lado el IDE para trabajar. De IDE hay muchos, a mí los que más me gustan son NetBeans o Eclipse, pero eso va a gustos.

Así pues vamos a por trabajo.

JDK: Java Development Kit: Maquina virtual  y todo lo necesario para trabajar con java -> link  (tendreis que seleccionar el instalador que más se ajuste a vuestras necesidades)

IDE NetBeans: Este es el IDE que usaré para el curso, pero se puede usar cualquiera. Nuevamente tendréis que seleccionar el que mejor os vaya para vuestro caso.

Por ahora lo dejo aquí. Os recomiendo que juguéis un poco con el NetBeans y que veáis las opciones que tiene. El próximo capitulo empezaremos con un proyecto de muestra.

Quedo esperando  vuestras dudas y sugerencias.

Nos vemos

viernes, 25 de mayo de 2012

Lista de librerias ANSI C más usadas

Articulo perteneciente a : Referencias de programación

Hola a todos

Las librerías ANSI C son las que vienen con el compilador de C por defecto. No voy a poner todas las librerías ya que me parece ilogico poneros algo que no vais a usar jamás, solo destacaré las mas importantes:

math.h : Funciones matemáticas.Ejemplo
stdio.h :  Funciones de entrada salida. Ejemplo
stdlib.h : Funciones de gestión de memoria,números aleatorios, conversiones, búsquedas y ordenación de datos, etc... Ejemplo1 Ejemplo2
string.h : Funciones para trabajar con cadenas de texto. Ejemplo
time.h: Funciones para trabajar con fechas y horas     Ejemplo1       Ejemplo2

Si tenéis claras estas librerías tenéis gran parte del aprendizaje de C resuelto.
En otro capitulo haré lo mismo para Java y C++-
Espero vuestras dudas y comentarios.
Nos vemos

LordPakusBlog

miércoles, 23 de mayo de 2012

Lista de instrucciones de ensamblador x86

Articulo perteneciente a : Referencias de programación

Si os interesa el tema del ensamblador podéis mirar el siguiente link

Hola a todos,

Esta lista intenta ser una referencia rápida para todos aquellos que os habéis adentrado (o queréis hacerlo) en el mundo de la programación en ASM. No esperéis encontrar todas las instrucciones, ya que las mas "peligrosas" y las menos usuales las he filtrado.

Por ahora no tengo planificado ningún tutorial de ASM x86 pero si me lo pedís unos cuantos , lo hago.

Movimiento de datos

MOV dest,src Copia el contenido del src en el dest. src y dest pueden ser registros, memoria,etc...
PUSH src Pone src arriba de todo de la pila.
POP dest  Retira el valor de arriba de la pila poniéndolo en dest(registro,memoria,etc...)
XCHG reg,{reg|mem} Intercambia ambos valores. (los dos no pueden ser memoria)
LEA reg,mem Almacena el "puntero" a memoria en un registro. Más información sobre punteros
PUSHF Almacena los flags en la pila.
POPF Pone en los flags el valor que hay en la pila.

Operaciones aritmeticas

ADD dest,src Suma
SUB dest,src Resta
CMP dest,src Compara ambos valores y modifica los flags en consecuencia.
INC dest  Operación dest++;
DEC dest Operación dest--;
MUL {reg|mem}  Multiplica el valor del registro A por el operador que le pasemos poniendo el resultado en A ( y parte en el registro si le fuera necesario)
IMUL {reg|mem} Lo mismo que antes pero usando signo en las operaciones.

Instrucciones lógicas

AND dest,src
TEST dest,src Lo mismo que and pero solamente afecta a los flags. Se acostumbra a usar para comprovar máscaras de bits sin modificar los valores de trabajo.
OR dest,src
XOR dest,src
NOT dest
SHL/SAL dest,número de bits Desplaza a la izquierda x bits.  Logico/Aritmetico
SHR/SAR dest,número de bits Desplaza a la derecha x bits. Logico/Aritmetico
ROL dest,número de bits Rotación hacia la izquierda
ROR dest,número de bits Rotación hacia la derecha

Instrucciones de salto

JMP label Saltar hacia la dirección label.
CALL label Es como hacer una llamada a función desde ASM
RET Retorno de procedimiento.

Saltos condicionales después de CMP


Con signo
JL etiqueta/JNGE etiqueta  Saltar a etiqueta si es menor.
JLE etiqueta/JNG etiqueta  Saltar a etiqueta si es menor o igual.
JE etiqueta   Saltar a etiqueta si es igual.
JNE etiqueta Saltar a etiqueta si es distinto.
JGE etiqueta/JNL etiqueta Saltar a etiqueta si es mayor o igual.
JG etiqueta/JNLE etiqueta Saltar a etiqueta si es mayor.

Sin signo 
JB etiqueta/JNAE etiqueta Saltar a etiqueta si es menor.
JBE etiqueta/JNA etiqueta Saltar a etiqueta si es menor o igual.
JE etiqueta Saltar a etiqueta si es igual.
JNE etiqueta Saltar a etiqueta si es distinto.
JAE etiqueta/JNB etiqueta Saltar a etiqueta si es mayor o igual.
JA etiqueta/JNBE etiqueta Saltar a etiqueta si es mayor.


Saltos condicionales según flags (después de cualquier operación)
JZ label        Saltar si el resultado es cero (ZF = 1).
JNZ label      Saltar si el resultado no es cero (ZF = 0).
JS label         Saltar si el signo es negativo (SF = 1).
JNS label       Saltar si el signo es positivo (SF = 0).
JP/JPE label   Saltar si la paridad es par (PF = 1).
JNP/JPO label Saltar si la paridad es impar (PF = 0).


Saltos especiales (usan CX)
LOOP label  CX-- Saltar a label si CX<>0.
LOOPZ/LOOPE label CX--. Saltar a label si CX <> 0 y ZF = 1.
LOOPNZ/LOOPNE label CX--. Saltar a label si CX <> 0 y ZF = 0.
JCXZ label  Salta a label si CX = 0.
Con estas instrucciones podréis hacer casi cualquier programa en ensamblador, espero que os sirvan.

Nos vemos

LordPakusBlog

miércoles, 16 de mayo de 2012

Tutorial de Batch desde 0: Como comprimir y enviar ficheros por mail



Hola a todos....

El capitulo de hoy es tal vez de los más interesantes ya que es el que nos permite automatizar una tarea repetitiva y recibir un log continuado a través del mail.

En el mundo laboral,en muchas ocasiones, podremos encontrarnos con la situación de tener una granja de servidores que se encargue de "vomitar" informes y nosotros tendremos que revisar periódicamente que estos informes se vayan generando.

La propuesta de código de hoy no es más que un programa que se encarga de coger estos resultados, comprimirlos y enviarlos por correo electrónico a donde queramos.

Vamos a ver el código batch:




echo off

:BUCLE
IF EXIST Resultados.txt GOTO RUN
GOTO BUCLE

:RUN
echo Batch de compresión de resultados
winrar a Resultados.rar resultados.txt

echo Batch de envio de correo electronico
sendEmail -s smtp.gmail.com:587 -f tudireccion@gmail.com -u "Titulo" -m "Este es el cuerpo del mail " -t direccionderecepcion@gmail.com -xu tuusario -xp tupasword -a Resultados.rar

DEL resultados.txt
DEL resultados.rar
GOTO BUCLE




En batch, cualquier palabra que empieze por : significia identificador de salto, es decir, un lugar hasta donde podremos saltar desde otra linea del batch.
IF es una operación del sistema operativo que nos permite operaciones condicionales dentro del batch

EXIST es una funcionalidad que nos dice si un fichero existe o no existe

GOTO es la instrucción usada para saltar a un identificador de salto definido.

DEL es una intruccion de cmd encargada de borrar archivos

winrar es un programa de windows que nos permite comprimir ficheros y que se puede usar desde linea de comandos. Podeis encontrarlo en  http://www.winrar.es/descargas/rar Para comprimir solo os interesa saber que "a" es para añadir ficheros a un rar y que primero pondremos el fichero de destino y despues  los ficheros a comprimir.

sendEmail es un programa que nos permite enviar emails. Lo podéis encontrar en http://caspian.dotconf.net/menu/Software/SendEmail/ . La sintaxis de este programa es sencilla:
-s : servidor de correo. Si queréis usar el de gmail es el smtp.gmail.com:587 pero realmente podéis usar el servidor que queráis.
-f : vuestra dirección de correo.
-t : dirección donde se enviará el correo
-u: Titurlo del correo
-m: Mensaje a enviar
-xu: nombre de usuario
-xp: pasword
-a : añadir ficheros adjuntos

Si lo provais vereis que el bat lo único que hace es esperarse a que aparezca un fichero llamado Resultados.txt, lo comprime y lo envía por correo. Posteriormente lo borra todo y sigue a la espera del próximo fichero de resultados.

Espero que os haya gustado y que os haya servido..

Nos vemos




domingo, 13 de mayo de 2012

Tutorial de programación C/C++ desde 0. Capitulo 10


Hola a todos.

Si habéis llegado hasta aquí entendiendo todos los capítulos anteriores, podéis comenzar a decir que sabéis programar un poco.

El capitulo de hoy empieza a ser un poco más "complicado" que no lo que se explica normalmente (aunque realmente no es nada complicado) y es el tema de la sobrecarga de funciones.

Que es?
La sobrecarga de funciones es el hecho de que dos funciones se llamen exactamente igual pero tengan comportamientos radicalmente diferentes. Si el tema de las funciones no lo tienes muy claro revisa este link

Para que?
Su principal utilidad es mantener el código limpio y fácil de entender y mantener.

Como se usa?
Lo único que hemos de hacer es repetir la función que queremos sobrecargar cambiando el tipo y/o número de parametros de entrada de la función (ya que si la función tuviese el mismo número de parametros y de exactamente el mismo tipo el compilador no sabria a que función llamar)

Ejemplos:

void ImprimeNumero(int num)
{
      printf("%d",num); //Lo pinto como un int
}


void ImprimeNumero(float num)
{
      printf("%lf",num); //Lo pinto como un float
}


void ImprimeNumero(int num, char *cad)
{
      FILE* fp;
     fp = fopen(cad,"w"); //Abro fichero
      fprintf(fp,"%d",num); //Lo pinto como un int
     fclose(fp);
}


void ImprimeNumero(float num,char *cad)
{

      FILE* fp;
     fp = fopen(cad,"w"); //Abro fichero

      fprintf(fp,"%lf",num); //Lo pinto como un float
     fclose(fp);
}

Como podéis observar las 4 funciones se llaman igual y solo se decidirá cual usar en función de los parámetros usados.

Para nuestro caso lo podriamos entender como una sola función que nos imprimiria un número (en cualquier formato) en un fichero de nuestra elección.En el supuesto que no le pasaramos el nombre del fichero lo imprimiria por consola.

Espero que con esto empeceis a entenderlo por vuestra parte y os lanceis a investigar

Nos vemos

LordPakusBlog

sábado, 12 de mayo de 2012

Tutorial de Batch desde 0: Como montar un bat de arranque


En muchas ocasiones(sobretodo en el ámbito laboral), arrancas el PC y te pasas unos segundos(e incluso unos minutos) dando a botones para ejecutar programas que cada dia se arrancan exactamente igual.

Solución? Montar un bat que lo haga por ti y tu de mientras vas ha hacer un café :)

Esta es mi propuesta de bat, vosotros tendréis que rellenarlo con vuestras aplicaciones, pero bueno, en principio podríamos ejecutar cualquier cosa (clientes de correo, programas de calculo, gestores de tareas, lo que fuera)

echo off
echo Batch de arranque de PC
"Google Chrome.lnk"
echo Chrome arrancado.
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
echo Visual Studio Arrancado
pause

echo off: Hace que las demás lineas del bat dejen de escribirse por la consola (se elimina esta acción mediante echo on)
echo Tu_Texto: Hace que el texto salga por la consola. Normalmente sirve para indicarnos la progresión del bat
Nombre de un ejecutable o un link : Hace que se llame a ese ejecutable.
pause: Hace que el bat se pare y muestre el tipico mensaje de "esperando que el usuario pulse una tecla"

Sin más os dejo descansar. En el próximo capitulo aprenderemos a comprimir ficheros y enviarlos por correo electrónico, que espero que os animará más.

Nos vemos

miércoles, 9 de mayo de 2012

Ranking de los lenguajes de programación más usados

Articulo perteneciente a : Referencias de programación

Hola a todos..

Os dejo una lista de los lenguajes de programación más usados según la página oficial de TIOBE :

Espero que os sirva para descubrir nuevos lenguajes.

1. C:    Tutorial de programación desde 0 en C
2. Java:  Tutorial de programación Java desde 0
3. C++:  Si ya has visto el tutorial de programación en C, mirate este
4. Objective-C
5. C#    
6. PHP  
7. Visual Basic En un plazo largo, me podría plantear hacer un minitutorial sobre el tema
8. Python
9. Perl
10.JavaScript
11. Ruby
12. VisualBasic.NET
13. PL/SQL
14. Delphi/object Pascal
15. Lisp
16. Logo
17. Pascal
18. Transact-SQL
19. Ada
20. Lua

En fin... a medida que vaya haciendo nuevos tutoriales iré poniendo nuevos links . Si teneis sugerencias sobre cual empezar hacedmelo llegar.

Espero que os haya gustado, nos vemos



martes, 8 de mayo de 2012

Comandos de MS-DOS



Aquí os dejo una lista, sino de todos , de los comandos más importantes de DOS.

ATTRIB - Presenta en pantalla o modifica los atributos de los archivos.
CALL - En un archivo .bat, llama a otro .bat como un subprograma.
CD - Cambio de directorio
CHOICE - Le pide al usuario que efectúe una selección.
CLS - Simplemente borra la pantalla, sin cambiar ninguna otra cosa.
COPY - Sirve para copiar archivos, concatenarlos, cambiarles el nombre, etc.
DATE - Muestra en pantalla y modifica la fecha utilizada por el sistema
DEL - Destruye uno o varios archivos en el disco
DELTREE - Suprime un directorio y todo lo que contiene, incluyendo los subdirectorios, en una sola operación.
DIR - Presenta la lista del contenido de un directorio, en su totalidad o de manera selectiva.
ECHO - Vuelve a mostrar en pantalla o no, en eco, los comandos ejecutados en un archivo .BAT, según se ponga o no en servicio este eco, usando ON u OFF respectivamente. Permite introducir un mensaje que será mostrado en pantalla en todos los casos.
ERROLEVEL - Código de errores para archivos .BAT
FIND - Busca la cadena de caracteres indicada en un archivo y envía al periférico activo de salida (el monitor, por ejemplo) todas las líneas en las que la encontró.
FOR - Especifica la repetición del mismo comando para cada una de las variables contenidas en la lista.
GOTO - Es un direccionamiento incondicional a una línea marcada con un rótulo del mismo nombre en un archivo .BAT.
IF - Comando de ejecución condicional para archivo .BAT.
MD o MKDIR  - Crea un directorio. Otro nombre de este comando: MKDIR, por "Make Directory”, creación de un directorio.
MOVE - Mueve uno o varios archivos y da nuevo nombre a archivos o directorios.
PAUSE - Suspende la ejecución de un programa .BAT
RD (o RMDIR. )- Suprime un subdirectorio que debe estar obligatoriamente vacío
REM - Introduce observaciones, comentarios
REN(o RENAME) - Cambia el nombre de un archivo.
SET - Sirve para definir el entorno de trabajo que requieren algunos programas, introduciendo un nombre seguido de su equivalencia.
SORT - Ordena datos.
TEMP - Variable de entorno.
TIME - Muestra en pantalla o configura la hora del sistema (incluidos los relojes permanentes, resguardados).
TREE - Muestra los árboles de los directorios de un disco (y la lista de sus archivos con una clave suplementaria).
TYPE - Muestra en pantalla el contenido de un archivo.
VER - Muestra en pantalla la versión activa del DOS.
XCOPY - Copia archivos selectivamente, inclusive los que provienen de subdirectorios.

Para más información sobre batch podeis miraros mi tutorial desde 0 sobre batch : http://lordpakus.blogspot.com.es/p/turotial-batch-bat-script-desde-0.html

domingo, 6 de mayo de 2012

Tutorial de Batch desde 0: Como empezar


Hola a todos...

Una forma de definir que es batch seria decir que : es el "lenguaje" que usa el sistema operativo para poder comunicarnos con el (si bien no es cierto del todo, por ahora nos servirá como definción).

No es más que agrupar comandos del sistema en un solo fichero para que se ejecuten uno tras otro. Que es un comando del sistema?? Todos los que hayais tocado alguna vez MS-DOS o el cmd de windows os sonarán comandos como cd, dir, mkdir, etc...

Así pues, como empezamos?

Lo primero es hacernos con un ventana de cmd de windows... forma fácil : menu inicio de windows, buscar programas, cmd (en windows xp o inferiores creo que era ejecutar programas, cmd)

Como encontrar el cmd


Si le dais a ejecutar os debería salir la bien conocida de MS-DOS (el cmd)
Ventana de MS-DOS (cmd)


Antes que nada probad con diversos comandos (si es que no lo habéis echo nunca) del tipo cd o dir para ver como funcionan (en siguientes capítulos pondré la lista de comandos de DOS).

Una vez veais que ya sabeis por donde van los tiros abrid el notepad (o cualquier otro editor de textos que tengais a mano) y escribid los siguiente:


mkdir HOLA
cd HOLA
dir > hola.txt
notepad hola.txt


Dadle a guardar como Tipo: "todos los archivos" / Nombre ejemplo.bat (sino por defecto se grabará como un archivo .txt que no nos interesa)

Si todo va bien, donde hayáis grabado el archivo veréis algo de este estilo
Aspecto gráfico del .bat

Dadle doble click encima y tendríais que tener como resultado algo de este estilo:

Ejemplo de resultado de la ejecución del .bat

Resumiendo...
mkdir HOLA nos crea una carpeta llamada HOLA
cd HOLA nos mueve a la carpeta HOLA (es lo mismo que si con el ratón le dieramos doble click a la carpeta)
dir nos dice la información de la carpeta donde estamos
el operador > coge la información de entrada y la pone en el fichero de salida (en nuestro caso concreto coloca la información proviniente de dir en el fichero hola.txt)
Finalmente, ejecutamos un programa que nada tiene que ver con el cmd para hacer una acción, en nuestro caso, llamamos a notepad para que nos muestre el fichero hola.txt

Espero que os haya gustado y os haya servido

Nos vemos en el siguiente tutorial

sábado, 5 de mayo de 2012

Tutorial de programación C/C++ desde 0. Capitulo 9


Hola a todos,

En el último tutorial cometí un error bastante grande: hablar de punteros sin haberlos explicado antes...Así que le tendré que dar explicación...

Que són los punteros?
Los punteros son la gran diferencia entre C/C++ y el resto de lenguajes y son la base de la grandísima potencia que tienen estos lenguajes, problema? que no son fáciles ni de entender, ni de usar y complican el mantenimiento del código.

Las variables que usamos en nuestros programas se almacenan en la memoria RAM del ordenador. La dirección donde estan guardadas es lo que llamamos el puntero a esa variable. Es decir que podemos tener un variable de tipo char en la posición 1 millón de la memoria, y que vale 129. Su valor será 129 pero su puntero valdrá 1 millón.

Como usar punteros?
Lo principal, los operadores básicos:

Definición:
char var;   //Variable
char *p;    // Puntero. Internamente se puede considerar que es una variable que almacena la posición de memoria de otra variable. (en este caso, podría ocupar 32 o 64 bits y no los 8 bits que cabria suponer inicialmente)
int *p2;   //Puntero. Ocupa exactamente lo mismo que el puntero anterior, aunque apunte a variables de diferente tipo el funcionamiento es el mismo

Pasar de variable a puntero y viceversa:
var = *p; //Obtenemos el valor que apunta p y lo ponemos en var
p = &var; //Obtenemos la dirección de memoria de la variable var y la ponemos en p

Punteros y vectores:
En otro capitulo ya daré mas a fondo el tema de vectores, pero a modo de aproximación diremos que es una forma de almacenar muchos datos a la vez en una sola "variable". Pues bien , esa variable se entiende que es el puntero al vector... es decir:

char v[100]; //Vector de 100 elementos de tipo char
char *p;       //Puntero a char

p = &v[0];  //El puntero al vector es la posición de memoria del primer elemento o...
p = v;        //Caso especial en que no hace falta el operador & para obtener la dirección de memoria.

Punteros y funciones:
Cuando usamos punteros como parametros de funciones solo hemos de tener en cuenta que  para el caso de vectores es lo "mismo" (practicamente lo mismo) declarar los parametros de cualquiera de estas maneras:

void Ejemplo( char *p)       //Puntero a algo
void Ejemplo ( char p[])     //Vector sin tamaño definido
void Ejemplo (char p[124]) //Vector de tamaño definido

Para que usar punteros?

Pese a que hay muchisimos motivos para usar punteros, tal vez el más extendido es el de pasar información entre funciones. Es decir, las funciones nos devuelven solamente un valor como parametro de retorno, y los parametros que le pasamos se copian al iniciar la función de forma que la función no puede modificarlos. Si tenemos una función que nos ha de modificar una cantidad grande de información lo más normal es pasarle el puntero a la zona de memoria donde queremos que nos deje los resultados. Ejemplo

void Ejemplo(char id, char*data)
{
      int i;

      for (i = 0 ; i < 100 ; ++i )
           *(data+i)  = id;
}

En fin, es un tema complejo, y se podría hacer un libro solamente sobre esto, así que entenderé si hay un aluvión de preguntas y dudas. Hacedlas sin problema que para eso estamos. Si algo no ha quedado suficientemente claro decidlo y hago otro tutorial sobre el tema.

LordPakusBlog

jueves, 3 de mayo de 2012

Tutorial de programación C/C++ desde 0. Capitulo 8


Hola a todos,

Hace tiempo que esperaba que alguien me pidiera algo más para el tutorial de programación de C/C++ desde 0 y hoy un lector del blog ha hecho su petición: structs

Que es un struct??

El struct es un conjunto de datos empaquetados en un solo "nombre" definido por el programador. Si habéis llegado aquí deberías saber lo que es un int, un char o un float (si no lo teneis claro revisad capitulo anteriores del tutorial), pero como ya habréis visto si habéis empezado a hacer vuestros primeros programas en muchas ocasiones las variables quedan desperdigadas y se hace difícil enteneder el código (si no habeís llegado a ese punto, tranquilos, ya os pasará :D)


Como se usa un struct?

Bien, lo principal es su defnición:

typedef struct
{
      char altura_centimetros;
      char peso_kilos;
      int sueldo_anual_bruto;
}TPersona;

A partir de aquí podremos usar ese tipo de estructura como si de una variable más se tratara.

TPersona pepe;
TPersona juan;

Y para acceder a los datos de "pepe" y "juan" solo nos hará falta el operador '.'

if ( pepe.sueldo_anual_bruto )
{
          pepe.altura_centimetros = 156;
          pepe.peso_kilos += juan.peso_kilos;
}

En el supuesto que tuviesemos un puntero (EDIT: para saber lo que es un puntero mira este link) a una estructura a los datos se tendria que acceder mediante el operador '->'

TPersona &pepe;
TPersona juan;

juan.altura_centimetros = pepe->altura_centimetros;
pepe->peso_kilos = juan.peso_kilos;

Finalmente habría el caso de structs que contuviesen structs que seria de este estilo:

typedef struct
{
    char rojo,azul,verde;
}TColor;

typedef struct
{
    TColor ojos;
    TColor cabello;
}TPersona;

TPersona pepe;

pepe.ojos.rojo = pepe.cabello.azul + 10;


Con estoy doy por semifinalizado el tema de structs. Pensad que es un tema que da muchísimo juego y que este tutorial no es más que una primera aproximación. Si tenéis dudas sobre este tutorial decidlo y tal vez haga otro para acabar de completarlo, pero por ahora, ya podéis empezar a jugar con el tema.

Espero que os haya gustado

Nos vemos

LordPakusBlog

Entradas populares