jueves, 14 de marzo de 2013

Mudanza!!!!

Mudanza!!! Este va a ser mi último mensaje en este blog ya que estamos de mudanza... mi nueva dirección a partir de ahora será:

http://manualprog.wordpress.com/

A partir de ahora podréis seguir leyendo mis posts sobre programación en el link anteriormente expuesto.
Muchas gracias a todos los que me seguís y nos vemos en mi nueva casa!!!!

domingo, 26 de agosto de 2012

Clases en C++

Como crear una clase en c++

La definición de un clase en c++ es la siguiente:

#ifndef __PUNTO_H__
#define __PUNTO_H__
class punto{
  private:
    int x;
    int y;

  public:
    punto();
    punto(int,int);
    int Leerx();
    void Fijarx(int);
    int Leery();
    void Fijary(int);
};
#endif


En este ejemplo creamos una clase punto con dos variable privadas X y Y y que tiene dos constructores y 5 funciones miembro definidas. En el archivo .h ponemos la definición anteriormente mostrada y en el archivo .cpp pondremos las diferentes definiciones de las funciones.

A continuación os mostraré el contenido del fichero .cpp:


#include "punto.h"
punto::punto(){   //constructor
x = 0;
y = 0;
}
punto::punto(int valx, int valy){ //constructor por parámetros
x = valx;
y = valy;
}
void punto::Fijarx(int valx){
x = valx;
}
int punto::Leerx(){
return x;
}
void punto::Fijary(int valy){
y = valy;
}
int punto::Leery(){
return y;
}
A continuación vamos a comentar un poco los puntos clave de la definición de un clase. Primero comentaremos los elementos más importantes de las definición de la clase.
  1. La definición de la clase punto se introduce dentro de bifurcación #ifndef __PUNTO_H__ ... #endif con objeto de evitar una inclusión múltiple en un fichero fuente.
  2. La clase punto tiene dos variable privadas. Esto significa que no puedes acceder a esas variable directamente (punto.x) sino que has de crear un procedimiento de lectura y otro de escritura para esas variables (por ejemplo leerx() y Fijarx(int)). Esto se hace como método de seguridad ya que nadie podrá acceder de forma externa a las variables interna del objeto.
  3. La definición de los diferentes procedimientos los hacemos públicos, ya que son con los métodos que utilizaremos para trabajar con el objeto de tipo punto.
  4. Toda clase define un constructor y un destructor por defecto, en este caso nos interesa definir un constructor que inicialice los puntos a unas coordenadas por defecto (en este caso 0). La sintaxis en los constructores es la siguiente void punto(); Como podemos ver los constructores tienen el mismo nombre que la clase.
  5. También definimos un constructor por parámetros, para inicializar el punto en las coordenadas deseadas. En este caso la sintaxis es la siguiente void punto(int,int); 
El fichero main.cpp queda de la siguiente forma:

#include
#include
using namespace std;
int main(){
     punto p1(-2,2); //constructor por parámetros
     punto p2; //constructor por defecto
   
     p2.Fijarx(3);  //insertar valores en las variables privadas
     p2.Fijary(5);
     cout << "p1.Leerx()" << p1.Leerx() << endl;
     cout << "p1.Leery()" << p1.Leery() << endl;
     cout << "p2.Leerx()" << p2.Leerx() << endl;
     cout << "p2.Leery()" << p2.Leery() << endl;
     return 0;
}
Esto  nos sacará por pantalla los valores de los dos puntos definidos por pantalla. En el siguiente post hablaremos sobre la sobrecarga de operadores. Hasta aquí una breve introducción en la definición de clases en c++.

sábado, 11 de agosto de 2012

Punteros en C (II)

Punteros en C (II)

En la anterior entrada (Punteros en C), vimos los primeros pasos para trabajar con punteros en C. En este post, vamos a ir un poco más allá y veremos como trabajar con memoria dinámica. Para ello utilizaremos las instrucciones malloc y free.

Por ejemplo, podemos definir un array de enteros de forma estática de la siguiente manera:
int arr[5];
arr[1] = 6;

o reservando memoria de forma dinámica de la siguiente:
int* arr;
arr = malloc(sizeof(int)*5);
arr[1] = 5;

La instrucción malloc tiene la siguiente sintaxis:

void *malloc(size_t tamano);
Por eso en el ejemplo puesto anteriormente el tamaño ha de ser el equivalente a un array de 5 enteros. Para ello usamos la instrucción sizeof que nos devuelve el tamaño en este caso del entero y lo multiplicamos por el tamaño deseado del array quedando (sizeof(int)*5).

Struct

El siguiente paso se trata de trabajar con punteros y estructuras definidas por el usuario. Para ello primero definiremos una estructura:
struct prueba{
   int val;
};

Una vez tenemos definida la estructura definimos la variable del tipo prueba:
struct prueba p1;

y accedemos a sus variables poniendo un ".":
p1.val = 5;
Para hacerlo de forma dinámica definiremos un puntero del tamaño de la struct prueba:
struct prueba* pp = malloc (sizeof(struct prueba));
Y para acceder a sus variables tenemos dos formas:
(*pp).val = 2;
pp->val = 2;
 Todo esto se puede simplificar si en el momento de definir la estructura usamos la instrucción typedef:

typedef struct prueba{
   int val;
} prueba_t;

Ya que definimos un tipo prueba_t y a la hora de declarar las variables los definiremos como una variable de las ya predefinidas:
prueba_t p1;
y por en el momento de reservar memoria dinámica por ejemplo también se simplifica la sintaxis:
malloc(sizeof(prueba_t));

Hasta aquí hemos llegado con la segunda sesión de punteros... hasta la pŕoxima!!!!

 
 
 

jueves, 9 de agosto de 2012

Punteros en C

Los punteros en C

Definición: es una variable que da referencia a una región de memoria, en otras palabras es una variable cuyo valor es una dirección de memoria.

Sintaxis:


  • El operador & (operador dirección), aplicado sobre el nombre de una variable, devuelve su dirección de memoria (&x --> Coger la dirección de x).
  • El operador * (operador indirección) aplicado sobre una variable de tipo puntero permite acceder al dato al que apunta, es decir, al valor de la variable situada en esa dirección de memoria (*p --> Coge el valor de p)


Declaración:

int* xp;  //declara un puntero de tipo int

Inicialización de un puntero:
Todo puntero debe inicializarse!!!!, ya que en caso contrario tras ser declarado apuntaría a cualquier sitio (PELIGROSO) y si se usa puede modificar por ejemplo la memoria reservada a otra variable. Si no aun no sabemos dónde debe apuntar se le asignará el valor NULL (No apunta a ningún sitio en especial). 
int *p = NULL;
Ejemplo:

int cuenta = 125;
int *p;
int x;

Estado inicial de la memoria:

Cuenta 125 D100



p
D150



x
D175


p = &cuenta:

Cuenta 125 D100



p D100 D150



x
D175
x = *p:

Cuenta 125 D100



p D100 D150



x 125 D175


Hasta aquí hemos llegado con la introducción sobre punteros en c. Espero que os sirva de ayuda!
Hasta la pròxima!!!

viernes, 9 de septiembre de 2011

Hello World para Android

Hello World!!


Instrucciones para instalar el sdk de android aquí y para instalar el emulador aquí

Una primera entrada sobre Android, para mostrar el caso más sencillo en el mundo de la programación el Hello World.
Para ello, crear primeramente un proyecto en el eclipse y seleccionamos Android Project.
  • Nombre del proyecto: HelloWorld
  • Versión de la Api: 10
  • Nombre de la aplicación: HelloWorld
  • Package Name: com.android.helloworld
  • Create Activity: HelloWorldActivity
Clicamos en finalizar y el proyecto, ya se ha generado.

Código:

HelloWorld.java:

En la función Oncreate debemos de sustituir el siguiente comando:
setContentView(R.layout.main);

Por estas líneas de código:
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
Que son las que generan el mensaje en la pantalla.

El plugin de Eclipse hace muy sencillo ejecutar el simulador.
  • Select Run -->Run.
  • Select "Android Application".
Resultado:


Ejemplo sacado de android.developer.com

martes, 8 de febrero de 2011

endnote package

if you want to have a note section at the end of document, you should work with endnote package.
T odo this, the first step that we are doing is insert the package before the \begin{document}:

\usepackage{endnotes}


to add a note in the document you can use the next line:

\endnote{text}


to place the endnotes section in the document you can write:

\theendnotes


With this last command you are able to add the section en anyplace of the document.


Pd. Sorry by the english mistakes.

I hope that this short explain about this package may be help somente.

Another day I writte more about latex options!

martes, 4 de enero de 2011

Corrector Ortográfico de Latex

Investigando, sobre como conseguir un corrector ortográfico de latex, he encontrado los siguientes enlaces donde podemos observar un conjunto de pasos para conseguirlo:

http://www.latex-community.org/forum/viewtopic.php?f=31&t=15
aqui explica como hacerlo.

Aquí encontrareis los diccionarios:
diccionarios de openoffice