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++ 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++ 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++ 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() {... }... };};
Guía de referencia rápida de lenguaje C Operaciones de entrada/salidaOperaciones de entrada/salida Entrada (leer valores por vía teclado)Entrada (leer valores por vía teclado) scanf(“%cf_tipo1%cf_tipo2…”, &var_tipo1, &var_tipo2,…); Salida Mostrar en pantalla una cadena con formato y/o una lista de variablesSalida Mostrar en pantalla una cadena con formato y/o una lista de variables printf(“texto %cf_tipo1 %cf_tipo2…”,var_tipo1, var_tipo2,…); *cf = código de formato
Guía de referencia rápida de lenguaje C Estructuras de controlEstructuras de control Un algoritmo simple presenta flujo secuencial, sin embargo, no todos los algoritmos son así ya que es necesario realizar procedimientos más complejos que involucren ya sea elegir una o varias alternativas o realizar el mismo procedimiento varias vecesUn algoritmo simple presenta flujo secuencial, sin embargo, no todos los algoritmos son así ya que es necesario realizar procedimientos más complejos que involucren ya sea elegir una o varias alternativas o realizar el mismo procedimiento varias veces El control de flujo de un lenguaje especifica el orden en el que se ejecuta cada sentencia o instrucciónEl control de flujo de un lenguaje especifica el orden en el que se ejecuta cada sentencia o instrucción Tenemos entonces tres tipos principales de estructuras de control: Estructura secuencial, estructuras de decisiónes o selecciones y los ciclos o estructuras de repeticiónTenemos entonces tres tipos principales de estructuras de control: Estructura secuencial, estructuras de decisiónes o selecciones y los ciclos o estructuras de repetición
Guía de referencia rápida de lenguaje C Estructuras de controlEstructuras de control Estructura secuencialEstructura secuencial
Guía de referencia rápida de lenguaje C Estructuras de controlEstructuras de control DecisiónSimpleDobleAnidadaMúltiple Expresión condicional
Guía de referencia rápida de lenguaje C Decisiones simplesDecisiones simples
Guía de referencia rápida de lenguaje C Decisiones doblesDecisiones dobles
Guía de referencia rápida de lenguaje C if (condición1) { /*bloque1*/} else if(condición2) { /*bloque2*/} else if(condición3) {…} else if(condiciónN) {/*bloqueN*/}else{/*bloqueN+1*/} Decisiones anidadas
Guía de referencia rápida de lenguaje C DecisiónDecisiónmúltiple
Guía de referencia rápida de lenguaje C Expresión condicionalExpresión condicional Se usa para simplificar una decisión doble que afecta a una única variable.Se usa para simplificar una decisión doble que afecta a una única variable. var = condición ? expresión1: expresión2; Por ejemplo: Se puede abreviar como if(condición) a = 5.7; else a = sqrt(10.0); a = condición ? 5.7 : sqrt(10.0);
Guía de referencia rápida de lenguaje C Estructuras de controlEstructuras de control Estructuras de repetición (ciclos, loops, lazos o bucles)Estructuras de repetición (ciclos, loops, lazos o bucles) Ciclossimpleswhiledo-whileforanidados
Guía de referencia rápida de lenguaje C Estructuras de control Ciclo while
Guía de referencia rápida de lenguaje C Estructuras de control Ciclo do-while
Guía de referencia rápida de lenguaje C Estructuras de control
Guía de referencia rápida de lenguaje C ArreglosArreglos Un arreglo es un conjunto ordenado de variables del mismo tipo que se encuentran reunidas bajo un mismo nombreUn arreglo es un conjunto ordenado de variables del mismo tipo que se encuentran reunidas bajo un mismo nombre La forma de declarar un arreglo en C esLa forma de declarar un arreglo en C es tipo nombredelarreglo[tamaño]; La forma de acceder a cada elemento del arreglo es por medio de un índice, p. ej.La forma de acceder a cada elemento del arreglo es por medio de un índice, p. ej. arrentero[4] = 18;
Cadenas en C En C las cadenas no se definen en forma explícita, se definen como arreglos de caracteres:En C las cadenas no se definen en forma explícita, se definen como arreglos de caracteres: char nombre_cadena[tamaño]char nombre_cadena[tamaño] char cadena[7];char cadena[7]; scanf(“%s”,cadena); /*suponiendo que se tecleo hola*/scanf(“%s”,cadena); /*suponiendo que se tecleo hola*/ ‘h’‘h’‘o’‘o’‘l’‘l’‘a’‘a’‘\0’
Cadenas en C Se considera que toda cadena lleva al final de ella un “fin de cadena” o “terminador nulo”, el cuál permite delimitar a la cadena.Se considera que toda cadena lleva al final de ella un “fin de cadena” o “terminador nulo”, el cuál permite delimitar a la cadena. Se debe considerar el fin de cadena cuando se trabaje con ellas, así al definir el tamaño de la cadena siempre se debe de tener en cuenta su terminador nulo y reservar siempre un espacio adicional para el tamaño que se quiera asignar a la cadena.Se debe considerar el fin de cadena cuando se trabaje con ellas, así al definir el tamaño de la cadena siempre se debe de tener en cuenta su terminador nulo y reservar siempre un espacio adicional para el tamaño que se quiera asignar a la cadena.
Funciones que manipulan cadenas NombreDescripción getsLee cadenas con espacios en blanco putsMuestra una cadena en pantalla strcpyCopia el contenido de una cadena en otra strcatConcatena 2 cadenas strcmpCompara 2 cadenas strlenLongitud de una cadena Están definidas en la biblioteca string.h
Apuntadores en C