Sobrecarga de Operadores y E/S en C++ Antonio LaTorre de la Fuente

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Sobrecarga de Operadores y E/S en C++ Antonio LaTorre de la Fuente"

Transcripción

1 Sobrecarga de Operadores y E/S en C++ Antonio LaTorre de la Fuente

2 Índice Sobrecarga de Funciones Sobrecarga de Operadores Entrada/Salida sobre streams básicos Entrada/Salida sobre streams de fichero Entrada/Salida sobre streams de cadena

3 Sobrecarga de Funciones Nuevo con respecto a C Funciones con el mismo nombre pero distinto prototipo: número y/o tipo de argumentos Útil si se quiere poder realizar una misma operación sobre distintos tipos de datos

4 Sobrecarga de Funciones void print (double number) {cout << number << endl;} void print (int number) {cout << number << endl;} void print (int number, string s = hola ) { } cout << number <<, << s << endl;

5 Ambigüedad Qué pasa si incluimos en nuestro código? unsigned num = 3; print (num); El compilador no sabe a qué función llamar: func_over.cc:18: error: call of overloaded print(unsigned int&) is ambiguous func_over.cc:6: note: candidates are: void print(int) func_over.cc:7: note: func_over.cc:8: note: void print(int, std::string) void print(double)

6 Ambigüedad Se soluciona usando static_cast unsigned num = 3; print (static_cast<double>(num)); Qué pasaría si hiciéramos? int num = 3; print (num);

7 Name Mangling Estrategia que usa el compilador para poder diferenciar dos funciones con el mismo nombre int f (void) {return 1;} int f (int) {return 0;} void g (void) {int i = f (), j = f (0);} Esto se traduciría en: int f_v (void) {return 1;} int f_i (int) {return 0;} void g_v (void) {int i = f_v (), j = f_i (0);}

8 Índice Sobrecarga de Funciones Sobrecarga de Operadores Entrada/Salida sobre streams básicos Entrada/Salida sobre streams de fichero Entrada/Salida sobre streams de cadena

9 Operadores en C++ Lista de operadores válidos en C * / % ^ & ~!, = < > <= >= << >> ==!= && += -= *= /= %= ^= &= = <<= >>= [] () -> ->* new delete Se declaran de la siguiente forma: tipo operator operador([argumentos])

10 Operadores en C++ Hay algunos operadores especiales que no pueden ser sobrecargados :: (resolución de ámbito). (selección de un miembro).* (selección de un miembro referenciado por un puntero)?: (operador condicional) sizeof (tamaño de) typeid (identificación del tipo)

11 Precedencia de Operadores Los operadores en C++ tienen distinta precedencia, y a veces no es obvio Lo mejor es usar () en casa de no estar seguro Tabla de precedencias: Inglés: Español:

12 Sobrecarga de operadores Podemos sobrecargar tanto operadores unarios como binarios tipo_ret operator op_unario (tipo1 arg1); tipo_ret operator op_binario (tipo1 arg1, tipo2 arg2); En este caso, ambos argumentos se muestran de manera explícita

13 Sobrecarga de operadores Ambas notaciones son equivalentes C operator- (C n) { } C operator- (C n, C m) { } int main (void) { } C a, b, c, d; c = -b; d = b a; int main (void) { } C a, b, c, d; c = operator- (b); d = operator- (b, a);

14 Sobrecarga de operadores Si los operadores son métodos de una clase, uno de los argumentos es implícito (aquél que invoca al operador) class C { } public: C operator- (); C operator- (C);

15 Sobrecarga de operadores Estas dos notaciones son equivalentes int main (void) { C a, b, c, d; c = -b; d = b a; } int main (void) { C a, b, c, d; c = b.operator-(); d = b.operator-(a); }

16 Sobrecarga de operadores Ejemplo: Números Complejos class Complejo { } public: Complejo (double r, double i) : real(r), imag(i) {} private: double real; double imag;

17 Operadores Aritméticos Suma de números complejos: Complejo Complejo::operator+ (const Complejo& z2) const { } Complejo res (0, 0); res.real = this->real + z2.real; res.img = this->img + z2.img; return res;

18 Operadores Relacionales Comparación de números complejos: bool Complejo::operator== (const Complejo& z2) const { } return this->real == z2.real && this->imag == z2.imag;

19 Operadores de auto-incremento Son operadores unarios Permiten pre-incrementar y post-incrementar el valor de una variable Pre-incremento: C C::operator++() Post-incremento: C C::operator++(int x) Complejo Complejo::operator++() { } real += 1; return *this;

20 Funciones Amigas Son funciones ajenas a una clase que pueden acceder a los elementos privados de esa clase Ejemplo: Tenemos dos clases: Vector y Matriz Queremos definir el producto vectorial entre ambas clases El contenido de los objetos es privado

21 Funciones Amigas class Vector { friend operator* (const Matriz& matriz, const Vector& vector); } public: private: int size; int* data; class Matriz { friend operator* (const Matriz& matriz, const Vector& vector); } public: private: int rows, columns; int** data; Vector operator* (const Matriz& matriz, const Vector& vector) { }

22 Operadores de asignación Se sobrecargan para evitar la copia binaria de objetos class Vector { } public: Vector& operator= (const Vector& vector) { size = vector.size; data = new int[vector.size]; for (unsigned i = 0; i < size; i++) data[i] = vector.data[i]; return *this; } private: int size; int* data; class Vector { } public: Vector& operator= (const Vector& vector) { size = vector.size; data = vector.data; return *this; } private: int size; int* data;

23 Operadores de inserción y extracción Permiten escribir / leer en la salida / entrada estándar Hay que sobrecargar los operadores: ostream& operator<< (ostream& os, const T& arg) istream& operator>> (istream& is, T& arg) Podemos hacer que estos métodos sean amigos de nuestra clase o implementar un método público que imprima los datos

24 Operadores de inserción y extracción class Complejo { } public: void printcomplejo(ostream & os); private: double real; double imag; ostream& operator<< (ostream& os, const Complejo& c) { } c.printcomplejo(os); return os; class Complejo { } public: friend ostream& operator<< (ostream& os, const Complejo& c); private: double real; double imag; ostream& operator<< (ostream& os, const Complejo& c) { } os << c.real <<

25 Operador de Indexación Es el operador [] Es un operador binario y de clase: recibe el objeto donde se aplica y el índice facilitado Útil, p.ej., para acceso seguro a datos: int Vector::operator[] (int i) { } if (i >= 0 && i < this->size) return data[i]; else { cout << Posición incorrecta: << i << endl; return 0; }

26 Conversión de tipos Hay dos posibilidades para llevar a cabo conversiones entre tipos definidos por el usuario: Los constructores de conversión Los operadores de conversión Son útiles para hacer, por ejemplo: Complejo a (2, 3), b (0, 0); b = a + 5;

27 Constructores de conversión Hay que añadir un constructor que nos permita crear el objeto a partir de un objeto del tipo que queramos convertir class Complejo { } public: Complejo (double r, double i) : real(r), imag(i) {} Complejo (int r) : real(r), imag(0) {} Complejo operator+ (const Complejo& z2) const; private: double real, imag; Complejo a (2, 3), b (0, 0); b = a + 5;

28 Operadores de conversión Se usan para proporcionar una conversión de un tipo de usuario a otro tipo (de usuario o no) Tiene la sintaxis: C::operator T(); Donde C es el tipo de usuario que queremos convertir y T es el tipo en el que queremos convertir C

29 Operadores de conversión class Complejo { } public: Complejo (double r, double i) : real(r), imag(i) {} operator double() {return real;} Complejo operator+ (const Complejo& z2) const; private: double real, imag; Complejo a (2, 3); double b = a + 5; double c = a.operator double() + 5; double d = static_cast<double>(a) + 5;

30 Ambigüedades en la conversión Surgen si hay varias conversiones implícitas posibles class Complejo { } public: Complejo (double r = 0, double i = 0) : real(r), imag(i) {} operator double() {return real;} Complejo operator+ (const Complejo& z2) const; private: double real, imag; Complejo a(2, 3), c(0,0); double b = 5; c = a + b; El compilador no sabe si convertir b a Complejo y realizar la suma o convertir a a double, hacer la suma y convertir el resultado a Complejo.

31 Operador de llamada a función Es el operador () Siempre debe ser definido dentro de una clase x (y, z) se interpreta como x.operator (y, z) Útil para implementar callbacks (pasar código como argumento de una función). Los denominados Objetos Función También para el acceso a matrices multidimensionales

32 Operador de llamada a función class Inicializar { private: double val; public: Inicializar (double x = 0) : val(x) {} void operator() (Vector& v); }; void Inicializar::operator() (Vector& v) { for (unsigned i = 0; i < vector.size(); i++) v[i] = this->val; } int main (void) { Vector v(5); Inicializar ini(1); ini(v); }

33 Operador new Al reservar memoria con new y new[] se invoca a las funciones operator new y operator new[]: void* operator new (size_t tamaño); void* operator new[] (size_t tamaño); Estas funciones reservan y memoria y luego llaman el constructor correspondiente Se pueden sobrecargar para una clase C: void* C::operator new (size_t tamaño); void* C::operator new[] (size_t tamaño); Son funciones estáticas aunque no se declaren como tal (static), porque se invocan antes que el constructor Primero se busca en la clase (y clases base) y luego la global

34 Operador new void* Vector::operator new (size_t tam) { reservarmemoria (tam, 0); } void* Vector::operator new[] (size_t tam) { reservarmemoria (tam, 0); } void* Vector::reservarMemoria (size_t tam, char c) { void* p = malloc (tam); if (p == 0) { cout << Error reservando memoria. << endl; exit(-1); } } memset (p, c, tam); return p;

35 Operador delete Al liberar memoria con delete y delete[] se invoca a las funciones operator delete y operator delete[]: void operator delete (void*); void operator delete[] (void*); Estas funciones llaman al destructor y luego liberan la memoria del objeto Se puede sobrecargar para una clase C: void C::operator delete (void*, [size_t]); void C::operator delete[] (void*, [size_t]); Son funciones estáticas aunque no se declaren como tal (static), porque se invocan después del destructor Primero se busca en la clase (y clases base) y luego la global

36 Operador delete void Vector::operator delete (void* p, size_t tam) { if (p) memset (p, 0, tam); free (p); } void Vector::operator delete[] (void* p, size_t tam) { if (p) memset (p, 0, tam); free (p); }

37 Índice Sobrecarga de Funciones Sobrecarga de Operadores Entrada/Salida sobre streams básicos Entrada/Salida sobre streams de fichero Entrada/Salida sobre streams de cadena

38 Visión General de la E/S en C++ Streams y Buffers Especializaciones según el tipo de operación y el origen/destino de los datos

39 Clases istream y ostream Derivan de la clase ios Deben ser conectadas a un buffer (del tipo que sea) cin y cout son de tipo istream y ostream Normalmente, para hacer E/S sobre ficheros o cadenas se usan las clases especializadas, pero se podrían usar estas clases básicas Para usarlas: #include <iostream>

40 Clases istream y ostream Los Manipuladores nos permiten cambiar las opciones de formato de los streams (#include <iomanip>) Son funciones especialmente diseñadas para trabajar junto con los operadores de inserción (<<) y extracción (>>) Se modifica el formato encadenándolos al objeto que representa el stream cout << hex << showbase << 20 << endl;

41 Clases istream y ostream Manipuladores sin parámetros: (no)boolapha: Mostrar booleanos como true y false (no)showbase: Mostrar prefijo de tipo (0x, 0, etc.) (no)showpoint: Forzar la escritura del punto decimal (no)showpos: Forzar la escritura de un + para valores positivos (no)skipws: Permite ignorar caracteres de espaciado (no)unitbuf: Forzar el vaciado del buffer tras cada operación (no)uppercase: Mostrar caracteres alfabéticos en mayúsculas dec, hex, oct: Cambiar base (decimal, hexadecimal y octal) fixed, scientific: Usar notación de coma fija o científica internal, left, right: Alinear el texto endl, ends, flush: Finalizar línea, cadena y vaciar buffer

42 Clases istream y ostream Manipuladores con parámetros setprecision (int): Fija la precisión en coma flotante setw (int): Fija el tamaño de un campo (que se rellena automáticamente en caso de ser necesario) setfill (char): Selecciona el carácter para el relleno setbase (int): Fija la base numérica a usar (8, 10 ó 16) setiosflags (mask): Fija cualquiera de los anteriores flags resetiosflags (mask): Reinicia los flags a los valores por defecto Otra forma de hacer lo mismo Manipuladores sin parámetros: métodos setf y unsetf Manipuladores con parámetros: métodos propios (fill, width, precision, etc.)

43 Clases istream y ostream Ejemplos cout << fixed << setprecision(5) << setw(10) << setfill( * ) << 2.87 << endl; cout.setf(ios::fixed); cout.precision(5); cout.width(10); cout.fill( * ); cout << 2.87 << endl; Ambas imprimen el mismo resultado ***

44 Clase ostream Permite hacer operaciones de escritura con y sin formato Sin formato: put y write Con formato: operator<< Permite manejar distintas situaciones de error También se puede posicionar el puntero de escritura en posiciones determinadas del flujo de salida

45 Clase ostream La sobrecarga del operador de inserción permite realizar escritura con formato Se puede sobrecargar para cualquier tipo ostream& operator<< (ostream& os, const T& data) Y usar los manipuladores vistos anteriormente

46 Clase ostream El método put permite escribir un carácter en el stream ostream& put (char ch) El método write permite escribir n caracteres de un array en el stream ostream& write (const char* pch, int n) El método flush fuerza el vaciado del buffer asociado al stream ostream& flush ()

47 Clase ostream El método tellp permite obtener la posición en el stream de salida (principalmente ficheros) pos_type tellp () Los métodos seekp permiten cambiar la posición de escritura en relación a la posición actual ostream& seekp (pos_type pos) o en relación a una posición de referencia ostream& seekp (off_type des, ios_base::seekdir pos)

48 Clase ostream Ejemplos: const char* cadena = Hola mundo ; cout << cadena << endl; cout.write (cadena, 10); cout.write ( \n, 1); cout.flush (); for (unsigned i = 0; i < 10; i++) cout.put (cadena[i]); cout.put ( \n ); cout.flush ();

49 Clase istream Permite realizar operaciones de lectura con y sin formato: Sin formato: get, getline, read, ignore, peek, gcount, unget, putback Con formato: operator>> Al igual que la clase ostream, permite gestionar errores y reposicionar el puntero de lectura

50 Clase istream La sobrecarga del operador de extracción permite realizar lectura con formato Se puede sobrecargar para cualquier tipo istream& operator>> (istream& is, T& data) Y usar los manipuladores vistos anteriormente (aunque algunos pueden tener sentido únicamente para la clase ostream)

51 Clase istream El método get permite leer un carácter del stream: istream& get (char& ch) El método getline permite leer una línea, con una longitud máxima hasta encontrar un delimitador istream& getline (char* ch, int n, char delim = \n ) El método read permite leer n caracteres istream& read (char* ch, int n)

52 Clase istream El método ignore extrae y descarta una cadena de hasta n caracteres, mientras no encuentre un delimitador dado istream& ignore (int n = 1, int delim = eof ()) El método peek devuelve el siguiente carácter del stream sin extraerlo int peek () const

53 Clase istream El método gcount devuelve el número de caracteres leídos en la última extracción sin formato int gcount () const El método unget devuelve el último carácter extraído al stream istream& unget () El método putback devuelve c al stream istream& putback (char c)

54 Clase istream El método tellg permite obtener la posición en el stream de entrada (principalmente ficheros) pos_type tellg () Los métodos seekg permiten cambiar la posición de lectura en relación a la posición actual istream& seekg (pos_type pos) o en relación a una posición de referencia istream& seekg (off_type des, ios_base::seekdir pos)

55 Clase istream Ejemplos char c, cad [100], cad2[10]; cin >> cad; // Introducimos por teclado Hola mundo cin.get(c); // cad = Hola, c= cin.getline (cad, 100, \n ); // cad= mundo cin.read (cad2, 10); // Introducimos por teclado // Hola mundo cruel.adios cout << cin.gcount() << endl; // cad2= Hola mundo. Imprime 10 cin.ignore (10, '.'); // Ignora cruel. cin.putback('!'); // Inserta! en el stream cin >> cad; // cad=!adios!

56 Clase iostream Clase derivada tanto de istream como de ostream Proporciona acceso de lectura/escritura a streams Presenta los mismos métodos que las clases de las que deriva

57 Gestión de errores Los streams manejan 4 bits de error: eofbit: Se alcanzó el final del fichero en una operación de E/S failbit: El método de E/S falló badbit: Hubo un problema con el stream al realizar la operación goodbit: Ninguno de los anteriores bits está activado Los métodos eof, fail, bad y good devuelven el valor de estos bits

58 Índice Sobrecarga de Funciones Sobrecarga de Operadores Entrada/Salida sobre streams básicos Entrada/Salida sobre streams de fichero Entrada/Salida sobre streams de cadena

59 E/S sobre streams de fichero Proporcionada por el fichero de cabecera: #include <fstream> Provee de las clases ofstream (salida), ifstream (entrada) y fstream (entrada/salida) Distintos modos para abrir un fichero: ios::in, ios::out, ios::trunc, ios::app, ios::binary, ios::ate El fichero se puede abrir en el constructor o con el método open

60 Métodos de apoyo El método eof indica si se alcanzó el final del fichero: bool eof () const El método is_open indica si existe un fichero abierto asociado con el stream bool is_open () const El método close cierra el fichero abierto y lo desliga del stream bool close ()

61 Clase ofstream Clase derivada de ostream especializada en realizar escrituras sobre ficheros El fichero se puede abrir al construir un objeto de tipo ofstream o con el método open ofstream (const char* nombre_fichero, ios_base::openmode modo = ios::out ios::trunc) void open (const char* nombre_fichero, ios_base::openmode modo = ios::out ios::trunc)

62 Clase ofstream Ejemplo: ofstream of ( fichero.txt"); of.write ("Hola mundo\n", 11); of << "Adios mundo" << endl; for (char c = 'a'; c <= 'z'; c++) { of.put(c); of << ", "; } of << endl; of.close();

63 Clase ifstream Clase derivada de istream especializada en realizar lecturas desde ficheros El fichero se puede abrir al construir un objeto de tipo ifstream o con el método open ifstream (const char* nombre_fichero, ios_base::openmode modo = ios::in) void open (const char* nombre_fichero, ios_base::openmode modo = ios::in)

64 Clase ifstream Ejemplo: ifstream f ( fichero.txt"); char buffer[100]; f.getline (buffer, 100); cout << buffer << endl; f.ignore(100, '\n'); for (unsigned i = 1; i <= 26; i++) { char c; f >> c; cout << c << endl; f.ignore(2, ','); }

65 Clase fstream Combina las funcionalidades de ifstream y ofstream El fichero se puede abrir al construir un objeto de tipo fstream o con el método open fstream (const char* nombre_fichero, ios_base::openmode modo = ios::in ios::out) void open (const char* nombre_fichero, ios_base::openmode modo = ios::in ios::out)

66 E/S usando Registros Podemos escribir estructuras de datos complejas Los datos se guardan en formato binario, en lugar de escribirse carácter a carácter Podemos hacerlo con los métodos read y write Requiere una conversión de la estructura en un array de caracteres Uso de reinterpret_cast<char*>()

67 E/S usando Registros struct nodo_agenda { char nombre[30]; char direccion[40]; long telefono; }; nodo_agenda persona; cin.getline (30, persona.nombre); cin.getline (40, persona.direccion); cin >> persona.telefono; ofstream ofs ( agenda ); ofs.write (reinterpret_cast<char*>(&persona), sizeof(nodo_agenda)); ofs.close ();

68 Índice Sobrecarga de Funciones Sobrecarga de Operadores Entrada/Salida sobre streams básicos Entrada/Salida sobre streams de fichero Entrada/Salida sobre streams de cadena

69 La clase String Clase que sirve para trabajar con cadenas de caracteres También almacena el tamaño de la cadena Gestiona automáticamente la memoria dinámica asociada a la cadena Facilita las operaciones más habituales con cadenas de caracteres Hace falta incluir el siguiente fichero de cabecera: #include <string>

70 La clase String Cómo construimos un objeto de tipo string: string cad1; // Construye una cadena vacía string cad2 (cad1); // Constructor de copia char arr[] = Hola mundo ); string cad3 (arr); // Constructor a partir de un array de char Podemos consultar el tamaño de una cadena: cout << El tamano de cad1 es: << cad1.size() << endl; Podemos acceder carácter a carácter: for (unsigned i = 0; i < cad1.size(); i++) cout << cad1[i];

71 La clase String Podemos asignar cadenas sin miedo (la memoria la gestiona la propia clase): string cad1 = Hola mundo ; string cad2 = Adios mundo ; cad2 = cad1; Si nos interesa, podemos recuperar el array de caracteres asociado al objeto string string cad1 = abcdefgh ; const char* arr1 = cad1.c_str(); // Sí añade \0 const char* arr2 = cad1.data(); // No añade \0 char buffer[80]; cad1.copy (buffer, cad1.size(), 0);

72 La clase String También podemos realizar las operaciones de comparación habituales: ==,!=, <, >, <= y >= Se comparan letra por letra y se usa el orden alfabético string str1 = abcdefg, str2 = Abcdefg ; if (str1 < str2) cout << str1 << endl; else cout << str2 << endl;

73 La clase String Se pueden insertar caracteres en una cadena: string cad = Hola ; cad += mundo ; // Añade mundo al final cad.append ( cruel ); // Añade cruel al final cad.insert (11, nada ); // Inserta nada en la posición 11 cout << cad << endl; // Imprime Hola mundo nada cruel ; Y concatenar dos cadenas: string cad1 = Hola ; string cad2 = mundo ; string cad3 = cad1 + cad2; cout << cad3 << endl; // Imprime Hola mundo

74 La clase String También podemos buscar subcadenas: int pos; string cad = abcdefghijk ; pos = cad.find ( efg ); // pos = 4 pos = cad.find ( i ); // pos = 8 Reemplazar subcadenas: cad.replace (cad.find ( efg ), 2, zyx ); // cad = abcd zyx ghijk Y extraer subcadenas: string cad1 = Esto es una cadena ; string cad2 = cad1.substr (12, 6); // cad2 = cadena

75 Entrada/Salida sobre streams de cadena Proporcionada por el fichero de cabecera: #include <sstream> Provee de las clases ostringstream (salida), istringstream (entrada) y stringstream (e/s) Permite realizar operaciones de E/S sobre objetos de tipo string (parecido al sprintf de C) Se pueden usar los métodos de las clases básicas istream, ostream y stream (respectivamente)

76 Entrada/Salida sobre streams de cadena Definen dos métodos adicionales: string str ( ) const void str (const string & s) Permiten recuperar e inicializar la cadena asociada al stream También se les puede asociar una cadena en el constructor istringstream (const string& str, ios_base::openmode modo = ios_base::in)

77 Ejemplo con ostringstream ostringstream buffer; string nombre = "Antonio"; int edad = 27; char aficion[] = "leer"; buffer << "Hola. Me llamo " << nombre << ", tengo " << edad << " tacos y me gusta " << aficion << endl; cout << buffer.str() << endl;

78 Ejemplo con istringstream string nombre2; int edad2 = 0; char aficion2[80]; istringstream buffer2 ("Antonio, 27, leer"); buffer2 >> nombre2; // nombre2 = Antonio buffer2.ignore(100, ','); // Descartamos la, buffer2 >> edad2; // edad2 = 27 buffer2.ignore(100, ','); // Descartamos la, buffer2 >> aficion2; // aficion2 = leer

Entrada/Salida en C++

Entrada/Salida en C++ Flujos en C++ (Streams) Entrada/Salida en C++ Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Hasta aquí, hemos usado cin y cout para leer desde teclado y escribir a consola C++ no incluye

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Operaciones con ficheros en Prof. Dr. Nicolás Luis Fernández García Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

Más detalles

Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++

Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++ Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++ ENTRADA/SALIDA EN C++ Principales características Jerarquía de clases de E/S Aspectos generales

Más detalles

<<Streams>> y Strings. en C++

<<Streams>> y Strings. en C++ Dr. Florentino Fernández Riverola ESTRUCTURAS DE DATOS Y C/C++ y Strings Escuela Superior de Ingeniería Informática Departamento de Informática Universidad de Vigo riverola@uvigo.es en C++

Más detalles

1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Entrada/Salida en C++

1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Entrada/Salida en C++ Entrada/Salida en C++ 1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Lenguaje C++. Leng. Prog. II. Filiberto Pla y Jorge Badenas. Gestión de Entrada/Salida Principios generales

Más detalles

Entrada y salida de datos en C y C++

Entrada y salida de datos en C y C++ Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura Escuela de Ingeniería Electrónica Cátedra de Informática II Entrada y salida de datos en C y C++ Informática II Entrada/Salida

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Qué es un archivo? Conjunto de información agrupada bajo un nombre y almacenada en disco

Más detalles

Entrada y Salida en C++

Entrada y Salida en C++ Estructura de Datos y Algoritmos Entrada y Salida en C++ 1. Introducción Las bibliotecas estándar de C++ proporcionan un amplio conjunto de capacidades de entrada/salida (E/S). C++ utiliza E/S a prueba

Más detalles

Tema 3: Ficheros en C++

Tema 3: Ficheros en C++ de : en C++ Programación 2, Curso 2013-2014 Índice de, 1 de de un fichero de (1/2) de un fichero de 2, de un fichero binario de un fichero binario 3 Control de errores de lectura/escritura Qué es un fichero

Más detalles

Tema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones

Tema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones : string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen

Más detalles

SEMINARIO C++ Introducción a la Programación Orientada a Objetos. Parte III v Cristina Cachero Pedro J. Ponce de León

SEMINARIO C++ Introducción a la Programación Orientada a Objetos. Parte III v Cristina Cachero Pedro J. Ponce de León SEMINARIO C++ Introducción a la Programación Orientada a Objetos Parte III v. 20070918 Cristina Cachero Pedro J. Ponce de León Depto. Lenguajes y Sistemas Informáticos - Universidad de Alicante ÍNDICE

Más detalles

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones.

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Programación II. Guía 8 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Objetivos Diferenciar sobrecarga de operadores

Más detalles

Introducción a C++ Índice

Introducción a C++ Índice Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre

Más detalles

Tema 3: Ficheros en C++ Índice. Notas. Programación 2. Curso Notas

Tema 3: Ficheros en C++ Índice. Notas. Programación 2. Curso Notas de : en C++ Programación 2, Curso 2016-2017 Índice de, 1 de de un fichero de (1/2) de un fichero de 2, de un fichero binario de un fichero binario 3 Control de errores de lectura/escritura Qué es un fichero

Más detalles

Manejo de archivos en C++

Manejo de archivos en C++ Manejo de archivos en C++ 1 de noviembre de 2002 1. Streams En C++, los archivos se manejan con un tipo particular de stream. Un stream es una estructura de datos que se utiliza para manejar un flujo de

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

APUNTES PROII 2º PARCIAL.

APUNTES PROII 2º PARCIAL. APUNTES PROII 2º PARCIAL. MEMORIA DINÁMICA. Hay que distinguir entre: Estática: memoria que se reserva en tiempo de compilación. Dinámica: memoria que se reserva en tiempo de ejecución. 5 pasos: 1. Declaración

Más detalles

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje

Más detalles

ALMACENAMIENTO PERSISTENTE DE DATOS

ALMACENAMIENTO PERSISTENTE DE DATOS UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación ALMACENAMIENTO PERSISTENTE DE DATOS Tema 1 Programación II Programación II 0 Tema 1: ALMACENAMIENTO PERSISTENTE DE DATOS

Más detalles

Tema: Sobrecarga de Operadores.

Tema: Sobrecarga de Operadores. Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 10 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1.1 EJERCICIO 1: MI PRIMER FICHERO EN BINARIO... 1 1.2 EJERCICIO 2: LEYENDO MI PRIMER FICHERO

Más detalles

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión ); ARCHIVOS EN C++ = FLUJOS DE ENTRADA/SALIDA. Ejemplo: cin y cout Tipos de ficheros: DE TEXTO y BINARIOS Biblioteca de gestión de ficheros (a incluir en los programas) #include Apertura de ficheros

Más detalles

Entrada y Salida estándar en C++

Entrada y Salida estándar en C++ Entrada y Salida estándar en C++ Un programa en C++ puede realizar operaciones de entrada y salida de varias formas distintas. A continuación describiremos lo que se conoce como flujos. Un flujo de entrada

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Tema 5 Archivos o Ficheros

Tema 5 Archivos o Ficheros Tema 5 Archivos o Ficheros Informática Grado en Física Universitat de València Ariadna.Fuertes@uv.es Francisco.Grimaldo@uv.es 1 Introducción: Concepto de Fichero Tipos de acceso a ficheros Tipos de ficheros:

Más detalles

Creación de clases en C++ (I)

Creación de clases en C++ (I) Clases en C Creación de clases en C++ (I) Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Convertir estructura InfoAlumno en una clase Escribir una clase simple en C++, con constructores

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS CON C++

PROGRAMACIÓN ORIENTADA A OBJETOS CON C++ PROGRAMACIÓN ORIENTADA A OBJETOS CON C++ o cómo aprender C++ en 1 hora! sin que se note que realmente está escribiendo en C Enrique Alba Torres Andrés Rubio del Río PROGRAMACIÓN ORIENTADA A OBJETOS (POO)

Más detalles

Uso de archivos en C++

Uso de archivos en C++ CICLO 02-2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION GUIA DE LABORATORIO Nº 11 Nombre de la práctica: Uso de archivos en C++ Lugar de ejecución: Laboratorio de Informática

Más detalles

PUBLICACIÓN DEL ENUNCIADO: Semana del 10 de noviembre de ENTREGA: Clase de laboratorio de la semana del 8 de diciembre de 2003.

PUBLICACIÓN DEL ENUNCIADO: Semana del 10 de noviembre de ENTREGA: Clase de laboratorio de la semana del 8 de diciembre de 2003. TELECOMUNICACIÓN Página 12 PRÁCTICAS 6ª, 7ª y 8ª: Operaciones con polinomios. OBJETIVOS: Repaso de listas dinámicas. Objetos como datos miembro de otros objetos (introducción a la herencia). Objetos con

Más detalles

Prof. Dr.Paul Bustamante

Prof. Dr.Paul Bustamante Prácticas de C++ Practica Nº 14 Informática II Fundamentos de Programación Prof. Dr.Paul Bustamante Practica Nº 14 Programación en C++ Pág. 2 ÍNDICE ÍNDICE... 2 1. Introducción... 2 1.1 Ejercicio 1: Grabando

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++

CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++ CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++ 1. INTRODUCCIÓN 3 2. FLUJOS 3 2.1. Archivos de encabezado de la biblioteca iostream 4 2.2. Clases y objetos de flujo de entrada/salida 5 3. FLUJO

Más detalles

Entrada / Salida de Datos en C++

Entrada / Salida de Datos en C++ Entrada / Salida de Datos en C++ Informática II Fundamentos de Programación 1 Entrada/Salida de datos en C++ Basadas en clases y en la herencia (fáciles de extender y modificar). Flujo o stream: dispositivo

Más detalles

Sobrecarga de Operadores II

Sobrecarga de Operadores II D é c i m o q u i n t a S e s i ó n Metodologías y Técnicas de Programación II Programación Orientada a Objeto (POO) C++ Sobrecarga de Operadores II 1 Sobrecarga de operadores unitarios (o unarios) Son

Más detalles

PROGRAMACIÓN AVANZADA. Prácticas de Problemas. Introducción

PROGRAMACIÓN AVANZADA. Prácticas de Problemas. Introducción UNIVERSIDAD NACIONAL DE ENTRE RÍOS Facultad de Ingeniería PROGRAMACIÓN AVANZADA Prácticas de Problemas Introducción Versión 02 Objetivos Revisión de conceptos sobre: tipos de datos, cadenas, arreglos,

Más detalles

INTRODUCCIÓN A LA POO EN C++

INTRODUCCIÓN A LA POO EN C++ INTRODUCCIÓN A LA POO EN C++ ÍNDICE DEL TEMA 1.- Introducción 2.- Diferencias C/C++ 3.- Programación orientada a objetos 4.- Aspectos avanzados C++ 1 1. Introducción Lenguaje C Lenguaje de propósito general

Más detalles

Entrada y Salida en C++

Entrada y Salida en C++ Entrada y Salida en C++ Fundamentos de Programación Curso: 1º FP 1 Introducción Flujo de entrada: serie de entradas que alimentan un ordenador para que el programa las utilice. Flujo de salida: serie de

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Tema 2: La clase string

Tema 2: La clase string : string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Programación 1 Desarrollo de proyectos de programación. Desarrollo de un módulo C++ de biblioteca para trabajar con conjuntos de letras

Programación 1 Desarrollo de proyectos de programación. Desarrollo de un módulo C++ de biblioteca para trabajar con conjuntos de letras Programación 1 Desarrollo de proyectos de programación Desarrollo de un módulo C++ de biblioteca para trabajar con conjuntos de letras Objetivo del proyecto Desarrollo de un módulo C++ de biblioteca para

Más detalles

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.

Más detalles

Programación 1 Tema 15. Trabajo con ficheros binarios

Programación 1 Tema 15. Trabajo con ficheros binarios Programación 1 Tema 15 Trabajo con ficheros binarios Índice Ficheros binarios Diferencia con ficheros de texto Herramientas de C++ para trabajar con ficheros binarios Problemas básicos con ficheros binarios

Más detalles

Tema 2. Programación basada en objetos. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas

Tema 2. Programación basada en objetos. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas Tema 2. Programación basada en objetos Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 2.1. Objetivos Estudiar los conceptos de clase y objeto, y su implementación mediante

Más detalles

Herencia y polimorfismo

Herencia y polimorfismo Herencia y polimorfismo Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Herencia Hemos visto cómo crear nuestras propias clases Clase InfoAlumno para calcular las notas Supongamos ahora

Más detalles

FICHEROS C++ TRANSVERSAL DE PROGRAMACIÓN BÁSICA

FICHEROS C++ TRANSVERSAL DE PROGRAMACIÓN BÁSICA TRANSVERSAL DE PROGRAMACIÓN BÁSICA INGENIERÍA DE SISTEMAS En el presente documente se hace una breve presentación del manejo de ficheros y archivos bajo el lenguaje de c++. Aunque existe más información

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 11 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº11 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Clase

Más detalles

Tema: Plantillas en C++.

Tema: Plantillas en C++. Programación II. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Plantillas en C++. Objetivos Específicos Conocer los tipos de plantillas Utilizar las plantillas de

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;

Más detalles

Creación de clases en C++ (II)

Creación de clases en C++ (II) Clases en C Creación de clases en C++ (II) Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Escribir nuestra propia clase para vectores Vec basada en std::vector Escribir nuestra propia

Más detalles

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones

Más detalles

Tema 6: Memoria dinámica

Tema 6: Memoria dinámica : Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa 1 Léxico, sintaxis y semántica de un lenguaje #include #include

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Tipos de Datos en C. Palabras reservadas en C

Tipos de Datos en C. Palabras reservadas en C Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual

Más detalles

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. 1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.

Más detalles

Guía de Referencia Rápida de C++ (std)

Guía de Referencia Rápida de C++ (std) Guía de Referencia Rápida de C++ (std) Programa C++ // Inclusión de bibliotecas // Utilización de espacios de nombre // Definición de Constantes y Tipos // Definición de subprogramas // cuerpo del programa

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS GRADO EN INGENIERÍA INFORMÁTICA SEGUNDO CURSO DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO ESCUELA POLITÉCNICA SUPERIOR UNIVERSIDAD DE CÓRDOBA CURSO ACADÉMICO: 2011

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Entrada y Salida vía Archivos

Entrada y Salida vía Archivos Entrada y Salida vía Archivos Lectura de un archivo de entrada Escritura en un archivo de salida Agustín J. González ELO329 1 Lectura de archivos de entrada Un archivo de entrada es una secuencia de bytes

Más detalles

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos) 3. Indicar la salida por pantalla (2 puntos-20 minutos) #include class EUITIelemento; class EUITIpila int num; EUITIelemento *pila[10]; EUITIpila():num(0); bool push(euitielemento *in) if(num>=10)return

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder

Más detalles

Tema 4. Ficheros. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 4. Ficheros.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz Tema 4. Ficheros http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente: La Herencia Es la capacidad de compartir atributos y métodos entre clases. Es la propiedad que permite definir nuevas clases usando como base clases ya existentes. La nueva clase (clase derivada) hereda

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 6 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº 6 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Clase

Más detalles

Sintaxis básica, variables y 7pos

Sintaxis básica, variables y 7pos Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Estructura

Más detalles

Contenidos. Archivos en C++ Archivos en C++ Introducción

Contenidos. Archivos en C++ Archivos en C++ Introducción Contenidos 1. Introducción. 2. Manipulación de ficheros. 3. Organización de archivos. 4. Tipo de almacenamiento. 5. Biblioteca de flujos. 6. Operaciones asociadas a archivos: Abrir fichero, Cerrar fichero,

Más detalles

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:

Más detalles

UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION.

UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION. UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION. Los tipos de datos definidos por el usuario o clases es lo que distingue al C++ de los lenguajes procedurales tradicionales. Una clase es un nuevo

Más detalles

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES TEMA 02 TIPOS, OPERADORES Y EXPRESIONES 2.1.- Introducción. 2.2.- Datos. 2.3.- Entrada y salida básica. 2.4.- Modificadores. 2.5.- Cadenas de caracteres. 2.6.- Operadores. 2.7.- Precedencia de operadores.

Más detalles

Capítulo. Flujos y archivos en C++ Contenido

Capítulo. Flujos y archivos en C++ Contenido Capítulo 33 Flujos y archivos en C++ Contenido Flujos ( streams) La biblioteca de clases iostream Clases istream y ostream La clase ostream Salida a la pantalla y a la impresora Lectura del teclado Formateado

Más detalles

PARADIGMA DE POO - CLASES

PARADIGMA DE POO - CLASES PARADIGMA DE POO - CLASES Los programas estructurados se basan en estructuras de control bien definidas, bloques de código, subrutinas independientes que soportan recursividad y variables locales. La esencia

Más detalles

Apuntadores en C y C++

Apuntadores en C y C++ Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta

Más detalles

Programación orientada a objetos I

Programación orientada a objetos I Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Definición y Conversión de datos. Agustín J. González ELO-329

Definición y Conversión de datos. Agustín J. González ELO-329 Definición y Conversión de datos Agustín J. González ELO-329 1 Calificador Const El calificador const previene que un objeto sea modificado con posterioridad a su definición. El objeto calificado como

Más detalles

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1 Prefacio... xv 1. Orígenes de la programación orientada a objetos... 1 1.1 La crisis del software... 1 1.2 Evolución del software... 3 1.3 Introducción a la programación orientada a procedimientos... 4

Más detalles

Implementación de las Clases Pila, Cola, Lista y Arbol

Implementación de las Clases Pila, Cola, Lista y Arbol 1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 28 de noviembre de 2017 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos

Más detalles

1. Juego del Ahorcado

1. Juego del Ahorcado Solución Ex. Junio 06 GrA - Programación C++ Pág. 1 1. JUEGO DEL AHORCADO...1 2. CLASES...3 1. Juego del Ahorcado #include #include #include #include void Jugar(char

Más detalles

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo) . Sobrecarga de operadores. unarios Operador de incremento (prefijo). Devolución de objetos en los métodos. Retorno por referencia Sobrecarga de operadores Los operadores aceptan uno o varios operandos

Más detalles

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas Agenda 2.1 Familiarización con el ambiente de programación 2.2 Análisis de la estructura de un programa 2.3 Envío de mensajes a la salida estándar

Más detalles

Estructuras de Datos y Algoritmos (ITIS). TAD Tree. Estructuras de Datos y Algoritmos (ITIS) Ingeniería Técnica en Informática de Sistemas, Curso 2º

Estructuras de Datos y Algoritmos (ITIS). TAD Tree. Estructuras de Datos y Algoritmos (ITIS) Ingeniería Técnica en Informática de Sistemas, Curso 2º Estructuras de Datos y Algoritmos (ITIS) Ingeniería Técnica en Informática de Sistemas, Curso 2º PRÁCTICA 3 TAD TREE Árbol binario de búsqueda. Tabla de frecuencias. Uno de los mecanismos más sencillos

Más detalles

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez Objetivo N 2 Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez * Un programa en C++ está definido por funciones (grupo de instrucciones que pueden o no hacer

Más detalles

Introducción a los Computadores

Introducción a los Computadores Introducción a los Computadores Práctica nº 4 Introducción. Un tipo de datos estructurado es un tipo de datos formado por una colección organizada de componentes de algún otro tipo de datos. Podremos hacer

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Empresa Videojuegos (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Rectangulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Memoria Dinámica en C++

Memoria Dinámica en C++ Memoria Dinámica en C++ Algoritmos y Estructuras de Datos II DC-FCEyN-UBA 26 de Agosto de 2015 AED2 (DC-FCEyN-UBA) Memoria Dinámica en C++ 26 de Agosto de 2015 1 / 46 Repaso: Qué es una variable? Matemática:

Más detalles

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1). ÁRBOL BINARIO - Un árbol binario puede definirse como un árbol que en cada nodo puede tener como mucho grado 2, es decir, a lo más 2 hijos. Los hijos suelen denominarse hijo a la izquierda e hijo a la

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance Capítulo 1. Introducción general 1.1 Comencemos 1.2 Variables y expresiones aritméticas 1.3 La proposición FOR 1.4 Constantes simbólicas 1.5 Entrada y salida de caracteres 1.6 Arreglos 1.7 Funciones 1.8

Más detalles