Beruflich Dokumente
Kultur Dokumente
TAREA No. 1
IDENTIFICACION
Facultad: Informática y Electrónica
Carrera: Software
Semestre: Tercero
Paralelo: B
Fecha: 18/03/2019
Revisado
Calificación
TEMA: Tipos de datos abstractos (TDA).
1. OBJETIVO GENERAL
Investigar sobre los tipos de datos abstractos (TDA), de tal manera que se
dominen los conceptos básicos sobre este tema.
2. OBJETIVOS ESPECÍFICOS
● Conocer sobre los tipos de datos abstractos.
● Identificar las ventajas y desventajas de los tipos de datos abstractos (TDA).
● Averiguar las características de los tipos de datos abstractos (TDA).
● Comprender los conceptos básicos que el tema nos proporcionara.
● Aplicar la información del marco teórico mediante ejercicios o problemas.
3. MARCO TEÓRICO
Ejemplo 3.1.1:
Por lo general, todo TDA posee los siguientes elementos: Encabezado, descripción
de los datos y una lista de las operaciones válidas para este TDA.
Encabezado: nombre del TDA.
Descripción de los datos: se especifican los datos y las estructuras
correspondientes para representarlos. Los datos constituyen las
características o atributos del objeto definido por el TDA.
Lista de operaciones: se forma por el grupo de operaciones que se definen
como válidas para el TDA. En cada operación se indicará:
Entrada: Proporcionada por el usuario.
Precondiciones: Se establece la situación en la cual se aplicará la
operación.
Proceso: es el conjunto de acciones que definen la operación.
Salida: valores proporcionados, luego de la operación, al usuario.
Postcondiciones: indica las reglas que deben cumplirse al ejecutar la
operación.
Cabe recalcar que, la mayoría de los TDAs tienen una operación espacial, llamada
inicializador, el cual asigna valores iniciales a los datos, al ser implementado en
un lenguaje de programación viene a ser llamado constructor al momento de
declarar un objeto. (Guardati, 2007)
Ejemplo 3.1.2:
Datos:
Operaciones:
Operaciones:
Constructor:
Cazar:
Los tipos de datos abstractos, al ser una manera eficiente de crear y ejecutar los
procesos para la resolución de problemas, no posee muchas desventajas, por lo que
se pudo deducir una:
4. APLICACIÓN PRÁCTICA
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ELEMENTOS 3
#define TAMANO_NOMBRE 25
typedef struct{
int clave;
char nombre[TAMANO_NOMBRE];
}Persona;
typedef Persona TipoElemento;
int Posicion;
Persona Alumno;
Persona Alumno2;
Persona Alumno3;
Lista MiLista;
void inicializador(){
Alumno.clave=100;
strcpy(Alumno.nombre,"Salva");
Alumno2.clave=200;
strcpy(Alumno2.nombre,"Salvato");
Alumno3.clave=300;
strcpy(Alumno3.nombre,"Salvatore");
MiLista.elementos[0]=Alumno;
MiLista.elementos[1]=Alumno2;
MiLista.elementos[2]=Alumno3;
}
void imprimeMiLista1(){
int i;
for(i=0;i<=MAX_ELEMENTOS-1;i++){
printf("Elementos[%d]:\n",i);
printf("clave=%d\n",MiLista.elementos[i].clave);
printf("nombre=%s\n",MiLista.elementos[i].nombre);
}
}
int main()
{
inicializador();
imprimeMiLista1();
return 0;
}
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define EXT1 20
#define EXT2 20
private:
int numConjuntos;
int numElementos[EXT1];
int elementos[EXT1];
public:
cElementos(){ setNumConjuntos(0); }
~cElementos(){ setNumConjuntos(0); }
};
private:
cElementos conjunto[EXT1];
public:
main(){
system("color f1");
//DECLARACION DE VARIABLES
cConjunto oConj;
int auxCantCon;
int auxCantEle;
int opc;
///////////
//DECLARACION DE FUNCIONES
/////////////////////
cout << endl << "INGRESE CUANTOS CONJUNTOS DESEA INGRESAR: ";
cin >> auxCantCon;
oConj.setNumConjuntos( auxCantCon );
cout << endl << "Ingrese la cantidad de elementos para el conjunto [" <<
i+1 <<"]: ";
cin >> auxCantEle;
oConj.setNumElementos(auxCantEle, i);
}
system ("cls");
cout << endl << "INGRESE UN ELEMENTO PARA EL CONJUNTO [" <<
i+1 << "]";
oConj.setConjunto( leerElementos(j), i );
}
}
do{
menu();
cin >> opc;
int vecAux[EXT2];
int acum = 0;
int k=0;
int aux;
switch (opc){
case 1:
imprUnion( oConj.getConjunto(i),j );
}
}
break;
case 2:
k++;
acum++;
}
}
aux = vecAux[j];
vecAux[j] = vecAux[i];
vecAux[i] = aux;
}
}
}
if(vecAux[i] == vecAux[j]){
swap(vecAux[k], vecAux[k+1]);
}
acum--;
j--;
}
}
}
break;
case 3:
break;
}
}
cElementos oAux1;
int elemento;
oAux1.setElementos(elemento, i );
return oAux1;
}
void menu(){
return oAux1.getElementos(i);
}
CONCLUSIONES
Los tipos de datos abstractos son útiles y tienen muchas ventajas, una de las
mas importantes es aumentar el reciclaje de código y la disminución de
errores en un programa, así como la simplificación de la misma.
En el trabajo de investigación la única desventaja hallada en los TDAs es el
no utilizar de forma óptima la memoria.
Las estructuras de datos abstractos nos permiten vislumbrar un todo, es
decir nos permite definir el dominio y la estructura de los datos, el conjunto
de propiedades de estos datos y las operaciones que son aplicadas en los
mismos.
En los ejercicios y ejemplos se puede observar que un tipo de estructura de
datos abstracta nos ayuda a ordenar los datos más específicos y relevantes
de un objeto, para luego poder realizar operaciones con o sobre los datos del
mismo.
RECOMENDACIONES