Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Ander Mijangos
Universidad de Deusto
Octubre de 2010
Aspectos generales de c++
• Es una ampliación de c para dar soporte a la POO
• El tercer lenguaje de programación más usado
(octubre de 2010)1
• Se usa para SO, SGBD, sistemas de Tiempo Real…
• Case sensitive
• Las variables sólo existen en su ámbito {…}
• Los programas se organizan en dos ficheros:
▫ .h: archivos de cabecera
▫ .cpp: archivos de código fuente (que incluyen el .h)
1 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
¡Hola Mundo!
#include <iostream>
using namespace std;
void main()
{
cout << "¡Hola mundo!" << endl;
}
Tipos de datos básicos
• Enteros
▫ (signed/unsigned) (long/short) int
• Char (carácter y mucho más)
▫ (unsigned) char //1 byte
• Coma flotante
▫ float
▫ double //64 bits
• Booleano
▫ bool
Más tipos de datos (I)
• Definidos por el programador
▫ struct
▫ class
▫ enum
▫ union
• Arrays y punteros
▫ []
▫*
Más tipos de datos (II)
• sizeof
▫ sizeof(TIPO);
• typedef
▫ typedef TIPO_ANTIGUO TIPO_NUEVO;
• Constantes
▫ 1, true, 0x01 (hexadecimal), 0.1, „a‟…
• Declaración e inicialización
▫ unsigned int contador;
▫ int a = 5, b = 5, c;
Entrada y salida por consola
• Hay que incluir la STL y especificar el
namespace
▫ #include <iostream>
▫ using namespace std;
• Sentencias:
▫ cout << "Introduzca el precio: ";
▫ cin >> precio;
String
• Es una clase definida en la STL
▫ #include <string>
• Declaración e inicialización:
▫ string nombreUsuario = “Ander”;
• Realmente se trata de una cadena de caracteres
que finaliza en „\0‟
• Algunas funciones miembro:
▫ size();
Preprocesador
• Include • Los archivos de
#include <FICHERO> cabecera se suelen
• Define asegurar ante
#define SIMBOLO inclusiones múltiples:
[VALOR] #ifndef
• Ifdef NOMBRE_DE_FICHERO_H
#if(n)def SIMBOLO #define
… NOMBRE_DE_FICHERO_H
#else …
… #endif
#endif
Comentarios
• De bloque:
▫ /* … */
• De línea:
▫ // …
Type cast
• Convierte un tipo de datos en otro
int i = 1000;
char c = (char)i;
Nota: con pre, primero se ejecuta el
operador; con post, primero se evalúa
• Aritméticos • Aritméticos y de
▫ Binarios asignación
+ ▫ +=
- ▫ -=
* ▫ *=
/ ▫ /=
% (módulo) ▫ %=
▫ Unarios
-
++
--
Nota: valor != 0 -> true
valor == 0 -> false
Operadores (II)
• Operadores relacionales
▫ ==
▫ !=
▫ <
▫ >
▫ <=
▫ >=
• Operadores booleanos
▫ && (AND)
▫ || (OR)
▫ ! (NOT)
Precedencia de operadores
:: *&+-!~ &
:: new ^
-> . delete |
[] () &&
() ->* .* ||
++ */% ?:
= *= /= += -= >*gt;=
-- +-
&= ^= |= %= <<=
sizeof << >> ,
++ < > <= >=
-- == !=
• Clases y objetos
▫ Clase: declaración del tipo de datos
▫ Objeto: variable de dicho tipo de datos (instanciación)
POO: Encapsulación
• Programación Orientada a Objetos
• Consta de:
▫ Clases
▫ Encapsulación
• Llamada a un método:
▫ objeto.metodo(parámetros);
POO: Puntero this
• En los métodos no se pasa el objeto como parámetro
• El compilador añade automáticamente:
▫ bool esBisiesto(Fecha* const this)
• „This‟ es un puntero al objeto desde el que se llama a
la función.
• Su uso no es obligatorio salvo:
▫ Para distinguir el atributo de otro parámetro llamado
igual (this->atributo)
▫ Para referenciar al objeto en sí
• Para que el objeto referenciado también sea
constante, al final de la cabecera del método se
escribe „const‟
POO: Miembros estáticos
• Atributo estático: cada objeto no tiene su propio
valor para el atributo sino que es compartido.
▫ Para acceder desde el programa principal:
Fecha::Meses
▫ Se inicializa en el .cpp donde se implementan los
métodos de la clase.
• Método estático: no recibe el objeto por
parámetro (no tiene this).
▫ Para acceder desde el programa principal:
Fecha::esBisiesto(2006)
Punteros a funciones
• Declaración del puntero:
int (*punteroAIntFuncionIntInt) (int, int);
• Función que se va a referenciar:
int funcion(int, int)
{
}
• Asignación de la dirección:
punteroAIntFuncionIntInt = &funcion; //&
opcional
• Llamada a la función desde el puntero:
funcion(1,3)
punteroAIntFuncionIntInt(1,3); // Hacen lo
mismo
Referencias
• Permiten modificar una variable en una función
sin tratar con punteros
NORMAL (el valor no CON PUNTEROS: CON REFERENCIAS:
se modifica):
void funcion(int i) void funcion(int* pi) void funcion(int& ri)
{ { {
i= 2; *pi= 2; ri = 2;
} } }
void main() void main() void main()
{ { {
int i = 1; int i = 1; int i = 1;
funcion(i); funcion(&i); funcion(i);
} } }
Esta presentación está basada en los apuntes tomados
en la asignatura de Laboratorio de Informática I
impartida por Jesús Sanz e Iker Jamardo, en la facultad
de Ingeniería de la Universidad de Deusto.
Ander Mijangos
Universidad de Deusto
andermijan (arroba) gmail (punto) com
http://www.slideshare.net/andermijan