1 / 37

Lenguaje C++

Lenguaje C++. GRANADOS PAREDES GIBRÁN. Lenguajes de Programación Dra. Ana Lilia Laureano Cruces. Lenguaje C++ Introducción. B. Stroustrup, mediados de los 80, AT&T Paso de la programación tradicional (C) a estilos de abstracción de datos y orientación a objetos

theta
Télécharger la présentation

Lenguaje C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lenguaje C++ GRANADOS PAREDES GIBRÁN Lenguajes de Programación Dra. Ana Lilia Laureano Cruces

  2. Lenguaje C++Introducción • B. Stroustrup, mediados de los 80, AT&T • Paso de la programación tradicional (C) a estilos de abstracción de datos y orientación a objetos • Conserva características del C y añade nuevos conceptos

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

  4. 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

  5. Lenguaje C++ • Organización de programas • Ficheros de declaraciones (.h) • Del sistema • Del usuario (#ifndef .... #define ..... #endif) • Ficheros de código fuente (.cc, .cpp)

  6. 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

  7. Lenguaje C++ • Operadores y sentencias • Sentencias • Misma sintaxis y semántica que las de C • Operadores idem sentencias excepto: • new, delete, delete[], :: • <<, >> • Sobrecarga

  8. Lenguaje C++Estructura básica de un programa #include<iostream.h> main() {//inicio cout << “Hello world”; }//fin

  9. 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

  10. 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;

  11. 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.

  12. 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};

  13. 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}};

  14. 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

  15. 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

  16. Lenguaje C++Instrucciones de control de flujo • EJEMPLO • for(int i=0; i<5; i++){ cout << “Hello world”<<i; • }

  17. 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;

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

  19. 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); }

  20. 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; • }

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

  22. 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

  23. 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);

  24. 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);

  25. 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

  26. 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

  27. Lenguaje C++Soporte para orientacion a objetos • Funciones virtuales. Polimorfismo. • Clases abstractas. • Clases patrón. • Herencia simple y múltiple. • Encapsulado.

  28. 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.

  29. Lenguaje C++ • Almacenamiento de objetos • estático (asignada al iniciarse el programa) • automático (asociada al bloque) • en la memoria disponible (obtenida con new)

  30. Lenguaje C++Clases. Tipo abstracto de datos definido por el usuarioInterface e implementación class X { private: int i; public: f(); protected: g(); }; struct X { private: int i; public: f(); protected: g(); };

  31. 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

  32. 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; } • };

  33. 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; } • };

  34. 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)); • }

  35. 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;

  36. 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; } • };

  37. Lenguaje C++clases y herencia múltiple • class DrawableString : public Point, public DrawableObject { • ... public: • DrawableString(...){ ... } • ~DrawableString() { ... } ... • };

More Related