Tema: Arreglos de Objetos en C++.



Documentos relacionados
Tema: Sobrecarga de Operadores.

Tema: Clases y Objetos en C++.

Tema: Herencia Simple y Múltiple en C++.

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Tema: Patrones de Diseño.

Prof. Dr. Paul Bustamante

Capítulo 6. Introducción a la POO

Tema 4: Estructuras de Control Estructura y Contenidos

Curso 0 de Informática

11. Algunas clases estándar de Java (II)

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Examen Principios de Programación Febrero 2012

Tema: INTÉRPRETE ENSAMPOCO/3

Modulo 1 El lenguaje Java

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

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

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

Introducción al tipo de dato ARRAY

Estructuras de repetición

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

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

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

CURSO 2º GRUPO Junio 2011

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA

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

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

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

Introducción a la programación orientada a objetos

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

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Fundamentos de la Programación

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

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Prof. Dr. Paul Bustamante

Examen escrito de Programación 1

Tema: Punteros a Objetos. Puntero this.

Organización de Computadoras

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Prof. Dr. Paul Bustamante

Constructores y Destructores

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

LENGUAJE. Tema 1 - Introducción

Tema: Plantillas en C++.

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

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

15. Parámetros o argumentos

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

Prof. Dr. Paul Bustamante

Capítulo 6. Asociaciones y Declaraciones.

Programación Avanzada para Sistemas de Telecomunicación Arrays

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

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

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno

Java Inicial (20 horas)

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Objetivos. El alumno conocerá los elementos indispensables de un ambiente de programación y será capaz de realizar programas básicos en lenguaje C.

Programación Orientada a Objetos en JAVA

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

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

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

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

9. Objetos y clases Clases

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Programación Orientada a Objetos con Java

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

2. Estructura de un programa en Java

Problema - Votación. Entrada. Salida. Primera Olimpiada de Informática 1

Resumen Lenguaje Java

Plantillas de clases ( Templates )

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

CONTROL DE ASISTENCIA DE PERSONAL

Para dudas, comentarios escribe a: C BASICO

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

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

Tema: CREACIÓN DE GRÁFICOS ESTADISTICOS EN EXCEL 2013.

Estructura de datos tipo vector.

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

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Introducción a la Programación Orientada a Objetos

Manual de Usuario Sistema SIGESP 1 de 15 Módulo: Sistema de Seguridad Rev. Nº 00. Revisado Por : Firma: Elaborado Por: ADS. Teresa Andrade Firma

Contenido. Capítulo 1. Introducción a lenguaje C 1

Unidad III El lenguaje de programación C

Tema 2. Software. Informática (1º Ingeniería Civil)

Informática I. While & do While

MANUAL DE REFERENCIA DE C++

Práctica 8: Barreras

Hoja de problemas Estructuras de Control

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Transcripción:

Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos. Implementar programas en C++ que incluyan el uso de Arreglos de Objetos. Materiales y Equipo Computadora con el software DevC++ Guía Número 5 Introducción Teórica Arreglo de objetos. La función básica de un arreglo es almacenar en una variable más de un valor de un mismo tipo de dato, por ejemplo la siguiente declaración int numero [5]; permite almacenar en la variable numero, 5 valores enteros. En las clases el concepto de arreglos es el mismo, con la diferencia que ahora se almacenarán objetos de una clase o de diferentes clases. Los objetos se pueden estructurar como un array. Los objetos son variables y tienen las mismas capacidades y atributos que cualquier tipo de variables, por tanto es posible disponer objetos en un array. La sintaxis es exactamente igual a la utilizada para declarar y acceder al array. También disponemos de arrays bidimensionales. Cuando se crea un array de objetos éstos se inicializan llamando al constructor sin argumentos. Por consiguiente, siempre que se prevea organizar los objetos en un array, la clase debe tener un constructor que pueda llamarse sin parámetros.

2 Programación II, Guía 5 La sintaxis para declarar un arreglo de objetos es la siguiente: <nombre de clase> <nombre del arreglo > [<numero de elementos>]; <nombre_clase> <nombre del arreglo> [<numero de elementos>] = {elementos; Ejemplo para crear dos objetos de la clase celular: celular acell [2]; Inicialización: nombre del arreglo [índice].función(valores); Creación de objetos en forma dinámica. New y Delete. En C++ se puede asignar memoria utilizando el operador new y liberarse mediante el operador delete. Estos operadores no se pueden combinar unos con otros, es decir debe llamarse a delete solo con un puntero obtenido mediante new. Los objetos también se les puede pasar un valor inicial con la sentencia new. SINTAXIS: <nombre del puntero >= new <tipo de dato>; delete <nombre del puntero>; <nombre del puntero> = new <tipo de dato> (valor inicial); También se pueden crear arreglos de objetos asignados dinámicamente, estos arrays pueden utilizar la sentencia new. La sintaxis general es: DECLARACIÓN DEL ARRAY: <nombre del puntero >= new <tipo de dato> [<numero de elementos>]; puntero = new tipo[tamaño]; Ejemplo de un arreglo creado en forma dinámica: #include<iostream> using namespace std;

Programación II. Guía 5 3 int main( ) { int *p; // Se declara el puntero int i; p = new int[5]; system( cls ); if (!p) { cout<< Error de asignacion\n ; exit(1); /* al puntero se le asigna la memoria en forma dinámica y se crea el arreglo */ // Se verifica que exista el puntero for (i = 0; i < 5; i++) p[i] = i+1; // Para introducir datos al arreglo for (i = 0; i < 5; i++) // Para mostrar los datos del arreglo { cout<< Este es el entero en p[ <<i<< ]: ; cout<<p[i]<< \n ; delete[ ] p; // Se libera la memoria reservada system( pause ); Procedimiento Ejemplo 1: En el siguiente programa se muestra el uso de arreglos dinámicos de objetos usando NEW y DELETE El programa crea una clase denominada alumno, la cual contiene un arreglo para el nombre del alumno y un arreglo para sus notas. A partir de esta clase se crea un puntero al objeto alumno y a partir de este puntero se libera memoria para un arreglo de objetos alumno por medio de NEW y el puntero a objeto para incluir todos los alumnos de una clase en tiempo de ejecución. #include <iostream> #include <iomanip> using namespace std; #define CAL 5 // Define constante para el numero de calificaciones a manejar class Alumno { private: // Definición de la clase

4 Programación II, Guía 5 char nombre[50]; float calificaciones[cal]; ; public: Alumno( ){ ; ~Alumno( ){ ; void ingresar( ); void mostrar_nombre( ); void reporte( ); // Función set // Muestra el nombre del alumno // Muestra las notas del alumno void Alumno::ingresar( ) //Ingresa los datos de un alumno { fflush(stdin); cout <<"Ingrese el Nombre del estudiante : "; gets(nombre); int i; for (i = 0; i < CAL; i++) { cout << "Por favor ingrese la calificacion No. " << i+1; cout <<" : "; cin >> calificaciones[i+1]; void Alumno::mostrar_nombre() { cout << nombre; //Escribe el nombre del alumno en la pantalla void Alumno::reporte() { int i; //Genera reporte del estudiante seleccionado cout<<"------------------------------------------------------"<<endl; // Se le da formato a la tabla. for (i = 0; i < CAL; i++) { cout<<setw(15)<<"nota "<<i+1<<" : "<<calificaciones[i+1]<<setw(5)<<endl; int main( ) { int num_est = 0; // Número del objeto en el vector int numero_objeto = 0; // Apuntador del número del objeto int opcion; // Opción del menú char nom[50]; // Arreglo de 50 caracteres para el nombre int i=0; // Auxiliar int n=0; // Opción en el menú int dim; // Dimensión del arreglo de objetos Alumno *p; // Crea un puntero a objeto alumno cout << "Cuantos alumnos tiene la clase? "; cin >> dim; //Para cuantos objetos hay que reservar memoria?

Programación II. Guía 5 5 cout << "\n"; p = new Alumno[dim]; /* Asigna memoria dinámicamente y se crea el arreglo de tipo Alumno */ if (p == 0) { cout << "Error no hay suficiente memoria"; return 0; ; //Si p = 0 no hay memoria suficiente //Sale del programa do //estructura do...while que mantiene en el ciclo principal { cout<<" Menu"<<endl; cout<<" 1. Ingresar datos de un nuevo estudiante. (Nombre y notas)"<<endl; cout<<" 2. Ver lista de estudiantes inscritos."<<endl; cout<<" 3. Reporte de un estudiante."<<endl; cout<<" 4. Salir."<<endl; cout<<"------------------------------------------------"<<endl; fflush(stdin); cout<<"\n Elija una opcion del menu (1-4): "; cin>>opcion; switch (opcion) { case 1: (p+numero_objeto) -> ingresar( ); //operador flecha en vez de operador punto numero_objeto++; system("cls"); break; case 2: cout <<"\n"; cout<<"------------------------------------------------------"<<endl; cout<<" LISTADO DE ESTUDIANTES INSCRITOS "<<endl; cout<<"------------------------------------------------------"<<endl; for (i=0;i<numero_objeto;i++) { cout << "Estudiante numero " << i+1; cout << ": "; (p+i) -> mostrar_nombre( ); cout << "\n"; cout<<endl; system("pause"); system("cls"); break; case 3: cout << "Ingrese el numero de lista del estudiante a generar el reporte: "; cin >> n; if ( n > 0)

6 Programación II, Guía 5 { cout<<"------------------------------------------------------"<<endl; cout<<" ALUMNO: "; (p+n-1) -> mostrar_nombre( ); cout<<endl<<endl; cout<<" NOTAS OBTENIDAS "; cout << "\n"; (p+n-1) -> reporte( ); cout<<"------------------------------------------------------"<<endl; else cout<<"digite un codigo de alumno valido "<<endl; cout<<endl; system("pause"); system("cls"); break; case 4: break; default: cout<<"\n\n Ingrese una opcion valida del menu.\n"; system("pause"); system("cls"); while (opcion!= 4); //sale del programa delete [ ] p; //libera la memoria asignada a *p Análisis de Resultados Ejercicio 1: Tomar el código anterior como referencia y realizar los cambios que sean necesarios para crear un programa que simule un sistema de control de notas. Considere que cada alumno puede cursar como máximo 5 asignaturas por ciclo. Para cada asignatura se deben considerar notas por cada período (el ciclo está formado por 3 períodos) y una nota final de laboratorio. Las notas deben promediarse para obtener una nota global por materia, considerando los siguientes porcentajes por período (1º: 30%; 2º: 35% y 3º: 35%),

Programación II. Guía 5 7 además debe considerarse que la parte teórica tiene una ponderación del 60% y el laboratorio del 40 %. El programa debe tener un menú con las siguientes opciones: Opción de menú 1: Ingresar datos de los alumnos y las asignaturas. Opción de menú 2: Mostrar los datos de un alumno en particular, haciendo uso del miembro carnet. A partir de los datos introducidos debe mostrarse además, la nota promedio de cada asignatura, indicar si la materia está Aprobada ó Reprobada. Opción de menú 3: Salir del programa. El menú deberá estar siempre activo, en la misma posición en pantalla, hasta que el usuario seleccione la opción salir. Investigación Complementaria 1. Investigue cuales son los usos mas comunes de punteros a objetos en C++. 2. Qué es el puntero this. Utilización en C++. 3. Utilidad de las clases amigas en C++. Incluir ejemplos de su uso.

8 Programación II, Guía 5 Guía 5: Arreglos de Objetos en C++. Hoja de cotejo: 5 Alumno: Máquina No: Docente: Docente: GL: Fecha: EVALUACIÓN % 1-4 5-7 8-10 Nota CONOCIMIENTO Del 20 al 30% Conocimiento deficiente de los fundamentos teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos APLICACIÓN DEL CONOCIMIENTO Del 40% al 60% ACTITUD Del 15% al 30% No tiene actitud proactiva. Actitud propositiva y con propuestas no aplicables al contenido de la guía. Tiene actitud proactiva y sus propuestas son concretas. TOTAL 100%