SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances (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
 

En vedette

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
 

En vedette (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
 

Similaire à 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++
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
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
 

Plus de 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
 

Plus de 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
 

Dernier

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 

Dernier (20)

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 

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