Técnicas de Programação PDF
Técnicas de Programação PDF
Técnicas de Programação PDF
Colatina-ES
2011
Presidncia da Repblica Federativa do Brasil
Ministrio da Educao
ISBN: 978-85-62934-01-8
NSTITUTO
FEDERAL 1. Java (Linguagem de programao de computador. 2. Inform-
IO GRANDE tica. I. Instituto Federal do Esprito Santo. II. Ttulo.
DO SUL
CDD: 005.133
Apresentao e-Tec Brasil
Prezado estudante,
Voc faz parte de uma rede nacional pblica de ensino, a Escola Tcnica
Aberta do Brasil, instituda pelo Decreto n 6.301, de 12 de dezembro 2007,
com o objetivo de democratizar o acesso ao ensino tcnico pblico, na mo-
dalidade a distncia. O programa resultado de uma parceria entre o Minis-
trio da Educao, por meio das Secretarias de Educao a Distancia (SEED)
e de Educao Profissional e Tecnolgica (SETEC), as universidades e escolas
tcnicas estaduais e federais.
O e-Tec Brasil leva os cursos tcnicos a locais distantes das instituies de en-
sino e para a periferia das grandes cidades, incentivando os jovens a concluir
o ensino mdio. Os cursos so ofertados pelas instituies pblicas de ensino
e o atendimento ao estudante realizado em escolas-polo integrantes das
redes pblicas municipais e estaduais.
Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Janeiro de 2010
Nosso contato
[email protected]
3 e-Tec Brasil
Indicao de cones
5 e-Tec Brasil
Sumrio
Palavra do professor-autor 9
Apresentao da disciplina 11
Projeto instrucional 13
7 e-Tec Brasil
Aula 5 Criando funes 73
5.1 Criao de mtodos em Java 73
5.2 Mtodos sem retorno 74
5.3 Mtodos com retorno de valores 78
5.4 Recursividade 80
Referncias 113
Ol caro estudante!
Parabns, caro estudante! Voc est iniciando mais uma etapa do Curso
Tcnico em Informtica a distncia. A equipe instrucional elaborou todo o
material necessrio ao suporte para o seu aprendizado. Neste formato, a dis-
ciplina Tcnicas de Programao foi elaborada pensando numa leitura rpida
e dinmica, abordando o centro de cada contedo, explanado em aulas bem
objetivas. Como j do seu conhecimento, estudar a distncia uma tarefa
que envolve sua aplicao na resoluo dos exerccios, contando com todo
amparo da equipe que ir apoi-lo no processo de ensino-aprendizagem.
Para que isso ocorra de forma efetiva, faz-se necessrio separar um tempo
para estudar o material e fazer as leituras complementares indicadas no ca-
derno. Esperamos que voc utilize todos os recursos do ambiente disponveis
para dar andamento aos estudos e avanar pelos mdulos.
Um grande abrao!
Prof. Antonio Luiz Santana
9 e-Tec Brasil
Apresentao da disciplina
Nesta disciplina vamos estudar cinco tpicos que precisamos utilizar com
muita frequncia: conceitos e aplicaes de tipos de dados; tcnicas de mo-
dularizao; passagem de parmetros e recursividade; ambientes e tcnicas
de desenvolvimento de aplicaes; e estruturas de dados e seus algoritmos.
Para este nosso estudo, vamos adotar Java como linguagem para desenvol-
ver aplicaes. Para a digitao do cdigo fonte das classes Java, a nica
ferramenta necessria o bloco de notas do Windows; entretanto, qualquer
editor de textos disponvel na mquina do leitor pode ser utilizado.
Um grande abrao!
11 e-Tec Brasil
Projeto instrucional
CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
- Descrever as principais caractersticas
da linguagem.
1. Viso geral
Caderno e Ambiente Virtual de
(Introduo
- Descrever os procedimentos neces- Ensino- Aprendizagem.
linguagem Java e
srios para o desenvolvimento de uma 10
plataforma)
aplicao Java. www.cead.ifes.edu.br
13 e-Tec Brasil
CARGA
OBJETIVOS DE
AULA MATERIAIS HORRIA
APRENDIZAGEM
(horas)
- Identificar os principais tipos de mto-
dos em Java. Caderno e Ambiente Virtual de
Ensino - Aprendizagem.
5. Criando funes - Introduzir o conceito de modularidade. 10
www.cead.ifes.edu.br
- Mostrar as tcnicas de criao de mto-
dos em Java.
Objetivos
1.1 Introduo
A linguagem Java surgiu por acaso quando quem a criou, uma equipe de
engenheiros da empresa Sun, foi tomar um caf na esquina. Como numa Em 1995, a Sun anunciou Java
no apenas como mais uma
reunio de amigos, esses engenheiros assim a denominaram, inspirados pelo linguagem de programao,
mas como uma nova plataforma
nome da cidade de onde provinha o caf que tomavam. de desenvolvimento. Dessa
forma, a linguagem Java
comeou a ser utilizada para
Na realidade, no existe um consenso entre os escritores a respeito da ver- elaborar pginas da internet,
proporcionando contedos
dadeira histria dessa linguagem. Alguns autores afirmam que o nome Java interativos e dinmicos, iniciando
se deve a um passeio que o pessoal da Sun fez numa ilha da Indonsia com com a utilizao de applets com
imagens em movimento.
esse mesmo nome.
Visual J++
1.2 A linguagem Java Foi a implementao especfica
da Microsoft para o Java, em
Essa linguagem tem tido muito sucesso no mercado e diversas ferramen- ingls pronuncia-se Jay plus
tas tm surgido para manipular ou gerar cdigo Java. A prpria Microsoft plus. Otimizado para a Plata-
forma Windows, os programas
manteve o Visual J++ como uma de suas ferramentas de desenvolvimen- de J++ poderiam funcionar
to, aparentemente sem muito sucesso, sofrendo vrios processos por parte somente no MSJVM (Mquina
Virtual Java da Microsoft), que
da Sun, o que provocou seu desaparecimento na nova verso do Microsoft foi a tentativa da Microsoft para
criar um interpretador mais
Studio. Praticamente todos os principais fabricantes de software sentiram a rpido. A sintaxe, keywords, e
necessidade de lanar no mercado alguma ferramenta para manipular Java, convenes gramaticais eram os
mesmos do Java.
Apenas Todas as
uma vez vezes
Compilador Interpretador
Editor Java Java
Hello.java Hello.class
Figura 1.1: Sequncia de desenvolvimento de um programa em Java
Fonte: http://java.sun.com/javase/downloads/index.jsp
lado separadamente; isto , ele deve ser compilado na plataforma em que ser
executado. Uma aplicao que executada sobre uma plataforma pode no fun-
cionar sobre outra, porque o arquivo foi criado para uma plataforma especfica.
1
Java 2 Platform
Servers 2
Desktop 3
machines
Optional High-end 4
Packages consumer
devices
Low-end
Optional consumer 5
Packages devices
Java 2 Smart-
Enterprise Personal Profile cards
Edition Java 2
(J2EE) Standard
Edition Foundation Profile MIDP
(J2SE)
CDC CLDC Java Card
APIS
Observe que a pasta jdk 1.6.0_21 a principal em que esto todas as outras
(a Sun chama-a de JAVA_HOME). Dependendo da verso do JDK instalada,
essa pasta pode ter nomes e contedos diferentes. Voc dever se concen-
trar no nome da verso que baixou.
Observaes:
Como sugesto, utilize o bloco de notas, um editor simples e rpido que aten-
de a todos os requisitos mninos para a construo de aplicaes em Java.
Nesse caso, quando a classe for executada, ser invocado o mtodo main
que possui duas instrues para envio de mensagens na tela (system.out.
println). No exatamente uma instruo e sim uma classe da linguagem
especializada em sada de dados.
Observaes:
A linha public static void main (string args) aparece em todas as classes
executveis nesse mesmo formato.
Atividades de aprendizagem
1. Por que a utilizao de Java em multiplataforma muito importante para
programadores?
Objetivos
Byte: 1 byte.
Short: 2 bytes.
Int: 4 bytes.
Long: 8 bytes.
d) Reais em ponto flutuante: igual aos inteiros, tambm diferem nas preci-
ses e podem ser positivos ou negativos.
Letras, nmeros e
Literal (caractere) char 16 a, ?, *
smbolos
byte 8 0, 1, 23
long 64 0, 1, 23
0.34
float 32
Nmeros com casas 8.65
Real (ponto flutuante) decimais, positivos ou
negativos 0.34
double 64
8.65
Uma varivel precisa ser declarada para poder ser utilizada. Opcionalmente,
ela pode ser inicializada j no momento de sua declarao. O cdigo da Fi-
gura 2.1 mostra alguns exemplos de manipulao de variveis em Java.
12
4
x
Caso uma varivel do tipo char, byte, short, int, long, float ou double no
seja inicializada, ela criada com o valor 0. Se ela for do tipo boolean, seu
valor padro ser false.
Quando for necessrio definir uma nova varivel com um tipo de dado di-
ferente, por conveno, utiliza-se uma nova linha. O mais comum entre os
programadores Java definir um tipo de dados e declarar uma lista com um possvel criar mais de uma
varivel do mesmo tipo na
ou mais nomes de variveis desejadas desse tipo. Nessa lista os nomes so mesma linha, separando-as por
separados por vrgulas e a declarao terminada por ; (ponto e vrgula). uma vrgula. Exemplo: int x, y, z;
2.4 Comentrios
Os comentrios so linhas adicionadas ao programa que servem para
facilitar seu entendimento por parte do programador, ou ainda por outra
pessoa que o consulte. Essas linhas no afetam o programa em si, pois no
so consideradas parte do cdigo. O Java aceita trs tipos de comentrio:
de linha, de mltiplas linhas e de documentao.
Para inserir comentrios que envolvam vrias linhas, utiliza-se /* (barra aste-
risco) para marcar o incio e */ (asterisco barra) para o final, ou seja, tudo o
que estiver entre esses dois sinais ser considerado comentrio.
2.5 Operadores
A linguagem Java oferece um amplo conjunto de operadores destinados
realizao de operaes aritmticas, lgicas e relacionais, com a possibilida-
de de formar expresses de qualquer tipo. Alm dos operadores matemti-
cos, existem tambm operadores lgicos e relacionais.
Adio + 1+20
Subtrao - 35-17
Multiplicao * 14*2
Diviso / 14/2
Sinal negativo - -4
Sinal postitivo + +5
Igual == x==20
Negao ! !true==false
int x = 4;
float y = x;
double z = y;
float a = 9;
float b = a/8; // b = 1.125
int c = (int)b; /* Aqui estamos forando a converso para um nmero
inteiro. Nesse caso, a varivel c armazenar apenas a parte inteira da
varivel b, ou seja, 1 */
System.out.println(b);
System.out.println(c);
1.125
1
Seguindo o sentido das flechas da Figura 2.8 vemos os tipos que podem ser
implicitamente convertidos em outros. Seguindo o sentido contrrio, vemos
os tipos que precisam ser convertidos explicitamente:
short
byte char
int
long
float
double
a) read(): l um byte;
Resumo
Nesta aula falamos sobre os principais tipos de operadores em Java, como
operadores lgicos e relacionais. Tambm abordamos o conceito de tipos de
variveis to importante na programao em Java. Citamos tambm como
funciona a entrada de dados em Java.
Atividades de aprendizagem
1. Crie um programa para apresentar mensagens, uma de boas-vindas, ou-
tra dizendo seu nome e mais uma informando sua idade.
2. Crie um programa que contenha duas variveis de cada um dos tipos pri-
mitivos do Java. Coloque valores diferentes em cada uma delas e depois
as imprima.
3. Altere trs vezes o valor de uma das variveis do programa anterior. Im-
prima a varivel a cada nova atribuio.
4. Crie trs variveis do tipo int que contenham os valores 12, 13 e 14.
Converta cada uma para um float e imprima o valor convertido. Qual o
resultado impresso na tela?
6. Tente imprimir a soma de uma varivel inteira com uma do tipo float. O
que acontece?
10. Crie uma varivel inteira que contenha um nmero de segundos e impri-
ma o nmero equivalente de horas, minutos e segundos.
11. Crie variveis para a base e a altura de um retngulo e calcule sua rea,
permetro e diagonal.
Objetivos
3.1.1 If-else
A clusula IF (que em portugus significa SE) executa um bloco de instrues
caso uma determinada condio seja verdadeira. A clusula ELSE (que em
portugus significa SENO) executa um bloco de instrues caso a condio
seja falsa. A sintaxe do IF-ELSE no Java a seguinte:
if ( <condio booleana> ) {
<cdigo para condio verdadeira>;
}
else {
<cdigo para condio falsa>;
}
int x = 37;
if ( x > 40 ) {
System.out.println(x);
}
int x = 15;
if ( x < 18 ) {
System.out.println(Entrada permitida.);
}
else {
System.out.println(Entrada proibida.);
}
3.1.2 Switch-case
A estrutura SWITCH-CASE equivale a um conjunto de clusulas IF encadea-
das, deixando o cdigo mais legvel e eficiente no caso de grandes desvios
condicionais. Exemplo:
switch (x) {
case 0: System.out.println(zero); break;
case 1: System.out.println(um); break;
case 2: System.out.println(dois); break;
case 3: System.out.println(tres); break;
case 4: System.out.println(quatro); break;
case 5: System.out.println(cinco); break;
case 6: System.out.println(seis); break;
case 7: System.out.println(sete); break;
case 8: System.out.println(oito); break;
case 9: System.out.println(nove); break;
default : System.out.println(Nmero desconhecido);
}
Outro erro de que podemos tratar o caso de no ser fornecido o argumento des-
se mesmo programa, utilizando a exceo ArrayIndexOutOfBoundsException.
Nesse caso, ocorrer um erro ao tentarmos acessar o ndice 0 do vetor (que est
vazio). O cdigo a seguir mostra como fazemos esses dois tratamentos com o
TRY-CATCH:
int j = 10;
try {
while (j > Integer.parseInt(args[0])){
System.out.println(+j);
j--;
}
}
catch (ArrayIndexOutOfBoundsException e){
System.out.println(No foi fornecido um argumento.);
}
catch (java.lang.NumberFormatException e)
{
System.out.println(Argumento no um inteiro vlido.);
}
try {
<cdigo normal>;
} finally {
<cdigo que sempre deve ser executado>;
}
int x = 1;
while (x <= 5) {
System.out.println(9*x);
x++;
}
3.6 For
O comando FOR tambm utilizado para criarmos loops. A ideia a mesma que
a do WHILE, mas existe um espao prprio para inicializar e modificar a varivel
de controle do lao, deixando-o mais legvel. A sintaxe do FOR a seguinte:
O FOR e o WHILE podem ser usados para a mesma coisa. Porm, o cdigo do
FOR indica claramente que a varivel i serve, em especial, para controlar a quan-
tidade de laos executados. Use cada um quando achar mais conveniente.
O for tambm muito til para percorrermos um array. Para isso, basta
usarmos o atributo length, que retorna o tamanho do array.
Veja um exemplo:
Resumo
Nesta aula falamos sobre os conhecimentos necessrios para a utilizao cor-
reta das estruturas condicionais. Tambm abordamos as diferentes estruturas
de repetio em Java. Citamos tambm como funcionam as excees em Java.
Atividades de aprendizagem
1. Imprima o fatorial dos nmeros de 1 a 10. Crie um for que comece im-
primindo o fatorial de 1, e a cada passo utilize o ltimo resultado para o
clculo do fatorial seguinte.
12. Crie uma varivel com um caractere contendo uma operao (+, -, *
ou /) e outras duas com nmeros inteiros. Execute a operao indicada
pelo caractere com as duas variveis inteiras.
15. Crie trs variveis inteiras e um trecho de cdigo que descubra a maior
entre elas. Imprima as trs variveis em ordem crescente. Verifique se as
mesmas trs variveis podem ser lados de um tringulo (ou seja, nenhu-
ma pode ser maior que a soma das outras duas).
16. Crie uma varivel contendo a idade de uma pessoa e verifique sua classe
eleitoral: (at 16 anos no pode votar); (entre 16 e 18 anos ou mais que
65 facultativo); (entre 18 e 65 anos obrigatrio).
17. Crie variveis contendo as notas de trs provas feitas por um aluno. Cal-
cule a mdia parcial do aluno (mdia aritmtica simples) e verifique se
ele passou direto. Se no, calcule sua mdia final (peso 4 para a mdia
parcial e peso 6 para uma outra varivel contendo a nota de sua prova
final) e verifique se ele ficou reprovado.
Objetivos
Observe que o clculo do maior nmero pode ocorrer entre dois nmeros do
mesmo tipo de dados ou no.
Pode-se obter o maior entre dois nmeros do tipo double, entre dois nme-
ros do tipo int ou entre um do tipo double e outro do tipo int. As Figuras 4.5
e 4.6 mostram o Exemplo0403.
O nmero do qual se deseja extrair a raiz quadrada deve ser do tipo double
e o resultado obtido tambm ser um nmero do tipodouble.
Com isso seriam gerados nmeros inteiros entre 0 e 99, atendendo plena-
mente necessidade exposta.
Caractere Significado
Imprime o dgito normalmente, ou caso ele no exista, coloca 0 em seu lugar.
0 Exemplo: sejam as variveis int x=4, y=32 e z=154, ao usar o pattern
000, o resultado impresso na tela seria x - 004,y - 032 e z - 154.
Imprime o dgito normalmente, desprezando os zeros esquerda do nmero.
# Exemplo: sejam as variveis double x=0.4 e y= 01.34, ao usar o pattern ##.##, o resultado
impresso na tela seria x - . 4,y - 1.34.
. Separador decimal ou separador decimal monetrio (depende do sistema usado).
Sinal de nmero negativo.
-
Para realizar a formatao de nmeros, vamos usar a classe DecimalFormat.
Essas strings podem ser manipuladas de vrias formas. Por exemplo, pos-
svel verificar seu comprimento, retirar um pedao dela, acessar ou mudar
caracteres individuais. As strings constituem uma cadeia de caracteres entre
aspas. Exemplo: Frase = linguagem Java da mesma forma que as fun-
es matemticas, existem diversos mtodos para manipulao de strings,
os quais acompanham a seguinte sintaxe:
Por exemplo: suponha que uma determinada string s possa conter nme-
ros a funo charAt pode ser usada para verificar a existncia de dgitos
numricos nessa string.
ndice 1 2 3 4 5 6 7 8 9 10 11 12 13 14
<string>.trim()
No Exemplo0415, a linha 5 declara uma string (frase1) que recebe uma fra-
se. A linha 6 armazena essa frase na varivel frase2, porm sem os espaos
em branco, uma vez que o mtodo replace foi usado para substituir todos
os espaos por vazios ( por ).
Voc j sabe que um texto (ou uma string) indexado a partir do nmero zero.
Resumo
Nesta aula falamos sobre os conhecimentos necessrios para a utilizao
correta das funes matemticas e de strings. Aprendemos a trabalhar com
pesquisa de substrings e determinar o comprimento de uma string.
Atividades de aprendizagem
1. Crie uma classe que simule a jogada de um dado de seis lados dez vezes
e mostre o resultado na tela.
2. Crie uma classe que calcule quantos metros cbicos de gua suporta
uma determinada caixa de gua em forma de cubo todos os lados so
iguais. O usurio deve informar o valor do lado e o volume ser calculado
pela frmula volume=lado3. Arredonde o valor para seu inteiro anterior.
3. Construa uma classe que receba uma frase qualquer e mostre-a de forma
invertida.
Frase: Java
Efeito
Ja
Jav
Java
Jav
Ja
Objetivos
Qualificador a) Public: o mtodo visvel por qualquer classe. o qualificador mais aber-
conhecido tambm pelo
nome de modificador e define a to no sentido de que qualquer classe pode usar esse mtodo.
visibilidade do mtodo. Trata-se
de uma forma de especificar se b) Private: o mtodo visvel apenas pela prpria classe. o qualificador
o mtodo visvel apenas para
a prpria classe em que est mais restritivo.
declarada, ou pode ser visualizado
e utilizado por classes externas. c) Protected: o mtodo visvel pela prpria classe, por suas subclasses e
pelas classes do mesmo pacote.
Nome do mtodo: pode ser qualquer palavra ou frase, desde que iniciada
por uma letra. Se o nome for uma frase, no pode conter espaos em bran-
co. Por padro, todo nome de mtodo inicia com letra maiscula.
Cdigo do corpo: trata-se dos cdigos em Java que realizam os processos inter-
nos e retornam os valores desejados, isto , constituem o programa do mtodo.
Neste exemplo foi includo um novo mtodo, chamado tempo, que funcio-
na como temporizador durante a execuo do programa.
A declarao desse mtodo informa que ele receber dois argumentos intei-
ros (x,y) e retornar um nmero do tipo inteiro (int).
Podem existir mtodos que recebem nmeros e retornam uma string, re-
cebem inteiros e retornam nmeros com ponto flutuante ou qualquer
outra combinao.
5.4 Recursividade
Os programas so geralmente estruturados como mtodos que chamam uns
aos outros, o que facilita a resoluo de muitos problemas, alm de reduzir
consideravelmente o tamanho do cdigo.
Resumo
Nesta aula falamos sobre os principais mtodos existentes em Java, desde
os que retornam at os que no retornam valores, o acesso a mtodos e a
recursividade. Verificamos a importncia de trabalhar com recursividade na
linguagem Java pela execuo de exemplos. Trabalhamos com exemplos de
mtodos em Java com retorno de strings e inteiros.
Atividades de aprendizagem
1. Crie uma classe que tenha um mtodo o qual desenhe uma moldura na
tela. Essa moldura deve ter 80 caracteres de comprimento por 5 de lar-
gura. Para isso utilize a sequncia de caracteres ASC II.
2. Elabore uma classe que receba o raio de uma esfera do tipo double e cha-
me o mtodo volume_esfera para calcular e exibir o volume da esfera
da tela. A frmula a ser utilizada (4/3)* PI * raio * raio.
Objetivos
Por exemplo:
Em vez de usar o operador new para criar um objeto array, preciso colocar
os elementos do array entre chaves e separados por vrgula. Esses elementos
dentro das chaves devem ser do mesmo tipo que a varivel que contm o
array. Os arrays criados dessa forma tm o mesmo tamanho do nmero de
elementos colocados entre chaves. A sintaxe ficaria assim:
Resumo
Nesta aula falamos sobre as principais formas de utilizao de arrays em
Java, desde as estruturas mais simples at estruturas complexas para tratar
dados. Apresentamos as vantagens de usar arrays na manipulao de obje-
tos e trabalhamos com conceitos que permitem ao programador desenvol-
ver aplicaes mais consistentes e com cdigo reduzido.
Atividades de aprendizagem
1. Crie uma classe que leia dez valores inteiros quaisquer e imprima na tela
os que so maiores que a mdia dos valores coletados.
Objetivos
7.1 Definio
A grande maioria das aplicaes necessita armazenar dados para manipul-
-los posteriormente.
Todas as caixas de texto precisam ter algum contedo; caso contrrio, uma men-
sagem enviada ao usurio indicando a obrigatoriedade do preenchimento.
Resumo
Nesta aula falamos sobre as principais formas de utilizao de arquivos em
Java, desde as estruturas mais simples at estruturas complexas para tratar
dados e salvar em arquivos. Enumeramos os aspectos fundamentais para a
leitura e gravao em arquivos. Demonstramos a importncia do armazena-
mento e da recuperao de dados. Apresentamos os passos necessrios para
armazenar arquivos no formato texto.
Atividades de aprendizagem
1. Crie uma classe para armazenar que tenha as seguintes opes na mani-
pulao de arquivo: Abrir, gravar e limpar. Os dados utilizados devem ser:
matrcula, nome_aluno, endereo, telefone e CEP.
2. Crie uma classe para simular um editor de textos bsico e tente implemen-
tar algumas opes extras diferentes dos exemplos aqui apresentados.
Objetivos
Itens
primeiro = 0 x1
1 x2
.
.
.
ltimo - 1 xn
.
.
.
maxTam - 1
Desvantagens:
Custo para inserir ou retirar itens da lista, que pode causar um deslo-
camento de todos os itens, no pior caso.
Em aplicaes em que no existe previso sobre o crescimento da
lista, a utilizao de arranjos deve ter a realocao de memria.
H uma clula cabea para simplificar as operaes sobre a lista (Figura 8.3).
Desvantagem:
Resumo
Nesta aula falamos sobre as principais formas de utilizao de estruturas
de dados em Java. Programamos a utilizao da estrutura de dados lista na
forma de arranjos e estrutura autorreferenciadas.
Atividades de aprendizagem
1. Refazer a estrutura do exemplo na Figura 8.2 para sempre permitir a inser-
o de novos elementos na lista. Para isso devemos alterar a operao In-
sere e toda vez que a insero de um novo item esgotar a memria dispo-
nvel pelo arranjo item, uma nova rea de memria com capacidade maior
deve ser alocada e o contedo do arranjo item deve ser copiado para ela.
Objetivos
b) Verificar se a lista est vazia. Retorna true se a pilha est vazia; caso con-
trrio, retorna false.
Itens
primeiro = 0 x1
1 x2
.
.
.
topo - 1 xn
.
.
.
maxTam - 1
Para desempilhar um item, basta desligar a clula que contm xn, e a clula
que contm xn1 passa a ser a clula de topo.
Para empilhar um novo item, basta fazer a operao contrria, criando uma
nova clula para receber o novo item (Figura 9.3).
x
1
..
.
x
1-1
topo xn
Atividades de aprendizagem
1. Duas pilhas podem coexistir em um mesmo vetor, uma crescendo em um
sentido, e a outra, no outro?
2. Duas pilhas podem ser alocadas no mesmo vetor com o mesmo grau de
eficincia? Por qu?
LIGUORI, Robert; LIGUORI, Patricia. Java: guia de bolso. So Paulo: Editora Alta Books,
2008.