Você está na página 1de 4

Aula 01 09/02/2015

Disciplina: Estruturas de Dados


Professor: Juliano Batista de Sousa
Tipo Abstrato de Dados
Algoritmos: Ideias, requisitos antes da codificao, especificar tarefas em termos de entradas e sadas, no
incio no devemos preocupar em como fazer, nesse momento o comportamento mais importante do
que o mecanismo que o executa.
Tipos de dados abstratos (TDA) uma coleo bem definida de dados a serem armazenados, e um
grupo de operadores que podem ser aplicados para manipulao desses dados.
Em linguagens orientadas a objetos, como C#, h um vnculo direto com os tipos abstratos de dados:
Estruturas de dados + Operaes = Classes.
Estruturas de dados: atributos + propriedades.
Operaes: aes e funes = Mtodos
Para usar um TDA na soluo de problemas por computador, precisamos antes transform-lo em um tipo
de dados concreto ou, simplesmente, tipo de dados. Essa operao chamada de implementao.
Objetivos das Estruturas de dados
Terico: especificar TDAs e determinar que classes de problemas podem ser resolvidas com eles.
Prtico: implementar TDAs, isto , criar representaes concretas de seus valores e projetar algoritmos
para efetuar operaes com elas.
Vantagens:
Mais fcil de programar, sem se preocupar com detalhes da implementao;
Mais seguro programar: apenas as operaes do TAD alteram os dados;

estrutura Estudante{
Nome
Idade
Matricula
}
funcao Estudante_MaiorDeIdade(Estudante estudante) retorna booleano;
funcao Estudante_ValidaMatricula(Estudante estudante);

Objetivo prtico: implementar TDAs (pilhas, filas, listas, rvores).


Pilha: lista linear em que todas as inseres, remoes e acessos so feitos num mesmo extremo,
denominado topo. Pilhas so tambm denominadas listas LIFO (Last-In/First-Out ou ltimo-queenrtra/Primeiro-que-sai).

Fila: lista linear em que as inseres so feitas num extremo, denominado final, e as remoes so feitas
no extremo oposto, denominado comeo. Filas so tambm denominadas listas FIFO (First-In/First-Out
ou Primeiro-que-entra/Primeiro-que-sai).
Fila-Dupla: lista linear em que as inseres e remoes so feitas em ambos os extremos. Filas-duplas
so tambm denominadas listas DEQUE (Double-Ended QUEue). H tambm dois casos especiais de
fila-dupla, que so fila-dupla de entrada restrita (se a insero for restrita a um nico extremo) e a filadupla de sada restrita (se a remoo for restrita a um nico extremo).

Categorias de alocao de memria


Esttica: a quantidade de memria destinada ao armazenamento de dados determinada no momento
da compilao e, durante a execuo do programa, essa quantidade permanece constante.
Dinmica: a quantidade de memria destinada ao armazenamento de dados varia enquanto o programa
executado.

Procedimentos e funes
Procedimento: um bloco de cdigo agrupado com fins de reutilizao e organizao.
Existem 2 tipos os que no retornam valores e as funes.
void Reprocessamento()
{
//...
}
void Reprocessamento(int vlrIni, int vlrFinal)
{
//...
}
Funes: retorna um valor de um determinado tipo ao cdigo executor.
int Soma(int a, int b)
{
Int total;
total = a+b;
return total;
}

Alocao dinmica: Ponteiros

Exemplo de passagem de parmetros por referncia.


class Program
{
static void Change (ref int[] pArray)
{
// Both of the following changes will affect the original variables:
pArray[0] = 888;
pArray = new int[5] {-3, -1, -2, -3, -4};
System.Console.WriteLine("Dentro do mtodo o primeiro elemento : {0}", pArray[0]);
}
static void Main()
{
int[] arr = {1, 4, 5};
System.Console.WriteLine("Dentro do Main, antes de chamar o mtodo, o primeiro elemento :
{0}", arr[0]);
Change(ref arr);
System.Console.WriteLine("Dentro do Main, depois de chamar o mtodo, o primeiro elemento : :
{0}", arr[0]);
Console.Read();
}
}

Exemplo de utilizao de ponteiros.


unsafe {
int i = 10;
int j = i;
j++;
int *p;
int *p1;
p = &i;
p1=p;
Console.WriteLine ("Varivel i: "+i);
Console.WriteLine ("Varivel j: "+j);
Console.WriteLine ("Ponteiro P: "+*p);
Console.WriteLine ("Ponteiro P1: "+*p1);
Console.WriteLine ("Incrementou i.....");
i++;
Console.WriteLine ("Ponteiro P: "+*p);
Console.WriteLine ("Ponteiro P1: "+*p1);
Console.ReadLine();
}

public static void Main(string[] args)


{
int arg;
// Passing by value.
// The value of arg in Main is not changed.
arg = 4;
squareVal(arg);
Console.WriteLine(arg);
// Output: 4
// Passing by reference.
// The value of arg in Main is changed.
arg = 4;
squareRef(ref arg);
Console.WriteLine(arg);
// Output: 16
Console.ReadLine();
}
static void squareVal(int valParameter)
{
valParameter *= valParameter;
}
// Passing by reference
static void squareRef(ref int refParameter)
{
refParameter *= refParameter;
}

Você também pode gostar