jueves, 18 de noviembre de 2010

*Lenguaje C++

Materia: Lenguajes de Programación - PUNTOS EXTRA
Hora: Jueves v1

Hola a todos, en está entrada les hablaré un poco sobre el Lenguaje C++.

El lenguaje C++, es un lenguaje diseñado por Bjarne Stroustrup en el año de 1983. El propósito de su creación fue extender el lenguaje C con mecanismos que permitan la manipulación de objetos.

Una particularidad del Lenguaje C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales.


 
Aquí les dejó un ejemplo del programa "Hola Mundo" :

# include // Este header permite usar los objetos que encapsulan los descriptores stdout y stdin: cout(<<) y cin(>>)//


using namespace std;

int main()
{
            cout << "Hola mundo" << endl;
            return 0;
}
 
 
En éste ejemplo, al usar la directiva #include estamos diciéndole al compilador que busque determinadas cosas en un archivo que se llama iostream. Para evitar redefinir cosas ya hechas al ponerles igual nombre, se crearon los llamados espacios de nombres o namespace . En este caso hay un espacio de nombres llamado std, que es donde se incluyen las definiciones de todas las funciones y clases que conforman la libreria estándar de C++, entre muchas otras cosas del objeto cout, que representa el flujo de salida estándar, y todo esto es exactamente lo que decimos al añadir la sentencia using namespace std.


En C++ la definición de funcines es similar a la de C, sólo que en C++ main no va a recoger argumentos, por lo que no tenemos que ponerselos, en C++ el símbolo << se le conoce como el operador de inserción y grosso modo que está enviando a cout lo que queremos mostrar en la pantalla para que lo imprima, éste operador se puede utilizar varias veces en la misma sentencia, de forma que gracias a esta característica podemos poner un carácter end1 al final que es equivalente al \n en C.

Para poder observar lo que imprime en la pantalla, especificamente en Windows, los  programadores tenemos que insertar la línea :

system("PAUSE"); // Este operador se incluye solamente en Windows// 

antes del 

return 0; 


Los tipos de datos que se utilizan en C++ son:

  • Caracteres: char (también es un entero), wchar_t
  • Enteros: short int, int, long int, long long int
  • Números en coma flotante: float, double, long double
  • Booleanos: bool
  • Vacío: void

El modificador unsigned se puede aplicar a enteros para obtener números sin signo, con lo que se consigue un rango mayor de números naturales.


 
Se decidió añadir el tipo de dato wchar_t, que permite el uso de caracteres UNICODE, a diferencia del tradicional char, que contempla simplemente al código de caracteres ASCII extendido. Por ejemplo:

- strcpy - wstrcpy

- std::string - std::wstring
- std::cout - std::wcout

 
La palabra clave void define en C++ el concepto de no existencia o no atribución de un tipo en una variable o declaración, por lo tanto puede ser usada para destacar que una función no recibe parámetros, como en:


int funcion (void);

 
Aunque la tendencia actual es la de no colocar la palabra "void". Además se utiliza para determinar que una función no retorna un valor, como en:
 
void funcion (int parametro);

 
Cabe destacar que void no es un tipo. Una función como la declarada anteriormente no puede retornar un valor por medio de return: la palabra clave va sola. No es posible una declaración del tipo:

 
void t; //Está mal

 
Pero la forma especial void * indica que el tipo de datos es un puntero. Por ejemplo:


void *memoria;

 
Los objetos en C++ son abstraídos mediante una clase, que consta de:


1.Métodos o funciones
2.Atributos o Variables Miembro

 
Un ejemplo de una clase sería:
class Punto

{
//por omisión los miembros son 'private' para que sólo se puedan modificar desde la propia clase.//
private:
            // Variable miembro privada
            int id;
protected:
           // Variables miembro protegidas
           int x;
           int y;
public:
           // Constructor
           Punto( );
          // Destructor
          ~Punto();
          // Funciones miembro o métodos
          int ObtenerX();
          int ObtenerY();
};


  
- Constructores: son unos métodos especiales que se ejecutan automáticamente al crear un objeto de la clase. En su declaración no se especifica el tipo de dato que devuelven, y poseen el mismo nombre que la clase a la que pertenecen. Un ejemplo de constructor sería:
 
class Punto

{
public:

// Coordenadas del punto

                float x;
                float y;

// Constructor

                Punto() : x ( 0 ), y ( 0 ) // Inicializamos las variables "x" e "y"
                {}
};

// Main para demostrar el funcionamiento de la clase

# include // Esto nos permite utilizar "cout"

using namespace std;

int main()
{
          Punto MiPunto;                                         // creamos un elemento de la clase Punto llamado MiPunto
          cout << "Coordenada X: " << MiPunto.x << endl; // mostramos el valor acumulado en la variable x
          cout << "Coordenada Y: " << MiPunto.y << endl; // mostramos el valor acumulado en la variable y
          return 0;
}

Existen varios  tipos de constructores en C++ y son:

1.Constructor predeterminado. Es el constructor que no recibe ningún parámetro en la función. Si no se definiera ningún constructor, el sistema proporcionaría uno predeterminado. Es necesario para la construcción de estructuras y contenedores de la STL.


 
2.Constructor de copia. Es un constructor que recibe un objeto de la misma clase, y realiza una copia de los atributos del mismo. Al igual que el predeterminado, si no se define, el sistema proporciona uno.

 
3.Constructor de conversión. Este constructor, recibe como único parámetro, un objeto o variable de otro tipo distinto al suyo propio. Es decir, convierte un objeto de un tipo determinado a otro objeto del tipo que estamos generando.


- Destructores: son funciones miembro especiales llamadas automáticamente en la ejecución del programa, y por tanto no tienen por qué ser llamadas explícitamente por el programador. Sus principales objetivos son:


~ Liberar los recursos computacionales que el objeto de dicha clase haya adquirido en tiempo de ejecución al expirar éste.
~ Quitar los vínculos que pudiesen tener otros recursos u objetos con éste.

 

 
* Sobrecarga de Operadores
   Los Operadores que pueden ser sobrecargados son:

- Operadores Unarios
  • Operador * (de indirección)
  • Operador -> (de indirección)
  • Operador +
  • Operador -
  • Operador ++
  • Operador --
- Operadores Binarios
  • Operador ==
  • Operador +
  • Operador -
  • Operador *
  • Operador /
  • Operador %
  • Operador <<
  • Operador >>
  • Operador &
  • Operador ^
  • Operador
  • Operador []
  • Operador ()

- Operadores de Asignación
  • Operador =
  • Operador +=
  • Operador -=
  • Operador *=
  • Operador /=
  • Operador %=
  • Operador <<=
  • Operador >>=
  • Operador &=
  • Operador ^=
  • Operador |=

 Las clases basic_ostream y basic_stream, y los objetos cout y cin, proporcionan la entrada y salida estándar de datos (teclado/pantalla). Por ejemplo:
 
ostream& operator<<(ostream& fs,const Punto& punto)
{
return fs << punto.x << "," << punto.y;
}
//...

Punto p(4,5);
//...
cout << "Las coordenadas son: " << p << endl;
//...



fstreams: es el tipo de flujo para el manejo de ficheros, existen tres clases de ficheros:

~ ifstream - ficheros de lectura
~ ofstream - ficheros de escritura
~ fstream. - ficheros de lectura/escritura

La codificación de un fichero quedaría así:

* Si es un fichero de texto plano :

#include

#include
#include

using namespace std;

int main() {
        ifstream entrada;
       entrada.open("textoPlano.txt");
       string unString;
       while(entrada >> unString)
                cout << "Lei: " << unString << endl;
        return 0;
}






Bueno esto es todo sobre mi entrada de C++, espero les sea útil. Saludos :)

1 comentario: