TALLER FINAL DE SEGUNDO CORTE DE ESTRUCTURA DE DATOS 1. Explique conceptos apropiados al tema a señalar: a. Clase: En la programación orientada a objetos, una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetosde ese tipo. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase. b. Dato: Un dato es la unión de caracteres que conforman algo a almacenar. c. Estructura: La estructura es la unión de varios caracteres para la formación de el programa en total. d. Tipo de datos Tipo de dato entero Tipo de dato carácter Tipo de dato lógico e. Cabecera Los archivos de descripción de interface, tambien llamados archivos de encabezado (header) o archivos “include” (archivos .h). Los archivos de encabezado contienen las declaraciones de constantes, variables y funciones de las que consta el módulo, asi como llamadas a otros archivos de encabezado necesarios. f. Palabras reservadas: Las palabras reservadas son aquellas que funcionan al empesar la programación ejemplo case, if, null etc. g. Struct esta orden se emplea para agrupar variables de tipos iguales o diferentes en un solo registro, con la misma se pueden crear estructuras anónimas, estructuras con nombre, y un tipo especial de estructura conocida como bit-fields ( banderas o campos de bits ). h. Class una clase es una estructura en donde se agrupan variables y funciones, la misma es usada en Programación Orientada al Objeto. Las clases no son soportadas por el C estándar. i. Unión una union es similar a una struct, salvo que en una estructura creada con union los campos o variables comparten una dirección de almacenamiento común. j. Estructuras anidadas Los miembros de una estructura pueden ser ellos mismos, otra estructura previamente identificada o bien una estructura anónima. Por ejemplo, en el siguiente fragmento de código se crean las estructuras pareja y pareja2. Observese cómo dentro de los miembros de pareja2 se declara el miembro X, mismo que es una estructura del tipo pareja. Luego, las variables declaradas a raiz de la estructura pareja2 poseerán los miembros variables a y b heredados de pareja, y c. struct pareja { int a, b ; }; struct pareja2 { struct pareja X; int c; } P3; Ahora bien, para acceder a los miembros de una estructura dentro de otra estructura se emplea el mismo mecanismo de acceso (el punto). Por ejemplo, para desplegar el miembro a de la variable P3 declarada en el ejemplo anterior, lo haremos más o menos así: printf( "%i\n", P3.X.a ); k. Herencia El termino herencia se usa con gran frecuencia en Programación Orientada al Objeto, y se le relaciona principalmente con las clases. Sin embargo, la herencia está presente siempre y cuando una estructura "struct", "union" o "class" posea a otra estructura. En ese sentido, en C++ se presentan dos tipos de herencia: herencia por agregación o composición. herencia por extensión. Por ejemplo, en la definicion de las estructuras pareja y pareja2 del ejemplo anterior, se dice que pareja2 hereda por composición todos los miembros de pareja. Ahora, en el siguiente ejemplo se usa la sintaxis para que la estructura pareja2 herede por extensión los miembros de pareja: // solo C++ struct pareja { int a, b ; }; struct pareja2 : pareja { int c; } P3; l. Estructura de campos de bits. Un campo de bit es un elemento de una estructura definido en terminos de bits. Usando un tipo especial de definicion de struct, se pueden declarar elementos de estructura con rangos de 1 a 16 de largo. (dependiendo de la arquitectura de la PC y del compilador, el rango para una estructura de campos de bits puede ser de 1 a 16, 1 a 32, 1 a 64). Antes de ver un ejemplo del uso de struct para crear estructuras de campos de bits consideremos el caso en donde se tiene una variable del tipo short (16 bits) y que para la misma se desea que los bits tengan significados especificos. digamos que el primer bit servirá para controlar alguna condición; los siguientes cuatro bits, o sea del segundo al quinto bit, controlarán otra condición; el bit 6 tendrá otra funcion; y el resto, o sea del septimo al decimosexto bit se emplearán para contralar otra condición. De tal manera que si queremos, por ejemplo, saber si el primer bit de la variable tiene almacenado un 1 o un 0 podemos emplear la siguiente sintaxis: int int X = 123; r = X & 1; la cosa parece sencilla, pero ahora consideremos el caso en el cual deseamos saber cual es el valor contenido por el grupo de bits ( segundo al quinto ), entonces nos daremos cuenta que no basta con una prueba mediante AND ( X & 1 ) sino que hay que realizar otros pasos. Precisamente, para problemas como el planteado arriba es que el lenguaje C,C++ da soporte a las estructuras de campos de bits. Por ejemplo, la estructura struct campo_de_bit { int bit_1 int bits_2_a_5 int bit_6 int bits_7_a_16 } bit_var; : : : : 1; 4; 1; 10; corresponde a la siguiente colección de campos bits: El mecanismo de estructuras de campos de bits soportado por C,C++ es una herramienta útil y poderosa, sobre todo en programación de bajo nivel; ya que mediante el mismo es posible aislar y dar nombres a todos y cada uno de los bits de un dato y también crear en un mismo campo grupos de bits (como se muestra arriba). Ahora bien, no hay que olvidar que la estructura minima de información en un sistema de memoria de una PC es el bit, y que para aislar a cada uno de estos se puede emplear el operador AND ( &, en C ), pero mediante el mecanismo mencionado el compilador genera los algoritmos necesarios para llevar a cabo el aislamiento de los bits. Por ejemplo, para escribir y leer bit identificado como bit_1 de la variable bit_var del ejemplo anterior, podemos emplear las siguientes instrucciones: bit_var.bit_1 = 1; printf("%i\n", bit_var.bit_1 ); Nota: acerca de las estructuras de campos de bits hay que hacer la aclaración que, aunque cada uno de los campos de la estructura pueden declarse como enteros con signo o enteros sin signo, la misma no tendrá una longitud mayor a un entero largo. m. Sintaxis union [ <nombre tipo de union > ] { <tipo> <lista de variables>; } [ <variables de union> ] ; De la misma manera que con la orden struct, con la orden union se pueden crear estructuras con nombre y estructuras sin nombre. El mecanismo de acceso a los miembros de una union es igual al mecanismo de acceso a los miembros de una struct. Los miembros de una union comparten un espacio de almacenamiento común. En una union, el compilador reserva el espacio de almacenamiento para la misma de acuerdo con el el tipo de la variable de mayor tamaño. 2. Escriba la sintaxis de una estructura union [ <nombre tipo de union > ] { <tipo> <lista de variables>; } [ <variables de union> ] ; 3. Escriba la sintaxis de una clase <classkey> <classname> [<:baselist>] { <member list> } [lista de variables] ; 4. Explique que es un atributo y de 2 ejemplos. En el lenguaje común a los datos miembros de una clase se les conoce como atributos; mientras que a las funciones miembros de una clase se les llama métodos. EJEMPLO: Class empleado { Char m_nombre; Char m_apellidos; Return0; } Class inscripciones;{ Int id: 1212898690; Char Nombre : ‘sergio’; Doublé DInero:9.000; } 5. Explique que son los métodos y de 3 ejemplos. Normalmente, los métodos se emplean para leer o escribir los atributos. Es decir, la norma general es no permitir el acceso directo a los atributos de una clase, con la idea de aumentar la seguridad de los datos. EJEMPLO: void setA(int n) { a = n; } void setB(int n) { b = n; } void mostrar() { cout << "a = " << a << ", b = " << b << "; suma = " << a+b << endl; int x , y , z; cout<<”digita el numero ke desees.”; cin>>x; cout<<”digita tu segundo numero.”; cin>>y; cout<<”tercero por favor..”; cin>>z; cout<<”tu dijitaste :”<<x <<“+”<<y<<” y por ultimo ”<<z<<”:D”; 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<iostream> #include<conio.h> #include<stdio.h> #include<windows.h> #include<stdlib.h> int tm,col,fil,i,j,suma1,suma2,suma3,suma4,suma,se,si,mt=1; int suma5,suma6,suma7,suma8; int main() { system("cls"); for(mt=1;mt<3;mt++) { system("cls"); cout<<"Ingrese matriz ";cout<<mt;cout<<"\n"; cout<<"ingresar el tamano de la matriz";cout<<"\n"; cin>>tm; for(i=1;i<=tm;i++) { for(j=1;j<=tm;j++) { cout<<"\n"; cout<<"ingresar el valor de la fila ";cout<<i; cout<<"y columna ";cout<<j;cout<<": ";cin>>col;cout<<"\n"; se=j/2; if(i==1) { if(j==1) { suma=col+suma; } if(j==2) { suma1=col+suma1; } } if(i==2) { if(j==1) { suma5=col+suma5; } if(j==2) { suma6=col+suma6; } } } } } system("cls"); cout<<"la suma de las matricez es"; cout<<"\n|";cout<<suma ;cout<<" ";cout<<suma1 ;cout<<" |\n"; cout<<"|";cout<<suma5 ;cout<<" ";cout<<suma6 ;cout<<" |\n"; getch(); } 8. Desarrolle un programa que tenga una estructura de datos #include<iostream> #include<conio.h> using namespace std; int main (int argc, char *argv[]) { double resultado; int desicion = 0; double pesos; double yen; double dolares; double euros; cout<<"CONVERTIDOR DE MONEDAS SOLO DOLARES-EUROS-PESOS :D"<<endl<<endl; cout<<"________________________"<<endl; cout<<"YEN Y PESOS"<<endl<<endl; cout<<"1 - pesos A Yen"<<endl; cout<<"2 - Yen A Pesos"<<endl; cout<<"________________________"<<endl; cout<<"DOLARES Y PESOS"<<endl<<endl; cout<<"3 - Dolares A Pesos"<<endl; cout<<"4 - Pesos A Dolares"<<endl; cout<<"________________________"<<endl; cout<<"EUROS Y PESOS"<<endl<<endl; cout<<"5 - Euros A Pesos"<<endl; cout<<"6 - Pesos A Euros"<<endl; cout<<"________________________"<<endl<<endl; cout<<"Que Nesesitas???"<<endl; cin>>desicion; if(desicion==1){ cout<<"Digita Los Pesos . ."; cin>>pesos; resultado = pesos*0.04; cout<<"Los "<<pesos<<" Pesos Son "<<resultado<<" Yen"<<endl<<endl<<endl; } if(desicion==2){ cout<<"Digita Los Yen . ."; cin>>yen; resultado = yen * 22.89; cout<<"Los " <<yen<< " Yen Son "<<resultado<<" Pesos"<<endl<<endl<<endl; } if(desicion==3){ cout<<"Digita Los Dolares . ."; cin>>dolares; resultado = dolares *1795; cout<<"Los "<<dolares<< " Dolares Son "<<resultado<<" Pesos"<<endl<<endl<<endl; } if(desicion==4){ cout<<"Digita Los Pesos . ."; cin>>pesos; resultado = pesos *0.0006; cout<<"Los "<<pesos<< " Pesos Son "<<resultado<<" Dolares"<<endl<<endl<<endl; } if(desicion==5){ cout<<"Digita Los Euros . ."; cin>>euros; resultado = euros *2343.45; cout<<"Los "<<euros<< " euros Son "<<resultado<<" Pesos"<<endl<<endl<<endl; } if(desicion==6){ cout<<"Digita Los Pesos . ."; cin>>pesos; resultado = pesos *0.0004; cout<<"Los "<<pesos<< " pesos Son "<<resultado<<" euros"<<endl<<endl<<endl; } if(desicion>=7){ cout<<"ERROR Noob!!!!!!!!!!!!"<<endl; int x; for(x=0;x<=100;x++){ cout<<"ERROR Noob!!!!!!!!!!!!"<<endl; } } if(desicion<=0){ cout<<"ERROR Noob!!!!!!!!!!!!"<<endl; int x; for(x=0;x<=100;x++){ cout<<"ERROR Noob!!!!!!!!!!!!"<<endl; } } cout<<endl<<"Echo Por Sergio :D"<<endl<<endl<<endl; getch(); } 9. Dibuje como va enlazada una estructura de datos. No entiendo . 10. Debes escribir los programas a mano sin utilizar el pc.
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )