TALLER FINAL DE SEGUNDO CORTE DE ESTRUCTURA DE DATOS Pedro Alejandro Alomía Flórez 1. Explique conceptos apropiados al tema a señalar: a. Clase: una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. b. Dato: El dato es una representación simbólica (numérica, alfabética, algorítmica, entre otros.), un atributo o característica de una entidad. c. Estructura: es una forma de organizar un conjunto de datos elementales (un dato elemental es la mínima información que se tiene en el sistema) con el objetivo de facilitar la manipulación o gestión de dichos datos como un todo, ya sea de manera general o particularmente. d. Tipo de datos: es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. e. Cabecera: se refiere a la información suplementaria situada al principio de un bloque de información que va a ser almacenada o transmitida y que contiene información necesaria para el correcto tratamiento del bloque de información. f. Palabras reservadas: es una palabra que tiene un significado gramatical especial para ese lenguaje y no puede ser utilizada como un identificador en ese lenguaje. g. Struct: es una colección de variables que se referencian bajo el mismo nombre. Una estructura proporciona un medio conveniente para mantener junta información que se relaciona. h. Class: construcción que se utiliza para crear instancias de sí mismo, tiene el mismo significado de clase. i. Unión: es un registro que contiene un dato de interés y al menos un puntero para referenciar (apuntar) a otro nodo. j. Estructuras anidadas: anidar una estructura dentro de otra estructura, y por tanto guardar juntos elementos asociados. k. Herencia: hace referencia a la característica de una clase cuando puede heredar comportamientos y características de más de una superclase. l. Estructura de campos de bits: son grupos de un número determinado de bits, que pueden o no tener un identificador asociado. Representan un artificio que permite utilizar miembros de tamaño arbitrario en estructuras, uniones y clases m. Sintaxis: la sintaxis es el conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación. 2. Escriba la sintaxis de una estructura struct { char sztipo[iString15+iNull_char]; char szmodelo[iString15+iNull_char]; char sztitular[iString20+iNull_char]; int ianio; long int lhoras_motor; float fprecioventa; } stbarco_usado; 3. Escriba la sintaxis de una clase class Nombre { // Variables miembro (habitualmente privadas) miembro_1; //lista de miembros miembro_2; miembro_3; // Funciones o métodos (habitualmente públicas) funcion_miembro_1( ); // funciones miembro conocidas funcion_miembro_2 ( ); // funciones como métodos // Propiedades (habitualmente públicas) propiedad_1; propiedad_2; propiedad_3; propiedad_4; } 4. Explique que es un atributo y de 2 ejemplos. Es una especificación que define una propiedad de un Objeto, elemento o archivo. También puede referirse o establecer el valor específico para una instancia determinada de los mismos. Ejemplos: Atributo(java.lang.String nombre) Crea un nuevo atributo con el nombre dado y un valor inicial de null. Atributo(java.lang.String nombre, java.lang.Object valor) Crea un nuevo atributo con el nombre dado y un valor inicial. 5. Explique que son los métodos y de 3 ejemplos. Es una subrutina asociada exclusivamente a una clase (llamados métodos de clase o métodos estáticos) o a un objeto (llamados métodos de instancia). Ejemplos: java.lang.String getNombre() Devuelve el nombre del atributo actual. java.lang.Object getValor() Devuelve el nombre del atributo actual. java.lang.Object setValor(java.lang.Object nuevoValor) Escribe el valor del atributo actual. 6. Desarrolle un programa que cargue una matriz unidimensional #include<stdio.h> #include<conio.h> #include<iostream.h> void main() { int matriz[20][20],f,c,i,j,max,min; cout<<"Digite el numero de filas: "; cin>>f; cout<<"\nIntroduce el numero de columnas: "; cin>>c; for (i=0;i<f;i++) for(j=0;j<c;j++) cin>>matriz[i][j]; max=matriz[0][0]; min=matriz[0][0]; for (i=0;i<f;i++) for(j=0;j<c;j++) { if (matriz[i][j]>=max) max=matriz[i][j]; } cout<<"\nEl numero mayor de la matriz es: "<<max; getch(); } 7. Desarrolle una matriz que cargue de forma bidimensional dos arrays #include<stdio.h> #include<conio.h> #include<iostream.h> void main() { int matriz[20][20],f,c,i,j,max,min; cout<<"Digite el numero de filas: "; cin>>f; cout<<"\nIntroduce el numero de columnas: "; cin>>c; for (i=0;i<f;i++) for(j=0;j<c;j++) cin>>matriz[i][j]; max=matriz[0][0]; min=matriz[0][0]; for (i=0;i<f;i++) for(j=0;j<c;j++) { if (matriz[i][j]>=max) max=matriz[i][j]; if (matriz[i][j]<=min) min=matriz[i][j]; } cout<<"\nEl numero mayor de la matriz es: "<<max<<"\ny el menor es: "<<min; getch(); } 8. Desarrolle un programa que tenga una estructura de datos #include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int mat[5][5],i,j,a,b,aa,bb,aux,lf=5,lc=5,cont=0; randomize(); printf("\n A continuacion se creara una matriz en forma aleatoria\n Apriete cualquier tecla para continuar\n"); getch(); for (i=0; i<lf; i++) for (j=0; j<lc; j++) mat[i][j]= random(10); for (i=0; i<lc; i++) { printf("\n "); for (j=0; j<lc; j++) printf("[%d] - ",mat[i][j]); } printf("\n\n Matriz creada en forma aleatoria pero no ordenada"); getch(); a=0; //fila indice 0 b=0; //columna indice 0 aa = a; bb = b; while(cont <(lf*lc)) { for(i=aa ;i<lf;i++) { for(j=bb ;j<lc;j++) { if (mat[i][j]< mat[a][b]) //COMPARAMOS Y SI ES MENOR INTERCAMBIAMOS VALORES { aux = mat[i][j]; mat[i][j] = mat[a][b]; mat[a][b] = aux; } } bb=0; } b++; if (b>=lf) { b=0; a++; aa++; } cont++; bb=b; } //MOSTRANDO MATRIZ EN FORMA ORDENADA ASCENDENTEMENTE printf("\n "); for (i=0; i<5; i++) { printf("\n "); for (j=0; j<5; j++) { printf("[%d] - ",mat[i][j]); } } printf("\n\n Ahora la misma matriz ahora ordenada ascendentemente"); getch(); } 9. Dibuje como va enlazada una estructura de datos. 10. Debes escribir los programas a mano sin utilizar el pc.