Estructura de Datos En C++

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Curso de java básico (scjp)
Abstracción de Datos Arrays.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Estructura de Datos En C++
Programación Científica
Programación I Teoría III
Programación I Teoría IV
Direcciones, Arreglos y Argumentos de Funciones
Estructuras de datos. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
INFORMATICA I Arreglos 1 CLASE 17.
Funcionamiento, programación
Estructuras Compuestas.
Unidad 3 Punteros.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Estructura de Datos En C++
Diseño de algoritmos “Punteros”
Introducción a los punteros
Estructura de Datos En C++
Informática Ingeniería en Electrónica y Automática Industrial
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Índice. Revisando conceptos acerca de la memoria.
Programación III Clase 08 Arreglos.
Estructuras.
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.
Programación Científica
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 4 - Arrays Índice del Capítulo 4.1Introducción 4.2Arrays 4.3Declaración de Arrays 4.4Ejemplos.
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.
Estructura de Datos En C++
ESTRUCTURA DE DATOS EN JAVA
Clase 10: Estructuras de datos y arreglos.
Estructura de Datos En C++
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Unidad VI Registros (estructuras, uniones y enumeraciones)
Tipo de Datos Básicos.
PUNTEROS Ing Anghello Quintero.
El lenguaje de programación C - Vectores y matrices -
Aplicación de estructuras de datos
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Clase 10 Apuntadores & Memoria Dinámica
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
PUNTEROS Y REFERENCIAS
Estructura de Datos En C++
APUNTADORES.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Registros Departamento de Computación
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Arreglos: Vectores Departamento de Computación
ARREGLOS (arrays).
Arrays multidimensionales en JAVA
Arreglos unidimensionales
Al finalizar el curso el alumno será capaz de: Diseñar algoritmos utilizando estructuras estáticas de datos y programación modular.
Estructura de Datos En C++
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS EN C.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Transcripción de la presentación:

Estructura de Datos En C++ Dr. Romeo Sánchez Nigenda. E-mail: romeo.sanchez@gmail.com http://yalma.fime.uanl.mx/~romeo/ Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves, 3:30pm-4:30pm Miércoles, 2:00pm-4:00pm Viernes. Website: http://yalma.fime.uanl.mx/~romeo/ED/2011/ Sesiones: 48 * Slides aumentados con información de Dr Roger Ríos.

Objetivo General: Conocerá y manejará las estructuras internas de información Temario: Conceptos Básicos La Pila Colas Recursión Listas Árboles Ordenamiento Búsqueda Administración de Almacenamiento Total a calificar: 110 puntos. 40% Tareas 30% Examen Parcial 30% Examen Final 10% Participación

Material de apoyo: Software: Estructura de Datos con C y C++. Yedidyah Langsam, Moshe J. Augenstein, Aaron M. Tenenbaum, Brooklyn College Segunda Edición, Prentice-Hall. Algorithms. Third Edition. Parts 1-4, Fundamentals Data Structures Sorting Searching Robert Sedgewick. Estructura de Datos. Román Martínez, Elda Quiroga. Thomson Learning. Cualquier libro de Estructura de Datos! Software: Compiladores GCC (GNU Compiler Collection) IDEs (Integrated Development Environment): http://www.eclipse.org/downloads/ http://kdevelop.org/ http://www.bloodshed.net/devcpp.html

1. Conceptos Básicos Objetivo: Se conocerá el concepto de las estructuras de datos, como se almacena la información, y las estructuras de datos fundamentales utilizadas en la computadora. Temario: Definición del término Estructura de Datos. Definición y especificación lógica de un TDA Arreglos Registros Conjuntos

Arreglos Definiciones Unidimensional: Conjunto finito y ordenado de elementos homogéneos Elementos de igual tamaño almacenados linealmente en posiciones de memoria consecutivas El nombre del arreglo es visto como un puntero al primer elemento del arreglo Operaciones Básicas Extracción: Función que toma un arreglo a y un índice i, y retorna un elemento del arreglo: int x = a[i]; Almacenamiento: Acepta un arreglo a, un índice i, y un elemento x, y asigna a[i] = x;

Arreglos Declaración Inicialización Tipo NombreArray [NúmeroElementos] Ejemplos: float salarios[5]; char alfabet[30]; [0] [1] [2] [3] [4] Inicialización Por defecto: Cuando son creados, se aplica solamente a arreglos globales y estáticos Explícita: Cuando son creados, suministrando datos de iniciación En ejecución: Durante ejecución, cuando se asignan o copian datos al arreglo. Ejemplos double scores[5] = {5.5, 6.7, 9.8, 10.0, 8.7}; int estado[3] = {-1, 0, 1}; char alfabeto[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘\0’}; char vocales[10] = {‘a’, ’e’, ‘i’, ‘o’, ‘u’,’\0’};

Arreglos El nombre del arreglo es la dirección de su primer elemento Ejemplos: int v[50]; int *p; p = v; // Equivalente a p = &v[0]; *p = 5; // Equivalente a v[0] = 5; p = p + 5; // Equivalente a p = &v[5]; *p = 9; // Equivalente a v[5] = 9; double x[40]; int i; for (i = 0; i < 40; i++) x[i] = 1.0; *(x + i) = 1.0; double *p, x[40]; p = x; p[i] = 1.0; *(p + i) = 1.0; for (i = 0; i < 40; i++, p++) *p = 1.0;

Arreglos No existen Strings en C, es solamente un arreglo de caracteres Ejemplo: Char *p = “ejemplo”; La variable puntero p obtiene la dirección del primer elemento en el arreglo (e). El compilador coloca un carácter null al final del arreglo int string_length(char* x) { int l = 0; if (!x) return 0; while (*x != 0) { x++; l++; } return l; while (*(x++))

Arreglos Multidimensionales Por dimensión entendemos como el número de índices utilizados para referirse a un elemento particular en el arreglo. Bidimensional: Type ArrayName[numFilas][numColumnas] Ejemplo: int miarray[3][5]; En memoria [0][0] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] … [Filas-1][Cols-1] Columna 1 2 3 4 Fila 0 Fila 1 Fila 2 miarray[1][2] Inicializamos el array: int fila, columna; for(fila = 0; fila < numFilas; fila++) for(columna = 0; columna<numColumnas; columna++) miarray[fila][columna] = 0;

Arreglos Multidimensionales A través de punteros: int miarray[3][5] [0][0] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] … [Filas-1][Cols-1] int *p = *myarray; for(int fila=0;fila<3;fila++) for(int col=0;col<5;col++) *(p + 5*fila + col) = 0; int (*nn)[5] = ia; for (int pn=0;pn<15;pn++){ cout<<"ia: "<<*(*nn+pn)<<endl; } int *myp = *ia; cout<<"ia: "<<*(myp+pn)<<endl;

Registros (estructuras) en C/C++ Un registro o estructura es un grupo de componentes en el cual cada componente tiene su propio identificador, cada uno de los cuales se conoce como un elemento (campo) de la estructura Es un grupo de variables (elementos) que pueden ser de diversos tipos sostenidas agrupadas en una sola unidad. La unidad es la estructura. Definición general: struct type-name {elementos};

Registros (estructuras) en C/C++ Ejemplo: struct { char sexo; char primernombre[10]; char apellido[15]; } minombre; La definición crea una variable minombre de tipo estructura con 3 campos La definición por sí misma no genera asignación de memoria, ésta se da únicamente cuando variables del tipo de la estructura son instanciadas

Registros (estructuras) en C/C++ Podemos usar etiquetas, y declarar variables usando la etiqueta: struct tiponombre{ char sexo; char primernombre[10]; char apellido[30]; }; struct tiponombre minombre, tunombre; typedef struct{ } TIPONOMBRE; TIPONOMBRE minombre, tunombre;

Registros (estructuras) en C/C++ Para acceder a los elementos de una estructura, usamos la variable y el nombre del elemento separados por el operador de punto: cout<<“Apellido: “<<minombre.apellido; Para almacenar valores: minombre.sexo = ‘M’; //Usamos índices en elementos arreglo for (int i=0;i<30;i++) tunombre.apellido[i] = minombre.apellido[i] ;

Registros (estructuras) en C/C++ Puede declararse que un elemento de una estructura sea otra estructura: typedef struct{ char calle[30]; int num; char ciudad [10]; char estado [3]; char cpostal [6]; } TIPODIRECCION; TIPONOMBRE alumnonombre; TIPODIRECCION alumnodireccion; } TIPOALUMNO; TIPOALUMNO alumno_x; Como accesar al valor de calle a través de la variable alumno_x?

Registros (estructuras) en C/C++ Ejemplos main(){ struct tiponombre x; //x es una instancia de tiponombre struct tiponombre* y; //y es un puntero a una instancia de tiponombre x.sexo = ‘M’; y = &x; //y apunta a la dirección de la estructura x y ->sexo = ‘f’; //Igual a x.sexo = ‘f’; } Como implementaria un conjunto de estructuras? struct tiponombre nombres[5]; TIPONOMBRE nombres[5]; typedef struct{ TIPOALUMNO alumno; RECORDS * palumno; } RECORDS;

Uniones La Union permite que una variable se interprete de formas distintas #define VIDA 1 #define AUTO 2 #define CASA 3 struct addr{ int num; char calle[30]; …; } struct seguro{ int segnumero; char nombre[50]; struct addr direccion; int cantidad; float premium; int clase; union{ struct{ char beneficiario [50]; } vida; int deducible; char licencia [20]; char modelo[20]; int año; } auto; int deduciblecasa; int añoconstruccion; } casa; } seguroinfo; }

Uniones Válido referirse a los elementos comunes de la estructura: struct seguro p; p.segnumero; Los elementos de la Union dependerán de la lógica de programación If (p.clase == VIDA) cout<<“Beneficiario: <<p.seguroinfo.vida.beneficiario; else if (p.clase == AUTO) cout<<“Licencia: <<p.seguroinfo.auto.licencia; else if (p.clase == CASA) cout<<“Deducible: <<p.seguroinfo.casa.deduciblecasa; else cout<<“Opción no válida!”; Entonces un arreglo declarado como: struct seguro [100]; podría contener tipos diferentes de seguros durante ejecución.

Estructuras como parámetros Por referencia . . . struct seguro poliza; imprime_poliza(&poliza); void imprime_poliza(struct seguro * mipoliza){ cout<<“Número de Póliza: <<mipoliza->numseguro; …. if(mipoliza->clase == VIDA){ cout<<mipoliza->seguroinfo.vida.beneficiario; } …