Sunteți pe pagina 1din 6

1.

1 Tipos de datos abstractos


Un Tipo de dato abstracto (en adelante TDA) es un conjunto de datos u objetos al
cual se le asocian operaciones. El TDA provee de una interfaz con la cual es
posible realizar las operaciones permitidas, abstrayndose de la manera en como
estn implementadas dichas operaciones. Esto quiere decir que un mismo TDA
puede ser implementado utilizando distintas estructuras de datos y proveer la
misma funcionalidad.

TDA lista
Una lista se define como una serie de N elementos E1, E2, ..., EN, ordenados de
manera consecutiva, es decir, el elemento Ek (que se denomina elemento k-simo)
es previo al elementoEk+1. Si la lista contiene 0 elementos se denomina como lista
vaca. Las operaciones que se pueden realizar en la lista son: insertar un elemento
en la posicin k, borrar el k-simo elemento, buscar un elemento dentro de la lista
y preguntar si la lista esta vaca.

estaVacia(): devuelve verdadero si la lista esta vaca, falso en caso


contrario.

insertar(x, k): inserta el elemento x en la k-sima posicin de la lista.

buscar(x): devuelve la posicin en la lista del elemento x.

buscarK(k): devuelve el k-simo elemento de la lista.

eliminar(x): elimina de la lista el elemento x.

TDA pila
Una pila (stack o pushdown en ingls) es una lista de elementos de la cual slo se
puede extraer el ltimo elemento insertado. La posicin en donde se encuentra
dicho elemento se denomina tope de la pila. Tambin se conoce a las pilas
como listas LIFO (LAST IN - FIRST OUT: el ltimo que entra es el primero que
sale).
La interfaz de este TDA provee las siguientes operaciones:

apilar(x): inserta el elemento x en el tope de la pila (push en ingls).

desapilar(): retorna el elemento que se encuentre en el tope de la pila y lo


elimina de sta (pop en ingls).

tope(): retorna el elemento que se encuentre en el tope de la pila, pero sin


eliminarlo de sta (top en ingls).

estaVacia(): retorna verdadero si la pila no contiene elementos, falso en


caso contrario (isEmpty en ingls).

TDA cola
Una cola (queue en ingls) es una lista de elementos en donde siempre se
insertan nuevos elementos al final de la lista y se extraen elementos desde el
inicio de la lista. Tambin se conoce a las colas como listas FIFO (FIRST IN FIRST OUT: el primero que entra es el primero que sale).
Las operaciones bsicas en una cola son:

encolar(x): inserta el elemento x al final de la cola (enqueue en ingls).

sacar(): retorna el elemento que se ubica al inicio de la cola (dequeue en


ingls).

estaVacia(): retorna verdadero si la cola esta vaca, falso en caso contrario.

TDA Cola de Prioridad


Una cola de prioridad es un tipo de datos abstracto que almacena un conjunto de
datos que poseen una llave perteneciente a algn conjunto ordenado, y
permite insertar nuevos elementos y extraer el mximo (o el mnimo, en caso de
que la estructura se organice con un criterio de orden inverso).
Dos formas simples de implementar colas de prioridad son:

Una lista ordenada:

Insercin: O(n)

Extraccin de mximo: O(1)

Una lista desordenada:


o

Insercin: O(1)

Extraccin de mximo: O(n)

http://users.dcc.uchile.cl/~bebustos/apuntes/cc30a/TDA/#4

1.2 Modularidad
La modularidad es la capacidad que tiene un sistema de ser estudiado, visto o
entendido como la unin de varias partes que interactan entre s y que trabajan
para alcanzar un objetivo comn, realizando cada una de ellas una tarea
necesaria para la consecucin de dicho objetivo. Cada una de esas partes en que
se encuentre dividido el sistema recibe el nombre de mdulo.
Idealmente un mdulo debe poder cumplir las condiciones de caja negra, es decir,
ser independiente del resto de los mdulos y comunicarse con ellos (con todos o
slo con una parte) a travs de unas entradas y salidas bien definidas.
Modularidad en Ciencias de la computacin es la caracterstica por la cual
un programa de computador est compuesto de porciones que se conocen
como mdulos. El diseo estructurado es la tcnica de diseo de algoritmos en
que se basa la programacin modular, paradigma de programacin que persigue
desarrollar programas modulares.
http://portafoliofundamentos.blogspot.mx/2012/12/vi-modularidad.html

1.3 Uso de TDA


Usar el TDA permite aprovechar el nivel de abstraccin en el desarrollo de un problema.
Por ejemplo: Resolver el problema de verificacin si la suma y multiplicacin de 2 nmeros
complejos producen el mismo nmero complejo. Solucin en pseudo lenguaje:
INICIO // Programa principal
X, Y COMPLEJO
A Booleano
X = CREAR_COMPLEJO(3,-5)
Y = CREAR_COMPLEJO(8,-3)

A = VERIFICAR1(X,Y)
Si A = verdadero entonces imprimir Son iguales la suma y la multiplicacin
Sino imprimir NO son iguales la suma y la multiplicacin

Fsi
FIN
funcin VERIFICAR1 (X,Y: COMPLEJO): Booleano // Funcin Verificar1
Z1,Z2 COMPLEJO
Z1 = SUMAR (X,Y)
Z2 = MULTIPLICAR (X,Y)
RETORNAR IGUAL (Z1,Z2)
f.funcin
funcin VERIFICAR2 (X,Y: COMPLEJO): Booleano // Funcin Verificar2
RETORNAR IGUAL (SUMAR (X,Y), MULTIPLICAR (X,Y) )
f.funcin
Se provee al lector de otra versin funcin VERIFICAR2 que realiza la misma operacin
sobre los nmeros complejos.
http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/programacion2/tda/
PR2-tema1-TDA.pdf

1.4 Manejo de memoria esttica


La memoria estatica es la que se reserva al momento de compilacion antes de comenzar a ejecutarse el
programa. Los objetos son creados en ese momento y destruidos al final del programa. Mantiene la
misma de localizacion en memoria durante todo el ranscurso del programa.
Los objetos administrados de este modo son:
Variables Static.
Variables Globales.
Miembros Static de la Clase.
Literales de cualquier tipo.
Ejemplos:
(Programa 13)
class CSimple

{
static void Main(string[]args)
{
int[]Numeros=new int[] {1,2,3,4,5};
for (int i=0; i<5;>
{
Console.WriteLine("{0}, ",Numeros[i]);
}
}
}

http://iscestructuradedatosjesusolivas.blogspot.mx/2008/09/manejo-dememoria-estatica.html

1.5 Manejo de memoria dinmica


Las reservas de memoria dinamica se hacen en tiempo de ejecucion despues de leer los datos y de
conocer el tamao exacto del problema a resolver, como consecuencia se adapta mejor a las necesidades
de cada caso pero en contrapartida es un poco mas dificil de programar.
Tanto la creacion como la destruccion de los objetos esta en manos del programador a traves de los
operadores new y delete, el sitio donde se almacenan los objetos sulene llamarse "heap" o "free strore",
traducido como monticulo o memoria libre.

Tipos
Valor en C#
Tipos Predefinidos (int,
float, ...)
Estructuras (struct)
Enumeraciones (enum)

Ejemplo:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
void imprime_binario(int n)
{
if (n >= 2)
{
imprime_binario(n / 2);
Console.Write("{0}", n % 2);

Tipos
Referencias en
C#
Objetos
String
Todas las Clases

}
else
{
Console.Write("{0}", n);
}
}
static void Main(string[] args)
{
Console.Write("Alimenta un Numero Entero: ");
int numero = Int32.Parse(Console.ReadLine());
Program p = new Program();
Console.Write("\nNumero Entero: {0}, en Codigo Binario: ", numero);
p.imprime_binario(numero);
Console.ReadLine();
}
}
}

http://iscestructuradedatosjesusolivas.blogspot.mx/2008/09/manejo-de-memoriadinamica.html