domingo, 21 de noviembre de 2010

C++ Laboratorio

C++ es un lenguaje de programación orientado a objetos, se puede decir que es un C mejorado, ya que C la unidad principal es la función lo que hace que sea una programación orientada a acciones y en C++ es la clase y a partir de ella los objetos son producidos, lo que hace que se mejore la productividad, calidad y reutilización del software.

La salida de flujo se hace con el operador de inserción de flujo <<.
Las palabras claves de C++ están en minúsculas, en este lenguaje igual que en C importa la diferencia entre mayúsculas y minúsculas. Las palabras reservadas en C++:

  • auto
  • continue
  • enum
  • if
  • short
  • switch
  • volatile
  • break
  • default
  • extern
  • int
  • signed
  • typedef
  • while
  • case
  • do
  • float
  • long
  • sizeof
  • union
  • char
  • double
  • for
  • register
  • static
  • unsigned
  • const
  • else
  • goto
  • return
  • struct
  • void
Esa lista son palabras reservadas para C y C++, la lista de a continuación tiene las palabras reservadas solamente de C++.
  • asm
  • catch
  • class
  • delete
  • friend
  • inline
  • new
  • operator
  • private
  • protected
  • public
  • template
  • this
  • try
  • virtual
Los comentarios de de la manera ya conocida // y /*..*/.
En C++ las variables pueden ser declaradas dentro del ciclo for terminando su alcance al finalizar el ciclo, pero es importante no confundir esto las variables NO PUEDEN ser colocadas en las condiciones de las estructuras do while, while, for o if.
La manera de imprimir y leer datos en C++ si es diferente C en vez de utilizar printf se utiliza cout con el operador << y en vez de scanf se usa cin y el operador >>, la diferencia con C de estos operadores es que no se requiere cadenas de formatos y de especificadores de conversión para indicar los tipos de datos que entran y salen.
Para poder hacer uso de cin y cout es necesario agregar el archivo de cabecera iostream.h

Tipos de datos en C++
Las palabras reservadas en c++ para crear tipos de datos definidos por el usuario son enum, struct,union y class.Cuando se declara algún dato tipo enum, struct, class o union se esta declarando un nuevo tipo de dato.

Parámetros
En C++ se tienen que declarar todos los parámetros de las funciones entre los paréntesis, una función que no recibe parámetros se especifica escribiendo void o simplemente los paréntesis vacíos.

Funciones en linea
Hay funciones llamadas en linea que ayudan a reducir la sobrecarga de las funciones, especial para pequeñas funciones. El compilador puede ignorar la instrucción inline a excepción de las funciones pequeñas.Inline debe ser utilizado solo para funciones pequeñas de uso frecuente.Esto lo podemos observar en el siguiente programa:


// Usamos la función inline para calcular el volumen de un cubo.
#include <iostream.h>
inline float cubo( const float s ) { return s * s * s; }
main( )
{
cout << ''Introduce la longitud del lado de tu cubo: '';
float lado;
cin >> lado;
cout << ''El volumen del cubo de lado ''
<< lado << ''es'' << cubo( lado ) << '\n';
return 0;
}


Parámetros por referencia
Los parametros por referencias son "alias" de su argumento correspondiente. Para pasar parametros por referencia es necesario indicar con un ampersand(&) despues haber indicado el tipo de parametro en el prototipo de la función.
Se usan APUNTADORES para pasar argumentos que pueden ser modificados por la funcion a la que se llama, se usan REFERENCIAS a constantes para mandar argumentos que no se van a modificar.
Las variables de referencia deben ser iniciadas en sus declaraciones.

CONST
Es utilizado en los parametros de una fucnion para indicar que ese valor no debe ser modificado en esa funcion.La variable constante debe ser INICIALIZADA al declararse.
Tambien es usado para declarar un apuntador constante.
const tipo nombre = valor; //Tipo constante
tipo *const nombre = valor; //Apuntador constante a tipo.
const tipo *nombre = valor; //(Variable) apuntador a la constante tipo.
const tipo *const nombre = valor; //apuntador constante a tipo constante.

Asignación dinamica de memoria con new y delete
Delete y new son dos operadores que deben ser utilizados el uno con el otro new se utiliza para dar un espacio de memoria a una variables segun su tipo, devuelve un apuntador, si no es posible asignar memoria devuelve un apuntador nulo, y delete se utiliza para desasignar memoria, el espacio que es creado con new solo se puede deshacer con delete.

Operador de resolucion con alcance unario.
Concepto fácil de entender, se refiere a cuando tenemos dos variables que tienen el mismo nombre una local y otra global, entonces es posible dentro de la funcion donde esta la variable local llamar a la variabe global mediante :: , pero es posible utilizarlo cuando se quiere acceder a una variable local de otra funcion.
Ejemplo:


#include <iostream.h>
float v;
int main( )
{
int v = 7;
::v = 10.5; // Utilizar la variable global v
cout << ''variable local v = '' << v << ''\n'';
cout << ''variable global v = '' << ::v << ''\n'';
return 0;
}


Homonimia de funciones
Este es un tema del que ya hablé en este blog(liga), es lo mismo que sobrecarga de funciones, esto quiere decir tener dos funciones que tienen el mismo nombre pero que es posible distinguirla por los parametros de la función.

Plantillas de función
Plantillas de funcion es cuando se pueden utilizar varias funciones que hagan las mismas operaciones pero con distintos tipos de datos. La plantilla de función se define solamente una vez. Las definiciones de plantillas se deben de hacer con template y la lista de parametros formales(precedidos por la palabra class) a la plantilla de función entre corchetes(<>).

C++ (POO)
Clases
Las clases es donde el programador diseña objetos que estan compuestos por atributos y comportamiento.Son definidos mediante la palabra class.
Una vez que se a declarado la clase ese nombre de clase puede ser utilizado para declarar objetos de dicha clase.
Ejemplo:

class Punto
// Declaración de la clase Punto.
{
int _x, _y; // Coordenadas del punto.
public:
// Principio de la declaración de interface.
void setX (const int val);
void setY (const int val);
int getX( ) {return _x;}
int getY( ) {return _y;}
};
Punto apunto; // Definición del objeto apunto.


Las definciones de clases se hacen con la palabra reservada class, el cuerpo de la función esta delimitado mediante llaves y termina con ; dentro del cuerpo de la función se pueden escribir las etiquetas public y private, cuando un miembro se declara public, quiere decir que se puede acceder a ellos siempre que el programa tenga acceso a un objeto de la clase y private solo se puede acceder a el en las funciones miembro de la clase.
Por defecto los elementos de las clases son PRIVADOS.

Los miembros de las clases no se pueden inicializar en el cuerpo de la clase donde son declarados. Se inician por el constructor de la clase, o la función "set" les podrán asignar valores.
Los destructores de clases tienen el mismo nombre que la clase pero va precedido por (~).

Acceso a miembros
Se puede acceder a los miembros de clase privados solo por miembros amigos de la misma clase.
Se puede acceder a los miembros de clase publicos mediante cualquier funcion del programa.

El apuntador this
Los objetos tienen apuntadores a si mismos que se llaman this, puede ser utilizado explicita(mediante el uso de la palabra this) o implícitamente.
El apuntador this se utiliza de manera implícita cuando se quiere referenciar a los miembros de datos y a las funciones miembro de un objeto. Este apuntador this depende del tipo de objeto y de si es const la función miembro donde this es utilizado.
Ejemplo:

// Declaramos un objeto fecha1 y a continuación le enviamos el
// mensaje set_fecha.
fecha1.set_fecha( );
// C++ define el puntero this para apuntar al objeto fecha1 de la
// forma:
Cfecha *const this = &fecha1;


// La función set_fecha puede ser definida también de la siguiente
// forma:
void Cfecha::set_fecha( )
{
cout << ''día, ## : ''; cin >> this->dia;
cout << ''mes, ## : ''; cin >> this->mes;
cout << ''año, #### : ''; cin >> this->anyo;
}


Referencias:
Manual de programación en C++.
C++ Tutorial.

1 comentario: