Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introduo
O mundo tem mudado rapidamente graas ajuda dos computadores. Podemos citar as
pesquisas espaciais, o projeto genoma, os simuladores de vo, entre tantos outros. No
entanto, ainda ocorrem limitaes fsicas importantes relacionadas ao volume de
informaes e capacidade de processamento. Nem tudo que vemos ou sentimos pode ser
representado por em um computador. Devido as tais limitaes, necessrio abstrairmos a
nossa realidade para que possamos capturar o que existe de mais relevante em uma situao
real tornando assim possvel a construo de modelos que possam ser implementados em
computador por meio de uma linguagem de programao. Para a construo de bons
modelos necessrio um bom conhecimento dos detalhes que compem a situao real, ser
capaz de express-los por meio de uma estrutura de dados adequada e desenvolver um
algoritmo adequado que atue sobre esta estrutura de dados.
A elaborao adequada de estrutura de dados e os algoritmos correspondentes o que
propiciar o desenvolvimento de programas de computadores:
Um tipo abstrato de dados pode ser definido como um modelo matemtico pelo par (V,O)
onde V o conjunto de valores e O o conjunto de operaes que atuam sobre esses
valores. As operaes devem ser consistentes com os tipos dos valores.
Neste contexto o termo abstrato significa independncia de implementao, isto , no
considera as limitaes fsicas do computador relativas a questes de eficincia ( tempo de
processamento, ocupao de memria).
A Figura 1.1 mostra um esquema de um TDA. Observamos que a interao entre a estrutura
de dados e suas respectivas operaes ficam invisveis e inacessveis para o usurio.
Somente a descrio dos valores e o conjunto de operaes do TDA ficam visveis ao
usurio.
1
estrutura de dados
dados dados
funo A funo B
Implementao
Pode ser definida como agrupamentos de informaes com um significado completo que
normalmente so representados em estruturas de arranjos de dados, ou para as quais possam
ser definidas operaes prprias de conjuntos, tais como unio e interseco, ou ordenao
e tratamento de repetio de valores (listas, filas, pilhas );
Usaremos um formato especfico para descrever um TDA que inclui um cabealho com o
nome da TDA, uma descrio do tipo do dado e uma lista de operaes, veja Figura 1.3.
Para cada operao so especificados:
2
- as entradas necessrias para executar a operao;
- as pr-condies que devem ser verificadas antes de executar a operao;
- o processo que deve ser executado;
- as sadas que devem ser obtidas aps a execuo do processo e retornadas da operao;
- as ps-condies, que indicam quaisquer alteraes que a execuo da operao em
questo causou no dado.
TDA nome-TDA :
operaes:
operao 1:
entradas:
pr-condio:
processo:
sada:
ps-condio:
operao 2:
.
.
.
operao n:
Exemplo: Descreva o tipo de dados abstrato nmeros racionais (qualquer nmero que possa
ser expresso como quociente de dois inteiros, ex: 1/2, 3, 3/4), considerando que as seguintes
operaes possam ser executadas sobre este conjunto:
a) multiplica;
b) soma;
3
TDA nro_racional :
operaes:
multiplica:
entradas: quatro nmeros inteiros sendo que cada par de nmeros represen-
ta um nmero racional (n1/d1, n2/d2)
pr-condio: os dois nmeros devem ser vlidos, isto , d1 e d2 devem ser
diferentes de zero
processo: se a pr-condio foi atendida calcular a multiplicao de
dois nmeros racionais: nr = n1*d1 e dr = d1*d2
sada: se a pr-condio foi atendida retorna o resultado da multiplica (nr/dr)
caso contrrio retorna um nro racional 0/0
ps-condio: nenhuma
soma:
entradas: quatro nmeros inteiros sendo que cada par de nmeros represen-
ta um nmero racional (n1/d1, n2/d2)
pr-condio: os dois nmeros devem ser vlidos, isto , d1 e d2 devem ser
diferentes de zero
processo: se a pr-condio foi atendida, somar os dois nmeros racionais
O numerador do nro resultante obtido por: nr = n1*d2+n2*d1
O denominador do nro resultante obtido por: dr = d1*d2
sada: se a pr-condio foi atendida retorna o resultado da soma (nr/dr)
caso contrrio retorna um nro racional 0/0
ps-conido: nenhuma
4
O programa principal deve incluir a diretiva #include "tda.h" para que este possa conhecer
as funes implementadas em tad.c
Note que os arquivos de cabealho das funes da biblioteca padro do C so includos na
forma de #include <arq.h>, enquanto que os arquivos de cabealho dos mlulos
implementados so includos da forma #include "arq.h". O uso de delimitadores diferentes
servem para indicar onde o compilador deve procurar esses arquivos cabealho durante a
compilao.
Exerccio:
/* a funo soma retorna um nmero racional, resultado da soma de dois nros racionais
racional
racional soma(racional, racional);
Implemente um programa que use o tipo de dado nro_racional. Para tanto, no inicio do
programa no esquea de incluir a diretiva #include "racional.h"