Guía teórica de manejo de estructuras de datos

Slides:



Advertisements
Presentaciones similares
Funciones y recursividad
Advertisements

Elementos básicos del Lenguaje
Procedimientos y Funciones
Introducción al lenguaje C++
SOBRECARGA DE FUNCIONES
Creación de Aplicaciones
Tema 9 Estructuras.
Clase Teórica No. 4 Programación IV
Programación III Clase 06 Funciones.
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.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Elementos básicos del lenguaje
Elementos básicos del lenguaje
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Algoritmo.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
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.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Introducción a la Programación Multimedial
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Formas de Desisión Operadores lógicos II.
IntroducciÓn a los Arreglos (“arrays”) en C++
Olimpiadas Chilenas de Informática - Formación
PHP Hypertext Preprocessor
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
Algunas ideas básicas de C++
Programación Orientada a Eventos
Métodos y parámetros.
FUNCIONES Y PROCEDIMIENTOS
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
TIPOS DE DATOS Cadenas y caracteres PARCIAL III.
Métodos en Java.
Algunas Características de C++ no presentes en C
Introducción a programación web Martin Esses
Algunas ideas básicas de C++
Nociones básicas sobre C++
Guía teórica de manejo de estructuras de datos
Resolviendo PROBLEMAS DE FRACCIONES
Introducción a programación web Martin Esses
LISTAS..
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Manejo de Excepciones Agustín J. González ELO329.
ESTRUCTURAS DE DECISIÓN
Nociones básicas sobre C++
Manejo de Excepciones Agustín J. González ELO329.
Plantillas (Templates)‏
Algunas Características de C++ no presentes en C
Manejo de Excepciones Agustín J. González ELO329.
Estructuras Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que.
Manejo de Excepciones Agustín J. González ELO329.
PROGRAMACION: Que es un computador: Es un aparato electrónico que tiene el fin de recibir y procesar datos para realización de diversas operaciones..
MATRICES. ¿QUÉ ES UNA MATRIZ? Una matriz es un espacio bidimensional que se genera en la memoria del computador. Las matrices deben tener un nombre que.
Algunas Características de C++ no presentes en C
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Tema 2 Estructura de un programa en C. IWI Tema 2 Programa en C U n programa en C es una serie de instrucciones en un lenguaje muy especifico (similar.
Informática Ingeniería en Electrónica y Automática Industrial
Manejo de Excepciones en C++
Registros tipo struct PROGRAMACIÓN MODULAR.
Herencia en C++ Agustín J. González ELO329.
Algunas Características de C++ no presentes en C
UNIDAD VI ARREGLO UNIDIMENSIONAL
Transcripción de la presentación:

Guía teórica de manejo de estructuras de datos

¿QUÉ ES UNA ESTRUCTURA?  En C++ una estructura es una colección de variables que se referencian bajo el mismo nombre. Las variables que forman la estructura son llamados elementos estructurados. Generalmente, todos los elementos en la estructura están relacionados lógicamente unos con otros. Por ejemplo, se puede representar una lista de nombres de empleados en una estructura. Mediante la palabra clave struct se le indica al compilador que defina una plantilla de estructura.

EJEMPLOS DE ESTRUCTURAS struct Empleado{ string sNombre; int iEdad; string sDomicilio; string sCiudad; char cSexo; int iLegajo; }; struct Persona{ string sNombre; string sApellido; int iEdad; double dAltura; }; struct Jugador { string sNombre; string sApellido; int iCamiseta; int iEdad; double dAltura; int iCantGoles; }; Nota: el punto y coma “;” al finalizar la declaración de la estructura es obligatorio, ya que sino el programa no compila. Las variables del tipo estructuras, al igual que las variables vistas anteriormente, pueden ser pre inicializadas en la declaración: Empleado miEmpleado={"Vicente Fernandez",40,"Corrientes 348","Capital Federal","M",12345};

¿CÓMO USO UNA ESTRUCTURA? void main() { Jugador miJugador; //Declaro miJugador miJugador.Nombre = "Ezequiel"; //defino propiedad miJugador.Camiseta = 10; //defino propiedad cout << "Ingrese la edad del jugador: "; cin >> miJugador.Edad; //Usuario ingresa la edad del jugador }

ESTRUCTURAS COMO PARÁMETROS Podemos pasar las estructuras o sus atributos como parámetros de una función o de un procedimiento Vamos a definir una nueva estructura para mostrar un ejemplo de esto: El prefijo ty adelante del nombre de la estructura es para saber que es un nuevo tipo de dato (viene de type) struct tyMateria { string NombreMateria; int Aula; int CantidadAprobados; int NotaMasAlta; string AlumnoNotaMasAlta; float PromedioAprobados; }; De cada materia queremos saber su nombre, el aula donde se dicta, la cantidad de aprobados, la nota más alta y que alumno la obtuvo y el promedio de los aprobados. Importante: Recuerden que las estructuras se definen fuera del main!

Vamos a crear dos funciones que utilizaremos más adelante: float calcularPromedio(int iAcum, int iCant) { int iProm; iProm = iAcum * 1.0 / iCant; return iProm; } void mostrarDatos(tyMateria materia) { //recibo la materia por parámetro y muestro todos sus atributos cout << "Nombre: " << materia.NombreMateria << endl; cout << "Aula: " << materia.Aula << endl; cout << "Cantidad de alumnos aprobados: " << materia.CantidadAprobados << endl; cout << "Nota mas alta: " << materia.NotaMasAlta << endl; cout << "Alumno con nota mas alta: " << materia.AlumnoNotaMasAlta << endl; cout << "Promedio de las notas: " << materia.PromedioAprobados << endl; Esta función calcula el promedio como lo hacemos siempre, por ahora nada nuevo. Esta función recibe por parámetro una estructura, eso está bien? Claro que sí! La estructura es un tipo de dato como cualquier otro. Entonces la función recibe la estructura y la utiliza para ir mostrando todos sus atributos.

Creamos nuestra estructura y pedimos todos los datos necesarios para llenar sus atributos void main(){ int iCantAlumnos; int iNota; string sNombre; int iAcumNotasAprobadas = 0; //Declaro la estructura y defino propiedades iniciales tyMateria estaMateria; estaMateria.CantidadAprobados = 0; estaMateria.NotaMasAlta = 0; estaMateria.PromedioAprobados = 0; /*Pido al usuario que me de las propiedades de la estructura que no puedo definir por mi cuenta*/ cout << "Ingrese nombre de la materia" << endl; cin >> estaMateria.NombreMateria; cout << "Ingrese el aula" << endl; cin >> estaMateria.Aula; cout << "Ingrese cantidad de alumnos" << endl; cin >> iCantAlumnos;

Por cada alumno, pedimos su nombre y su nota, verificamos si esta última supera a la nota más alta de la materia y en este caso actualizamos la nota más alta y el alumno que la obtuvo. for (int i = 1; i <= iCantAlumnos; i++) { //Por cada alumno pido su nombre y su nota en esta materia cout << "Ingrese nombre del alumno" << endl; cin >> sNombre; cout << "Ingrese nota"<<endl; cin >> iNota; if (iNota >= 6) { //Si el alumno aprobó, aumento en 1 la cantidad de aprobados de la materia. estaMateria.CantidadAprobados++; //Acumulo las notas de los alumnos iAcumNotasAprobadas = iAcumNotasAprobadas + iNota; } if (iNota > estaMateria.NotaMasAlta) { /*Si la nota del alumno supera la nota más alta de la materia, la misma tendrá una nueva nota más alta y un nuevo alumno con nota más alta.*/ estaMateria.NotaMasAlta = iNota; estaMateria.AlumnoNotaMasAlta = sNombre;

Ahora viene lo interesante if (iCantAlumnos > 0) { /*Si la cantidad de alumnos es mayor a cero, calulo el promedio de sus notas. Para esto, llamo a mi función calcularPromedio y le paso, las notas acumuladas y la cantidad de aprobados (atributo de la materia)*/ estaMateria.PromedioAprobados = calcularPromedio(iAcumNotasAprobadas, estaMateria.CantidadAprobados); //Muestro el contenido de la estructura materia mostrarDatos(estaMateria); } else { cout << "No hay alumnos en la materia " << estaMateria.NombreMateria << endl; system("pause"); } //fin del main

Hagamosle zoom a esta línea de código estaMateria.PromedioAprobados = calcularPromedio(iAcumNotasAprobadas, estaMateria.CantidadAprobados); Nuestra función calcularPromedio recibía dos parámetros de tipo int llamados iAcum e iCant. En esta línea de código estamos haciendo dos cosas: A calcularPromedio le estamos pasando como parámetro el acumulador de notas aprobadas y el atributo de cantidad de aprobados de la estructura materia Al atributo promedio aprobados de la materia le estamos guardando lo que devuelve la función promedio Importante! Cuando la función calcular promedio recibe como parámetro estaMateria.CantidadAprobados no está recibiendo toda la estructura, solo recibe lo que se almacena en el atributo cantidad aprobados de la materia. La función no tiene conocimiento de que existe una estructura materia que tiene ciertos atributos, solo recibe lo que le pasan desde el main.

Ahora hagamosle zoom a esta otra línea de código mostrarDatos(estaMateria); Nuestro procedimiento mostrarDatos recibía un único parámetro de tipo tyMateria que lo llamaba materia. Acá lo que estamos haciendo es, justamente, pasarle nuestra materia llamada estaMateria al procedimiento para que éste último la maneje como quiera y haga lo que necesite hacer. Importante! Nótese que acá estamos pasando como parámetro la estructura entera. De esta forma, la función/procedimiento que recibe esta estructura, la maneja según sus necesidades ya que tiene acceso todos los atributos de la misma. Por ejemplo, mostrarDatos muestra por pantalla cada atributo de la materia que le pasamos por parámetro.

RESUMEN Las estructuras son tipos de datos que nos permiten agrupar en ellas un conjunto de variables que los llamamos atributos o propiedades. Los atributos tienen un tipo como cualquier variable y se utilizan como una variable común y corriente. Al crear una estructura estamos creando un nuevo tipo de dato. Debo definirla (crearla), declararla e incializarla. Las estructuras pueden ser pasadas por parámetro completamente a un procedimiento o una función. Podemos pasar un atributo de una estructura como parámetro a una función o procedimiento, pero la función/procedimiento no se enterará que hay una estructura, solo recibirá un dato del tipo de dato correspondiente que se le envía cuando se llama a la función/procedimiento. Las estructuras deben estar definidas fuera del main.