Você está na página 1de 5

Ministrio da Educao

Fundao Universidade Federal do Pampa


Campus Alegrete
Bacharelado em Engenharia de Software
Tipos Abstratos de Dados

Lista de Exerccios I
Exerccio 1. O que abstrao?
a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando caractersticas
menos importantes ou acidentais.

Exerccio 2. Para cada conceito apresentado, abaixo, defina-o e apresente exemplos:


a) Tipos de Dados
define o conjunto de valores que a varivel, constante ou funo podem assumir.
Ex.: boolean pode ser True ou False.

b) Estruturas de Dados
Vetores,listas,filas, so estruturas de dados para armazenar dados na memoria principal.

c) Tipos Abstrato de Dados


Definido como um modelo matemtico por meio de um par (v,o) em que
V= um conjunto de valores.
o= Conjunto de operaes sobre esses valores.
EX.: v=R
o={+-*%=<>}

Exerccio 3. Especifique os conjuntos de valores e operadores de cada um dos seguintes tipos de


dados da Linguagem Java:
a) Char Caractere
b) Int Inteiro
c) Double Real Longo
d) String Literal
Exerccio 4. Considere um TAD Contador, que define um valor inteiro que pode ser inicializado,
acessado, incrementado e decrementado. Implemente-o em Linguagem Java.
Contador
- valor: int;
+ inicializar(n: int):
void;
+ acessar (): int;
+ incrementar (): void;
+ decrementar (): void;

public class Contador {


int num;
public void incrementa() {
num = num + 1;
}
public void decrementa() {
num = num - 1;
}
public void comecaContar(int n) {
num = n;
}
public void mostraEstadoCont() {
if (num <= 10) {
System.out.println("Contador baixo");
} else (num > 10 && num <= 20) {
System.out.println("Contador alto");

Ministrio da Educao
Fundao Universidade Federal do Pampa
Campus Alegrete
Bacharelado em Engenharia de Software
Tipos Abstratos de Dados

Exerccio 5. Utilizando a implementao do TAD Contador, requerido no exerccio anterior,


reescreva o programa a seguir:
import java.util.Scanner;
public class Exercicio5 {
public static void main(String[] args) {
int i = 0;
while (i <= 9) {
System.out.println (i);
i++;
}
}
}

Exerccio 6. Considere um TAD Data que define uma data como valores inteiros para representar
dia, ms e ano (dd/mm/aaaa) e operaes como indicar o nome por extenso de um ms dado o seu
valor numrico, informar se um nmero bissexto etc. Implemente-o em Linguagem Java.
Exerccio 7. Considere o TAD Matriz Real, definido como tabela de m linhas e n colunas de
nmeros reais sobre a qual possvel realizar as seguintes operaes: 1) definir uma tabela com m
linhas e n colunas; 2) modificar um valor da matriz, dadas sua linha e sua coluna; 3) acessar um
valor da matriz, dadas sua linha e sua coluna; 4) conhecer o nmero de linhas; 5) conhecer o
nmero de colunas; 6) conhecer a quantia de valores que podem ser armazenados na matriz.
a) Implemente, em Linguagem Java, uma classe para representar o TAD Matriz Real utilizando
Array bidimensional (matriz);
b) Implemente, em Linguagem Java, uma classe para representar o TAD Matriz Real utilizando
Array unidimensional (vetor), conforme Figura 1.

Figura 1. Matriz representada por vetor simples (CELES, 2004, p. 75).


OBS: esta apenas uma simplificao do que pode ser realizado sobre uma matriz, para exercitar a
possibilidade de sua implementao com vetor.
Exerccio 8. Suponha que voc tenha que escrever um e-mail explicando a diferena entre Tipo
Abstrato de Dados e sua implementao a um colega. Como voc o faria?

Ministrio da Educao
Fundao Universidade Federal do Pampa
Campus Alegrete
Bacharelado em Engenharia de Software
Tipos Abstratos de Dados

Exerccio 9. Relacione o TAD, a seguir, com as frases que auxiliam a descrev-lo.


1. Fila 2. Pilha
A. ( pilha ) As inseres e remoes ocorrem em um extremo denominado topo.
B. ( fila ) As inseres ocorrem em um extremo, denominado fim, e as remoes do outro extremo,
denominado incio.
C. ( fila ) Observa o princpio FIFO First In First Out, ou seja, o primeiro elemento a entrar o
primeiro a sair.
D. ( pilha ) Observa o princpio LIFO Last In First Out, ou seja, o ltimo elemento a entrar o
primeiro a sair.
E. ( pilha ) Suas operaes fundamentais so push(e) e pop().
F. ( fila ) Suas operaes so fundamentais so enqueue(e) e dequeue().

Ministrio da Educao
Fundao Universidade Federal do Pampa
Campus Alegrete
Bacharelado em Engenharia de Software
Tipos Abstratos de Dados

Exerccio 10. Analisando os trechos de cdigo, a seguir, o que ser apresentado ao usurio?
A. Considere o seguinte estado antes de o cdigo ser executado:
itens:

'I'
'A'
'T'
'E'
topo: 3

//trecho de cdigo:
1 p.push('U');
2 for (cont = 1; cont <= 2; cont++) {
3
if (p.isEmpty() == false){
4
i = p.pop();
5
System.out.print(i);
6
}
7 }

Resposta:

B. Considere o seguinte estado antes de o cdigo ser executado:


itens:
'M' 'A' 'G' 'I' 'A'
...
inicio: 0
fim: 4
//trecho de cdigo:
1 i = f.dequeue();
2 f.enqueue(i);
3 while (!f.isEmpty()){
4
i = f.dequeue();
5
System.out.print(i);
6 }

Exerccio 11. Dado o trecho de cdigo a seguir, codifique em linguagem Java as operaes
p.push(e) e i = p.pop(). Lembre-se de verificar, quando apropriado, as condies de pilha
vazia e de pilha cheia.
//trecho de cdigo:
public class Pilha {
private Object elementos[];
private int topo;
private int tamanho;
public Pilha (int tam) {
this.elementos = new Object[tam];
this.topo = -1;
this.tamanho = 0;
}
/* Continua */
}

Exerccio 12. Implemente um programa que leia valores reais e os apresente na ordem inversa. Para
isso:
a) Adote a pilha implementada no exerccio anterior.
b) Adote a pilha disponibilizada pela linguagem Java (classe Stack).
Exerccio 13. Implemente um programa que simule a distribuio de senhas em uma clnica de
exames mdicos e a chamada de senhas para atendimento.

Ministrio da Educao
Fundao Universidade Federal do Pampa
Campus Alegrete
Bacharelado em Engenharia de Software
Tipos Abstratos de Dados

Referncia
CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introduo a Estruturas de Dados: com tcnicas
de programao em c. Rio de Janeiro, RJ: Campus, 2004.