1. Esrtucturas y Tad

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 17

Estructura

TAD
• Los lenguajes de programación soportan en sus compiladores tipos de
datos fundamentales o básicos (predefinidos), tales como int, char y
float en C, C++ y Java. Lenguajes de programación, como C++, tienen
características que permiten ampliar el lenguaje añadiendo sus propios
tipos de datos.
• Un tipo de dato definido por el programador se denomina tipo
abstracto de dato, TAD (Abstract Data Type, ADT). El término abstracto
se refiere al medio en que un programador abstrae algunos conceptos
de programación creando un nuevo tipo de dato.
• La modularización de un programa utiliza la noción de tipo abstracto
de dato (TAD) siempre que sea posible. Si el lenguaje de programación
soporta los tipos que desea el usuario y el conjunto de operaciones
sobre cada tipo, se obtiene un nuevo tipo de dato denominado TAD.
• Los paradigmas más populares soportados por el lenguaje C++ son:
programación estructurada y programación orientada a objetos.
ESTRUCTURAS ESTATICAS

• Son aquellas en las que el tamaño ocupado en


memoria se define antes de que el programa
se ejecute y no puede modificarse dicho
tamaño durante la ejecución del programa.

• Estas estructuras están implementadas en casi


todos los lenguajes, ejemplo: vectores,
matrices y arreglos.
• Su principal característica es que ocupan solo una casilla de
memoria, por lo tanto una variable simple hace referencia a
un único valor a la vez, dentro de este grupo de datos se
encuentra:

• Enteros
• Reales
• Caracteres
• Boléanos
• Enumerados
• Subrangos
• Dentro de las estructuras estáticas tenemos:
• Arrays: También llamados listas estáticas, matrices o arreglos los
cuales son una colección de datos del mismo tipo.
• Cadenas: También llamados String se trata de un conjunto de
caracteres que es tratado como un texto completo
• Punteros: Permiten definir variables que contienen posiciones de
memoria
• Estructuras: llamadas también registros , Son una colección de
diferente tipos de datos
• Tope: Guarda el número de registros que contiene el Arrays
• TMAX: Número de registros máximos, definido previamente en el
arreglo
• V : es el nombre de arreglo
• V[I].INFO : es el campo del arreglo en la posición I
Insertar al Final de la Estructura

• Este procedimiento permite ingresar un


registro al final de la estructura estática, para
lo cual es necesario validar que el número de
registros no supero el tamaño máximo
definido previamente, en caso que se alcanzó
el tamaño máximo se envía un mensaje al
usuario, en caso contrario se ingresa la
información.
void INSERTAR_FINAL(struct estructura v[100],tope,xinfo,tmax){
if(tope>=tmax){
cout<<"OVERFLOW, se paso del tamaño max";
}else{
v[tope].INFO=xinfo;
tope++;
}
}
Recorrido de la Estructura

• Este procedimiento permite recorrer la


estructura e imprimir cada información del
registro para todos los elementos de la
estructura.
Void RECORRIDO ( struct estructura v[100], tope)
for (int i = 0 ;i<tope;i++) {
cout<<"["<<V[I].INFO<<"]«;
}
}
Insertar al principio de la
estructura
• Este procedimiento permite ingresar la
información en la posición 1, para esto es
necesario verificar que el número de registros
(TOPE) no supere al tamaño máximo TMAX
definido previamente, si es mayor no se puede
insertar y se envía un mensaje al usuario de
“OVERFLOW” , en caso contrario se procede a
mover los elementos una posición desde el final
hasta el 2 y luego que se mueve la información se
procede a ingresar el elemento en la posición 1
void INSERTAR_CABEZA (V[100], TOPE, XINFO,TMAX){
if( TOPE >= TMAX) {
cout<<"SE PASO EL TAMAÑO MAXIMO, OVERFLOW";
}else{
for(int i=TOPE; i>1; i--){
V[i+1].INFO = V[i].INFO ;
}
V[0].INFO = XINFO ;
TOPE = TOPE + 1 ;
}
}
Buscar una información llave

• Este procedimiento permite buscar un elemento dentro


del arreglo y cuando lo encuentre se detiene en la
posición en donde se encuentre para esto se utiliza una
variable switch el cual es una bandera que permite
romper el ciclo de búsqueda. Cuando se busca por un
campo llave (una campo llave es un campo cuyo valor es
único dentro del arreglo) este no se repite. Cuando el
valor buscado se encuentra el switch cambia de valor
para indicar que el ciclo se termine. En caso de no
encontrar el valor en esa posición se pasa a la siguiente
para poder revisar el siguiente registro.
void BUSCAR_LLAVE (V[TMAX], TOPE, ELEM){
int SW = 0;
int I = 1 ;
while(I <= TOPE) AND (SW = 0) {
if (V[I].INFO = ELEM) {
SW = 1 ;
}else{
I = I + 1;
}
}
if(SW = 0){
cout<<"NO SE ENCONTRO EL ELEMENTO EN EL ARREGLO";
}else{
cout<<"SE ENCONTRO EL ELEMENTO";
}
}
Eliminar un registro del arreglo

• Este procedimiento permite eliminar un registro del


arreglo, para esto es necesario realizar un búsqueda
dentro del arreglo (Ver procedimiento de búsqueda).
Sino encuentra el elemento se envía un mensaje al
usuario, pero si lo encuentra debe eliminar el
elemento, para esto es necesario compactar el arreglo
(COMPATAR significa mover todos los elementos que se
encuentra debajo de la posición a eliminar una
posición). Después de la compactación disminuya el
TOPE en uno para dejar libre un espacio dentro del
arreglo.
void ELIMINAR (V[TMAX], TOPE, ELEM){
int SW = 0;
int I = 1 ;
while (I <= TOPE) AND (SW = 0) {
if ( V[I].INFO = ELEM) {
SW = 1;
}else{
I = I + 1;
}
}
if (SW = 0) {
cout<<"NO SE ENCONTRO EL ELEMENTO EN EL ARREGLO";
}else{
for (int J = I ;J<TOPE-1;J++){
/* ciclo de compactación */
V[J].INFO = V[J+1].INFO
/* mueve la información de abajo hacia arriba */
}
TOPE = TOPE - 1
/* disminuye en el número de registros */
}
EJERCICIOS RESUELTOS DE ESTRUCTURAS ESTATICAS

• Dada un arreglo creado, realizar un procedimiento


que halle la suma total de los elementos del arreglo y
el promedio de la suma de los elementos.
• Para resolver este ejercicio tenga en cuenta lo
siguiente:
– Debe tener una variable SUM que va a acumular la
información del arreglo inicializada en cero.
– Utilice un ciclo para recorrer el arreglo (ver procedimiento
recorrido) hasta el número de registros que tenga o sea
TOPE
– Luego saque el promedio
• Hacer un procedimiento que cree un arreglo en forma ordenada
ascendentemente al momento de la creación.
• Para la solución de este ejercicio debemos utilizar los
procedimientos de búsqueda (parcialmente modificado) si
encontramos un elemento del arreglo que sea mayor a la
información que se va a ingresar entonces ya tenemos la posición
en la cual vamos a ingresar el nuevo dato en caso contrario
vamos al siguiente registro .
• La búsqueda puede dar 2 respuestas :
– Que la información que llega es mayor a todos los elementos del
arreglo entonces se inserta al final.
– Que se haya encontrado una posición a insertar y hacemos el
procedimiento de mover e insertar
EJERCICIOS PROPUESTOS

• Dada una estructura con elementos repetidos hacer un algoritmo que deje una sola ocurrencia de los
elementos.
• Dada una estructura A y otra B las cuales contienen dígitos, deje los elementos pares en la estructura A y
los impares en la estructura B.
• Dada un estructura llamada DEPARTAMENTO la cual contiene los siguientes campos (Nombre
Departamento, empleado, salario), realizar un algoritmo que diga el número de empleados de un
departamento dado, el promedio de Salarios y el porcentaje de salario del departamento con respecto al
total de la estructura.
• Dada una estructura decir si la estructura es palindrome (Palindrome es leerla de abajo hacia arriba igual
que de arriba abajo).
• Dada una estructura realizar un algoritmo que elimine los elementos con información par, imprima en la
información y el número de elementos eliminados.
• Dadas 2 estructuras A y B hacer un algoritmo que agregue los elementos de A a B si el valor total de los
elementos de B es mayor a total de valores de A. en caso contrario ingrese los elementos de B a A.
• Dada un estructura A y una posición POS hacer un algoritmo que pida un Elemento Elem y lo ingrese en la
posición pos rodando una posición cada uno de los elementos que se encuentran por debajo de él.
• Dada un estructura A y una B hacer un algoritmo que diga si la estructura A esta contenida en B, Contener
significa que toda la estructura A esta toda en B en mismo orden.
• Dada dos estructuras A y B hacer un algoritmo que diga si las estructuras son semejantes. Dos estructuras
son semejantes si tienen el mismo número de elementos en distinto orden.

También podría gustarte