lunes, 5 de noviembre de 2012

C++ Punteros

Dado un objeto "p1" definido con la clase TCoordenada :

  • TCoordenada p1;

Definimos un puntero a dicho objeto :

  • TCoordenada *ptr1 = &p1;

Con el puntero podemos acceder a los miembros del objeto "p1" de dos formas equivalentes:

ptrl->x = 1;
(*ptrl).x = 1;  

En la segunda forma usamos el operador de desreferencia  *  que da el objeto al que apunta el puntero.

Sería un error de sintaxis *(ptrl.x).

C++ Clases

En programación orientada a objetos, las clases se utilizan como plantilla para construir objetos de ese tipo.
Poo : encapsula datos y funciones en estructuras llamadas clases, para modelar el mundo real.
La clase (TCoordenada) se puede instanciar como:
    • objeto :   TCoordenada objetoP1;
    • array :       TCoordenada arrayP2[10];
    • puntero :  TCoordenada *ptrP3 = &objetoP1;
    • referencia : TCoordenada &refP4 = objetoP1;

Ejemplo de definición de una clase, funciones inline para el input, funciones de parametro cero para el output y funciones sobrecarga para la impresión de resultados :

/* 
* defclases.cpp
* Definición y usos de clases 
* by Oscar Romero
* compilado : g++ defclasses.cpp -o defclasses
*/

#include <iostream> //Añade encabezado de flujo entrada salida
using namespace std; //permiso para acceso al espacio de nombres std

class TCoordenada  //Definicion de la clase

{

public:          //Permite acceder a los datos desde la función main
 void setX(int xx) {x = xx;}  //Funciones para el input en el main
 void setY(int yy) {y = yy;}  //Son funciones inline 
 void setZ(int zz) {z = zz;}  //inline = codigo dentro declaracion
 int getX(void) {return x;}   //Funciones para el output en el main
 int getY(void) {return y;}   //Funciones parámetro cero, sin argumentos
 int getZ(void) {return z;}
  void imprimir(void)  //Funcion de sobrecarga para el output
  {
   cout << "(" << x << ", " << y << ", " << z << ")" << endl;
  }

 private:       //Permite reservar datos para uso interno de la clase

 int x, y, z; 
};

int

main(void)
{
 int i; //Declaracion variable entera
 TCoordenada p1; //Instancia de la clase TCoordenada en el objeto p1
 p1.setX(1); //Usa las funciones de input para meter datos en la clase
 p1.setY(2);
 p1.setZ(3);
 p1.imprimir(); //LLama la funcion de sobrecarga de la clase TCoordenada
return 0;
}

miércoles, 31 de octubre de 2012

C++ Lógica

Ley de Morgan :

!(A && B) == !A || !B     No(A y B) igual a No A o No B
!(A || B) == !A && !B     No(A o B) igual a No A y No B

Operadores lógicos:

if (!(a == b))                             Si No(a igual b)
 cout << "a y b no son iguales" << endl;
else
 cout << "a y b son iguales" << endl;

if ((a == b) || (b == c))                   Si a igual b O b igual c    
 cout << "A y B iguales o B y C desiguales" << endl;
else
 cout << "ni A y B iguales ni B y C iguales" << endl;


if (!a)                                    Si No a
 cout << "A es false (igual 0)" << endl;
else
 cout << "A es true (distinto de 0)" << endl;

Operador ternario (?), consta de tres partes :
  • E1?E2:E3  es decir Si(E1) dntonces {E2} si no {E3)
  • cout << "Tienes " << n << " euro" << (n==1?"":"s") << endl;  
    • Si n = 1 termina poniendo "euro"
    • Si n distinto 1 termina poniendo "euros"

If Else anidado :  usar llaves y paréntesis para aclarar el código
if (a >= b) {
  cout << "a mayor o igual que b" << endl;
  if (a == 23) {
    cout << "a igual que 23" << endl;
  }
}
else {
cout << "a menor que b" << endl;
}

martes, 30 de octubre de 2012

C++ Unarios

Los operadores matemáticos son : + - * /
Los operadores unarios son : ++ --

+ : Operador unario «más», indica un valor positivo
-  : Operador unario «menos»; niega una expresión
++ : Operador de incremento; incrementa un valor en 1
-- : Operador de decremento; decrementa un valor en 1
! : Operador de complemento lógico; invierte el valor de un booleano
test++ :  Evalúa y luego incrementa.
++test : Incrementa y luego evalúa.

Ejemplos:

  • c++        incrementa "c" en uno
  • a -= 1         reduce "a" en uno
  • b += 3         incrementa "b" en 3
  • a += b + c añade a "a" la suma de "b" y "c"
  • a = -b     "a" es "b" con el signo cambiado  

Uso de los operaciones unarios :

C++ Estructura

La estructura es una variable con varios campos.
Definición:
struct ficha {    : Tipo estructura nombre = ficha
   char nombre[50]; : Primer campo nombre, 50 caracteres
   int edad;        : Segundo campo edad, entero
   char dni[9};     : Tercer campo dni, 9 caracteres
} ficha01, ficha02; : aplico la estructura a las variables ficha01 y ficha 02

Uso:
ficha01.nombre = "Oscar Romero";
ficha01.edad = 18;
ficha01.dni = 12345678X;

C++ Tipos de valor

Tipos variables :
  • void=vacío char= carácter int=entero float=flotante double=flotante mayor bool=booleano
unsigned : sólo usa valores positivos :
  • int i : tomará valores entre -32768 to 32767.
  • unsigned int i : tomará valores de 0 to 65535
Constantes :
  • #define valor 25
  • const float pi = 3.1415;
Según el tipo de variable, emplearemos más o menos memoria.


Salida del programa


Definición de constantes

C++ Funciones cin cout

En las funciones siempre hay que definir el tipo de retorno.

Funcion con salida de datos (output): cout

Función con recogida de datos usando la recogida de datos (input) : cin