Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

Clases en C++.
Arrays Fundamentos de Programación I
Creación y destrucción de objetos
PBN © Jaime Alberto Parra Plaza CLASE 8 TALLER: INSTRUCCIONES DE TRANSFERENCIA DE DATOS.
Ejemplo de Programa C++
Funciones y recursividad
ALGORITMO, ESTRUCTURAS Y PROGRAMACIÓN I PROFESORA: NELWI BÁEZ.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Procedimientos y Funciones
Programacion de Computadora Prof. Obadiah Oghoerore.
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Tipos de Datos Abstractos Vector de Racionales
A partir del lenguaje C Entorno de programación Visual C++
INFORMATICA I Funciones CLASE 13.
Prof. Franklin Cedeño. FUNCIONES EN C++ Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide y vencerás”. Esta estrategia.
Implementación de Listas
ARREGLOS Estructuras de datos.
SOBRECARGA DE FUNCIONES
Estructuras de Datos Manipulación de la Especificación de la Lista en C++
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
Algoritmos y Estructuras de Datos Introducción al C++ Herencia.
ALGORITMO, ESTRUCTURAS Y PROGRAMACIÓN I PROFESORA: NELWI BÁEZ.
Programación Orientada a Objetos usando C++
CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.
Diseño de algoritmos “Estructuras”
LIA. SUEI CHONG SOL, MCE.. #include void main() { float N1,N2,N3,SUMA; cout>N2;
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Programación III Clase 07 Funciones.
3.1 Declaración de tablas en C
Programación III Clase 06 Funciones.
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Ejemplos openMP.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
METODOLOGÍA DE LA PROGRAMACIÓN
PUNTEROS Ing Anghello Quintero.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++. 2 PROYECTOS EN C++
Sobrecarga de operadores
Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO326: Seminario II 2do. Sem
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO329.
Arreglos de Objetos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Sesión 10: Sobrecarga (2) /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
/** * Write a description of class General here. */ public class General { // instance variables - replace the example below with your own private int.
Ejemplos: float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; int N[] = {1, 2, 3, 6}; int M[][3] = {
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Corporación Universitaria del Caribe CECAR Fundamentos de programación II.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
ARREGLOS Por: Astaroth.  En la clase anterior vimos que c++, es un mundo de cajas, bien hoy hablaremos de una caja un tanto particular “vagoncin” el.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada HERENCIA Tema: HERENCIA Ing. Javier Chamorro Cerón.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Constructores y Sobrecarga Ing. Rafael Alfredo Zelaya Amaya.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Transcripción de la presentación:

Estructuras de Datos Cont. C++ y Tipos de Datos

Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota; int aAnno_ing;

public: estudiante( int eCarne, float eNota, char eNombre[], int eAnno_ing); estudiante();//Constructor por defecto float ver_nota(); int key(); void ver_nombre(); int ver_anno(); void asignar_nota(float eNota); void asignar_carne(int eCarne); void asignar_anno(int eAnno_ing); void asignar_nombre(char eNombre[]); };

//Constructores estudiante::estudiante( int eCarne, float eNota, char eNombre[ ], int eAnno_ing) { aCarne=eCarne; aNota=eNota; strcpy(aNombre, eNombre); aAnno_ing=eAnno_ing; } estudiante::estudiante() { aCarne=0; aNota=0; aNombre[0]='\0'; aAnno_ing=0; }

float estudiante::ver_nota() { return aNota; } void estudiante::ver_nombre() { cout<<aNombre; } int estudiante::ver_anno() { return aAnno_ing;} int estudiante::key() { int aKey; aKey=((aAnno_ing)* aCarne); return aKey; }

void estudiante::asignar_carne(int eCarne) { aCarne=eCarne; } void estudiante::asignar_nota(float eNota) { aNota=eNota; } void estudiante::asignar_nombre(char eNombre[]) { strcpy(aNombre, eNombre); } void estudiante::asignar_anno(int eAnno_ing) { aAnno_ing=eAnno_ing; }

void main(void) { estudiante grupo1[10]; int aCarne; char aNombre[20]; float aNota; int aAnno_ing; int k; //Ciclo de Lectura de datos for(k=0;k<10;k++){ cout<<"Estudiante #:" << k+1; cout<<"Entre Carnet:"; cin>>aCarne; grupo1[k].asignar_carne(aCarne); … //Igual se hace para el nombre, la nota y el año de ingreso… }

//Ciclo para imprimir el arreglo de objetos: for(k=0;k<10;k++){ cout<<"Estudiante:" <<k+1<<"\n"; cout<<grupo1[k].key(); grupo1[k].ver_nombre(); cout<<grupo1[k].ver_nota(); cout<<grupo1[k].ver_anno(); }

Usando el arreglo de estudiantes del ejemplo anterior, se implementará una función que busca el estudiante con la mayor nota y devuelve su número de identificación y la nota Los dos resultados que la función debe retornar se devolverán en una estructura simple (aunque también se podría realizar con dos parámetros pasados por referencia.)

Se define antes del main la siguiente estructura y se especifica la función buscar_mejor: struct resultado{ float nota; int id; }; void buscar_mejor( estudiante grupo[ ], resultado &result);

La implementación de la función es: void buscar_mejor(estudiante grupo[ ], resultado &result) { float temp_nota=0.0; int temp_id; for(int i=0; i<10; i++){ if((grupo[i].ver_nota())>temp_nota) { temp_nota=grupo[i].ver_nota(); temp_id=grupo[i].key(); } result.nota=temp_nota; result.id=temp_id; }

Finalmente luego de tener “lleno” el vector de objetos se invoca la función y se imprimen los resultados: struct resultado result; // Variable auxiliar buscar_mejor(grupo1, result); cout<<"El mejor estudiante es:"<<"\n"; cout<<result.id; cout<<result.nota;

Especificación de un Tipo de Datos Escalar Identificación: Debe tener un nombre Dominio: Conjunto de valores que hacen parte del tipo. Puede ser explícito o implícito Operaciones: Que operaciones son aplicables a los valores del tipo y que efecto tiene su aplicación. Normalmente a una operación se le asocia un símbolo

El efecto de la operación puede ser descrito mediante: –Mediante Pre y Post Condiciones las cuales pueden ser expresadas mediante: Descripciones verbales Cálculo de Predicados Pseudo Lenguaje de Programación –Axiomas Condiciones que deben cumplirse para que la operación pueda realizarse Describen el resultado de las acciones llevadas a cabo y el valor retornado (si lo hay)

Color Ejemplo: Tipo de datos Color Dominio (explícito): {rojo, amarillo, azul, verde, naranja, violeta}* Operaciones: Se definirán 4 operaciones: –Mezclar: Combina 2 colores primarios y retorna otro color (secundario) –Primario: Dice si un color es primario o no –Formado_por: Devuelve los colores que conforman a un color secundario –Asignar: Asigna un color dado a una variable de tipo color *Los 3 primeros son colores primarios

Especificación de las operaciones Color Mezclar(Color c1, Color c2) Pre: c1 y c2 son colores primarios. Post: La mezcla es un color formado por la combinación de los colores c1 y c2 en cantidades iguales. bool Primario(Color c) Pre: Ninguna Post: Si c es un color primario, entonces Primario devuelve verdadero, sino devuelve falso.

void Formado_por(Color c, *Color c1, *Color c2) Pre: c es un color secundario. Post: c1 y c2 son dos colores primarios que forman el color c. void Asignar(*Color c1, Color c2) Pre: Ninguna Post: c1 tiene el valor de c2. Nota: El símbolo * se utiliza en los parámetros para indicar que se trata de un parámetro de retorno

Especificación de un Tipo de Datos Agregado Aparte de lo anterior se debe especificar: Componentes: Número y tipo Se considerarán estos casos: - Tipos de Datos con un número de componentes fijo de tipo variable (como las estructuras)  Tipos Estructurados - Tipos de Datos con número variable de componentes pero todos ellos del mismo tipo  Tipos iterados

Estructura de Composición: Es la forma como están unidos los componentes. Los componentes se unen a través de enlaces. –Aridad: Número de enlaces de cada componente –Ciclicidad: ¿Es posible recorrer la cadena de enlaces a partir de un elemento y volver a él?

Cadena_car Ejemplo: tipo de dato iterado Cadena_car Dominio: Todas las cadenas de caracteres ASCII de tamaño 5. Operaciones: –Car_izq: Devuelve el primer carácter de la cadena –Agregar: Añade un carácter al final de la cadena –Invertir: Invierte la cadena

Elementos componentes: Caracteres ASCII. Máximo 5. Estructura de composición: Relación lineal y no cíclica entre los componentes Especificación de las operaciones: char Car_izq(Cadena_car c) pre: El tamaño de la cadena es > 0 y < 6. post: El valor devuelto es el primer carácter de la cadena c.

void Agregar(char l, Cadena_car c) pre: El número de elementos de la cadena c es < 5. post: La cadena c tiene una longitud mayor en una unidad a la longitud que tenía y el carácter contenido en l es su último carácter. void Invertir(*Cadena_car c) pre: El número de elementos de la cadena c es < 6. post: La secuencia de caracteres en la cadena c está invertida.