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

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Unidad 15 Características de C++ no relacionadas con el DOO.
Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
Herencia en C#.
Repaso para la construcción del intérprete 2012
Programación I Teoría III
Tipos de Datos Básicos y Estructurados
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación 1 Presentación de c++
Algoritmos y Estructuras de Datos
Programación Orientada a Objetos en Java
Unidad 3 Punteros.
Herramientas para el acceso directo a memoria en C++
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.

Programación Orientada a Objetos usando C++
Modificadores.
Estructura de Datos En C++
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
Lenguaje C++ Ana Lilia Laureano-Cruces
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
LENGUAJE “C” Programación.
Introducción a los punteros
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Descomposición Modular. Funciones
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Tipo de Datos Básicos.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Herramientas de polimorfismo y herencia en C++
Introducción a los punteros Prof. Domingo Hernández.
Manejo de Punteros y objetos en memoria dinámica en C++
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
Elementos básicos del lenguaje
Unidad II Introducción a la programación en C++
Programación en C para electrónicos
Elementos básicos del lenguaje
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
1 Definición y Conversión de datos Agustín J. González ELO-329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO326: Seminario II 2do. Sem
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO329.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
SCITMina | by Microsoft Bienvenidos Eduardo Daniel Tenorio Mayo Microsoft Student Partner Taller de Programación Orientada a Objetos Con C# Edgar Edel.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Lenguaje C++. Scope (alcance)Scope (alcance) –Fichero: declaraciones que no pertenecen a función o clase alguna –Función: etiquetas –Local: cualquier.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

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&TB. 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 objetosPaso 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 conceptosConserva características del C y añade nuevos conceptos

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

Lenguaje C++ Extensiones respecto al C No orientadas a objetoNo orientadas a objeto –Mejoras en entrada/salida - streams –Sobrecarga de funciones y operadores –Parámetros por defecto. Referencias

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

Lenguaje C++ Scope (alcance)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 contextoCada variable tiene un “scope” o un contexto

Lenguaje C++ Operadores y sentenciasOperadores y sentencias –Sentencias Misma sintaxis y semántica que las de CMisma sintaxis y semántica que las de C –Operadores idem sentencias excepto: new, delete, delete[], ::new, delete, delete[], :: > > SobrecargaSobrecarga

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

Lenguaje C++ Elementos del programa COMENTARIOSCOMENTARIOS // Comentario de una sola línea// Comentario de una sola línea /* Comentario multilínea *//* Comentario multilínea */ BLOQUES DE CÓDIGOBLOQUES DE CÓDIGO { Todos los bloques de código van entre corchetes }{ Todos los bloques de código van entre corchetes } FIN DE LINEAFIN DE LINEA Todas las instrucciones terminan con un punto y comaTodas 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 falseTipo de dato bool tiene dos valores asociados true o false DECLARACIÓN DE UNA VARIABLEDECLARACIÓN DE UNA VARIABLE Nombre_variable; Nombre_variable; INICIALIZACION DE UNA VARIABLEINICIALIZACION DE UNA VARIABLE Nombre_variable = [valor]; Nombre_variable = [valor]; EJEMPLO:EJEMPLO: int variable1;int variable1; bool variable2=true;bool variable2=true;

Lenguaje C++ Tipo básico de datos Variables y aritmética.Variables y aritmética. Todo nombre y/o expresión tiene un tipo.Todo nombre y/o expresión tiene un tipo. El tipo determina las operaciones que se pueden realizar con el.El tipo determina las operaciones que se pueden realizar con el. Conversiones implícitas.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.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ásicosUn arreglo es un conjunto de tipos de datos básicos DECLARACIÓN DE UN ARREGLODECLARACIÓN DE UN ARREGLO Nombre_variable[Número de elementos]; Nombre_variable[Número de elementos]; INICIALIZACION DE UN ARREGLOINICIALIZACION DE UN ARREGLO Nombre_variable = {valor1, valor2, …, valorN}]; Nombre_variable = {valor1, valor2, …, valorN}]; EJEMPLO:EJEMPLO: char arreglo1[10];char arreglo1[10]; float arreglo2={1.5, 2.3, 6,7};float arreglo2={1.5, 2.3, 6,7};

Lenguaje C++ Arreglos Multidimencionales DECLARACIÓN DE UN ARREGLO MULTIDIMENCIONALDECLARACIÓN DE UN ARREGLO MULTIDIMENCIONAL Nombre_variable[Número de elementos][Numero de elementos]; Nombre_variable[Número de elementos][Numero de elementos]; INICIALIZACION DE UN ARREGLO MULTIDIMENCIONALINICIALIZACION DE UN ARREGLO MULTIDIMENCIONAL Nombre_variable = { {valor1, valor2, …, valorN}, {valor1, valor2, …, valorN} }; Nombre_variable = { {valor1, valor2, …, valorN}, {valor1, valor2, …, valorN} }; EJEMPLO:EJEMPLO: char arreglo1[10][10];char arreglo1[10][10]; int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};

Lenguaje C++ Apuntadores y vectores Punteros 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 asociadaspunteros - 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)ESTRUCTURAS (Registros) struct date_s { int day, month, year; int day, month, year; } aDate; } 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; EnumeracionesEnumeraciones ClasesClases

Lenguaje C++ Instrucciones de control de flujo EJEMPLOEJEMPLO for(int i=0; i<5; i++){for(int i=0; i<5; i++){ cout << “Hello world”<<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); 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; a = b + c; b = b + c * a; c = a * b + complex(1,2); }

Lenguaje C++ Funciones Regulares (similares a una función C).Regulares (similares a una función C). Miembros (asociadas a una clase).Miembros (asociadas a una clase). Nombre, lista de argumentos, tipo de retorno y cuerpo.Nombre, lista de argumentos, tipo de retorno y cuerpo. int miFuncion(int a); //firma o declaraciónint miFuncion(int a); //firma o declaración int miFuncion(int a){ //definiciónint miFuncion(int a){ //definición cout<<a; cout<<a; }

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

Lenguaje C++ Funciones Paso de argumentosPaso de argumentos –Por valor - seguridad copiado en el almacenamiento local de la funcióncopiado en el almacenamiento local de la función la función accede a la copiala función accede a la copia –Por referencia - velocidad - retornos múltiples se copia la dirección del objeto que se esta pasandose copia la dirección del objeto que se esta pasando la función accede al objetola función accede al objeto –Por referencia constante - seguridad + velocidad Vectores: paso por referenciaVectores: paso por referencia

Lenguaje C++ Funciones Paso de argumentosPaso de argumentos –Por valor char a = ‘a’; miFuncion(a); –Por referencia char a = ‘a’; miFuncion(&a); Vectores: paso por referenciaVectores: paso por referencia char a[] = {‘a’,’b’} miFuncion(a);

Lenguaje C++ Funciones Sobrecarga de nombres.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.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.Restricción del conjunto de operaciones que se pueden realizar sobre un tipo a las definidas para el mismo. CLASECLASE –nombre –datos miembros –funciones miembro –control de acceso

Lenguaje C++ Soporte para abstracción de datos Inicialización y destrucción.Inicialización y destrucción. Inicialización y asignación.Inicialización y asignación. Patrones.Patrones. Conversiones de tipoConversiones de tipo complex a = complex(1); Múltiples implementacionesMúltiples implementaciones

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

Lenguaje C++ Lenguaje C++ Los objetos se crean al llegar a su definición.Los objetos se crean al llegar a su definición. Los objetos se destruyen cuando salen del bloque.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 globales se crean una sola vez y se destruyen al terminar el programa. Los objetos static son similares a los globales.Los objetos static son similares a los globales.

Lenguaje C++ Almacenamiento de objetosAlmacenamiento 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 ConstructoresConstructores –Funciones con el mismo nombre de la clase pero que no retornan nada. –Constructor de copia –Constructor por defecto –Constructores como conversores de tipo DestructoresDestructores –virtuales

Lenguaje C++ clases CONSTRUCTORESCONSTRUCTORES class Point {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 DESTRUCTORESDESTRUCTORES class Point {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 FriendFriend 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: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 {class Complex {... public: public:... friend Complex operator +( const Complex &, const Complex & );friend Complex operator +( const Complex &, const Complex & ); };}; Complex operator +(const Complex &op1, const Complex &op2) {Complex operator +(const Complex &op1, const Complex &op2) { double real = op1._real + op2._real, imag = op1._imag + op2._imag; return(Complex(real, imag));double real = op1._real + op2._real, imag = op1._imag + op2._imag; return(Complex(real, imag)); } }

Lenguaje C++ clases Construcción de objetosConstrucción de objetos –automáticos variables locales: se ejecuta su constructor cada vez que el programa pasa por la declaraciónvariables 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óninicialización y asignación –en memoria disponible new, deletenew, delete –int* ip = new int(7); –delete ip; –int* iap = new int[10]; –delete [] iap;

Lenguaje C++ clases y herencia class Point3D : public Point {class Point3D : public Point { int _z; int _z; public: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 {class DrawableString : public Point, public DrawableObject {... public:... public: –DrawableString(...){... } –~DrawableString() {... }... };};