Programación en c++<br />Ander Mijangos<br />Universidad de Deusto<br />Octubre de 2010<br />
Aspectos generales de c++<br />Es una ampliación de c para dar soporte a la POO<br />El tercer lenguaje de programación má...
¡Hola Mundo!<br />#include <iostream><br />usingnamespacestd;<br />voidmain()<br />{<br />cout << "¡Hola mundo!" << endl;<...
Tipos de datos básicos<br />Enteros<br />(signed/unsigned) (long/short) int<br />Char (carácter y mucho más)<br />(unsigne...
Más tipos de datos (I)<br />Definidos por el programador<br />struct<br />class<br />enum<br />union<br />Arrays y puntero...
Más tipos de datos (II)<br />sizeof<br />sizeof(TIPO);<br />typedef<br />typedef TIPO_ANTIGUO TIPO_NUEVO;<br />Constantes<...
Entrada y salida por consola<br />Hay que incluir la STL y especificar el namespace<br />#include <iostream><br />usingnam...
String<br />Es una clase definida en la STL<br />#include <string><br />Declaración e inicialización:<br />stringnombreUsu...
Preprocesador<br />Include<br />#include <FICHERO> <br />Define<br />#define SIMBOLO [VALOR] <br />Ifdef<br />#if(n)def SI...
Comentarios<br />De bloque:<br />/* … */<br />De línea:<br />// …<br />
Typecast<br />Convierte un tipo de datos en otro<br />int i = 1000;<br />char c = (char)i;<br />
Operadores (I)<br />Aritméticos<br />Binarios<br />+<br />-<br />*<br />/<br />% (módulo)<br />Unarios<br />-<br />++<br /...
Operadores (II)<br />Operadores relacionales<br />==<br />!=<br /><<br />><br /><=<br />>=<br />Operadores booleanos<br />...
Precedencia de operadores<br />(De arriba a bajo y de izquierda a derecha)<br />
Control (I)<br />if<br />if (EXPRESION)<br />{<br />SENTENCIA(S);<br />}<br />else<br />{<br />SENTENCIA(S);<br />}<br />s...
Control (II)<br />Operador condicional ?<br />EXPRESION ? EXPRESION_TRUE : EXPRESION_FALSE<br />while<br />while(EXPRESION...
Funciones<br />Formato<br />TIPO_RETORNO IDENTIFICADOR( [PARAMETRO(S)] )<br />{<br />[return VALOR;]<br />}<br />Se puede ...
Punteros (I)<br />Es un tipo de datos<br />Generalmente tiene 32 bits<br />Interpretación: representa una dirección de mem...
Punteros (II)<br />El SO reserva memoria:<br />Al declarar una variable (memoria estática):<br />int i;<br />A petición de...
Arrays<br />Conjuntos de datos consecutivos<br />Declaración (obligatorio que sea un valor constante, si no, ver memoria d...
Arrays y punteros<br />El identificador de un array es un puntero constante que apunta a la dirección de memoria del prime...
Cadenas de caracteres<br />Son arrays de tipo char<br />constchar* cadena = “Hola mundo”;<br />En <string.h> hay muchas fu...
Memoria dinámica<br />Reservar y liberar memoria:<br />int* punteroEntero = new int();<br />deletepunteroEntero;<br />En e...
Estructuras<br />Especificación:<br />struct TIPO<br />{<br />TIPO_0 dato0;<br />TIPO_1 dato1;<br />…<br />TIPO_NdatoN;<br...
POO: Clases<br />Declaración:<br />class Fecha<br />{<br />unsignedintanyo;<br />unsignedint mes;<br />unsignedintdia;<br ...
POO: Encapsulación<br />Programación Orientada a Objetos<br />Consta de:<br />Clases<br />Encapsulación<br />Encapsulación...
POO: Constructores y destructores<br />Constructor: método especial que se ejecuta al instanciar un objeto.<br />No devuel...
POO: Sobrecarga<br />Dos métodos pueden llamarse igual si cambian:<br />El número de parámetros<br />El tipo de los paráme...
Constructor de copia y operador de asignación<br />Constructor de copia<br />Se llama en cuatro casos:<br />Al crear un ob...
POO: Operador ::<br />Generalmente, la clase se declara en un fichero .h y los métodos se implementan en un .cpp.<br />Ope...
POO: Puntero this<br />En los métodos no se pasa el objeto como parámetro<br />El compilador añade automáticamente:<br />b...
POO: Miembros estáticos<br />Atributo estático: cada objeto no tiene su propio valor para el atributo sino que es comparti...
Punteros a funciones<br />Declaración del puntero:<br />int (*punteroAIntFuncionIntInt) (int, int);<br />Función que se va...
Referencias<br />Permiten modificar una variable en una función sin tratar con punteros<br />CON PUNTEROS:<br />voidfuncio...
Esta presentación está basada en los apuntes tomados en la asignatura de Laboratorio de Informática I impartida por Jesús ...
Upcoming SlideShare
Loading in …5
×

Programación en c++

2,080 views

Published on

Introducción a la programación en c++.

Contenido:
-Tipos de datos
-Entrada y salida por consola
-String
-Preprocesador
-Operadores y sentencias de control
-Punteros
-Arrays
-Cadenas de caracteres
-Memoria dinámica
-Introducción a la POO en c++
-Referencias

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,080
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
152
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Programación en c++

  1. 1. Programación en c++<br />Ander Mijangos<br />Universidad de Deusto<br />Octubre de 2010<br />
  2. 2. Aspectos generales de c++<br />Es una ampliación de c para dar soporte a la POO<br />El tercer lenguaje de programación más usado (octubre de 2010)1<br />Se usa para SO, SGBD, sistemas de Tiempo Real…<br />Case sensitive<br />Las variables sólo existen en su ámbito {…}<br />Los programas se organizan en dos ficheros:<br />.h: archivos de cabecera<br />.cpp: archivos de código fuente (que incluyen el .h)<br />1http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html<br />
  3. 3. ¡Hola Mundo!<br />#include <iostream><br />usingnamespacestd;<br />voidmain()<br />{<br />cout << "¡Hola mundo!" << endl;<br />}<br />
  4. 4. Tipos de datos básicos<br />Enteros<br />(signed/unsigned) (long/short) int<br />Char (carácter y mucho más)<br />(unsigned) char //1 byte<br />Coma flotante<br />float<br />double //64 bits<br />Booleano<br />bool<br />
  5. 5. Más tipos de datos (I)<br />Definidos por el programador<br />struct<br />class<br />enum<br />union<br />Arrays y punteros<br />[]<br />*<br />
  6. 6. Más tipos de datos (II)<br />sizeof<br />sizeof(TIPO);<br />typedef<br />typedef TIPO_ANTIGUO TIPO_NUEVO;<br />Constantes<br />1, true, 0x01 (hexadecimal), 0.1, ‘a’…<br />Declaración e inicialización<br />unsignedint contador;<br />int a = 5, b = 5, c;<br />
  7. 7. Entrada y salida por consola<br />Hay que incluir la STL y especificar el namespace<br />#include <iostream><br />usingnamespacestd;<br />Sentencias:<br />cout << "Introduzca el precio: ";<br />cin >> precio;<br />
  8. 8. String<br />Es una clase definida en la STL<br />#include <string><br />Declaración e inicialización:<br />stringnombreUsuario = “Ander”;<br />Realmente se trata de una cadena de caracteres que finaliza en ‘’<br />Algunas funciones miembro:<br />size();<br />
  9. 9. Preprocesador<br />Include<br />#include <FICHERO> <br />Define<br />#define SIMBOLO [VALOR] <br />Ifdef<br />#if(n)def SIMBOLO<br />… <br />#else<br />…<br />#endif<br />Los archivos de cabecera se suelen asegurar ante inclusiones múltiples:<br />#ifndef NOMBRE_DE_FICHERO_H<br />#define NOMBRE_DE_FICHERO_H<br />…<br />#endif<br />
  10. 10. Comentarios<br />De bloque:<br />/* … */<br />De línea:<br />// …<br />
  11. 11. Typecast<br />Convierte un tipo de datos en otro<br />int i = 1000;<br />char c = (char)i;<br />
  12. 12. Operadores (I)<br />Aritméticos<br />Binarios<br />+<br />-<br />*<br />/<br />% (módulo)<br />Unarios<br />-<br />++<br />--<br />Aritméticos y de asignación<br />+=<br />-=<br />*=<br />/=<br />%=<br />Nota: con pre, primero se ejecuta el operador; con post, primero se evalúa la expresión y al final se ejecuta el operador.<br />
  13. 13. Operadores (II)<br />Operadores relacionales<br />==<br />!=<br /><<br />><br /><=<br />>=<br />Operadores booleanos<br />&& (AND)<br />|| (OR)<br />! (NOT)<br />Nota: valor != 0 -> true<br />valor == 0 -> false<br />
  14. 14. Precedencia de operadores<br />(De arriba a bajo y de izquierda a derecha)<br />
  15. 15. Control (I)<br />if<br />if (EXPRESION)<br />{<br />SENTENCIA(S);<br />}<br />else<br />{<br />SENTENCIA(S);<br />}<br />switch<br />switch (EXPRESION)<br />{<br />case VALOR1:<br />SENTENCIAS;<br />break;<br />case VALOR2:<br />SENTENCIAS;<br />break;<br />case VALOR3:<br />case VALOR4:<br />SENTENCIAS;<br />break;<br />default:<br />SENTENCIAS;<br />}<br />
  16. 16. Control (II)<br />Operador condicional ?<br />EXPRESION ? EXPRESION_TRUE : EXPRESION_FALSE<br />while<br />while(EXPRESION)<br />{<br />SENTENCIA(S);<br />}<br />do while<br />do<br />{<br />SENTENCIA(S);<br />}<br />while(EXPRESION);<br />for<br />for(EXPRESION(ES)_INICIAL(ES); EXPRESION; EXPRESION(ES)_ITERATIVA(S))<br />{<br />SENTENCIA(S);<br />}<br />Break: acaba la sentencia condicional o repetitiva actual<br />Continue: salta hasta la terminación de la iteración actual<br />
  17. 17. Funciones<br />Formato<br />TIPO_RETORNO IDENTIFICADOR( [PARAMETRO(S)] )<br />{<br />[return VALOR;]<br />}<br />Se puede declarar la función antes de implementarla<br />Al llegar a un return la función finaliza<br />
  18. 18. Punteros (I)<br />Es un tipo de datos<br />Generalmente tiene 32 bits<br />Interpretación: representa una dirección de memoria<br />Formato:<br />int*punteroEntero;<br />Indirección (acceso al contenido referenciado):<br />*punteroEntero= 1000;<br />Nunca se asigna directamente un valor a un puntero<br />Obtener la dirección de una variable:<br />&miVariable<br />
  19. 19. Punteros (II)<br />El SO reserva memoria:<br />Al declarar una variable (memoria estática):<br />int i;<br />A petición del programador (memoria dinámica)<br />(explicado posteriormente)<br />Utilidad de los punteros:<br />Modificar una variable en una función<br />
  20. 20. Arrays<br />Conjuntos de datos consecutivos<br />Declaración (obligatorio que sea un valor constante, si no, ver memoria dinámica):<br />intarrayEnteros[20];<br />Inicialización:<br />intarrayEnteros[2] = {5, 9};<br />intarrayEnteros[] = {5, 9};<br />Acceder a los datos del array:<br />arrayEnteros[0] = 0;<br />arrayEnteros[1] = 0;<br />Conocer el tamaño de un array:<br />sizeof(arrayEnteros) / sizeof(int);<br />Arrays multidimensionales:<br />intarrayEntero2D[2][3] = {{1, 2, 3}, {1, 2, 3}};<br />Nota: un array de N elementos tiene los elementos de 0 a N-1<br />
  21. 21. Arrays y punteros<br />El identificador de un array es un puntero constante que apunta a la dirección de memoria del primer elemento del array.<br />Un puntero puede usarse con [], sumando sobre la dirección inicial bytes según el tipo del puntero.<br />Pasar un array como parámetro:<br />funcion (array, 2);<br />void funcion1(intarray[], inttamanio) {…}<br />void funcion2(int* puntero, inttamanio) {…}<br />Sizeof funciona con el array entero, con un puntero devuelve el tamaño del puntero (32 bits)<br />
  22. 22. Cadenas de caracteres<br />Son arrays de tipo char<br />constchar* cadena = “Hola mundo”;<br />En <string.h> hay muchas funciones<br />El tipo de datos string encapsula todo esto<br />
  23. 23. Memoria dinámica<br />Reservar y liberar memoria:<br />int* punteroEntero = new int();<br />deletepunteroEntero;<br />En el caso de arrays:<br />int* puntero = new int[10];<br />delete [] puntero;<br />Un new obliga a usar un delete en algún momento.<br />Utilidad: evitar perder la información cuando la variable muere<br />Función dinámica: función que devuelve una dirección de memoria<br />
  24. 24. Estructuras<br />Especificación:<br />struct TIPO<br />{<br />TIPO_0 dato0;<br />TIPO_1 dato1;<br />…<br />TIPO_NdatoN;<br />};<br />Uso (.):<br />ESTRUCTURA e;<br />e.TIPO_0;<br />Uso con un puntero a la estructura (->):<br />ESTRUCTURA* pE;<br />pE->TIPO_0;<br />
  25. 25. POO: Clases<br />Declaración:<br />class Fecha<br />{<br />unsignedintanyo;<br />unsignedint mes;<br />unsignedintdia;<br />};<br />Una clase tiene:<br />Datos miembro = atributos<br />Funciones miembro = métodos<br />Clases y objetos<br />Clase: declaración del tipo de datos<br />Objeto: variable de dicho tipo de datos (instanciación)<br />
  26. 26. POO: Encapsulación<br />Programación Orientada a Objetos<br />Consta de:<br />Clases<br />Encapsulación<br />Encapsulación: determina si se puede acceder a los atributos y métodos desde fuera de la clase (programa principal).<br />public: son accesibles desde fuera<br />private: sólo son accesibles desde la clase (o algún método público que lo manipule -> más control)<br />Generalmente: atributos privados y métodos públicos<br />Se usan getters y setters para manipular los atributos<br />
  27. 27. POO: Constructores y destructores<br />Constructor: método especial que se ejecuta al instanciar un objeto.<br />No devuelve nada<br />Se llama igual que la clase, con () por ser método<br />Se usa para inicializar los atributos<br />Hay un constructor por defecto<br />Destructor: método especial que se ejecuta al eliminar un objeto de memoria.<br />No devuelve nada<br />Se llama igual que la clase, precedido de ~ y con () por ser método<br />Se usa para liberar memoria dinámica, cerrar ficheros…<br />Hay un destructor por defecto<br />Pueden encapsularse como privados, pero en general serán públicos<br />
  28. 28. POO: Sobrecarga<br />Dos métodos pueden llamarse igual si cambian:<br />El número de parámetros<br />El tipo de los parámetros<br />Se puede sobrecargar el constructor<br />No tiene sentido sobrecargar el destructor<br />Un constructor con parámetros hace que el constructor por defecto se pierda (obliga a pasar parámetros en la instanciación)<br />
  29. 29. Constructor de copia y operador de asignación<br />Constructor de copia<br />Se llama en cuatro casos:<br />Al crear un objeto como copia de otro<br />ArrayInt ai2 = ai;<br />ArrayInt ai2(ai1);<br />Al llamar a una función pasándole por valor un objeto<br />Al hacer return de un objeto<br />Cadena (const Cadena& c)<br />Operador de asignación<br />Se llama al hacer una asignación<br />Cadena& operator= (const cadena& c) return *this<br />
  30. 30. POO: Operador ::<br />Generalmente, la clase se declara en un fichero .h y los métodos se implementan en un .cpp.<br />Operador de resolución de ámbito:<br />Fecha::Fecha()<br />Llamada a un método:<br />objeto.metodo(parámetros);<br />
  31. 31. POO: Puntero this<br />En los métodos no se pasa el objeto como parámetro<br />El compilador añade automáticamente:<br />boolesBisiesto(Fecha* constthis)<br />‘This’ es un puntero al objeto desde el que se llama a la función.<br />Su uso no es obligatorio salvo:<br />Para distinguir el atributo de otro parámetro llamado igual (this->atributo)<br />Para referenciar al objeto en sí<br />Para que el objeto referenciado también sea constante, al final de la cabecera del método se escribe ‘const’<br />
  32. 32. POO: Miembros estáticos<br />Atributo estático: cada objeto no tiene su propio valor para el atributo sino que es compartido.<br />Para acceder desde el programa principal:<br />Fecha::Meses<br />Se inicializa en el .cpp donde se implementan los métodos de la clase.<br />Método estático: no recibe el objeto por parámetro (no tiene this).<br />Para acceder desde el programa principal:<br />Fecha::esBisiesto(2006)<br />
  33. 33. Punteros a funciones<br />Declaración del puntero:<br />int (*punteroAIntFuncionIntInt) (int, int);<br />Función que se va a referenciar:<br />intfuncion(int, int)<br />{<br />}<br />Asignación de la dirección:<br />punteroAIntFuncionIntInt = &funcion; //& opcional<br />Llamada a la función desde el puntero:<br />funcion(1,3)<br />punteroAIntFuncionIntInt(1,3); // Hacen lo mismo<br />
  34. 34. Referencias<br />Permiten modificar una variable en una función sin tratar con punteros<br />CON PUNTEROS:<br />voidfuncion(int* pi)<br />{<br />*pi= 2;<br />}<br />voidmain()<br />{<br />int i = 1;<br />funcion(&i);<br />}<br />CON REFERENCIAS:<br />voidfuncion(int& ri)<br />{<br />ri = 2;<br />}<br />voidmain()<br />{<br />int i = 1;<br />funcion(i);<br />}<br />NORMAL (el valor no<br />se modifica):<br />voidfuncion(int i)<br />{<br />i= 2;<br />}<br />voidmain()<br />{<br />int i = 1;<br />funcion(i);<br />}<br />
  35. 35. Esta presentación está basada en los apuntes tomados en la asignatura de Laboratorio de Informática I impartida por Jesús Sanz e IkerJamardo, en la facultad de Ingeniería de la Universidad de Deusto.<br />Esta presentación está publicada bajo la licencia CreativeCommons Reconocimiento – No Comercial 3.0 España<br />http://creativecommons.org/licenses/by-nc/3.0/es/<br />AnderMijangos<br />Universidad de Deusto<br />andermijan (arroba) gmail (punto) com<br />http://www.slideshare.net/andermijan<br />

×