Prof. Dr. Paul Bustamante



Documentos relacionados
Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

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

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

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

Prof. Dr. Paul Bustamante

Introducción a la programación orientada a objetos

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

Constructores y Destructores

Examen escrito de Programación 1

Prof. Dr. Paul Bustamante

Capítulo 6. Introducción a la POO

Programación Orientada a Objetos en JAVA

Java Inicial (20 horas)

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

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

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

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

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

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Programación Orientada a Objetos en Java

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Programación Orientada a Objetos con Java

Clases y funciones amigas: friend

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Introducción al tipo de dato ARRAY

GENERACIÓN DE TRANSFERENCIAS

Ejercicios - Persistencia en Android: ficheros y SQLite

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

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

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

3URJUDPDFLyQ-DYD. 3UiFWLFD. -DYLHU *DUFtD GH -DOyQ Â -RVp,JQDFLR 5RGUtJXH] $OIRQVR %UD]iOH] Â $OEHUWR /DU]DEDO Â -HV~V &DOOHMD Â -RQ *DUFtD

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

Gestió n de Certificadó Digital

GENERACIÓN DE REMESAS DE EFECTOS

Estructuras de repetición hacer-mientras y repita hasta

8. Sentencia return y métodos

Sistemas Operativos Práctica 4

Vectores. 27/05/05 Programación Digital I 1

Plantillas: un mecanismo de polimorfismo

Capítulo 9. Archivos de sintaxis

Ficheros Electrónicos

SOLUCION EXAMEN junio 2006

Tema: Sobrecarga de Operadores.

Práctica 00: Compilador

Trabajo Práctico N 4: Diseño por Contratos

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Preliminares. Tipos de variables y Expresiones

Antes de empezar con la resolución de este caso vamos a analizar las funciones financieras que vamos a utilizar.

Modulo 1 El lenguaje Java

Benemérita Universidad Autónoma del Estado de Puebla

Ejemplos de conversión de reales a enteros

Manual de Operación PORTAL VENTA de PINES AMÉRICA TOTAL

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Módulo 9 Sistema matemático y operaciones binarias

Tema 3. Medidas de tendencia central Introducción. Contenido

Prof. Dr. Paul Bustamante

Introducción al lenguaje Java

Se guardan en archivos con extencion c y los cabezales con extension h

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Uso de excepciones en Java

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

Fórmulas y funciones

Tema 2: La clase string

MANUAL DE AYUDA MODULO TALLAS Y COLORES

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Guía de instalación de la carpeta Datos de IslaWin

Curso 0 de Informática

Ecuaciones de primer grado con dos incógnitas

6.1. Conoce la papelera

OBTENER DATOS EXTERNOS

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows

Manual Impress Impress Impress Impress Impress Draw Impress Impress

SUMA Y RESTA DE FRACCIONES

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

Hostaliawhitepapers. Usar Plesk para, poner en marcha nuestro dominio.

Juniper Newsletter. Manual de la Booking Engine Actualización Septiembre de Agosto del Juniper Innovating Travel Technology

Pruebas de unidad con JUnit

Tema: Arreglos de Objetos en C++.

Introducción al laboratorio de Programación I

Clases y Objetos. Informática II Ingeniería Electrónica

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

ÍNDICE GESTIÓN SERVICIOS COBRAR CLIENTES TARJETAS DE CLIENTE RESERVAS 40

UNIDAD 1. LOS NÚMEROS ENTEROS.

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Descomposición factorial de polinomios

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

MANUAL DE DE TRANSFERENCIA BANCARIA DE NÓMINAS

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Transcripción:

Prácticas de C++ Practica Nº 4 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante

Practica Nº 4 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Mi Primera clase complejo... 1 1.2 Ejercicio 2: Modificar la clase complejo... 3 1.3 Ejercicio 3: La clase Fracción... 3 1.4 Ejercicio 4: La clase cuenta_corriente... 4 1. Introducción. En esta práctica empezará a utilizar las clases, a crear nuevos objetos, a entender la encapsulación y abstracción de datos, es decir, todo lo relacionado con la Programación Orientada a Objetos. Recuerde que siempre hay más ejercicios que los que puede hacer en dos horas de práctica. Hay que evitar copiar los ejercicios de otra persona, principalmente porque así no se aprende a programar: a programar sólo se aprende programando. 1.1 Ejercicio 1: Mi Primera clase complejo En la clase de esta semana y en la anterior, se ha explicado la clase complejo, que permite trabajar con números complejos como si fuesen un tipo de variables más de C++, de modo análogo a int, long, double, etc.. Este proyecto se llamará Ejer1. Debe crear tres ficheros complejo.h, complejo.cpp y main.cpp. Estos ficheros se listan a continuación: // fichero complejo.h #include <iostream.h> class complejo private: double real; double imag; public: // Constructores complejo(); //defecto complejo(double, double im=0.0); // SetThings void SetData(void); void SetReal(double); void SetImag(double); // GetThings double GetReal(void)return real; double GetImag(void)return imag; //Operaciones complejo Suma(complejo c); complejo Resta(complejo c); complejo Multiplica(complejo c); complejo Cociente(complejo c); //Salida void Prt() cout << "("<< real <<","<< imag<<"i)"<<endl; ; // fichero complejo.cpp // funciones y operadores de la clase complejo #include "complejo.h"

Practica Nº 4 Programación en C++ Pág. 2 complejo::complejo() // constructor por defecto real = 0.0; imag = 0.0; // constructor general complejo::complejo(double re,double im) real = re; imag = im; // función miembro SetData() void complejo::setdata(void) cout << "Parte real: "; cin >> real; cout << "Parte imaginaria: "; cin >> imag; void complejo::setreal(double re) real = re; void complejo::setimag(double im) imag = im; complejo complejo::suma(complejo c) complejo cs; cs.real = real + c.real; cs.imag = imag + c.imag; return cs; complejo complejo::resta(complejo c) complejo cr; //escribir el código para restar return cr; complejo complejo::multiplica(complejo c) complejo cm; //escribir el código (a,b) * (c,d) = (ac-bd, ad+bc) return cm; complejo complejo::cociente(complejo c) complejo cc; //escribir (a,b)/(c,d) = ((ac+bd)/(c^2+d^2), (bc-ad)/(c^2 + d^2 )) return cc; //fichero main.cpp #include "complejo.h" void main(void) // declaración de números complejos complejo c1(1.0, 1.0); complejo c2(2.0, 2.0); complejo c3; c3.setdata(); //pide datos para c3 complejo c4(4.0); // operadores aritméticos

Practica Nº 4 Programación en C++ Pág. 3 complejo suma = c1.suma(c2); complejo resta = c1.resta(c3); complejo producto = c2.multiplica(c4); complejo cociente = c1.cociente(c3); //c1+c2 //c1-c3 //c2*c4 //c1/c3 cout << "Primer complejo: "; c1.prt(); cout << "Segundo complejo: ";c2.prt(); cout << "Tercer complejo: "; c3.prt(); cout << "Suma: " ; suma.prt(); cout << "Resta: " ; resta.prt(); cout << "Producto: " ; producto.prt(); cout << "Cociente: " ; cociente.prt(); cout << "Ya he terminado." << endl; Compile el proyecto y ejecútelo, observando el resultado. Cree algunos números complejos más en el programa principal, opere con ellos y escriba el resultado. 1.2 Ejercicio 2: Modificar la clase complejo. Cree un nuevo proyecto llamado Ejer2 en su directorio de trabajo. Copie en este directorio los ficheros fuente del Ejercicio 1, complejo.h, complejo.cpp y main.cpp. Cambie el nombre a estos ficheros llamándolos complejo2.h, complejo2.cpp y main2.cpp. Ahora deberá modificar esos ficheros para que cumplan los siguientes objetivos: 1. Crear una función miembro llamada modulo() que permita calcular el módulo del objeto complejo que sea su argumento implícito. Se utilizará por ejemplo en la forma: complejo a(3.0, 2.0); cout << "El modulo de "; a.prt(); cout<<" es "<<a.modulo()<< endl; 2. Crear una función friend (ver transparencia No.15 de clase) llamada también modulo() que permita calcular el módulo del objeto complejo que sea su argumento explícito. Se utilizará por ejemplo en la forma: complejo b(2.5, -1.0); cout << "El modulo de "; b.prt(); cout<<" es "<<modulo(b)<< endl; Modifique el programa main2.cpp de modo que utilice las dos funciones modulo(). Este es un buen ejemplo de las posibilidades de C++ de cara a definir nuevos tipos de datos. Recuerde que ahora debe incluir el fichero complejo2.h en main2.cpp. 1.3 Ejercicio 3: La clase Fracción En este ejercicio va a crear la clase Fraccion, que permite trabajar con fracciones como si fuesen un tipo de variables más de C++, de modo análogo a int, long, double, etc. La clase Fraccion debe tener dos variables miembro tipo private: long num, den; las cuales nos servirán para almacenar el numerador y el denominador de la fracción. Debe crear los constructores y escribir las funciones miembro adecuadas para que le permitan escribir el siguiente programa: //fichero main.cpp #include "fraccion.h" void main(void)

Practica Nº 4 Programación en C++ Pág. 4 // declaración de fracciones Fraccion f1(1, 4); // Representa 1/4 Fraccion f2(1, 2); // Representa 1/2 Fraccion f3; // Representa 0/1 Fraccion f4(4); // Representa 4/1 // oporaciones aritméticos Fraccion suma = f1.suma(f2); Fraccion resta = f1.resta(f3); Fraccion producto = f1.multiplica(f4); Fraccion cociente = f1.divide(f2); cout << "Primera fracción: " ; f1.prt(); cout << "Segunda fracción: " ; f2.prt(); cout << "Suma: " << suma.prt(); cout << "Resta: " << resta.prt(); cout << "Producto: " << producto.prt(); cout << "Cociente: " << cociente.prt(); cout << "Ya he terminado." << endl; Debe crear un nuevo proyecto Ejer3 y los ficheros Fraccion.h, Fraccion.cpp y main.cpp. Recuerde que los dos primeros son para la clase Fraccion y main.cpp es para el programa principal. 1.4 Ejercicio 4: La clase cuenta_corriente Con este ejercicio se pretende que el alumno se familiarice con las clases de C++. Cree un nuevo proyecto llamado Ejer4 dentro de su directorio de trabajo. Los ficheros de partida de este ejercicio son: cuenta.h, cuenta.cpp y bancot.cpp (donde estará main). // Fichero cuenta.h class cuenta_corriente private: // declaración de variables miembro -privadas, por defectodouble saldo; // saldo actual de la cuenta double interes; // interes en tanto por 1 public: // declaración de funciones miembro // constructor de la clase cuenta_corriente(double inicio, double int100); void deposito(double cantidad); // hacer un deposito double pago(double cantidad); // hacer pago (si se puede) void abono_interes(); // abonar intereses double obtener_saldo(); // preguntar el saldo // transferencia de objeto implícito a objeto destino double transfer(cuenta_corriente& destino, double cantidad); ; // Fichero cuenta.cpp // Definición de las funciones de la clase cuenta_corriente #include <iostream.h> // se incluye la declaración de cuenta_corriente #include "cuenta.h" // funcion round() para redondear céntimos. // No es función miembro double round(double cantidad);

Practica Nº 4 Programación en C++ Pág. 5 // Constructor de la clase: // Abrir cuenta con saldo e interés en % cuenta_corriente::cuenta_corriente(double inicio, double int100) saldo = inicio; interes = int100/100.0; // Depositar cantidad en cuenta. // No se chequea si el valor es positivo void cuenta_corriente::deposito(double cantidad) saldo += cantidad; // Función para retirar cantidad. // Se devuelve cantidad o cero (si no hay saldo) double cuenta_corriente::pago(double cantidad) // Si hay saldo suficiente if(cantidad <= saldo) saldo -= cantidad; return cantidad; // No hay saldo suficiente else return 0.0; // Función para calcular interés y sumarlo void cuenta_corriente::abono_interes() // cálculo del interés double intereses = round(saldo * interes); // se incrementa el saldo saldo += intereses; // Preguntar el saldo double cuenta_corriente::obtener_saldo() // de devuelve el valor del saldo return saldo; // Función para hacer una trasferencia. // El objeto origen es el argumento implícito. // El objeto destino es el argumento explícito double cuenta_corriente::transfer(cuenta_corriente& destino, double cantidad) // Se accede directamente a la variable saldo // del objeto origen. Para acceder a saldo de // destino se utiliza el operador punto. if (saldo < cantidad) return 0.0; saldo -= cantidad; destino.saldo += cantidad; return cantidad; // Función para redondear los céntimos // No es función miembro double round(double cantidad) long centimos = long(100.0 * cantidad + 0.5); return double(centimos)/100.0;

Practica Nº 4 Programación en C++ Pág. 6 // Fichero bancot.cpp // Calcular el saldo en una cuenta bancaria #include <iostream.h> #include "cuenta.h" void main(void) // Obtener los datos del usuario double saldo; // Se leen las variables del programa // Datos para el objeto mi_cuenta cout << "Teclee los datos de mi_cuenta: " << endl; cout << "Saldo inicial: "; cin >> saldo; // llamada al constructor. // Se crea un objeto de la clase cuenta_corriente // con nombre mi_cuenta // Se le pasa un interés mensual cualquiera cuenta_corriente mi_cuenta(saldo, 1.0); // Datos para el objeto su_cuenta cout << "\nteclee los datos de su_cuenta: " << endl; cout << "Saldo inicial: "; cin >> saldo; // llamada al constructor. // Se crea un objeto de la clase cuenta_corriente // con nombre su_cuenta // Se le pasa un interés mensual cualquiera cuenta_corriente su_cuenta(saldo, 1.0); // Transferencia int tr = 1; double cantidad = 0.0; while (tr==1) cout << "\nteclee los datos de la transferencia" << "\n1. de mi_cuenta a su_cuenta" << "\n2. de su_cuenta a mi_cuenta" << endl; cin >> tr; cout << "\nteclee la cantidad: " << flush; cin >> cantidad; cout << "\nlos saldos antes de la transferencia son:" << "\n En mi_cuenta: " << mi_cuenta.obtener_saldo() << "\n En su_cuenta: " << su_cuenta.obtener_saldo() << endl; if (tr==1) // mi_cuenta se pasa como argumento implícito // su_cuenta se pasa como argumento explícito if (mi_cuenta.transfer(su_cuenta, cantidad)==0.0) cout << "\nsaldo insuficiente en mi_cuenta" << endl; else if (tr==2) if (su_cuenta.transfer(mi_cuenta, cantidad)==0.0) cout << "\nsaldo insuficiente en su_cuenta" << endl; else cout << "\ntransferencia mal definida: " << "Teclee de nuevo." << endl;

Practica Nº 4 Programación en C++ Pág. 7 cout << "\nlos saldos tras la transferencia son:" << "\n En mi_cuenta: " << mi_cuenta.obtener_saldo() << "\n En su_cuenta: " << su_cuenta.obtener_saldo() << endl; cout << "\ndesea hacer una nueva transferencia? " << " Teclee 1 (SI) o 2 (NO)" << endl; cin >> tr; // fin del while cout << "Ya he terminado. " << endl; Cree el ejecutable de este proyecto y ejecútelo practicando con las trasferencias entre las dos cuentas corrientes, observando los resultados. Adicional: Como habrá podido notar, no hemos usado las funciones miembro deposito ni abono_intereses. Trate de usarlas desde main.