Prof. Dr. Paul Bustamante

Documentos relacionados
Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Plantillas: un mecanismo de polimorfismo

1. Juego del Ahorcado

Las clases como tipos de datos definidos por el usuario

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Examen Septiembre Curso Programación en C++ Pág. 1

= RETURN =3 7-. ELSE K

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Tema: Sobrecarga de Operadores.

Examen escrito de Programación 1

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

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

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

Prof. Dr. Paul Bustamante

TEMA 2 FRACCIONES MATEMÁTICAS 2º ESO

Java Básico. Métodos estáticos

Funciones. Parámetros por valor

Escuela Politécnica Superior de Elche

Operaciones de números racionales

MATEMÁTICAS 1º DE ESO

primarios = 3; 5 4 = 1; 2(3) = 6; 3. Observa todos los valores usados en

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

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

TEMA 4: LAS FRACCIONES

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

ALMACENAMIENTO PERSISTENTE DE DATOS

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Sumar y restar radicales

ECUACIONES EN Q (NÚMEROS RACIONALES)

Estructuras de Repetición (Hacer-Mientras)

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

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

1. Ejemplo de clase: La clase Disco 2. Ejemplo de clase: La clase Colección. 3. Relación entre clases: Clientismo

Tema 05: Números Decimales, Fracciones y Porcentajes Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS

Estructuras de repetición hacer-mientras y repita hasta

Números Racionales. Repaso para la prueba. Profesora: Jennipher Ferreira Curso: 7 B

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Chapter Audio Summary for McDougal Littell Pre-Algebra

TEMA 1. Números Reales. Teoría. Matemáticas

Introducción al lenguaje C

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

Ejercicios propuestos de. Programación orientada a objetos. con C++ Cristina Cachero Pedro J. Ponce de León

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Elementos de un programa en C

Estructuras de Repetición (Repita para)

OPERACIONES CON POLINOMIOS

Estructuras de repetición

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

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

IES CUADERNO Nº 3 NOMBRE: FECHA: / / Números decimales

Entrada y salida de datos en C y C++

Introduc)on to Programming (in C++) Ejemplos de tratamiento de secuencia de secuencias. Emma Rollón Departament of Computer Science

Funciones y Clases Amigas en C++ Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Expresiones Algebraicas Racionales en los Números Reales

Prof. Dr. Paul Bustamante

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso Notas. Ejemplo. La herramienta make. 1 Diseño modular.

1. NUMEROS REALES a. Los Números Reales

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

Fracciones numéricas enteras

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Objective C (Desarrollo con Apple)

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

TEMA 2: Potencias y raíces. Tema 2: Potencias y raíces 1

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

2º Se lee número que hay antes de la coma, se añade la palabra coma y luego se lee la parte decimal

El número áureo,, utilizado por artistas de todas las épocas (Fidias, Leonardo da Vinci, Alberto Durero, Dalí,..) en las proporciones de sus obras.

Operaciones con fracciones

Num eros Racionales. Clase # 1. Universidad Andrés Bello. Junio 2014

7.- Seleccionando funciones friend o funciones miembro para sobrecarga de operadores.

Potencias y radicales

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

TEMA 2. Números racionales. Teoría. Matemáticas

REPASO DE Nºs REALES y RADICALES

ESTRUCTURAS REPETITIVAS

Tema 2. Polinomios y fracciones algebraicas

MATEMÁTICAS 5. º CURSO UNIDAD 1: SISTEMAS DE NUMERACIÓN

Capítulo 5. Los números reales y sus representaciones Pearson Education, Inc. Diapositiva 5-4-1

Potencias. Potencias con exponente entero. Con exponente racional o fraccionario

Tema: Arreglos de Objetos en C++.

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Tema 6. Gestión dinámica de memoria

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Tema 6: Fracciones. Fracciones

1 of 16 10/25/2011 6:36 AM

Transcripción:

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 Fecha... 1 1.2 Ejercicio 2: Clase Fraccion, versión 1.1... 3 1.3 Ejercicio 3: Clase Complejo, versión 1.1... 4 1.4 Ejercicio 4: Clase String, versión 1.1... 5 1. Introducción. En esta práctica trataremos de hacer un ejercicio de clases con algoritmos y nos introduciremos en la sobrecarga de operadores, un nuevo concepto visto esta semana en las clases de teoría. 1.1 Ejercicio 1: Clase Fecha Para empezar a hacer uso de la sobrecarga de operadores, vamos a crear una nueva clase Fecha que nos permita pedir de forma sencilla una fecha, imprimirla, comparar dos fechas y sumarles días a una fecha, lo cual haremos gracias a la sobrecarga de los operadores respectivos ( >>, <<, + y = =). A continuación se le dará el código de este ejercicio. Como ya se les ha dicho en reiteradas ocasiones, no se dedique sólo a escribir el código, debe tratar de entenderlo: //fichero Fecha.h class Fecha int dia,mes,ano; public: Fecha(int d=1, int m=1, int a=1900); Fecha( Fecha &f); //constructor copia ; friend ostream &operator<<(ostream &co, Fecha &f); friend istream &operator>>(istream &ci, Fecha &f); friend bool operator==(fecha &f1, Fecha &f2); Fecha operator+(int d); //fichero Fecha.cpp #include <iomanip.h> #include Fecha.h Fecha::Fecha(int d, int m, int a) dia=d; mes=m; ano=a; Fecha::Fecha(Fecha &f) dia = f.dia ; mes = f.mes; ano = f.ano; Fecha Fecha::operator +(int dias)

Practica Nº11 Programación en C++ Pág. 2 Fecha temp; //poner aqui el codigo para sumar dias a una fecha return temp; ostream &operator<<(ostream &co, Fecha &f) cout << setfill('0') << setw(2) << f.dia << '/' << setw(2) << f.mes << '/' << setw(4) << f.ano; return co; istream &operator>>(istream &ci, Fecha &f) char ch; cout << "Escriba Fecha de la forma dd/mm/aa:"; ci >> f.dia >> ch >> f.mes >> ch >> f.ano; return ci; bool operator==(fecha &f1, Fecha &f2) if (f1.dia==f2.dia && f1.mes==f2.mes && f1.ano==f2.ano) return true; else return false; //fichero principal.cpp #include Fecha.h Fecha f1(12,4,2001); //crear una fecha Fecha f2; //crear una fecha con valores por defecto cin >> f2; //pedir fecha 2 cout << "Fecha 1: " << f1 << endl; cout << "Fecha 2: " << f2 << endl; Fecha f3; f3 = f1 + 180; //sumar 180 dias cout << f1 <<" + 180 dias = " << f3 << endl; if (f3 == f2) cout << f3 << " y " << f2 << " son Fechas iguales"; else cout << f3 << " y " << f2 << " son Fechas diferentes"; cout << " \nhe terminado.." << endl; Recuerde que es preferible que utilice el entorno para crear la nueva clase (Menu Insert->Add New Class) ya que de esta forma se crean los 2 ficheros para la clase: Fecha.cpp y Fecha.h. Utilice para el programa principal el fichero Principal.cpp. Al proyecto puede asignarle el nombre de Ejer1.

Practica Nº11 Programación en C++ Pág. 3 1.2 Ejercicio 2: Clase Fraccion, versión 1.1 Para recordar, la clase Fraccion tiene dos variables miembro privadas (long num, den), para almacenar el numerador y denominador respectivamente. Debe crear un proyecto Ejer2 y los ficheros respectivos para la clase Fraccion, en los cuales va a escribir el código: 1. Debe crear una función miembro privada, llamada simplificar( ), que permita expresar la fracción en su forma más simplificada posible, manteniendo que tanto el numerador como el denominador sean enteros. Por ejemplo, al simplificar la fracción 2/4 se debe obtener 1/2. La simplificación se basa en la división por el máximo común divisor del numerador y denominador. Para ello se puede seguir el algoritmo de Euclides presentado en las transparencias de clase de Algoritmos de búsqueda y ordenación. void Fraccion::simplificar() long m, n, r; if (num<den) m=den; n=num; else m=num; n=den; while ((r=m%n)!= 0) //r=resto de m/n m=n; n=r; //n es el m.c.d num /= n; den /= n; Se trata de una función privada, lo que significa que sólo puede ser llamada desde las funciones miembro o funciones friend. Se pide utilizarla desde todas las funciones y operadores que modifiquen el valor del denominador o del numerador (incluidos los constructores). Esto significa que si por ejemplo inicializáramos a 4/8, el valor almacenado debería ser 1/2. 2. Trate de crear una serie de funciones friend que permitan pre/post-multiplicar y pre/post-dividir una fracción por un número entero (int). Los prototipos de estas funciones para las variables de tipo int son los siguientes: //Pre multiplicar y dividir: friend Fraccion operator* (int, const Fraccion&); friend Fraccion operator/ (int, const Fraccion&); //Post multiplicar y dividir: friend Fraccion operator* (const Fraccion&, int); friend Fraccion operator/ (const Fraccion&, int); 3. Sobrecargar el operador de extracción >> para poder pedir el valor de la fracción de la forma 2/6 directamente y que a su vez simplifique y guarde 1/3. También sobrecargar el operador de inserción << para poder sacar directamente por consola los valores de las fracciones. 4. Finalmente, deben sobrecargar los operadores de suma y multiplicación para que permitan sumar y multiplicar dos fracciones, tal como se puede apreciar en el código de la función principal main. A continuación se da el código que debe ir en main():

Practica Nº11 Programación en C++ Pág. 4 Fraccion f1(1,4); Fraccion f2(1,2); Fraccion f3; cin >> f3; //pide datos para f3 Fraccion fr = f1 + f2; cout << f1 << " + " << f2 << " = " << fr << endl; Fraccion fm = f1 * f2; cout << f1 << " * " << f2 << " = " << fm << endl; int k=4; fr = k * f1; //Pre-multip cout << k << " * "<<f1<<" = "<< fr << endl; fr = k / f3; //Pre-division cout << k << " / "<<f3<<" = "<< fr << endl; k=2; fr = f2 * k; //Post-multip cout << f2 << " * "<<k<<" = "<< fr << endl; fr = f3 / k; //Post-division cout << f3 << " / "<<k<<" = "<< fr << endl; Fraccion f4; cin >> f4; cout << f4; 1.3 Ejercicio 3: Clase Complejo, versión 1.1 Este ejercicio consiste en sobrecargar todos los operadores que intervengan en el programa que se describe a continuación. Puede utilizar las versiones anteriores de la clase Complejo, dadas en clase o en la práctica anterior. Recuerde crear los ficheros y el proyecto correspondiente. //principal.cpp Complejo c1(2.5,3),c2; cin >> c2; //pedir datos para c2 Complejo c3 = c1 + c2; // c1.operator+(c2) cout << c1 << " + " << c2 << " = " << c3 <<endl; c3 = c1 * c2; cout << c1 << " * " << c2 << " = " << c3 <<endl; c1==c2? cout << c1 << " y " << c2 << " son Iguales\n": cout << c1 << " y " << c2 << " son Diferentes\n"; if ( c1 > c2 ) cout << c1 << " es > que " << c2; else cout << c1 << " es < que " << c2; cout << "\nhe terminado.." << endl;

Practica Nº11 Programación en C++ Pág. 5 1.4 Ejercicio 4: Clase String, versión 1.1 Ha llegado el momento de hacer la versión 1.1 de la clase String, para lo cual vamos a partir de la clase de la práctica anterior, implementando la sobrecarga de los operadores de tal forma que me permitan escribir un programa de la siguiente manera: String cs1,cs2; //crear objetos cout << "\ndame tu nombre:"; cin >> cs1; cout << "Hola:" << cs1; cout << "\nahora Dame tus Apellidos:"; cin >> cs2; cs1 += " "; cs1 += cs2; //agregar 1 espacio //agregar los apellidos al nombre int len = cs1.getlen(); cout << "\nahora te escribo invertido:\n"; for (int i=len-1;i>=0;i--) cout << cs1[i]; cout << "\n\nadios " << cs1 << endl; Recuerde que si no ha llegado a terminar la practica, debe hacerlo en horas de estudio dedicadas a la asignatura, semanalmente, para no acumular los temas anteriores.