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

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Clase1 c
Clase1 cClase1 c
Clase1 c
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silva
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
Teoria punteros
Teoria punterosTeoria punteros
Teoria punteros
 
Clase 5
Clase 5Clase 5
Clase 5
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Introducción a C SHARP
Introducción a C SHARPIntroducción a C SHARP
Introducción a C SHARP
 
Funcion scanf
Funcion scanfFuncion scanf
Funcion scanf
 
Tipos de datos en C
Tipos de datos en CTipos de datos en C
Tipos de datos en C
 
Operaciones Basicas C++
Operaciones Basicas C++Operaciones Basicas C++
Operaciones Basicas C++
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.com
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresiones
 

Andere mochten auch

PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)Miriam Ruiz
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Manual c++
Manual c++Manual c++
Manual c++slent
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++cemayoral
 
Ejercicio legunaje c++ 1
Ejercicio legunaje c++ 1Ejercicio legunaje c++ 1
Ejercicio legunaje c++ 1rmjp
 
Estructuras algoritnicas de control
Estructuras algoritnicas de controlEstructuras algoritnicas de control
Estructuras algoritnicas de controlMiguel Martinez
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ Eli Diaz
 
Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Alejandro Caro
 
Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Diosmary Marrón Dellán
 
Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasUVM
 
Arrays bidimensionales
Arrays bidimensionalesArrays bidimensionales
Arrays bidimensionalesasvargas
 
Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan BastidasJuan Bastidas
 

Andere mochten auch (20)

PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Manual del dev c++
Manual del dev c++Manual del dev c++
Manual del dev c++
 
Manual c++
Manual c++Manual c++
Manual c++
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Ejercicio legunaje c++ 1
Ejercicio legunaje c++ 1Ejercicio legunaje c++ 1
Ejercicio legunaje c++ 1
 
Estructuras algoritnicas de control
Estructuras algoritnicas de controlEstructuras algoritnicas de control
Estructuras algoritnicas de control
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++
 
Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_Estructuras de datos_dinamicas_definicion_e_implementacion_
Estructuras de datos_dinamicas_definicion_e_implementacion_
 
Exp compi(2)
Exp compi(2)Exp compi(2)
Exp compi(2)
 
Memoria memoria dinamica
 Memoria memoria dinamica Memoria memoria dinamica
Memoria memoria dinamica
 
Trabajo de estructura de datos
Trabajo de estructura de datosTrabajo de estructura de datos
Trabajo de estructura de datos
 
Administración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicasAdministración de memoria continuación -matrices estáticas y dinámicas
Administración de memoria continuación -matrices estáticas y dinámicas
 
Arrays bidimensionales
Arrays bidimensionalesArrays bidimensionales
Arrays bidimensionales
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan Bastidas
 

Ähnlich wie Programación en c++ (20)

Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
Punteros2
Punteros2Punteros2
Punteros2
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
 
Sesion 4
Sesion 4Sesion 4
Sesion 4
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Lenguajecviviana
LenguajecvivianaLenguajecviviana
Lenguajecviviana
 

Mehr von andermijan

Guía rápida de MySQL Server 5.5 y Workbench 5.2
Guía rápida de MySQL Server 5.5 y Workbench 5.2Guía rápida de MySQL Server 5.5 y Workbench 5.2
Guía rápida de MySQL Server 5.5 y Workbench 5.2andermijan
 
El escultismo en Mikel Deuna
El escultismo en Mikel DeunaEl escultismo en Mikel Deuna
El escultismo en Mikel Deunaandermijan
 
Introducción al Software Libre y Ubuntu
Introducción al Software Libre y UbuntuIntroducción al Software Libre y Ubuntu
Introducción al Software Libre y Ubuntuandermijan
 
Bases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia AmbientalBases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia Ambientalandermijan
 
Resultados de la encuesta sobre Identidad digital y jóvenes
Resultados de la encuesta sobre Identidad digital y jóvenesResultados de la encuesta sobre Identidad digital y jóvenes
Resultados de la encuesta sobre Identidad digital y jóvenesandermijan
 
Identidad Digital
Identidad DigitalIdentidad Digital
Identidad Digitalandermijan
 

Mehr von andermijan (6)

Guía rápida de MySQL Server 5.5 y Workbench 5.2
Guía rápida de MySQL Server 5.5 y Workbench 5.2Guía rápida de MySQL Server 5.5 y Workbench 5.2
Guía rápida de MySQL Server 5.5 y Workbench 5.2
 
El escultismo en Mikel Deuna
El escultismo en Mikel DeunaEl escultismo en Mikel Deuna
El escultismo en Mikel Deuna
 
Introducción al Software Libre y Ubuntu
Introducción al Software Libre y UbuntuIntroducción al Software Libre y Ubuntu
Introducción al Software Libre y Ubuntu
 
Bases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia AmbientalBases de Datos Activas e Inteligencia Ambiental
Bases de Datos Activas e Inteligencia Ambiental
 
Resultados de la encuesta sobre Identidad digital y jóvenes
Resultados de la encuesta sobre Identidad digital y jóvenesResultados de la encuesta sobre Identidad digital y jóvenes
Resultados de la encuesta sobre Identidad digital y jóvenes
 
Identidad Digital
Identidad DigitalIdentidad Digital
Identidad Digital
 

Kürzlich hochgeladen

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Kürzlich hochgeladen (15)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Programación en c++

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