Buscar

APOSTILA.AEDs1.UniBH

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
Dep. Ciências Exatas e Tecnologia 
 
 
_______________________________ 
 
Algoritmos e Estruturas de Dados 
com ênfase em Java 
(AEDs 1) 
_______________________________ 
 
 
 
Versão 1.0 
 
Publicação interna 
Reprodução Restrita 
 
 
 
 
Profa: Pollyanna Miranda de Abreu 
 
 
 
 
 
 2 
 
 
 
 
Sumário 
 
APRESENTAÇÃO ................................................................................................................. 4 
1. Introdução à Lógica de Programação .......................................................................... 5 
1.1 Lógica ...................................................................................................................... 5 
1.2 Seqüência Lógica .................................................................................................... 5 
1.3 Instruções ................................................................................................................ 5 
1.4 Algoritmo ................................................................................................................. 6 
1.5 Programas ............................................................................................................... 8 
1.6 EXERCÍCIOS .......................................................................................................... 8 
2. Desenvolvendo algoritmos ........................................................................................ 10 
2.1 Pseudocódigo ........................................................................................................ 10 
2.2 Regras para construção do Algoritmo .................................................................... 10 
2.3 Fases..................................................................................................................... 10 
2.4 Exemplo de Algoritmo ............................................................................................ 11 
2.5 Teste de Mesa ....................................................................................................... 12 
2.6 EXERCÍCIOS ........................................................................................................ 13 
3. Diagrama de Bloco .................................................................................................... 14 
3.1 O que é um diagrama de bloco? ............................................................................ 14 
3.2 Simbologia ............................................................................................................. 14 
3.3 14 
3.4 Simbologia ............................................................................................................. 16 
4. Constantes, Variáveis e Tipos de Dados ................................................................... 17 
4.1 Constantes ............................................................................................................ 17 
4.2 Variáveis ................................................................................................................ 17 
4.3 Tipos de Variáveis ................................................................................................. 18 
4.4 Declaração de Variáveis ........................................................................................ 18 
4.5 EXERCÍCIOS ........................................................................................................ 18 
5. Operadores ............................................................................................................... 21 
5.1 Operadores Aritméticos ......................................................................................... 21 
5.2 Operadores Relacionais ........................................................................................ 21 
5.3 Operadores Lógicos .............................................................................................. 23 
5.4 Operadores Relacionais ........................................................................................ 23 
 
 
 
 
 3 
 
 
 
8.Introdução Linguagem de Programação Java ................................................................... 32 
8.1 O que é Java? ........................................................................................................ 32 
8.2 A história do Java ................................................................................................... 33 
8.3 A máquina virtual ................................................................................................... 34 
8.4 Versões do Java ................................................................................................... 36 
8.5 JVM? JRE? JDK? .................................................................................................. 36 
8.6 Objetivos do java ................................................................................................... 37 
8.7 Instalando o java ................................................................................................... 37 
8.8 Compilando o primeiro programa em Java ............................................................ 38 
8.9 Variáveis primitivas e controle de fluxo .................................................................. 39 
Instruções de laço for e while, controle de fluxo com break e continue. ............................... 39 
8.10 Comentários em Java ............................................................................................ 39 
9.Testando código em Java ............................................................................................. 40 
10.Tipos primitivos em Java ................................................................................................. 41 
10.1. Exercício de fixação .................................................................................................... 42 
11. Casting e Promoção ...................................................................................................... 43 
12. Instruções de desvio ...................................................................................................... 45 
18. Vetores e matrizes em Java ........................................................................................... 53 
20. Algoritmos de ordenação ............................................................................................... 57 
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 63 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 4 
 
 
 
 
 
APRESENTAÇÃO 
 
 
 
“Muda a forma de trabalhar, agir, sentir, pensar na chamada sociedade do 
conhecimento”. 
Peter Drucker 
 
 
 
O ingresso na sociedade da informação exige mudanças profundas em todos os 
perfis profissionais, especialmente naqueles diretamente envolvidos na produção, 
coleta, disseminação e uso da informação. 
 
O UniBh, o melhor centro universitário de Belo Horizonte (fonte: MEC),sabe isso, 
e ,consciente do seu papel formativo , educa o aluno sob a égide do conceito da 
competência:” formar o profissional com responsabilidade no processo 
produtivo, com iniciativa na resolução de problemas, com conhecimentos 
técnicos aprofundados, flexibilidade e criatividade, empreendedorismo e 
consciência da necessidade de educação continuada.” 
 
Vivemos numa sociedade da informação. O conhecimento, na sua área tecnológica, 
amplia-se e se multiplica a cada dia. Uma constante atualização se faz necessária. 
Para o UniBH, cuidar do seu acervo bibliográfico, da sua infovia, da conexão da 
faculdade à rede mundial de informações – internet- é tão importante quanto zelar 
pela produção de material didático. 
 
Isto porque, nos embates diários, professores e alunos, nas diversas salas de aulas 
e laboratórios do UniBH, fazem com que as informações, contidas nos materiais 
didáticos, tomemsentido e se concretizem em múltiplos conhecimentos. 
 
O UniBH deseja, por meio dos diversos materiais didáticos, aguçar a sua 
curiosidade, responder às suas demandas de informações e construir links entre os 
diversos conhecimentos, tão importantes para sua formação continuada ! 
 
 Profa. Pollyanna Abreu 
 
 
 
 
 
 
 
 
 
 
 
 
 5 
 
 
 
 
1. Introdução à Lógica de Programação 
1.1 Lógica 
 
A lógica de programação é necessária para pessoas que desejam trabalhar com 
desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica 
para o desenvolvimento. 
Então o que é lógica? 
 
1.2 Seqüência Lógica 
Estes pensamentos, podem ser descritos como uma seqüência de instruções, que 
devem ser seguidas para se cumprir uma determinada tarefa. 
 
1.3 Instruções 
Na linguagem comum, entende-se por instruções “um conjunto de regras ou 
normas definidas para a realização ou emprego de algo”. 
 
Convém ressaltar que uma ordem isolada não permite realizar o processo completo, 
para isso é necessário um conjunto de instruções colocadas em ordem seqüencial 
lógica. 
 
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em 
prática uma série de instruções: descascar as batatas, bater os ovos, fritar as 
batatas, etc... 
 
Lógica de programação é a técnica de encadear pensamentos para atingir 
determinado. 
Seqüência Lógica são passos executados até atingir um objetivo ou solução 
de um problema. 
 
 
 
 6 
 
 
 
É evidente que essas instruções tem que ser executadas em uma ordem adequada 
– não se pode descascar as batatas depois de fritá-las. 
 
Dessa maneira, uma instrução tomada em separado não tem muito sentido; para 
obtermos o resultado, precisamos colocar em prática o conjunto de todas as 
instruções, na ordem correta. 
 
1.4 Algoritmo 
Um algoritmo é formalmente uma seqüência finita de passos que levam a execução 
de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de 
instruções que dão cabo de uma meta específica. Estas tarefas não podem ser 
redundantes nem subjetivas na sua definição, devem ser claras e precisas. 
 
Como exemplos de algoritmos podemos citar os algoritmos das operações básicas 
(adição, multiplicação, divisão e subtração) de números reais decimais. Outros 
exemplos seriam os manuais de aparelhos eletrônicos, como um videocassete, que 
explicam passo-a-passo como, por exemplo, gravar um evento. 
 
Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. 
Por exemplo: 
 
“Chupar uma bala”. 
 
• Pegar a bala 
• Retirar o papel 
• Chupar a bala 
• Jogar o papel no lixo 
 
Instruções são um conjunto de regras ou normas definidas para a realização 
ou emprego de algo. Em informática, é o que indica a um computador uma 
ação elementar a executar. 
 
 
 
 7 
 
 
 
“Somar dois números quaisquer”. 
• Escreva o primeiro número no retângulo A 
• Escreva o segundo número no retângulo B 
• Some o número do retângulo A com número do retângulo B e coloque o 
resultado no retângulo C 
 
 
 
 
História dos Algoritmos 
 
 
Conceitos importantes: 
Software: parte lógica do computador (programas). 
Hardware: parte física do computador (periféricos) 
Peopleware: Pessoa que utiliza o computador e seus recursos. 
 
 
Retângulo 
A 
Retângulo 
B 
Resultado 
 
 
 
 8 
 
 
 
 
1.5 Programas 
 
Os programas de computadores nada mais são do que algoritmos escritos numa 
linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e 
que são interpretados e executados por uma máquina, no caso um computador. 
Notem que dada esta interpretação rigorosa, um programa é por natureza muito 
específico e rígido em relação aos algoritmos da vida real. 
 
1.6 EXERCÍCIOS 
 
1) Crie uma seqüência lógica para tomar banho: 
 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________ 
 
2) Faça um algoritmo para somar dois números e multiplicar o resultado pelo 
primeiro número. 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________ 
 
3) Descreva com detalhes a seqüência lógica para Trocar um pneu de um carro. 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
 
 
 
 9 
 
 
 
_________________________________________________________________
_________________________________________________________________ 
 
4) Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes: 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________ 
 
 
 
 10 
 
 
 
 
2. Desenvolvendo algoritmos 
2.1 Pseudocódigo 
Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome 
é uma alusão à posterior implementação em uma linguagem de programação, ou 
seja, quando formos programar em uma linguagem, por exemplo Visual Basic, 
estaremos gerando código em Visual Basic. Por isso os algoritmos são 
independentes das linguagens de programação. Ao contrário de uma linguagem de 
programação não existe um formalismo rígido de como deve ser escrito o algoritmo. 
 
O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser 
o intermediário entre a linguagem falada e a linguagem de programação. 
 
 
2.2 Regras para construção do Algoritmo 
Para escrever um algoritmo precisamos descrever a seqüência de instruções, da 
maneira mais simples e objetiva. Para isso utilizaremos algumas técnicas: 
 
• Usar somente um verbo por frase 
• Imaginar que você está desenvolvendo um algoritmo para pessoas que não 
trabalham 
• com informática 
• Usar frases curtas e simples 
• Ser objetivo 
• Procurar usar palavras que não tenham sentido dúbio. 
 
2.3 Fases 
 
No capítulo anterior vimos que ALGORITMO é uma seqüência lógica de instruções 
que podem ser executadas. 
 
É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser 
descrita por um algoritmo, como por exemplo: 
 
COMO FAZER ARROZ DOCE 
 
ou então 
 
CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE 
 
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema 
apresentado em três fases fundamentais. Onde temos: 
 
 
 
 
 
 11 
 
 
 
 
ENTRADA: São os dados de entrada do algoritmo 
PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final 
SAÍDA: São os dados já processados 
Analogia com o homem 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.4 Exemplo de Algoritmo 
Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os 
alunos realizarão quatro provas: P1, P2, P3 e P4. 
 
Onde: 
 
Para montar o algoritmo proposto, faremos três perguntas: 
 
a) Quais são os dados de entrada? 
R: Os dados de entrada são P1, P2, P3 e P4 
 
b) Qual será o processamento a ser utilizado? 
R: O procedimento será somar todos os dados de entrada e dividi-los por 4 
(quatro) 
 
c) Quais serão os dados de saída? 
R: O dado de saída será a média final 
 
 
 
 
 12 
 
 
 
 
Algoritmo 
 
Receba a nota da prova1 
Receba a nota de prova2 
Receba a nota de prova3 
Recebaa nota da prova4 
Some todas as notas e divida o resultado por 4 
Mostre o resultado da divisão 
 
2.5 Teste de Mesa 
 
Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é 
chamado de TESTE DE MESA, que significa, seguir as instruções do algoritmo de 
maneira precisa para verificar se o procedimento utilizado está correto ou não. 
 
Veja o exemplo: 
 
Nota da Prova 1 
Nota da Prova 2 
Nota da Prova 3 
Nota da Prova 4 
 
Utilize a tabela abaixo para entrar com dados: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 13 
 
 
 
2.6 EXERCÍCIOS 
 
1) Identifique os dados de entrada, processamento e saída no algoritmo abaixo 
 
• Receba código da peça 
• Receba valor da peça 
• Receba Quantidade de peças 
• Calcule o valor total da peça (Quantidade * Valor da peça) 
• Mostre o código da peça e seu valor total 
2) Faça um algoritmo para “Calcular o estoque médio de uma peça”, sendo que 
TOQUEMÉDIO= (QUANTIDADE MÍNIMA + QUANTIDADE MÁXIMA) /2 
 
3) Teste o algoritmo anterior com dados definidos por você. 
 
 
 
 
 14 
 
 
 
 
3. Diagrama de Bloco 
 
3.1 O que é um diagrama de bloco? 
 
O diagrama de blocos é uma forma padronizada e eficaz para representar os passos 
lógicos de um determinado processamento. 
 
Com o diagrama podemos definir uma seqüência de símbolos, com significado bem 
definido, portanto, sua principal função é a de facilitar a visualização dos passos de 
um processamento. 
 
3.2 Simbologia 
Existem diversos símbolos em um diagrama de bloco. No decorrer do curso 
apresentaremos os mais utilizados. Veja no quadro abaixo alguns dos símbolos que 
iremos utilizar: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3.3 
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não nos 
dizem nada. Veja no exemplo a seguir: 
 
 
 
 
 15 
 
 
 
Exemplos de Diagrama de Bloco 
 
“CHUPAR UMA BALA” “CALCULAR A MÉDIA DE 4 NOTAS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Veja que no exemplo da bala seguimos uma seqüência lógica somente com 
informações diretas, já no segundo exemplo da média utilizamos cálculo e exibimos 
o resultado do mesmo. 
 
 
 
 
 16 
 
 
 
3.4 Simbologia 
 
1) Construa um diagrama de blocos que : 
 
• Leia a cotação do dólar 
• Leia um valor em dólares 
• Converta esse valor para Real 
• Mostre o resultado 
 
2) Desenvolva um diagrama que: 
 
• Leia 4 (quatro) números 
• Calcule o quadrado para cada um 
• Somem todos e 
• Mostre o resultado 
 
3) Construa um algoritmo para pagamento de comissão de vendedores de 
peças, levando-se em consideração que sua comissão será de 5% do total 
da venda e que você tem os seguintes dados: 
 
• Identificação do vendedor 
• Código da peça 
• Preço unitário da peça 
• Quantidade vendida 
 
E depois construa o diagrama de blocos do algoritmo desenvolvido, e por 
fim faça um teste de mesa. 
 
 
 
 
 
 
 
 17 
 
 
 
4. Constantes, Variáveis e Tipos de Dados 
 
Variáveis e constantes são os elementos básicos que um programa manipula. Uma 
variável é um espaço reservado na memória do computador para armazenar um tipo 
de dado determinado.Variáveis devem receber nomes para poderem ser 
referenciadas e modificadas quando necessário. Um programa deve conter 
declarações que especificam de que tipo são as variáveis que ele utilizará e as 
vezes um valor inicial. Tipos podem ser, por exemplo: inteiros, reais,caracteres, etc. 
As expressões combinam variáveis e constantes para calcular novos valores. 
 
 
4.1 Constantes 
Constante é um determinado valor fixo que não se modifica ao longo do tempo, 
durante a execução de um programa. Conforme o seu tipo, a constante é 
classificada como sendo numérica, lógica e literal. 
 
Exemplo de constantes: 
 
 
 
 
 
 
4.2 Variáveis 
 
Variável é a representação simbólica dos elementos de um certo conjunto. Cada 
variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado 
ao longo do tempo durante a execução de um programa. Embora uma variável 
possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. 
 
 
 
 
 
 
 
 
 18 
 
 
 
4.3 Tipos de Variáveis 
 
As variáveis e as constantes podem ser basicamente de quatro tipos: Numéricas, 
caracteres, Alfanuméricas ou lógicas. 
 
Numéricas Específicas para armazenamento de números, que posteriormente 
poderão ser utilizados para cálculos. Podem ser ainda classificadas 
como Inteiras ou Reais. As variáveis do tipo inteiro são para 
armazenamento de números inteiros e as Reais são para o 
armazenamento de números que possuam casas decimais. 
 
Caracteres Específicas para armazenamento de conjunto de caracteres que não 
contenham números (literais). Ex: nomes. 
 
Alfanuméricas Específicas para dados que contenham letras e/ou números. Pode 
em determinados momentos conter somente dados numéricos ou 
somente literais. Se usado somente para armazenamento de 
números, não poderá ser utilizada para operações matemáticas. 
 
Lógicas Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso. 
 
4.4 Declaração de Variáveis 
 
As variáveis só podem armazenar valores de um mesmo tipo, de maneira que 
também são classificadas como sendo numéricas, lógicas e literais. 
 
4.5 EXERCÍCIOS 
 
1) O que é uma constante? Dê dois exemplos. 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
 
 
 
 19 
 
 
 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________ 
 
2) O que é uma variável? Dê dois exemplos. 
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________
_________________________________________________________________ 
 
3) Faça um teste de mesa no diagrama de bloco abaixo e preencha a tabela ao 
lado com os dados do teste: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 20 
 
 
 
 
4) Sabendo-se que José tem direito a 15% de reajuste de salário, complete o 
diagrama abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 21 
 
 
 
5. Operadores 
 
Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e 
avaliamos dados dentro do computador. Temos três tipos de operadores: 
 
• Operadores Aritméticos 
• Operadores Relacionais 
• Operadores Lógicos 
 
5.1 Operadores Aritméticos 
 
Os operadores aritméticos são os utilizados para obter resultados numéricos. Além 
da adição, subtração, multiplicação e divisão, podem utilizar também o operador 
para exponenciação. Os símbolos para os operadores aritméticos são: 
 
 
 
 
 
 
 
 
Exemplo 
 
 
 
 
 
 
 
 
5.2 Operadores Relacionais 
Os operadores relacionais são utilizados para comparar String de caracteres e 
números. Os valores a serem comparados podem ser caracteres ou variáveis. 
 
Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou 
False) 
 
1 + 7 * 2 ** 2 –1 = 28 
3 * (1 – 2) + 4 * 2 = 5 
TOTAL = PREÇO * QUANTIDADE 
 
 
 
 22 
 
 
 
Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, 
utilize os parênteses. 
 
Os operadores relacionais são: 
 
 
 
 
 
 
 
 
 
 
 
 
Exemplo: 
Tendo duas variáveis A = 5 e B = 3 
Os resultados das expressões seriam: 
 
 
 
 
 
 
 
 
 
 
 
Símbolo Utilizado para comparação entre expressões 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 23 
 
 
 
 
5.3 Operadores Lógicos 
Hierarquia das Operações Aritméticas1 º ( ) Parênteses 
2 º ** Exponenciação 
3 º * ou / Multiplicação, divisão (o que aparecer primeiro) 
4 º + ou – (o que aparecer primeiro) 
 
5.4 Operadores Relacionais 
Os operadores lógicos servem para combinar resultados de expressões, retornando 
se o resultado final é verdadeiro ou falso. Os operadores lógicos são: 
 
E AND 
OU OR 
NÃO NOT 
 
E / AND Uma expressão AND (E) é verdadeira se todas as condições forem 
Verdadeiras 
 
OR/OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for 
Verdadeira. 
 
NOT Um expressão NOT (NÃO) inverte o valor da expressão ou condição, se 
verdadeira inverte para falsa e vice-versa. 
 
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores 
lógicos (AND, OR e NOT) 
 
 
 
 
 
 
 24 
 
 
 
Exemplos: 
Suponha que temos três variáveis A = 5, B = 8 e C =1 
Os resultados das expressões seriam: 
 
 
5.4 EXERCÍCIOS 
 
1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. 
Informe se as expressões são verdadeiras ou falsas. 
 
 
 
2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras 
ou falsas. 
 
a) (A+C) > B ( ) 
b) B >= (A + 2) ( ) 
c) C = (B –A) ( ) 
d) (B + A) <= C ( ) 
e) (C+A) > B ( ) 
 
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são 
verdadeiras ou falsas. 
 
a) (A > C) AND (C <= D) ( ) 
b) (A+B) > 10 OR (A+B) = (C+D) ( ) 
c) (A>=C) AND (D >= C) ( ) 
 
 
6 Operações Lógicas 
 
Operações Lógicas são utilizadas quando se torna necessário tomar decisões em 
um diagrama de bloco. 
 
 
 
 
 
 25 
 
 
 
Num diagrama de bloco, toda decisão terá sempre como resposta o resultado 
VERDADEIRO ou FALSO. 
 
Como no exemplo do algoritmo “CHUPAR UMA BALA”. Imaginemos que algumas 
pessoas não gostem de chupar bala de Morango, neste caso teremos que modificar 
o algoritmo para: 
 
“Chupar uma bala”. 
 
· Pegar a bala 
· A bala é de morango? 
· Se sim, não chupe a bala 
· Se não, continue com o algoritmo 
· Retirar o papel 
· Chupar a bala 
· Jogar o papel no lixo 
 
Exemplo: Algoritmo “Chupar Bala” utilizando diagrama de Blocos 
 
 
 
 
 
 
 26 
 
 
 
6.1 EXERCÍCIOS 
 
1) Elabore um diagrama de blocos que leia um número. Se positivo armazene-o em 
A, se for negativo, em B. No final mostrar o resultado. 
 
2) Ler um número e verificar se ele é par ou ímpar. Quando for par armazenar esse 
valor em P e quando for ímpar armazená-lo em I. Exibir P e I no final do 
processamento. 
 
3) Construa um diagrama de blocos para ler uma variável numérica N e imprimi-la 
somente se a mesma for maior que 100, caso contrário imprimi-la com o valor zero. 
 
4)Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um 
algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: 
 
Para homens: (72.7*h) - 58 
Para mulheres: (62.1*h) - 44.7 (h = altura) 
 
5) Faça um teste de mesa do diagrama apresentado abaixo, de acordo com os 
dados fornecidos: 
 
: 
 
 
 
 
 
 
 27 
 
 
 
Teste o diagrama com os dados abaixo 
 
 
 
Memória 
 
 
 
Dados e saída 
 
 
 
Elabore um algoritmo levando-se em conta o diagrama apresentado: 
 
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________ 
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________ 
 
7 Estrutura de Decisão e Repetição 
 
Como vimos no capítulo anterior em “Operações Lógicas”, verificamos que na 
maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas 
decisões interferem diretamente no andamento do programa. Trabalharemos com 
dois tipos de estrutura. A estrutura de Decisão e a estrutura de Repetição 
 
7.1 Comandos de Decisão 
 
Os comandos de decisão ou desvio fazem parte das técnicas de programação que 
conduzem a estruturas de programas que não são totalmente seqüenciais. Com as 
instruções de SALTO ou DESVIO pode-se fazer com que o programa proceda de 
uma ou outra maneira, de acordo com as decisões lógicas tomadas em função dos 
 
 
 
 28 
 
 
 
dados ou resultados anteriores. As principais estruturas de decisão são: “Se Então”, 
“Se então Senão” e “Caso Selecione” 
 
7.1.1 SE ENTÃO / IF ... THEN 
 
A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando, 
ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute 
determinado comando. Imagine um algoritmo que determinado aluno somente estará 
aprovado se sua média for maior ou igual a 5.0, veja no exemplo de algoritmo como 
ficaria. 
 
SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO 
 
Em diagrama de blocos ficaria assim: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Em visual basic 
 
IF MEDIA >= 5 Then 
Text1 = “APROVADO” 
ENDIF 
 
7.1.2 SE ENTÃO SENÃO / IF ... THEN ... ELSE 
 
A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona exatamente como a 
estrutura “SE”, com apenas uma diferença, em “SE” somente podemos executar 
comandos caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre 
um comando será executado independente da condição, ou seja, caso a condição 
seja “verdadeira” o comando da condição será executado, caso contrário o comando 
da condição “falsa” será executado. Em algoritmo ficaria assim: 
 
SE MÉDIA >= 5.0 ENTÃO 
 ALUNO APROVADO 
SENÃO 
 ALUNO REPROVADO 
 
 
 
 29 
 
 
 
Em diagrama 
 
 
 
Em Visual Basic 
 
IF MEDIA >= 5 Then 
 Text1 = “APROVADO” 
ELSE 
 Text1 = “REPROVADO” 
ENDIF 
 
No exemplo acima está sendo executada uma condição que, se for verdadeira, 
executa o comando “APROVADO”, caso contrário executa o segundo comando 
“REPROVADO”. Podemos também dentro de uma mesma condição testar outras 
condições. Como no exemplo abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 30 
 
 
 
Em Visual Basic 
 
IF MEDIA >= 5 Then 
IF MEDIA >= 7.0 then 
 Text1 = “Aluno APROVADO” 
ELSE 
 Text1 = “Aluno Necessita fazer outra Avaliação” 
ENDIF 
ELSE 
 Text1 = “Aluno REPROVADO” 
ENDIF 
 
7.1.3 CASO SELECIONE / SELECT ... CASE 
 
A estrutura de decisão CASO/SELECIONE é utilizada para testar, na condição, uma 
única expressão, que produz um resultado, ou, então, o valor de uma variável, em 
que está armazenado um determinado conteúdo. Compara-se, então, o resultado 
obtido no teste com os valores fornecidos em cada cláusula “Caso”. No exemplo do 
diagrama de blocos abaixo, é recebido uma variável “Op” e testado seu conteúdo, 
caso uma das condições seja satisfeita, é atribuído para a variável Titulo a String 
“Opção X”, caso contrário é atribuído a string “Opção Errada”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 31 
 
 
 
Em Visual Basic utilizamos a seguinte seqüência de comandos para representar o 
diagrama anterior. 
 
TITULO = “” 
OP = INPUTBOX(“DIGITE A OPÇÃO”) 
SELECT CASE OP 
 CASE 1 
TITULO = “OPÇÃO 1” 
 CASE 2 
TITULO = “OPÇÃO 2” 
 CASE 3 
TITULO = “OPÇÃO 3” 
 CASE 4 
TITULO = “OPÇÃO 4” 
 CASE 5 
TITULO = “OPÇÃO 5” 
 CASE ELSE 
TITULO = “OPÇÃO ERRADA” 
 END SELECT 
LABEL1.CAPTION = TITULO 
 
7.1.4 EXERCÍCIOS 
 
1) João Papo-de-Pescador, homem de bem, comprou um microcomputador para 
controlar o rendimento diário de seu trabalho. Toda vez que ele traz um peso de 
peixes maior que o estabelecido pelo regulamento de pesca do estado de São Paulo 
(50 quilos) deve pagar um multa de R$ 4,00 por quilo excedente. João precisa que 
você faça um diagrama de blocosque leia a variável P (peso de peixes) e verifique 
se há excesso. Se houver, gravar na variável E (Excesso) e na variável M o valor da 
multa que João deverá pagar. Caso contrário mostrar tais variáveis com o conteúdo 
ZERO. 
 
2) Elabore um diagrama de bloco que leia as variáveis C e N, respectivamente 
código e número de horas trabalhadas de um operário. E calcule o salário sabendo-
se que ele ganha R$ 10,00 por hora. Quando o número de horas exceder a 50 
calcule o excesso de pagamento armazenando-o na variável E, caso contrário zerar 
tal variável. A hora excedente de trabalho vale R$ 20,00. No final do processamento 
imprimir o salário total e o salário excedente. 
 
3) Desenvolva um diagrama que: 
· Leia 4 (quatro) números; 
· Calcule o quadrado de cada um; 
· Se o valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize; 
· Caso contrário, imprima os valores lidos e seus respectivos quadrados. 
 
4) Faça um diagrama de bloco que leia um número inteiro e mostre uma mensagem 
indicando se este número é par ou ímpar, e se é positivo ou negativo. 
 
 
 
 32 
 
 
 
5) A Secretaria de Meio Ambiente que controla o índice de poluição mantém 3 
grupos de indústrias que são altamente poluentes do meio ambiente. O índice de 
poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 
1º grupo são intimadas a suspenderem suas atividades, se o índice crescer para 0,4 
as industrias do 1º e 2º grupo são intimadas a suspenderem suas atividades, se o 
índice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas 
atividades. Faça um diagrama de bloco que leia o índice de poluição medido e emita 
a notificação adequada aos diferentes grupos de empresas. 
 
6) Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das 
seguintes categorias: 
Infantil A = 5 a 7 anos 
Infantil B = 8 a 11 anos 
Juvenil A = 12 a 13 anos 
Juvenil B = 14 a 17 anos 
Adultos = Maiores de 18 anos 
 
7) Elabore um algoritmo que gera e escreve os números ímpares dos números lidos 
entre 100 e 200. 
 
8) Construa um algoritmo que leia 500 valores inteiros e positivos e: 
· Encontre o maior valor 
· Encontre o menor valor 
· Calcule a média dos números lidos 
 
8.Introdução Linguagem de Programação Java 
8.1 O que é Java? 
Chegou a hora de responder as perguntas mais básicas sobre Java. Ao término 
dessa etapa você será capaz de: 
 
• responder o que é Java; 
• mostrar as vantagens e desvantagens de Java; 
• compilar e executar um programa simples. 
 
Muitos associam Java com uma maneira de deixar suas páginas da web mais 
bonitas, com efeitos especiais, ou para fazer pequenos formulários na web. 
 
O que associa as empresas ao Java? 
Já iremos chegar neste ponto, mas antes vamos ver o motivo pelo qual as empresas 
fogem das outras linguagens: 
 
Quais são os seus maiores problemas quando esta programando? 
• ponteiros? 
• liberar memória? 
• organização? 
 
 
 
 33 
 
 
 
• falta de bibliotecas boas? 
• ter de reescrever parte do código ao mudar de sistema operacional? 
• custo de usar a tecnologia? 
 
Java tenta amenizar esses problemas. Alguns desses objetivos foram atingidos a 
muito tempo atrás, porque, antes do Java 1.0 sair, a idéia e que a linguagem fosse 
usada em pequenos dispositivos, como tvs, aspiradores, liquidificadores e outros. 
Apesar disso a linguagem teve seu lançamento mirando o uso dela nos clientes web 
(browsers) para rodar pequenas aplicações (applets). Hoje em dia esse não é mais o 
foco da linguagem. 
 
O Java e desenvolvido e mantido pela Sun (http://www.sun.com) e seu site principal 
é o http://java.sun.com. (java.com e um site mais institucional, voltado ao consumidor 
de produtos e usuários leigos, não desenvolvedores). 
 
8.2 A história do Java 
A Sun criou um time (conhecido como Green Team) para desenvolver inovações 
tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai 
do Java. O time voltou com a idéia de criar um interpretador (já era uma máquina 
virtual, veremos o que e isso mais a frente) para pequenos dispositivos, facilitando a 
reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e 
aparelhos de tv a cabo. 
 
A idéia não deu certo, tentaram fechar diversos contratos com grandes fabricantes 
de eletrônicos, como a Panasonic, mas não houve êxito devido ao conflito de 
interesses. Hoje sabemos que o Java domina o mercado de aplicações para 
celulares, porém parece que em 1994 ainda era muito cedo. 
 
Com o advento da web, a Sun percebeu que poderia utilizar a idéia criada em 1992 
para poder rodar pequenas aplicações dentro do browser. A semelhança era que na 
internet havia uma grande quantidade de sistemas operacionais e browser, e com 
isso seria grande vantagem poder programar numa única linguagem, independente 
da plataforma. Foi aí que o Java 1.0 foi lançado: focado em deixar o browser não 
apenas um cliente burro, fazendo com que ele possa também realizar operações, 
não apenas renderizar html. Sabemos que hoje os applets realmente não são o foco 
da Sun. O mais engraçado é que a tecnologia Java nasceu com um objetivo em 
mente, foi lançado com outro mas no final decolou mesmo no desenvolvimento de 
aplicações do lado do servidor. Sorte? Você pode ler a historia da linguagem Java 
em:http://java.sun.com/java2/whatis/1996/storyofjava.html. 
 
No Brasil, diversos grupos de usuários se juntaram para tentar disseminar o 
conhecimento da linguagem. Um deles e o GUJ (www.guj.com.br), uma comunidade 
virtual com artigos, tutoriais e fórum para tirar dúvidas, o maior em língua 
portuguesa. 
 
 
 
 
 34 
 
 
 
Encorajamos todos os alunos a usar muito os fóruns do mesmo pois é uma das 
melhores maneiras para achar soluções para pequenos problemas que acontecem 
com grande frequência. 
 
8.3 A máquina virtual 
 
Em uma linguagem de programação como C e Pascal, temos o seguinte quadro 
quando vamos compilar um programa. O código fonte e compilado para uma 
plataforma e sistema operacional especificos. Muitas vezes, o próprio código fonte e 
desenvolvido visando uma única plataforma! 
 
 
 
Esse código executável (binário) resultante será executado pelo sistema operacional 
e, por esse motivo, ele deve saber conversar com o sistema operacional em 
questão. 
 
 
Isto é, temos um código executável para cada sistema operacional. É necessário 
compilar uma vez para Windows, outra para o Linux, etc...Como foi dito 
anteriormente, na maioria das vezes, a sua aplicação se utiliza das bibliotecas do 
sistema operacional, como, por exemplo, a de interface gráfica para desenhar as 
'telinhas'. 
 
 
 
 
 35 
 
 
 
A biblioteca de interface gráfica do Windows é bem diferente das do Linux; 
resultado? Você precisa reescrever o mesmo pedaço da aplicação para diferentes 
sistemas operacionais, já que eles não são compatíveis. 
Já o Java utilizasse do conceito de máquina virtual, onde existe uma camada extra 
entre o sistema operacional e a aplicação, responsável por “traduzir” (não é apenas 
isso) o que sua aplicação deseja fazer para as respectivas chamadas do sistema 
operacional no qual ela esta rodando no momento: 
 
 
Dessa forma, a maneira a qual você abre uma janela no Linux ou no Windows e a 
mesma: você ganha independência de sistema operacional. Ou, melhor ainda, 
independência de plataforma em geral: não é preciso se preocupar em qual sistema 
operacional sua aplicação está rodando, nem em que tipo de máquina, 
configurações etc. 
 
Repare que uma máquina virtual é um conceito bem mais amplo que o de um 
interpretador. Como o próprio nome diz, uma máquina virtual é como um computador 
de mentira: ela tem tudo que um computador tem. Em outras palavras, ela e 
responsável por gerenciar memória, gerenciar threads, a pilha de execução, etc. Sua 
aplicação roda sem nenhum envolvimento com o sistema operacional! Sempre 
conversando apenas com a Java Virtual Machine (JVM). Essa característica éinteressante: como tudo passar pela JVM, ela pode tirar métricas, decidir onde e 
melhor alocar a memória, entre outros. Uma JVM isola a aplicação totalmente do 
sistema operacional. Se uma JVM termina abruptamente, só as aplicações que 
estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam 
rodando no mesmo computador, nem afetará o sistema operacional. Essa camada 
de isolamento também é interessante quando pensamos em um servidor que não 
pode se sujeitar a rodar código que possa a vir a interferir na boa execução de 
outras aplicações. 
 
Para tudo isso precisamos de um “bytecode”. Bytecode é o termo dado ao código 
binário gerado pelo compilador Java (pois existem menos de 256 códigos de 
operação dessa linguagem, e cada “opcode” gasta um byte, dando origem ao nome 
bytecode). O compilador Java gera esse bytecode que, diferente das linguagens 
 
 
 
 36 
 
 
 
sem maquina virtual, vai servir para diferentes sistemas operacionais, já que ele vai 
ser “traduzido” pela maquina virtual. 
 
O Hotspot é a tecnologia que a JVM utiliza para detectar pontos quentes da sua 
aplicação: código que e executado muito, provavelmente dentro de um ou mais 
loops. Quando a JVM julgar necessária, ela vai compilar aquele código para 
instruções nativas da plataforma, tendo em vista que isso vai provavelmente 
melhorar a performance da sua aplicação. 
 
Esse compilador é o JIT: Just inTime Compiler, o compilador que aparece “bem na 
hora” que você precisa. Você pode pensar então: porque a JVM não compila tudo 
antes de executar a aplicação?É que teoricamente compilar dinamicamente, a 
medida do necessário, pode gerar uma performance melhor. O motivo e simples: 
imagine um .exe gerado pelo VisualBasic, pelo gcc ou pelo Delphi, ele é estático. Ele 
já foi otimizado baseado em heurísticas, o compilador pode ter tomado uma decisão 
não tão boa. 
 
Já a JVM, por estar compilando dinamicamente durante a execução, pode perceber 
que um determinado código não está com performance adequada, e otimizar mais 
um pouco aquele trecho, ou ainda mudar a estratégia de otimização. E por esse 
motivo que as JVMs mais recentes (como a do Mustang, Java 6), em alguns casos, 
chega a ganhar em muitos casos de códigos C compilados com o GCC 3.x, se 
rodados durante um certo tempo. 
 
8.4 Versões do Java 
 
Java 1.0 e 1.1 são as versões muito antigas do Java. Com o Java 1.2 houve um 
aumento grande no tamanho da API, e foi nesse momento em que trocaram a 
nomenclatura de Java para Java2, com o objetivo de diminuir a confusão entre Java 
e Javascript. Mas lembre-se, não há versão do Java 2.0, o 2 foi incorporado ao 
nome: Java2 1.2. 
 
Depois vieram o Java2 1.3 e 1.4, e o Java 1.5 passou a se chamar Java 5, tanto por 
uma questão de marketing e porque mudanças significativas na linguagem foram 
incluídas. E nesse momento que o “2” do nome Java desaparece. Repare que para 
fins de desenvolvimento, o Java 5 ainda e referido como Java 1.5. Até a versão 1.4 
existia a terceira numeração (1.3.1, 1.4.1, 1.4.2, etc), indicando bug fixes e 
melhorias. A partir do Java 5 existem apenas updates: Java 5 update 7, por 
exemplo. 
 
O Java 6 foi lançado em 2006, mas sem mudanças na especificação da linguagem. 
Existe compatibilidade para trás em todas as versões do Java. Um class gerado pelo 
javac da versão 1.2 precisa necessariamente rodar da JVM 5.0. 
 
8.5 JVM? JRE? JDK? 
O que você vai baixar no site do java? 
 
 
 
 37 
 
 
 
 
JVM = apenas a virtual machine, esse download não existe. 
JRE = Java Runtime Environment, ambiente de execução Java, formado pela JVM e 
bibliotecas, tudo que você precisa para executar uma aplicação Java. 
JDK = Nós, desenvolvedores, faremos o download do JDK do Java SE (Standard 
Edition). 
 
8.6 Objetivos do java 
 
Queremos deixar claro de que a premissa do Java não é a de criar sistemas 
pequenos, onde temos um ou dois desenvolvedores, mais rapidamente que 
linguagens como php, perl, entre outras. 
 
O foco da plataforma e outro: aplicações de médio a grande porte, onde o time de 
desenvolvedores tem várias pessoas e pode sempre vir a mudar e crescer. Não 
tenha dúvidas que criar a primeira versão uma aplicação usando Java, mesmo 
utilizando IDEs e ferramentas poderosas, será mais trabalhoso que usar uma 
linguagem script ou de alta produtividade. Porém, com uma linguagem orientada a 
objetos e madura como o Java, será extremamente mais fácil e rápido fazer 
alterações no sistema, desde que você siga as boas práticas, recomendações e 
design patterns. 
 
Além disso, a quantidade enorme de bibliotecas gratuitas, para realizar os mais 
diversos trabalhos (tais como relatórios, gráficos, sistemas de busca, geração de 
código de barra, manipulação de XML, tocadores de vídeo, manipuladores de texto, 
persistência transparente, impressão, etc) e um ponto fortíssimo para adoção do 
java: você pode criar uma aplicação sofisticada, usando diversos recursos, sem 
precisar comprar um componente especifico, que costuma ser caro de acordo com 
sua especialização. 
 
Cada linguagem tem seu espaço e seu melhor uso. O uso do java é interessante em 
aplicações que virão a crescer, em que a legibilidade do código é importante, onde 
temos muita conectividade e se temos plataformas (ambientes e sistemas 
operacionais) heterogêneos (linux, unix, OSX e windows misturados). 
 
Você pode ver isso pela quantidade enorme de ofertas de emprego procurando 
desenvolvedores Java para trabalhar com sistemas web e aplicações de integração 
no servidor. Apesar disto, a Sun empenha-se em tentar popularizar o uso do Java 
em aplicações desktop, mesmo com o fraco marketshare do Swing/AWT/SWT em 
relação às tecnologias concorrentes (em especial Microsoft .NET). 
 
8.7 Instalando o java 
Antes de instalar, baixe o JDK 5.0 ou superior, do site do Java da Sun, em 
http://java.sun.com . Pegue a versão internacional e cuidado para não baixar o que 
tem mais de 90 megas, que é a primeira opção na página de download: esta versão 
vem com o Netbeans, que e uma ferramenta da Sun, e não nos interessa no 
 
 
 
 38 
 
 
 
momento. Mais para baixo da página existe uma versão menor, algo em torno de 60 
megas, sem essa ferramenta. Esse software disponível na Sun é gratuito, assim 
como as principais bibliotecas Java e ferramentas. 
 
E interessante você também baixar a documentação do JDK 5.0, o link se encontra 
na mesma pagina e possui outros 40 megas. O procedimento de instalação no 
Windows é muito simples: basta você executar o arquivo e seguir os passos. Instale 
no diretório desejado. 
 
Em seguida baixe a versão mais recente do Eclipse. Não precisa instalar é só clicar 
no arquivo executável (www.eclipse.org), esta é um a IDE líder do mercado, e é 
gratuita. 
 
Se você possui duvidas sobre a instalação e configuração geral do ambiente, 
consulte o tutorial no site do guj: http://www.guj.com.br . 
 
8.8 Compilando o primeiro programa em Java 
Vamos para o nosso primeiro código. O programa que imprime uma linha simples: 
minha primeira aplicação Java! 
 
 
 
Resultado da console: 
 
 
 
Atenção: O java é case sensitive: tome cuidado com maiúsculas e minúsculas. 
Após digitar o código acima no Eclipse, grave-o como PrimeiroPrograma.java em 
algum diretório. 
 
O miolo do programa e o que será executado quando chamamos a maquina virtual. 
Por enquanto, todas as linhas anteriores, onde há a declaração de uma classe e a 
de um método, não importa para nós. Mas devemos saber que toda aplicação Java 
começa por um ponto de entrada, e este ponto de entrada é um método main. 
 
 
 
 39 
 
 
 
Ainda não sabemos o que é método. Você aprenderá esses conceitos em outra 
disciplina “programação orientada a objetos”. Até lá, não se preocupe com essas 
declarações. Sempre que um exercício for feito, o código sempre estará nesse 
miolo. No caso do nosso código, a linha do System.out.println faz com que o 
conteúdo entre aspas seja colocado na tela. 
 
8.9 Variáveisprimitivas e controle de fluxo 
Iremos aprender a trabalhar com os seguintes recursos da linguagem Java: 
 
• declarando, atribuindo valores, casting e comparando variáveis; 
• controle de fluxo através de if e else; 
• instruções de laço for e while, controle de fluxo com break e continue. 
 
Dentro de um bloco, podemos declarar variáveis e usá-las. Em Java, toda variável 
tem um tipo que não pode ser mudado uma vez que declarado: 
 
tipoDaVariável nomeDaVariável; 
 
Por exemplo, é possível ter uma idade que vale um número inteiro: 
 
int idade; 
 
Com isso, você declara a variável idade, que passa a existir a partir deste momento. 
Ela e do tipo int, que guarda um numero inteiro. A partir de agora você pode usá-la, 
Primeiro atribuindo valores. 
 
A linha a seguir é a tradução de “idade deve valer agora quinze“. 
idade = 15; 
 
8.10 Comentários em Java 
 
Para fazer um comentário em java, você pode usar o // para comentar ate o final da 
linha, ou então usar o /* */ para comentar o que estiver entre eles. 
 
/* comentário daqui, 
 ate aqui */ 
 
//uma linha de comentário sobre a idade 
int idade; 
 
Além de atribuir, você pode utilizar esse valor. O código a seguir declara novamente 
a variável idade com valor 15 e imprime seu valor na saída padrão através da 
chamada a System.out.println. 
 
 
 
 
 
 
 40 
 
 
 
//declara a idade 
int idade; 
idade = 15; 
 
// imprime a idade 
System.out.println(idade); 
Por fim, podemos utilizar o valor de uma variável para algum outro propósito, como 
alterar ou definir uma segunda variável. O código a seguir cria uma variável 
chamada idadeNoAnoQueVem com valor de idade mais um. 
 
//gera uma idade no ano seguinte 
int idadeNoAnoQueVem; 
idadeNoAnoQueVem = idade + 1; 
 
No momento que você declara uma variável, também é possível inicializá-la 
Por praticidade: int idade = 15. Você pode usar os operadores +, -, * , / para 
operar com números, sendo eles responsáveis pela adição, subtração, divisão e 
multiplicação, respectivamente. Além desses operadores básicos, há o operador % 
(módulo) que é o resto de uma divisão inteira. Veja alguns exemplos: 
 
int quatro = 2 + 2; 
int três = 5 – 2; 
int oito = 4 * 2; 
int dezesseis = 64 / 4; 
int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1; 
// o operador % pega o resto da divisão inteira 
 
9.Testando código em Java 
 
Você deve colocar esses trechos de código dentro do metodo main. Isto é, isso deve 
ficar no miolo do programa. Use bastante System.out.println, dessa forma você pode 
ver algum resultado, caso contrario, ao executar a aplicação, nada aparecerá. Por 
exemplo, para imprimir a idade e a idadeNoAnoQueVem podemos escrever o 
seguinte programa de exemplo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 41 
 
 
 
 
Representar números inteiros é fácil, mas como guardar valores reais, como frações 
de números inteiros e outros? Outro tipo de variável muito utilizado é o double, que 
armazena um numero com ponto flutuante. 
 
double d = 3.14; 
 
O tipo boolean armazena um valor verdadeiro ou falso, e só. 
 
boolean verdade = true; 
 
O tipo char guarda um e apenas um caractere. Esse caractere deve estar entre 
aspas simples. Não se esqueça dessas duas características de uma variável do tipo 
char. 
 
char letra = 'a'; 
System.out.println(letra); 
 
 
10.Tipos primitivos em Java 
 
Esses tipos de variáveis são tipos primitivos do Java: o valor que elas guardam são 
o real conteúdo da variável. Quando você utilizar o operador de atribuição = o valor 
será copiado. 
 
int i = 5; // i recebe uma cópia do valor 5 
int j = i; // j recebe uma cópia do valor de i 
i = i + 1; // i vira 6, j continua 5 
 
Aqui, i fica com o valor de 6. Mas e j? Na segunda linha, j esta valendo 5. Quando i 
passa a valer 6, será que j também fica valendo? Não, pois o valor de um tipo 
primitivo sempre é copiado. Apesar da linha 2 fazer j = i, a partir desse momento 
essas variáveis não tem relação nenhuma: o que acontecer com uma não reflete em 
nada com a outra. 
 
Vimos aqui os tipos primitivos que mais aparecem. O Java tem outros, que são o 
byte, short, long e float. Cada tipo possui características especiais que, para um 
programador avançado, podem fazer muita diferença. 
 
 
 
 
 
 
 
 
 
 
 
 
 42 
 
 
 
 
 
10.1. Exercício de fixação 
 
1) Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada mês. 
para fechar o balanço do primeiro trimestre, precisamos somar o gasto total. 
Sabendo que, em Janeiro foi gasto 15000 reais, em Fevereiro, 23000 reais e em 
Março, 17000 reais, faça um programa que calcule e imprima o gasto total no 
trimestre. Siga esses passos: 
 
a) Crie uma classe chamada BalancoTrimestral com um bloco main, como nos 
exemplos anteriores; 
 
b) Dentro do main (o miolo do programa), declare uma variável inteira chamada 
gastosJaneiro e inicialize-a com 15000; 
 
c) Crie também as variáveis gastosFevereiro e gastosMarco, inicializando-as 
com 23000 e 17000, respectivamente, utilize uma linha para cada declaração; 
 
d)Crie uma variável chamada gastosTrimestre e inicialize-a com a soma das outras 3 
variaveis: int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco 
 
e) Imprima a variavel gastosTrimestre. 
 
2) (opcional) Adicione código (sem alterar as linhas que já existem) no programa a 
seguir para imprimir o resultado: Resultado: 15, 15.1, y, false 
 
3) (opcional) Procure por code conventions no campo de busca do site java.sun.com. 
 
 
 
 
 
 
 
 43 
 
 
 
 
 
11. Casting e Promoção 
 
Alguns valores são incompatíveis se você tentar fazer uma atribuição direta. 
Enquanto um número real costuma ser representado em uma variável do tipo 
double, tentar atribuir ele a uma variável int não funciona pois e um código que 
diz: “i deve valer d”, mas não se sabe se realmente é um número inteiro ou não. 
 
double d = 3.1415; 
int i = d; // não compila 
 
O mesmo ocorre no seguinte trecho: 
int i = 3.14; 
 
O mais interessante, e que nem mesmo o seguinte código compila: 
 
double d = 5; // ok, o double pode conter um número inteiro 
int i = d; // não compila 
 
Apesar de 5 ser um bom valor para um int, o compilador não tem como saber que 
valor estará dentro desse double no momento da execução. Esse valor pode ter sido 
digitado pelo usuário, e ninguém vai garantir que essa conversão ocorra sem perda 
de valores. Já no caso a seguir e o contrário: 
 
int i = 5; 
double d2 = i; 
 
O código acima compila sem problemas, já que um double pode guardar um número 
com ou sem ponto flutuante. Todos os inteiros representados por uma variável do 
tipo int podem ser guardados em uma variável double, então não existem problemas 
no código acima. 
 
Ás vezes, precisamos que um número quebrado seja arredondado e armazenado 
num numero inteiro. Para fazer isso sem que haja o erro de compilação, é preciso 
ordenar que o número quebrado seja moldado (casted) como um número inteiro. 
Esse processo recebe o nome de casting. 
 
double d3 = 3.14; 
int i = (int) d3; 
 
O casting foi feito para moldar a variavel d3 como um int. O valor dela agora e 3. 
O mesmo ocorre entre valores int e long. 
 
long x = 10000; 
int i = x; // nao compila, pois pode estar perdendo informação 
E, se quisermos realmente fazer isso, fazemos o casting: 
 
 
 
 44 
 
 
 
long x = 10000; 
int i = (int) x; 
 
Abaixo estão relacionados todos os casts possíveis na linguagem Java, mostrando 
quando você quer converter de um valor para outro. A indicação Impl. quer dizer que 
aquele cast é implicito e automático, ou seja, você não precisa indicar o cast 
explicitamente. (lembrando que o tipo boolean não pode ser convertido para nenhum 
outro tipo). 
 
 
 
Na tabela abaixo, estão os tamanhos de cada tipo primitivo do Java. 
 
 
 
 
 
 
 45 
 
 
 
 
 
12. Instruções de desvio 
 
Linguagens de alto nível implementam várias estruturas de controle do fluxo do 
programa para facilitar odesenvolvimento de programas e promover um melhor 
estilo de programação. Os comandos de seleção e repetição são mais empíricos do 
que os comandos tradicionais em linguagem de máquina. Java possui duas 
instruções de desvio condicionais mais uma palavra reservada que não deve ser 
usada. Todas elas existem em várias outras linguagens e plataformas. 
13. Comando: if 
 
O comando if executa um trecho de código apenas uma vez, dependendo de sua 
condição. A sintaxe segue a sintaxe abaixo. 
 
if ( <condição> ) { 
 <comandos> 
 } else { 
 <comandos> 
 } 
 
A condição é uma expressão da linguagem java e pode ser qualquer conjunto de 
operações que retornem um valor booleano. 
Ex: (i > = 0) ou (a = = 5 & & b! = 5 | | c = = a) O " comandos 1 " e " comandos 2 " são 
um conjunto de um ou mais comandos da linguagem Java. 
No caso de ser apenas um comando o uso de {} não é necessário. 
 
Se a condição for verdadeira o interpretador executará o " comandos 1 " caso 
contrário o bloco " comandos 2 " será executado. 
Exemplo: 
 
public class ExemploIf { 
 public static void main(String[ ] args) { 
 int i = 8; 
 // If que dirá se o valor do i é igual a 1 ou igual a dois. 
 
 
 
 46 
 
 
 
 if (i \% 2) 
 System.out.println("Oito é divisível por dois"); 
 else 
 System.out.println("Oito não é divisível por dois"); 
 // Verifica se o nome é Vitor. 
 String nome = "Vitor"; 
 if (nome.equals("Vitor")) { 
 System.out.println("Nome é Vitor"); 
 } else { 
 System.out.println("Nome não é Vitor"); 
 } 
 } 
} 
No primeiro if do exemplo é testado se o valor de i é divisível por 2, ou seja, se 
valor de i é par. Se for divisível, é impresso o texto Oito é divisível por dois, caso 
contrário é impresso o texto Oito não é divisível por dois na linha de comando. 
 
No segundo exemplo é feito um teste para saber se a variável String nome é 
igual a Vitor. Em comparação de objetos sempre usa-se o método equals. Se o 
valor de nome for Vitor é impresso Nome é Vitor, caso contrário é impresso 
Nome não é Vitor. 
14. Comando: switch 
 
O comando switch é o mesmo do C e é semelhante ao case do Delphi. Permite 
selecionar o bloco de código a ser executado baseado no teste lógico de uma 
expressão. 
 O switch é a forma evoluída para o if, podendo tratar mais de dois blocos de 
execução. 
 
Sintaxe: 
 
switch ( <expressão> ) { 
 
 
 
 47 
 
 
 
 case <valor1>:<comandos 1> 
 [break;] 
 case <valor2>:<comandos 2> 
 [break;] 
 case <valor3>:<comandos 3> 
 [break;] 
 case <valor4>:<comandos 4> 
 [break;] 
 ... 
 default: <comandos default> 
} 
O comando switch executa a expressão e compara o valor encontrado com os 
valores: , , , etc. Quando encontra a igualdade ele executa o bloco de comandos 
daquele valor. A execução continuará até o final do switch ou até que ele 
encontre um break;. Exemplos: 
public class ExemploSwitch { 
 public static void main(String[] args) { 
 int i = 2; 
 // Switch que irá imprimir na tela o valor 2 
 switch (i) { 
 case 1 : System.out.println("Valor de i é 1"); 
 break; 
 case 2 : System.out.println("Valor de i é 2"); 
 break; 
 case 3 : System.out.println("Valor de i é 3"); 
 break; 
 
 
 
 48 
 
 
 
 default: System.out.println("Default"); 
 } 
 // Switch que irá imprimir na tela o valor "Vitor" 
 String nome = "Vitor"; 
 switch (nome.hashcode()) { 
 case "Vitor".hashCode() : System.out.println("Valor de nome é Vitor"); 
 break; 
 case "Paulo".hashCode() : System.out.println("Valor de nome é Paulo"); 
 break; 
 default: System.out.println("Default"); 
 } 
 } 
} 
Não é necessário utilizar as chaves ({}) para delimitar um bloco de comandos, 
pois o interpretador executará todos eles até encontrar um break ou o switch 
finalizar. 
 
A única limitação do switch é que a deve retornar um valor numérico inteiro, 
qualquer um de seus quatro tipos primitivos. O switch não funciona com String, 
float, char e boolean por exemplo. E é por este motivo que no segundo switch do 
exemplo é utilizado o método hashcode (), que retorna um código inteiro único 
para cada String diferente. 
 
15. Comando: goto 
Há um consenso entre os desenvolvedores de software de que instruções goto 
devem ser usadas somente para criar estruturas de controle, de seleção ou 
repetição, caso elas não existam na linguagem trabalhada. E é exatamente por 
isso que, embora a palavra goto seja uma palavra reservada do Java, ela não 
pode ser utilizada, o compilador Java acusará erro se encontrá-la no código. 
 
Os especialistas afirmam que o goto polui o código fonte e se não for utilizado 
adequadamente pode se tornar um problema maior do que o próprio software. 
 
 
 
 49 
 
 
 
 
17. Laços de repetição 
Laços controlam uma repetição de execução de acordo com uma condição 
imposta. Em Java, assim como tantas outras linguagens, existem três tipos de 
laço: for, while e do.. while. 
Comando: for 
 
O comando for cria um laço de repetição no fluxo do programa baseado em três 
parâmetros: 
• expressão inicial: Onde é executado apenas uma vez, na entrada do laço. 
• condição: É executado a cada iteração do laço e determina quando o 
programa deve sair do mesmo. Caso a condição seja verdadeira, repete-se os 
do laço uma vez, caso seja falsa, o programa pula para a próxima instrução 
seguinte ao laço. 
• incremento: É uma operação normal, executada a cada iteração. Geralmente 
é usada para incrementar contadores ou configurar variáveis. 
Sintaxe: 
 
for (<expressão inicial>; <condição>; <incremento>) { 
 <comandos> 
} 
Exemplos: 
 
public class ExemploFor { 
 public static void main(String[] args) { 
 for (int i=0; i<10; i++) { 
 System.out.println("Contador é " + i); 
 } 
 for (;;) { 
 System.out.println("Laço infinito."); 
 } 
 } } 
 
 
 
 50 
 
 
 
O primeiro for do exemplo acima irá apresentar 10 mensagens indicando o 
contador de 0 até 9. Quando o valor do inteiro i ser igual a 10 o interpretador java 
alternará o fluxo para o início do outro for. No segundo for do exemplo o código 
entra num laço infinito, ou seja o programa não termina, sequer sairá do laço, já 
que não existe condição para que tal evento ocorra. 
 
Comando: while 
 
O comando while é utilizada quando não se quer que o corpo do laço seja 
necessariamente executado. A expressão de comparação é avaliada antes que o 
laço seja executado, enquanto ela for verdadeira os são repetidos. 
 
Sintaxe: 
 
while (<condição>) { 
 <comandos> 
} 
Exemplos: 
 
public class ExemploWhile { 
 public static void main(String[] args) { 
 int i=0; 
 while(i++<10) { 
 System.out.println("Contador é " + i); 
 } 
 while(true) { 
 System.out.println("Laço infinito."); 
 } 
 } 
} 
Assim como nos exemplos com o comando for, o primeiro exemplo imprime 
contadores de 0 até 9 e o segundo é um laço infinito, pois o resultado da 
condição sempre será verdadeiro. 
 
 
 
 51 
 
 
 
Comando: do.. while 
O comando do.. while é utilizada quando se quer que o corpo do laço seja 
executado pelo menos uma vez. A expressão de comparação é avaliada depois 
que o laço foi executado, enquanto ela for verdadeira os são repetidos. 
 
Sintaxe: 
 
do { 
 <comandos> 
} while (<condição>); 
Exemplos: 
 
public class ExemploDoWhile { 
 public static void main(String[] args) { 
 int i=0; 
 do { 
 System.out.println("Contador é " + i); 
 } while(++i<10) 
 do { 
 System.out.println("Laço infinito."); 
 } while(true); 
 }} 
 
Assim como nos exemplos anteriores, o primeiro exemplo do comando do.. while 
imprime contadores de 0 até 9 e o segundo é um laço infinito, pois o resultado da 
condição sempre será verdadeiro. Embora a diferença entre os dois comandos while 
sejam mínimas, cada uma é utilizada em uma determinada ocasião. 
 
Comandos: break e continue 
 
É a declaração de desvio usada para sair de um laço antes do normal. O tipo 
 
 
 
 52 
 
 
 
determina para onde é transferido o controle. O break é transfere o controle para o 
final de uma construção de laço (for, do, while ou switch). O laço vai encerrar 
independentemente de seu valor de comparação e a declaração após o laço será 
executada. 
 
Exemplo: 
int i = 0; 
while (true) { 
System.out.println(i); 
if ( i++ >= 10 ) 
break; 
} 
Este exemplo imprime os valores da variável i de 0 até 9. 
 
A declaração continue faz com que a execução do programa volte imediatamente 
para o início do laço, porém para a próxima interação. O continue faz o interpretador 
pular para a próxima iteração e obriga-o a testar a condição. Exemplo: 
 
for (int i = -10; i<10; i++) { 
 if ( i == 0 ) 
 continue; 
 System.out.println(i); 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 53 
 
 
 
18. Vetores e matrizes em Java 
 
Semelhante às liguagens C, C++ e Pascal, a linguagem Java também dá suporte a 
vetores e matrizes (arrays) de diversas formas. Os vetores constituem uma forma 
muito conveniente de organizar informações em fileira. Por exemplo, podemos 
formar um vetor com as notas de cinco alunos de uma sala de aula do seguinte 
modo: 
 
float nota[ ] = { 7.8, 8.4, 4.2, 1.8, 6.4 }; 
 
Neste caso nota[0] é a nota do primeiro aluno, isto é, 7.8, nota[1] é a nota do 
segundo, ou seja, 8.4, e assim por diante. 
 
A utilização de vetores e matrizes em Java envolve três etapas: 
 
1-Declarar o vetor ou matriz. Para isto, basta acrescentar um par de colchetes antes 
ou depois do nome da variável. Por exemplo: 
 
int ind[ ]; 
double A[ ][ ],T[ ] [ ] [ ]; 
int [ ]nota; 
 
2- Reservar espaço de memória e definir o tamanho. É preciso definir o tamanho do 
vetor, isto é, a quantidade total de elementos que terá de armazenar. Em seguida é 
necessário reservar espaço de memória para armazenar os elementos. Isto é feito 
de maneira simples pelo operador new: 
 
ind = new int[10]; 
nota = new int[70]; 
A = new double[10][20]; 
 
3- Armazenar elementos no vetor ou matriz. Para armazenar uma informação em um 
dos elementos de um vetor ou matriz, é necessário fornecer um índice que indique a 
posição desse elemento. Por exemplo, para armazenar um valor na quarta posição 
do vetor nota, fazemos o seguinte: 
 
nota[3] = 5.2; 
 
Como podemos observar, os índices começam em zero e vão até o número de 
posições reservadas, menos um. No vetor nota criado acima, os índices válidos vão 
de 0 até 69. Caso haja a tentativa de atribuir um valor a um elemento cujo índice 
esteja fora desse intervalo, ocorrerá um erro que impedirá a execução do programa. 
Por isso, é necessário um certo cuidado ao manejar com esses índices, garantindo o 
perfeito funcionamento do programa. 
 
Existe, porém, um atalho para esses três passos quando desejamos criar um vetor 
com valores atribuídos de modo estático. Foi o que fizemos no primeiro exemplo 
 
 
 
 54 
 
 
 
acima, declarando o vetor nota com as notas de cinco alunos. Nesse caso, espaço 
suficiente para as notas de cinco alunos foi reservado e as notas foram guardadas 
em respectivas posições do vetor. 
 
Entretanto, nem sempre é tão fácil assim. Em geral, estaremos interessados em 
trabalhar com vetores muito muito maiores, e cujos elementos sejam provenientes 
de outras fontes, que variam com o tempo. Assim, seremos obrigados a seguir os 
passos acima. 
 
exemplos de vetores e matrizes: 
 
// 12 primeiros termos da seqüência de Fibonacci: 
long Fibonacci[] = {1,1,2,3,5,8,13,34,55,89,144}; 
 
// Tabela de sen(n*pi/6), n=0,1,2,...5 
float seno[] = {0.0000,0.5000,0.8660,1.0000,0.8660,0.5000}; 
 
// Tabela de log(1+n), n=0,2...99: 
double tlog[] = new double[100]; 
for(int n=0; n<100; n++) tlog[i] = Math.log(1+n); 
 
// Matriz dos coeficientes 
double A[][] = { {1,2,3}, {0,1,3}, {0,0,-1} }; 
 
19. Estruturando o código: procedimentos e funções 
 
Um aspecto muito comum nos programas é que frequentemente escrevemos 
trechos de código (várias instruções) que se repetem ao longo da lógica que 
estabelecemos. 
 
Por exemplo, se quisermos calcular a média aritmética das provas de um aluno, 
temos que somar a nota da primeira prova com a nota da segunda prova e dividir por 
2. Se tivermos mais de um aluno, temos que repetir esse cálculo para cada aluno. 
Logicamente, a forma mais simples de fazer isso é fazendo o famoso "copy and 
paste": para cada aluno, colocamos a regra para fazer o cálculo e impressão da 
média das notas. 
 
Com o "copy and paste" conseguimos resolver o problema da repetição, mas será 
que foi a melhor escolha? E se tivermos 100 alunos? E se após termos escrito o 
programa todo, alguém nos disser que eram 3 provas? Em ambos os casos teremos 
um bom trabalho para ajustar o código do programa. 
 
Diante disso, podemos afirmar que a repetição de trechos de código dentro de um 
programa é considerada uma prática muito ruim. Mas será que é possível fazer 
diferente? A resposta é a criação de procedimentos e funções. 
 
As instruções que precisam ser repetidas em vários locais do código devem ser 
 
 
 
 55 
 
 
 
isoladas em um bloco de código do programa que recebe um nome (cada linguagem 
estabelece a forma para delimitar esse bloco). Quando precisarmos executar 
aquelas instruções repetidas vezes, basta invocar o nome do bloco de código que as 
contém. A esse bloco de código é que chamamos de procedimentos ou funções 
(diferenciaremos os dois termos mais adiante). 
 
Um programa pode ser constituído de vários procedimentos e funções e um bloco de 
código principal, chamado geralmente de programa principal ou bloco principal. 
 
Ao isolarmos a regra que será repetida, escrevemos-a uma única vez dentro do 
procedimento ou função. E podemos chamá-la quantas vezes for necessário, tanto 
dentro do programa principal, quanto dentro de outros procedimentos e funções. Se 
errarmos na regra, ou se ela mudar com o tempo, basta fazer o ajuste no único local 
do código onde ela existe: dentro do procedimento ou função. 
 
Veja o exemplo a seguir para visualizar como seria um procedimento em algoritmo 
estruturado. 
 
 
Passagem de parâmetros 
 
Um procedimento ou função pode receber parâmetros que carregam os dados que 
devem ser manipulados pelas suas instruções internas. Um parâmetro é uma 
variável definida no corpo do procedimento ou função que recebe um valor apenas 
quando o bloco é chamado.Para tornar o exemplo da figura anterior mais 
interessante, podemos declarar variáveis no corpo do programa principal e passar o 
valor dessas variáveis para dentro do procedimento por meio de parâmetros. Veja a 
figura a seguir. 
 
 
 
 
 
 
 
 
 
 
 
 
 56 
 
 
 
 
Repare que agora, o procedimento define 2 parâmetros: n1 e n2. Tais parâmetros 
recebem valores quando são chamados no programa principal. As variáveis nota1 e 
nota2 são usadas nas duas primeiras chamadas ao procedimento: o valor de nota1 
é copiado para n1 e o valor de nota2 é copiado para n2. A regra programada dentro 
do procedimento é então executada com base nos valores dos parâmetros n1 e n2. 
A terceira chamada ao procedimento ilustra que também podemos passar valores 
para os parâmetros diretamente. 
 
Procedimentos x funções 
 
A diferença entre procedimentos e funções é unicamente no retorno do bloco de 
código: funções retornam valores após a execução da sua lista de instruções, 
procedimentos não.Para facilitar o entendimento, vamos ver o exemplo a seguir. 
 
 
Agora criamos uma função que calcula a média das notas com base nos parâmetrosrecebidos, e devolve o valor da média ao invés de fazer a impressão. A função deve 
ser definida usando o tipo de retorno que ela irá fornecer (no caso do exemplo, valor 
de tipo real) além dos parâmetros que são opcionais. Dentro do bloco da função, 
devemos usar uma instrução que indique o valor que será retornado (nas linguagens 
geralmente a palavra é return para retornar um valor). No algoritmo, a representação 
usada é de que o nome da função recebe um valor... isso quer dizer que quando 
chamarmos essa função podemos atribuí-la a uma variável de tipo real, pois ela irá 
conter um valor de resposta. 
 
Linguagens orientadas a objetos 
 
Nas linguagens que seguem o paradigma da orientação a objetos, não há 
diferenciação entre procedimentos e funções. Todos os blocos de código são 
 
 
 
 57 
 
 
 
chamados de métodos, inclusive o programa principal, que é o método principal 
(geralmente nomeado com a palavra main). 
 
Conclusões 
 
o pré-requisito fundamental para uma pessoa ingressar no desenvolvimento com 
uma linguagem de programação orientada a objetos, como é o caso de Java, é ter 
todos os conceitos sobre programação muito bem fundamentados. 
 
É necessário entender perfeitamente como funcionam os programas: código-fonte, 
linguagem de programação, compilação e execução. É preciso saber usar os vários 
tipos de instruções que um programa pode conter, incluindo principalmente 
instruções de uso de variáveis, condições e laços. E para organizar e facilitar a 
escrita de código, é preciso entender como funcionam os procedimentos, funções, 
passagens de parâmetros e retornos de função. Obviamente que isso não é tudo, 
mas para quem pensa em começar a estudar Java, por exemplo, é necessário 
começar por essa parte mais básica de lógica de programação. 
 
20. Algoritmos de ordenação 
 
Algoritmo de ordenação em ciência da computação é um algoritmo que coloca os 
elementos de uma dada sequência em uma certa ordem -- em outras palavras, 
efetua sua ordenação completa ou parcial. As ordens mais usadas são a numérica e 
a lexicográfica. 
Existem várias razões para se ordenar uma sequência. Uma delas é a possibilidade 
se acessar seus dados de modo mais eficiente. 
 ➔ Ordenar crescentemente (decrescentemente) significa alterar a ordem pela 
qual surgem os elementos de uma sequência, tal que o primeiro seja menor (maior) 
do que o segundo, o segundo menor (maior) do que o terceiro, e assim 
sucessivamente. 
➔ A utilidade destes algoritmos está na resolução de problemas como: 
✔ pesquisa (lista telefónica); 
✔ agrupar elementos repetidos: 
(7, 1, 2, 7, 2, 5) → (1, 2, 2, 5, 7, 7) ou (7, 7, 5, 2, 2, 1). 
➔ Dado um vector V de N inteiros (caso mais simples), pretende-se 
construir um algoritmo que, após a sua execução, deixe o vector V 
ordenado por ordem crescente: V[0] ≤ V[1] ≤ V[2] ≤ ... ≤ V[N-1]. 
 
 
 
 58 
 
 
 
Ordenação por seleção 
➔ 1ª posição (V[0]) o menor elemento, 
➔ 2ª posição (V[1]) o 2º menor elemento, 
➔ ... 
➔ k-ésima posição (V[k-1]) o k-ésimo menor elemento, 
➔ ... 
➔ N-ésima (última) posição (V[N-1]) o maior elemento. 
Ordenação por seleção (Algoritmo – versão 1) 
➔ Para a 1ª posição (V[0]) 
✔ Det. a posição do menor elemento (pos_menor) de V[0] a V[N-1] 
✔ Trocar o elemento da pos_menor com o elemento da 1ª posição 
➔ Para a 2ª posição (V[1]) 
✔ Det. a posição do menor elemento (pos_menor) de V[1] a V[N-1] 
✔ Trocar o elemento da pos_menor com o elemento da 2ª posição 
➔ . . . 
➔ Para a k-ésima posição (V[k]) 
✔ Det. a posição do menor elemento (pos_menor) de V[k] a V[N-1] 
✔ Trocar o elemento da pos_menor com o elemento da k-ésima posição 
Ordenação por seleção (Algoritmo – versão 1) 
➔ Para a (N-1)-ésima posição (V[N-2]) 
✔ Det. a posição do menor elemento (pos_menor) de V[N-2] a V[N-1] 
✔ Trocar o elemento da pos_menor com o elemento da (N-1)-ésima 
posição 
 
 
 
 59 
 
 
 
➔ Para a N-ésima posição (V[N-1]) 
✔ Det. a posição do menor elemento (pos_menor) de V[N-1] a V[N-1]. 
Como só falta um elemento para ordenar, V[N-1], este encontra-se 
automaticamente ordenado (é o maior elemento de todos). 
Ordenação por selecção (Algoritmo – versão 2) 
Para k desde 0 até N-2 fazer: 
pos_menor ← k 
Para kk desde k+1 até N-1 fazer: 
Se (V[kk] < V[pos_menor]) então 
pos_menor ← kk 
Trocar V[pos_menor] com V[k], se necessário, da seguinte forma: 
aux ← V[pos_menor] 
V[pos_menor] ← V[k] 
V[k] ← aux 
Ordenação por borbulagem (“bubble sort”) 
➔ Consiste em comparar 2 elementos consecutivos e, se estiverem 
desordenados, trocá-los entre si. 
➔ Desta forma, os maiores elementos tendem a deslocar-se para a 
direita e os menores para a esquerda do vector. 
➔ O vector fica ordenado quando após várias passagem pelo vector 
com pelo menos uma troca, não há qualquer troca na actual 
passagem. 
Ordenação por borbulagem (Exemplo) 
 
 
 
 60 
 
 
 
➔ (7, 5, 2, 6) 
➔ Primeira passagem: 
✔ Troca do 1º elemento com o 2º (7 ↔ 5) V = (5, 7, 2, 6) 
✔ Troca do 2º elemento com o 3º (7 ↔ 2) V = (5, 2, 7, 6) 
✔ Troca do 3º elemento com o 4º (7 ↔ 6) V = (5, 2, 6, 7) 
➔ Segunda passagem: 
✔ Troca do 1º elemento com o 2º (5 ↔ 2) V = (2, 5, 6, 7) 
➔ Terceira passagem: 
✔ Sem qualquer troca ⇒ V = (2, 5, 6, 7) está ordenado. 
Ordenação por borbulagem (Algoritmo) 
Fazer: 
Num_trocas ← 0; 
Para k desde 0 até N-2 fazer: { k = N-2 ⇒ k+1 = N-1 } 
Se (V[k] > V[k+1]) então 
Trocar V[k] com V[k+1] 
Num_trocas ← Num_trocas + 1 
Enquanto (Num_trocas ≠ 0) 
A seguir um exemplo de um algoritmo de ordenação: 
public class Ordenacao 
{ 
 
 public static void bublesort(int[] v) 
 { 
 int i,ultimatroca,lsup,aux; 
 lsup=v.length-1; 
 do 
 { 
 ultimatroca=0; 
 
 
 
 61 
 
 
 
 for(i=0;i<lsup-1;i++) 
 { 
 if(v[i]>v[i+1]) 
 { 
 aux=v[i]; 
 v[i]=v[i+1]; 
 v[i+1]=aux; 
 ultimatroca=i; 
 } 
 
 } 
 lsup=ultimatroca; 
 } 
 while(lsup>0); 
 } 
 public static void quicksort(int[] v) 
 { 
 ordena(0,v.length-1,v); 
 } 
 public static void ordena (int e,int d, int[] v) 
 { 
 int i,j,aux,x; 
 x=v[(e+d)/2]; 
 i=e; 
 j=d; 
 do 
 { 
 while(v[i]<x)i++; 
 while(v[j]>x)j--; 
 if(i<=j) 
 { 
 aux=v[i]; 
 v[i]=v[j]; 
 v[j]=aux; 
 i++; 
 j--; 
 } 
 } 
 while(i<=j); 
 if(e<j) 
 ordena(e,j,v); 
 if(d>i) 
 ordena(i,d,v); 
 } 
 public static void selecao(int[] v) 
 { 
 int i,k,posmenor,aux; 
 for(i=0;i<v.length-1;i++) 
 
 
 
 62 
 
 
 
 { 
 posmenor=i; 
 for(k=i+1;k<v.length;k++) 
 if (v[k]<v[posmenor]) 
 posmenor=k; 
 aux=v[i]; 
 v[i]=v[posmenor]; 
 v[posmenor]=aux; 
 } 
 } 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 63 
 
 
 
REFERÊNCIAS BIBLIOGRÁFICAS 
 
[1] Paulo Sergio Moraes. “lógica de Programação”. Unicamp - Centro de 
Computação – DSC. 2000.SP SP 
 
[2] Kathy Sierra & Bert Bates .”Use a Cabeça!: Java” 
Autor:.Editora: ALTA BOOKS. 2007 - Edição 2

Continue navegando