Вы находитесь на странице: 1из 37

Lenguaje C++

GRANADOS PAREDES
GIBRN
Lenguajes de Programacin
Dra. Ana Lilia Laureano Cruces

Lenguaje C++
Introduccin
B. Stroustrup, mediados de los 80,
AT&T
Paso de la programacin tradicional
(C) a estilos de abstraccin de datos
y orientacin a objetos
Conserva caractersticas del C y
aade nuevos conceptos

Lenguaje C++
Extensiones respecto al C
No orientadas a objeto
Orientadas a objetos

Lenguaje C++
Extensiones respecto al C
No orientadas a objeto

Mejoras en entrada/salida - streams


Sobrecarga de funciones y operadores
Parmetros por defecto. Referencias

Lenguaje C++
Organizacin de programas
Ficheros de declaraciones (.h)
Del sistema
Del usuario (#ifndef .... #define ..... #endif)

Ficheros de cdigo fuente (.cc, .cpp)

Lenguaje C++
Scope (alcance)
Fichero: declaraciones que no pertenecen
a funcin o clase alguna
Funcin: etiquetas
Local: cualquier nombre declarado en un
bloque pertenece al bloque.
Clase: declaraciones asociadas a una clase

Cada variable tiene un scope o un


contexto

Lenguaje C++
Operadores y sentencias
Sentencias
Misma sintaxis y semntica que las de C

Operadores idem sentencias excepto:


new, delete, delete[], ::
<<, >>
Sobrecarga

Lenguaje C++
Estructura bsica de un
programa
#include<iostream.h>
main()
{//inicio
cout << Hello world;
}//fin

Lenguaje C++
Elementos del programa

COMENTARIOS
// Comentario de una sola lnea
/* Comentario multilnea */
BLOQUES DE CDIGO
{ Todos los bloques de cdigo van entre
corchetes }
FIN DE LINEA
Todas las instrucciones terminan con un
punto y coma

Lenguaje C++
Tipo bsico de datos
Tipo de dato bool tiene dos
valores asociados true o false
DECLARACIN DE UNA
VARIABLE
<Tipo de dato>
Nombre_variable;
INICIALIZACION DE UNA
VARIABLE
<Tipo de dato>
Nombre_variable = [valor];
EJEMPLO:
int variable1;
bool variable2=true;

Lenguaje C++
Tipo bsico de datos
Variables y aritmtica.
Todo nombre y/o expresin tiene un tipo.
El tipo determina las operaciones que se
pueden realizar con el.
Conversiones implcitas.
En asignaciones y operaciones
algebraicas el lenguaje lleva a cabo
todas las conversiones implcitas que
faciliten el uso y sean seguras.

Lenguaje C++
Arreglos
Un arreglo es un conjunto de tipos de datos bsicos
DECLARACIN DE UN ARREGLO
<Tipo de dato bsico> Nombre_variable[Nmero de
elementos];

INICIALIZACION DE UN ARREGLO
<Tipo de dato> Nombre_variable = {valor1, valor2, ,
valorN}];

EJEMPLO:
char arreglo1[10];
float arreglo2={1.5, 2.3, 6,7};

Lenguaje C++
Arreglos
DECLARACIN
DE UN ARREGLO
Multidimencionales
MULTIDIMENCIONAL

<Tipo de dato bsico> Nombre_variable[Nmero de


elementos][Numero de elementos];
INICIALIZACION DE UN ARREGLO
MULTIDIMENCIONAL
<Tipo de dato> Nombre_variable = { {valor1,
valor2, , valorN}, {valor1, valor2, , valorN} };

EJEMPLO:
char arreglo1[10][10];
int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};

Lenguaje C++
Apuntadores y vectores
Punteros y vectores.
char v[10]; //vector de 10 caracteres (0 a 9)
char *p; // puntero a un carcter
p = &v[3]; //p apunta al cuarto elemento de v
punteros - operaciones asociadas

int *p; //puntero a entero


int **p; //puntero a puntero a entero
int (*vp) [10]; //puntero a vector de 10 enteros
int (*fp) ( char, char *);// puntero a funcin

Lenguaje C++
Tipos definidos por el
ESTRUCTURAS (Registros)
usuario
struct date_s {
int day, month, year;
} aDate;
La definicin de arriba de aDate es tambin la
declaracin de una estructura llamada date_s.
Podemos definir otras variables de este tipo
referenciando la estructura por el nombre:
struct date_s anotherDate;
Enumeraciones
Clases

Lenguaje C++
Instrucciones de control de flujo
EJEMPLO
for(int i=0; i<5; i+
+){
cout << Hello
world<<i;

Lenguaje C++
Operadores
Los operadores de
incremento ++ y -pueden ser explicados
por medio del siguiente
ejemplo. Si tienes la
siguiente secuencia de
instrucciones
a = a + 1; b = a;
Se puede puedes usar
b = a++;
b = ++a;

Lenguaje C++
Sobrecarga de operadores
+ - * / % ^ & | ~ ! = < > += -= *= /=
%= ^= &=
|= << >> >>= <<= == != <= >= &&
|| ++ -->* -> , [ ] ( ) new new[ ] delete delete[ ]
No se sobrecargan:
::
.
.*

Lenguaje C++
Sobrecarga de operadores
class complex {
double re, im;
public:
complex(double r, double i) : re(r), im(i){}
complex operator+(complex);
complex operator*(complex);
bool operator==(complex);
bool operator<(complex);
};
void f()
{ complex a(1, 3.1);
complex b(1.2, 2);
complex c = b;
if(a==b)
a = b + c;
b = b + c * a;
c = a * b + complex(1,2);
}

Lenguaje C++
Funciones
Regulares (similares a una funcin C).
Miembros (asociadas a una clase).
Nombre, lista de argumentos, tipo de retorno y
cuerpo.
int miFuncion(int a); //firma o declaracin
int miFuncion(int a){ //definicin
cout<<a;

Lenguaje C++
Funciones
extern int pow( float, int);
int main()
{
for (int i = 0; i < 10; i++)
cout << pow( 2, 5) << endl;
}

Lenguaje C++
Funciones
Paso de argumentos
Por valor - seguridad
copiado en el almacenamiento local de la funcin
la funcin accede a la copia

Por referencia - velocidad - retornos mltiples


se copia la direccin del objeto que se esta pasando
la funcin accede al objeto

Por referencia constante - seguridad +


velocidad

Vectores: paso por referencia

Lenguaje C++
Funciones
Paso de argumentos
Por valor
char a = a;
miFuncion(a);
Por referencia
char a = a;
miFuncion(&a);

Vectores: paso por referencia


char a[] = {a,b}
miFuncion(a);

Lenguaje C++
Funciones
Sobrecarga de nombres.

int max(int, int);


int max( int, int, int);
int max(int *, int);
int max(float, int);
int max(int, float);

Lenguaje C++
Soporte para abstraccin
Definicin dede
un conjunto
datosde
operaciones asociadas a un tipo.
Restriccin del conjunto de operaciones
que se pueden realizar sobre un tipo a
las definidas para el mismo.
CLASE

nombre
datos miembros
funciones miembro
control de acceso

Lenguaje C++
Soporte para abstraccin de
Inicializacin ydatos
destruccin.
Inicializacin y asignacin.
Patrones.
Conversiones de tipo
complex a = complex(1);

Mltiples implementaciones

Lenguaje C++
Soporte para orientacion a
Funciones virtuales.
objetos
Polimorfismo.
Clases abstractas.
Clases patrn.
Herencia simple y mltiple.
Encapsulado.

Lenguaje C++
Los objetos se crean al llegar a su
definicin.
Los objetos se destruyen cuando salen del
bloque.
Los objetos globales se crean una sola vez
y se destruyen al terminar el programa.
Los objetos static son similares a los
globales.

Lenguaje C++
Almacenamiento de objetos
esttico (asignada al iniciarse el
programa)
automtico (asociada al bloque)
en la memoria disponible (obtenida con
new)

Lenguaje C++
Clases.
Tipo abstracto de datos definido por
el usuario
class X {
Interface e implementacin
struct X {
private:
int i;
public:
f();
protected:
g();

};

private:
int i;
public:
f();
protected:
g();

};

Lenguaje C++
clases
Constructores
Funciones con el mismo nombre de la
clase pero que no retornan nada.
Constructor de copia
Constructor por defecto
Constructores como conversores de tipo

Destructores
virtuales

Lenguaje C++
clases
CONSTRUCTORES
class Point {

int _x, _y;


public: Point() { _x = _y = 0; }
void setX(const int val);
void setY(const int val);
int getX() { return _x; }
int getY() { return _y; }

};

Lenguaje C++
clases
DESTRUCTORES
class Point {

};

int _x, _y;


public:
Point() { _x = _y = 0; }
Point(const int x, const int y) { _x = x; _y = y; }
~Point() { /* Nada qu hacer! */ }
void setX(const int val);
void setY(const int val);
int getX() { return _x; }
int getY() { return _y; }

Lenguaje C++
clases
Friend

Nosotros podemos definir que funciones o clases sean amigos de una


clase para permitirles acceso directo a sus miembros de datos privados.
Por ejemplo, que la funcin para el operador + tuviese acceso a los
miembros de datos privados _real e _imag de la clase Complex. Con ese
fin declaramos que el operador + sea amigo de la clase Complex:

class Complex {
... public: ...
friend Complex operator +( const Complex &, const Complex & );
};
Complex operator +(const Complex &op1, const Complex &op2) {
double real = op1._real + op2._real, imag = op1._imag +
op2._imag; return(Complex(real, imag));
}

Lenguaje C++
clases
Construccin de objetos
automticos
variables locales: se ejecuta su constructor cada vez
que el programa pasa por la declaracin
secuencia de construccin - destruccin

inicializacin y asignacin

en memoria disponible
new, delete

int* ip = new int(7);


delete ip;
int* iap = new int[10];
delete [] iap;

Lenguaje C++

clases y herencia
class Point3D : public Point {

int _z;
public:
Point3D() { setX(0); setY(0); _z = 0; }
Point3D(const int x, const int y, const int z) {
setX(x); setY(y); _z = z; }
~Point3D() { /* Nada que hacer */ }
int getZ() { return _z; }
void setZ(const int val) { _z = val; }

};

Lenguaje C++

clases y herencia mltiple


class DrawableString : public
Point, public DrawableObject {
... public:
DrawableString(...){ ... }
~DrawableString() { ... } ...

};

Вам также может понравиться