¿Qué es un TDA?

Anuncio
Licenciatura en Ciencia de la Computación
TIPOS DE DATOS
ABSTRACTOS
TDA
Rosa Barrera Capot
rosa.barrera@usach.cl
¿Qué es un TDA?
Supongamos el siguiente problema:
¿Listar a todos mis
respectivos teléfonos,
cumpleaños este mes?
amigos, con sus
que estarán de
¿¿¿Cómo lo haríamos con las
herramientas que tenemos???
¿Qué es un TDA?
Es un conjunto de datos donde:
Permiten agrupar varios datos,
mantengan algún tipo de relación
Pueden ser diferente tipo
que
ES UN NUEVO TIPO DE DATO, QUE AGRUPA
UN CONJUNTO DE DATOS
Declaración de TDA
Formato definición de tipo:
struct Id_nuevo_TIPO {
Tipo Id_var;
Tipo Id_var;
….
Tipo Id_var;
};
Formato declaración:
Id_nuevo_TIPO Id_var1 [ ,Id_var2, …];
Ejemplo:
Declaración del tipo:
struct Agenda {
char nombre[30];
char fono[12];
int mes_c;
};
Declaración de variables:
Agenda a,b;
Primeros programas en C++
Programa muestra el teléfono de mis amigos que están de cumpleaños.
#include <iostream.h>
struct Agenda{
char nombre[30];
char fono[12];
int mes_c;
};
int main()
{ int i,n;
Agenda a;
cout <<“Cuantos datos desea ingresar”;
cin >> n;
for( i=0; i < n; i ++)
{ …..
}
cout << “ Los datos de mis amigos que
están de cumpleaños son:” << endl;
for( i=0; i < n; i ++)
…..
return 0;
}
Primeros programas en C++
Programa muestra el teléfono de mis amigos que están de cumpleaños.
#include <iostream.h>
#define Max 30
struct Agenda{
char nombre[30];
char fono[12];
int mes_c;
};
int main()
{ int i,n;
Agenda a[Max];
cout <<“Cuantos datos desea ingresar”;
cin >> n;
for( i=0; i < n; i ++)
{ …..
}
cout << “ Los datos de mis amigos que
están de cumpleaños son:” << endl;
for( i=0; i < n; i ++)
…..
return 0;
}
#include <iostream.h>
#define Max 30
struct Agenda{
char nombre[30];
char fono[12];
int mes_c;
};
void llenar(Agenda a[Max],int n);
//Ingresar elementos a la estructura
void Mostrar(Agenda a[Max],int n);
//Muestra elementos a la estructura
void Mostrar(Agenda a[Max],int n, int M);
//Muestra nombres y telefonos de quienes
están de cumpleaños en M
int pide_n();
// Ingresa largo validado
int main()
{ int n,Mes;
Agenda a[Max];
cout <<“Cuantos amigos desea
ingresar”;
n=pide_n();
llenar(a,n);
cout <<“Ingrese mes que desea
chequear cumpleaños”;
cin>>Mes;
cout << “De mis amigos : \n”;
Mostrar(a,n);
cout<<“Los que est{an de
cumpleaños en “<<Mes <<“son:
“;
Mostrar(a,n,Mes);
return 0;
}
void llenar(Agenda a[Max],int n)
{ int i;
for(i=0; i < n; i++)
{ cout <<“Nombre Amigo ” <<
i+1<<“:\t”;
cin >> a[i].nombre;
cout <<“Su telefono: \t”;
cin >> a[i].fono;
cout <<“Mes de nacimiento :\t”;
cin >> a[i].mes_c;
}
}
void Mostrar(Agenda a[Max],int n)
{ int i;
for(i=0; i < n; i++)
cout <<a[i].nombre << “:\t”
<<a[i].fono << “:\t”
<<a[i].mes_c <<endl;
}
void Mostrar(Agenda a[Max],int n, int M)
{ int i;
for(i=0; i < n; i++)
if (a[i].mes_c == M)
cout <<a[i].nombre << “:\t”
<<a[i].fono << endl;
}
int pide_n()
{ int n;
do {
cout <<“Ingrese numero de amigos
(Máximo ”<<Max<<“): “;
cin >> n;
if (n < 1 || n > Max)
cout <<“ERROR, intente de nuevo”;
} while (n < 1 || n > Max);
return n;
}
Notas Importantes
 El nombre del TDA indica donde se localiza el
grupo en la memoria de la computadora
 Para pasar como parámetro un TDA, sólo se
envía el Identificador de la variable, pues esta
contiene la dirección del primer elemento.
 Por defecto, al pasar un TDA a una función, este
es un parámetro por referencia
Ejercicios
1. En un estudio de las carreras de las universidad,
se pide que:
 Entregue el promedio del puntaje de la P.S.U. de los
alumnos que ingresaron a la carrera LCC el año 2010.
 El promedio de edad de los mismos alumnos.
 Cuantos de ellos pusieron la carrera en alguna de las
cinco primeras opciones.
Además de decir cuántos, debe mostrar el nombre y rut de
estos postulantes
Ejercicios
2. Dada la siguiente estructura de datos:
struct datos
{ char nombre[30];
int esc; /*escolaridad: básica, media o superior */
int estado; /* completa o incompleta */
int edad;
... /* Puede agregar campos, si lo considera necesario */
};
Realice:
a) Muestre el nombre de las personas que han completado enseñanza
básica, media o superior. –tiene que indicar el tipo de escolaridad que
tieneb) Calcule la media por edad.
c) Calcule la media por edad y tipo de escolaridad incompleta.
d) Indique en que tipo de escolaridad incompleta existe una mayor
cantidad de personas.
Descargar