SlideShare a Scribd company logo
1 of 36
Lenguaje C++
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
– Parámetros por defecto. Referencias
Lenguaje C++
• Organización de programas
– Ficheros de declaraciones (.h)
• Del sistema
• Del usuario (#ifndef .... #define ..... #endif)
– Ficheros de código fuente (.cc, .cpp)
Lenguaje C++
• Scope (alcance)
– Fichero: declaraciones que no pertenecen a función
o clase alguna
– Función: 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 semántica que las de C
– Operadores idem sentencias excepto:
• new, delete, delete[], ::
• <<, >>
• Sobrecarga
Lenguaje C++
Estructura básica de un programa
#include<iostream.h>
main()
{//inicio
cout << “Hello world”;
}//fin
Lenguaje C++
Elementos del programa
• COMENTARIOS
• // Comentario de una sola línea
• /* Comentario multilínea */
• BLOQUES DE CÓDIGO
• { Todos los bloques de código van entre corchetes }
• FIN DE LINEA
• Todas las instrucciones terminan con un punto y coma
Lenguaje C++
Tipo básico de datos
• Tipo de dato bool tiene dos valores
asociados true o false
• DECLARACIÓN 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 básico de datos
• Variables y aritmética.
• Todo nombre y/o expresión tiene un tipo.
• El tipo determina las operaciones que se pueden
realizar con el.
• Conversiones implícitas.
• En asignaciones y operaciones algebraicas el
lenguaje lleva a cabo todas las conversiones
implícitas que faciliten el uso y sean seguras.
Lenguaje C++
Arreglos
• Un arreglo es un conjunto de tipos de datos básicos
• DECLARACIÓN DE UN ARREGLO
• <Tipo de dato básico> Nombre_variable[Número 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 Multidimencionales
• DECLARACIÓN DE UN ARREGLO
MULTIDIMENCIONAL
• <Tipo de dato básico> Nombre_variable[Número 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 carácter
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 función
Lenguaje C++
Tipos definidos por el usuario
• ESTRUCTURAS (Registros)
struct date_s {
int day, month, year;
} aDate;
La definición de arriba de aDate es también la declaración 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 función C).
• Miembros (asociadas a una clase).
• Nombre, lista de argumentos, tipo de retorno y cuerpo.
• int miFuncion(int a); //firma o declaración
• int miFuncion(int a){ //definición
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 función
• la función accede a la copia
– Por referencia - velocidad - retornos múltiples
• se copia la dirección del objeto que se esta pasando
• la función 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 abstracción de datos
• Definición de un conjunto de operaciones asociadas
a un tipo.
• Restricción 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 abstracción de datos
• Inicialización y destrucción.
• Inicialización y asignación.
• Patrones.
• Conversiones de tipo
complex a = complex(1);
• Múltiples implementaciones
Lenguaje C++
Soporte para orientacion a objetos
• Funciones virtuales. Polimorfismo.
• Clases abstractas.
• Clases patrón.
• Herencia simple y múltiple.
• Encapsulado.
Lenguaje C++
• Los objetos se crean al llegar a su definición.
• 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
– estático (asignada al iniciarse el programa)
– automático (asociada al bloque)
– en la memoria disponible (obtenida con new)
Lenguaje C++
Clases.
Tipo abstracto de datos definido por el usuario
Interface e implementación
class X {
private:
int i;
public:
f();
protected:
g();
};
struct X {
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
función 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
• Construcción de objetos
– automáticos
• variables locales: se ejecuta su constructor cada vez que el programa
pasa por la declaración
– secuencia de construcción - destrucción
• inicialización y asignación
– 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 múltiple
• class DrawableString : public Point, public
DrawableObject {
• ... public:
– DrawableString(...){ ... }
– ~DrawableString() { ... } ...
• };

More Related Content

Similar to C++ en 40 (20)

6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx
 
Intro c sharp
Intro c sharpIntro c sharp
Intro c sharp
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
JAVA.PPT
JAVA.PPTJAVA.PPT
JAVA.PPT
 
JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 
JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Tipos de datos_para_c_
Tipos de datos_para_c_Tipos de datos_para_c_
Tipos de datos_para_c_
 
Presentación de Tipos de datos para c++ de programacion
Presentación de Tipos de datos para c++ de programacionPresentación de Tipos de datos para c++ de programacion
Presentación de Tipos de datos para c++ de programacion
 
librerias.pptx
librerias.pptxlibrerias.pptx
librerias.pptx
 
Manual de java_2
Manual de java_2Manual de java_2
Manual de java_2
 
manual 9
manual 9manual 9
manual 9
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 

C++ en 40

  • 2. Lenguaje C++ Extensiones respecto al C • No orientadas a objeto • Orientadas a objetos
  • 3. Lenguaje C++ Extensiones respecto al C • No orientadas a objeto – Mejoras en entrada/salida - streams – Sobrecarga de funciones y operadores – Parámetros por defecto. Referencias
  • 4. Lenguaje C++ • Organización de programas – Ficheros de declaraciones (.h) • Del sistema • Del usuario (#ifndef .... #define ..... #endif) – Ficheros de código fuente (.cc, .cpp)
  • 5. Lenguaje C++ • Scope (alcance) – Fichero: declaraciones que no pertenecen a función o clase alguna – Función: 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
  • 6. Lenguaje C++ • Operadores y sentencias – Sentencias • Misma sintaxis y semántica que las de C – Operadores idem sentencias excepto: • new, delete, delete[], :: • <<, >> • Sobrecarga
  • 7. Lenguaje C++ Estructura básica de un programa #include<iostream.h> main() {//inicio cout << “Hello world”; }//fin
  • 8. Lenguaje C++ Elementos del programa • COMENTARIOS • // Comentario de una sola línea • /* Comentario multilínea */ • BLOQUES DE CÓDIGO • { Todos los bloques de código van entre corchetes } • FIN DE LINEA • Todas las instrucciones terminan con un punto y coma
  • 9. Lenguaje C++ Tipo básico de datos • Tipo de dato bool tiene dos valores asociados true o false • DECLARACIÓN DE UNA VARIABLE • <Tipo de dato> Nombre_variable; • INICIALIZACION DE UNA VARIABLE • <Tipo de dato> Nombre_variable = [valor]; • EJEMPLO: • int variable1; • bool variable2=true;
  • 10. Lenguaje C++ Tipo básico de datos • Variables y aritmética. • Todo nombre y/o expresión tiene un tipo. • El tipo determina las operaciones que se pueden realizar con el. • Conversiones implícitas. • En asignaciones y operaciones algebraicas el lenguaje lleva a cabo todas las conversiones implícitas que faciliten el uso y sean seguras.
  • 11. Lenguaje C++ Arreglos • Un arreglo es un conjunto de tipos de datos básicos • DECLARACIÓN DE UN ARREGLO • <Tipo de dato básico> Nombre_variable[Número 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};
  • 12. Lenguaje C++ Arreglos Multidimencionales • DECLARACIÓN DE UN ARREGLO MULTIDIMENCIONAL • <Tipo de dato básico> Nombre_variable[Número 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}};
  • 13. Lenguaje C++ Apuntadores y vectores • Punteros y vectores. char v[10]; //vector de 10 caracteres (0 a 9) char *p; // puntero a un carácter 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 función
  • 14. Lenguaje C++ Tipos definidos por el usuario • ESTRUCTURAS (Registros) struct date_s { int day, month, year; } aDate; La definición de arriba de aDate es también la declaración 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
  • 15. Lenguaje C++ Instrucciones de control de flujo • EJEMPLO • for(int i=0; i<5; i++){ cout << “Hello world”<<i; • }
  • 16. 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;
  • 17. Lenguaje C++ Sobrecarga de operadores + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++ - - ->* -> , [ ] ( ) new new[ ] delete delete[ ] No se sobrecargan: :: . .*
  • 18. 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); }
  • 19. Lenguaje C++ Funciones • Regulares (similares a una función C). • Miembros (asociadas a una clase). • Nombre, lista de argumentos, tipo de retorno y cuerpo. • int miFuncion(int a); //firma o declaración • int miFuncion(int a){ //definición cout<<a; • }
  • 20. Lenguaje C++ Funciones extern int pow( float, int); int main() { for (int i = 0; i < 10; i++) cout << pow( 2, 5) << endl; }
  • 21. Lenguaje C++ Funciones • Paso de argumentos – Por valor - seguridad • copiado en el almacenamiento local de la función • la función accede a la copia – Por referencia - velocidad - retornos múltiples • se copia la dirección del objeto que se esta pasando • la función accede al objeto – Por referencia constante - seguridad + velocidad • Vectores: paso por referencia
  • 22. 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);
  • 23. 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);
  • 24. Lenguaje C++ Soporte para abstracción de datos • Definición de un conjunto de operaciones asociadas a un tipo. • Restricción 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
  • 25. Lenguaje C++ Soporte para abstracción de datos • Inicialización y destrucción. • Inicialización y asignación. • Patrones. • Conversiones de tipo complex a = complex(1); • Múltiples implementaciones
  • 26. Lenguaje C++ Soporte para orientacion a objetos • Funciones virtuales. Polimorfismo. • Clases abstractas. • Clases patrón. • Herencia simple y múltiple. • Encapsulado.
  • 27. Lenguaje C++ • Los objetos se crean al llegar a su definición. • 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.
  • 28. Lenguaje C++ • Almacenamiento de objetos – estático (asignada al iniciarse el programa) – automático (asociada al bloque) – en la memoria disponible (obtenida con new)
  • 29. Lenguaje C++ Clases. Tipo abstracto de datos definido por el usuario Interface e implementación class X { private: int i; public: f(); protected: g(); }; struct X { private: int i; public: f(); protected: g(); };
  • 30. 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
  • 31. 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; } • };
  • 32. 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; } • };
  • 33. 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 función 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)); • }
  • 34. Lenguaje C++ clases • Construcción de objetos – automáticos • variables locales: se ejecuta su constructor cada vez que el programa pasa por la declaración – secuencia de construcción - destrucción • inicialización y asignación – en memoria disponible • new, delete – int* ip = new int(7); – delete ip; – int* iap = new int[10]; – delete [] iap;
  • 35. 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; } • };
  • 36. Lenguaje C++ clases y herencia múltiple • class DrawableString : public Point, public DrawableObject { • ... public: – DrawableString(...){ ... } – ~DrawableString() { ... } ... • };