Logica de Programação Java
Logica de Programação Java
Sumário
AGENDA 8 ..................................................................................................................................... 3
RACIOCINANDO A LÓGICA ........................................................................................................... 3
AGENDA 9 ................................................................................................................................... 20
DESENVOLVENDO A LÓGICA ...................................................................................................... 20
Variável ....................................................................................................................................... 22
Operadores ................................................................................................................................. 24
Operadores Aritméticos. ........................................................................................................ 25
Operadores Relacionais.......................................................................................................... 25
Operadores Lógicos ................................................................................................................ 26
Java Virtual Machine – JVM ................................................................................................... 41
O Java Devlopment Kit (JDK) e a Aplication Programming Interface (API) Eclipse .............. 41
Criando um projeto utilizando a API Eclipse ......................................................................... 41
A estrutura de um programa feito em Java ........................................................................... 46
O comando Escreva .................................................................................................................... 46
Como nomear uma variável ............................................................................................... 49
O comando Leia .......................................................................................................................... 51
Exemplo prático de um programa ............................................................................................. 54
AGENDA 11 ................................................................................................................................. 82
ESTRUTURAS DE DECISÃO “SE...SENÃO...FIM-SE” .................................................................... 82
AGENDA 12 ............................................................................................................................... 106
ESTRUTURAS DE DECISÃO “SELECIONE...CASO...SENÃO...FIM_SELECIONE” ......................... 106
AGENDA 13 ............................................................................................................................... 131
ESTRUTURAS DE REPETIÇÃO “PARA...FIM-PARA”................................................................... 131
AGENDA 14 ............................................................................................................................... 146
ESTRUTURAS DE REPETIÇÃO “ENQUANTO... FIM-ENQUANTO” E “REPITA... ATÉ QUE” ....... 146
AGENDA 15 ............................................................................................................................... 159
VETORES.................................................................................................................................... 159
AGENDA 16 ............................................................................................................................... 179
MATRIZES .................................................................................................................................. 179
Fontes Imagéticas: .................................................................................................................... 200
REFERÊNCIAS ............................................................................................................................ 202
AGENDA 8
RACIOCINANDO A LÓGIC A
Você já parou para pensar que tudo o que fazemos no nosso dia a dia é resultado de uma
sequência ordenada de passos? Pensou também que por mais simples que seja a tarefa que nos
propusermos a fazer, precisamos ordenar nossos pensamentos para que possamos chegar ao
resultado desejado?
A lógica sempre nos acompanha! Quando falamos, escrevemos ou fazemos alguma ação estamos
pensando de forma ordenada e sequenciada para que as coisas aconteçam de forma correta.
Logo a lógica consiste em colocar “ordem no nosso pensamento”.
Imagem 01
Observe a figura acima e pense em trocar a ordem de algum dos passos ilustrados. Por exemplo:
1 – Tomar conteúdo
2 – Abrir a tampa
3 – Pegar o recipiente
Será que é possível beber o refrigerante da lata?
Claro que não! É preciso seguir a ordem dos passos ilustrados acima para que conseguimos atingir
o objetivo final, que neste caso, é tomar o conteúdo.
Imagem 02
Quando pensamos em desenvolver um programa, devemos ter domínio sobre ele, analisando
cada etapa do problema, para que possamos fornecer ao computador uma sequência lógica de
passos que a máquina deverá executar para que resolva o nosso problema. Esta sequência lógica
é representada pelo algoritmo. Só depois da análise de cada etapa do problema é que se deve
começar a programar o computador!
Para executar qualquer tarefa, devemos seguir as etapas numa sequência lógica. Com a
programação de um software não é diferente, pois ela é muito parecida com qualquer outra
atividade corriqueira do nosso dia a dia.
Um exemplo disso é o trajeto que fazemos de casa à escola. É uma sequência de procedimentos
que devemos cumprir para chegar ao nosso destino sem complicações. Pense na sequência que
você deve seguir para ir de casa à escola de ônibus.
Agora confira com a solução abaixo:
Trajeto_Casa_Escola
1. Andar até o ponto de ônibus;
2. Aguardar o ônibus;
3. Ao avistar o ônibus correto, fazer sinal;
4. Entrar no ônibus pela porta traseira;
5. Pagar passagem;
6. Escolher um assento e sentar;
7. Quando chegar próximo do local a saltar, dar o sinal para descida;
8. No ponto, descer do ônibus, pela porta dianteira;
9. Andar até à escola.
Pronto, você acabou de escrever um algoritmo e já está pronto para mergulhar no tema desta
agenda!
Lembre-se! Quanto mais detalhado for a instrução para o computador, mais rápido
e fácil ele compreenderá e executará atingindo o objetivo final.
Imagem 04
Observe que o algoritmo acima está bem mais detalhado e mesmo uma pessoa que não saiba
como tomar um líquido de uma lata, seguindo estas instruções, irá conseguir sem dificuldades
tomar o líquido.
Este é o primeiro passo para resolver um problema. Para que todos possam compreender o seu
algoritmo, é necessário utilizar o Fluxograma.
Mas o que é o Fluxograma? É a representação gráfica da sua sequência lógica (seu algoritmo).
Podemos usar qualquer diagrama ou qualquer desenho? Não. Existem as formas corretas com
seus respectivos significados a serem utilizados como veremos a seguir na tabela:
Pronto! Você já sabe o que é um Algoritmo e como usá-lo como também o que é um Fluxograma
e como deve ser utilizado. Porém não acabou. Além destas duas etapas, temos mais duas para
que ele seja executado em um computador como programa.
Para que o seu problema torne um programa, existem, pelo menos, quatro etapas a serem
seguidas. São elas:
Problema
Programa Algoritmo
Linguagem de
Fluxograma
Programação
Pseudocódigo
Mas o que é Pseudocódigo? É uma escrita mais próxima da Linguagem de Programação, ou seja,
não usaremos nenhuma informação técnica da Linguagem e apenas utilizaremos o nosso idioma
(português) escrevendo mais próximo das instruções computacionais. Muitos autores chamam o
Pseudocódigo de “Portugol” ou “Português Estruturado” devido a estas características.
1. Crie um algoritmo para fritarmos um ovo. Faça este algoritmo com uma sequência de no
mínimo 15 passos.
2. Elabore o fluxograma do algoritmo do exercício anterior.
3. Fluxograma para solucionar o problema da Torre de Hanói
Respostas:
Coloque o ovo na
frigideira
Pegue uma Coloque o ovo no
Frigideira prato
Quebre o ovo
Sirva o ovo
Pegue o óleo
Aqueça a frigideira
com óleo
Lave a frigideira
Pegue o saleiro
Acenda o fogo
Imagem 05
O objetivo desse jogo é mover todos os discos para a estaca da direita, seguindo as seguintes
regras:
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Questionários online
1. (FCC - 2004 - Analista Judiciário - TRT) A figura mostra a localização dos apartamentos de um
edifício de três pavimentos que tem apenas alguns deles ocupados:
Sabe-se que:
- Maria não tem vizinhos no seu andar, e seu apartamento localiza-se o mais a leste possível;
- Taís mora no mesmo andar de Renato, e dois apartamentos a separam do dele;
- Renato mora em um apartamento no segundo andar exatamente abaixo do de Maria;
- Paulo e Guilherme moram no andar mais baixo, não são vizinhos e não moram abaixo de um
apartamento ocupado.
- No segundo andar estão ocupados apenas dois apartamentos.
18 20 24 32 _______
5. Um frasco contém um casal de melgas. As melgas reproduzem-se e o seu número dobra todos
os dias. Em 50 dias o frasco está cheio. Em que dia o frasco esteve meio cheio?
(A) 02
(B) 24
(C) 25
(D) 26
(E) 49
7. Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas
pessoas estavam em competição?
(A) 13
(B) 25
(C) 26
(D) 27
(E) 28
8. Bruno é mais alto que Joaquim. Renato é mais baixo que o Bruno. Então, Joaquim é o mais
alto dos três.
( ) Verdadeiro
( ) Falso
9. O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a percentagem
de aumento do preço do mesmo produto para que ele volte a ter o preço original?
(A) 15%
(B) 20%
(C) 25%
(D) 30%
(E) 40%
10.
Imagem 06
Chapeuzinho Vermelho ao entrar na floresta, perdeu a
noção dos dias da semana. A Raposa e o Lobo Mau eram
duas estranhas criaturas que frequentavam a floresta. A
Raposa mentia às segundas, terças e quartas-feiras, e falava
a verdade nos outros dias da semana. O Lobo Mau mentia
às quintas, sextas e sábados, mas falava a verdade nos
outros dias da semana.
A partir dessas afirmações, Chapeuzinho Vermelho descobriu qual era o dia da semana. Qual
era?
(A) Segunda-feira
(B) Terça-feira
(C) Quarta-feira
(D) Quinta-feira
(E) Sexta-feira
11. (ESAF) José quer ir ao cinema assistir ao filme “Fogo Contra Fogo”, mas não tem certeza se
o mesmo está sendo exibido. Seus amigos, Maria, Luís e Júlio têm opiniões discordantes
sobre se o filme está ou não em cartaz. Se Maria estiver certa, então Júlio está enganado.
Se Júlio estiver enganado, então Luís está enganado. Se Luís estiver enganado, então o
filme não está sendo exibido. Ora, ou o filme “Fogo conta Fogo” está sendo exibido, ou José
não irá ao cinema. Verificou-se que Maria está certa. Logo,....
O filme “Fogo Contra Fogo” está sendo exibido
(A) 1
(B) 3
(C) 4
(D) 5
(E) 6
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009
Artigos:
AGENDA 9
DESENVOLVENDO A LÓGI CA
Imagem 07
Você já passou por algum problema gerado por uma deficiência de comunicação em situações do
cotidiano? Provavelmente, sim! Quando não há uma comunicação clara, objetiva e padronizada
nas ações do cotidiano, a chance de que as informações sejam repassadas de forma errada é
muito grande. Se na vida real as pessoas precisam se comunicar de forma clara, a fim de se
entenderem, imagine quando essa comunicação deve ser estendida a um computador. Da mesma
forma, se pensarmos que na comunicação entre humanos é necessário estabelecer padrões, o
que diremos da comunicação humano para computador? Assim, o principal objetivo deste
capítulo é apresentar algumas técnicas que possam ajudá-lo no desenvolvimento da lógica de
programação e promover a “ordenação do pensamento”, de forma que você possa enxergar essa
lógica. Boa sorte!
Imagem 08
E as variáveis? Bem, podemos entender uma variável como uma gavetinha no armário onde
guardamos algumas peças de roupas (dados). Para não misturar e bagunçar o armário, podemos
etiquetar as gavetas indicando o nome das peças de roupas a que elas foram destinadas. Da
mesma forma, a variável precisa ser identificada (nome) e possuir um único tipo de dado (peças
de roupa). Fácil né? Para entender melhor estes e outros conceitos, que tal mergulhar fundo no
tema?
Variável
Durante os seus estudos, você notou que até o momento trabalhamos apenas com números e
palavras fixas? Ou seja, não pudemos alterar o seu conteúdo. Essa é a definição de uma
Constante, isto é um local na memória do computador que armazena um dado que não se altera
ao longo da execução do programa.
Se um computador trabalha em constante interação com o usuário, por que até este momento
não trabalhamos com esta interação?
O computador é um objeto que não possui a capacidade de pensar por conta própria, sendo
necessário sempre uma programação para ensina-lo a trabalhar.
Quando iniciamos uma interação homem-máquina, não há como o computador saber o que o
usuário fará na sequência de seus atos, por isto, devemos “ensiná-lo” a se preparar para uma
interação com o usuário do computador.
Esta interação é feita através de uma estrutura chamada variável. Ela consiste na alocação de um
pedacinho da memória RAM do computador para que ele receba uma informação vinda de um
dispositivo de entrada de dados, no nosso caso, o teclado.
Em sua primeira aula de Lógica de programação, você conheceu um colega de turma chamado
Juvenal. Para que em um futuro próximo vocês possam trocar informações sobre as atividades
propostas, você decidiu pedir ao Juvenal seu Número de telefone.
No momento em que você pede ao Juvenal o seu número de telefone, você inconscientemente
prepara um lugar para armazena-lo, podendo ser em seu cérebro, celular ou em um papel não é
mesmo?
Você sabia qual seria o tipo de dado (Você saberia quais seriam os números) que o Juvenal lhe
passaria? Provavelmente não, mas saberia com certeza que ele lhe passaria um número de
telefone.
Resumindo: Se você fosse um computador, estaria utilizando uma variável (espaço na memória)
do tipo numérica para receber o dado que seria passado pelo Juvenal (agente externo ao
programa). Fácil, não?
Logo, se você estivesse criando um programa para que o Juvenal e outros amigos inserissem seus
números de telefone para que você os consulte depois, precisaria ensinar o computador que ele
deve reservar um pequeno espaço em sua memória RAM para receber estes valores.
Será que para o computador é tão simples somar 1+1 como para nós, seres
humanos?
Imagem 09 1 + 1 ???
Quando falamos em memorizar, estamos dizendo que o dado deve ser colocado na memória do
computador. Inserimos valores na memória de um computador através de VARIÁVEIS.
Memória do Computador
2º número
10 20
1º número armazenado
armazenado 30
Total da soma
armazenado
Portanto, temos que dar nome aos lugares onde estes valores estão armazenados e indicar qual
tipo de dado eles podem receber, ou seja de qual tipo de dado poderá ser seu conteúdo. Fazemos
isto através de Declaração de Variável. Veja:
Para a caixinha onde está armazenado o 1º número (10), poderei escolher um nome qualquer
desde que:
Operadores
Quando utilizamos a lógica, sendo ela em pseudocódigo ou em uma Linguagem de Programação,
devemos utilizar alguns símbolos, ou palavras, para que o computador entenda o que queremos
que ele faça, estes símbolos são chamados de Operadores.
Operadores Aritméticos.
Se, por acaso, for necessário desenvolver uma operação matemática utilizando pseudocódigo ou
uma linguagem de programação, você precisará dos operadores aritméticos para criar o seu
programa. Apesar do computador utilizar a mesma regra da matemática para a resolução de
cálculos, a simbologia utilizada nem sempre é a mesma da matemática. A seguir você conhecerá
os operadores aritméticos, sua simbologia em pseudocódigo, em Java a sua utilização e exemplo:
Sintaxe
Nome da Sintaxe
em Função Exemplo
operação em Java
pseudocódigo
Efetua a soma entre
Soma + + 3+2=5
2 valores numéricos.
Efetua a subtração
Subtração - - entre 2 valores 3–2=1
numéricos.
Efetua a
Multiplicação * * multiplicação entre 2 2*4=8
valores numéricos.
Efetua a divisão
Divisão / / entre 2 valores 4/2=2
numéricos.
exp(b,e) Exp(3,2) = 9
Efetua a potenciação
Potenciação b = base e ^ (Pseudocódigo)
entre 2 valores
e = expoente) 3 ^ 2 = 9 (Java)
Efetua a divisão
3 mod 2 = 1
Resto da entre 2 valores, mas
mod % (Pseudocódigo)
Divisão retorna o valor do
3 % 2 = 1 (Java)
resto da divisão.
“Lógica” +
Junta 2 valores do
Concatenação + + “Programação” =
tipo caractere.
“LógicaProgramação”
Operadores Relacionais
Estes operadores são os responsáveis por efetuar comparações entre dados, com o objetivo de
mostrar ao programa como proceder dependendo da situação apresentada. O programa de
computador verá o resultado de uma comparação em duas situações lógicas, sendo verdadeiro
ou falso. Assim como os operadores Aritméticos, segue uma pequena tabela indicando suas
finalidades:
Nome do Sintaxe
Sintaxe
Operador em Função Exemplo Resultado
em Java
Relacional pseudocódigo
Compara se o
Maior > > 7>3 Verdadeiro
primeiro valor é
maior que o
segundo valor.
Compara se o
primeiro valor é
Menor < < (3+1) < (5*0) Falso
menor que o
segundo valor.
Compara se o
Maior ou primeiro valor é
>= >= (4 + 4) >= 8 Verdadeiro
Igual maior ou igual ao
segundo valor.
Compara se o
Menor ou primeiro valor é
<= <= 4 <= 4 Verdadeiro
Igual menor ou igual ao
segundo valor.
Compara se o 3=2
primeiro valor é (Pseudocódigo)
Igual = == Falso
igual ao segundo
valor. 3 == 2 (Java)
Compara se o 7 <> 3
primeiro valor é (Pseudocódigo)
Diferente <> != Verdadeiro
diferente do
segundo valor. 7 != 3 (Java)
Operadores Lógicos
Os operadores lógicos são responsáveis pela elaboração de comparações especiais, possibilitando
que uma única expressão de comparação receba mais de um operador relacional. Ele geralmente
é utilizado em situações complexas, por exemplo:
Imagem 10
Jovanir, um jovem de 20 anos, gostaria de saber se
na próxima eleição ele será obrigado a votar ou se
poderá votar de modo facultativo.
Para ser obrigado a votar, o eleitor deve ter a
idade maior ou igual a dezoito anos e também o
eleitor deve ser menor que 70 anos.
Nome do
Sintaxe em Sintaxe
Operador Função Exemplo Resultado
pseudocódigo em Java
Lógico
Para que o
resultado da
(16 >= 16) E (16 < 18)
comparação seja
(Pseudocódigo)
E E && verdadeiro, os Verdadeiro
(16 >= 16) && (16 < 18)
dois lados da
(Java)
expressão devem
ser verdadeiros.
Para que o
resultado da ((3 + 2) < 5) OU
comparação seja ((3*2)=6)
verdadeiro, (Pseudocódigo)
OU OU || Verdadeiro
apenas um dos ((3+4) < 5) ||
lados da ((3*2)==6)
expressão deve (Java)
ser verdadeiro.
Inverte o
resultado da
expressão, ou
seja, caso a NAO(4 < 8)
NÃO NAO ! expressão seja (pseudocódigo) Falso
verdadeira, se ! ( 4 < 8 ) (Java)
tornará falso e
vice-versa.
Observando a tabela dos Operadores Lógicos, podemos concluir que a expressão que resolveria
o problema do Jovanir seria: ((20 >=18) && (20 < 70)).
Como a idade dele é maior ou igual a 18 e também é menor que 70, Jovanir é obrigado a votar.
A tabela Verdade
Uma forma muito simples de lembrar qual é o operador correto para satisfazer uma expressão é
utilizando a Tabela Verdade. Com ela podemos prever e entender melhor o funcionamento dos
Operadores Lógicos.
A tabela consiste em separamos a comparação em dois blocos, sendo o primeiro antes do
Operador Lógico, e o segundo logo após o operador. Para simularmos os resultados, definimos os
resultados como verdadeiro (V) ou falso (F), para facilitar a simulação e não perdemos tempo com
a resolução das expressões.
Na tabela verificamos todas as possibilidades, sendo ambas as comparações verdadeiras, ambas
as comparações falsas ou apenas uma das comparações verdadeira, assim testamos as
possibilidades que o operador pode proporcionar, como as tabelas a seguir nos mostram:
Operador E Operador OU
Entrada 1 Entrada 2 Saída Entrada 1 Entrada 2 Saída
V V V V V V
V F F V F V
F V F F V V
F F F F F F
Aplicando a tabela Verdade em Pseudocódigo e
Java temos:
Operador NAO (!)
Expressão em Expressão em
Resultado
Pseudocódigo Java
NAO V !V FALSO
NAO F !F VERDADEIRO
Operador NÃO
Entrada Saída
V F
F V
Operador E (&&)
Expressão em Pseudocódigo Expressão em Java Resultado
VEV V && V V
VEF V && F F
FEV F && V F
FEF F && F FALSO
Operador OU (||)
Expressão em
Expressão em Java Resultado
Pseudocódigo
V OU V V || V V
V OU F V || F V
FEV F || V V
F OU F F || F F
Sabemos que a meta é 100 pregos e 70 parafusos, mas a meta também pode ser considerada
caso ele venda pelo menos 10 porcas e 30 braçadeiras, neste caso podemos montar a seguinte
expressão:
Agora que indicamos a expressão, basta substituirmos as interrogações pelos valores que foram
vendidos pelo Manuel, sendo assim:
VERDADEIRO OU FALSO
VERDADEIRO
Logo, no dia em questão, Manuel ficou com LUCRO (Verdadeiro)
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 30
Logo,
VERDADEIRO OU FALSO ,
segundo a tabela verdade é:
VERDADEIRO
Os operadores lógicos são lidos e resolvidos pela ordem em que forem lidos, salvo no caso do
operador estar dentro de parênteses, neste caso ele terá prioridade como o caso do operador
NAO na resolução acima.
b)
c)
d)
Linguagem Expressão Resultado
Pseudocódigo ( ( (exp(3,2) +1) = 10) E (NAO (10 = 10))
Java ( ( (3^2)+1) == 10) && (!(10==10))
e)
Linguagem Expressão Resultado
Pseudocódigo (NAO((8*2) = 16) ) E ((15 mod 4) >=2)
Java (! (8*2) == 16) ) && ( ( 15 % 2) >= 2)
f)
Linguagem Expressão Resultado
Pseudocódigo ( ( 3 mod 2 ) = 1) E ( (13mod3 )= 1 ) OU ( ( 3*4 )<16)
Java ( ( 3 % 2 ) = 1) && ( (13 % 3 ) == 1 ) || ( ( 3*4 ) < 16)
g)
Linguagem Expressão Resultado
Pseudocódigo ( (18 > 13) E (exp(2, 5)+1 = 33) ) E ( ( (24 mod 8) > 0)
E (72 < 80) )
Java ( (18 > 13) && (2 ^ 5)+1 = 33) ) && ( ( (24 % 8) > 0)
&& (72 < 80) )
h)
Linguagem Expressão Resultado
Pseudocódigo NAO ((15*2)>(exp(3,2)*3) OU ((2*5)+(2.5*2)>=12) )
Java ! ( ( 15*2)>(3^2*3) ) || ( ( 2*5)+(2.5 * 2) >=12) )
NAO(3>4)
NAO(FALSO)
VERDADEIRO
c)
Linguagem Expressão Resultado
Pseudocódigo (5>(3+1)) OU ( 8 > 7 )
Java ( 5>(3+1) ) || ( 8 > 7 ) Verdadeiro
( 5 > ( 3 + 1 ) ) OU (8>7)
VERDADEIRO OU VERDADEIRO
VERDADEIRO
d)
Linguagem Expressão Resultado
Pseudocódigo ( ( (exp(3,2) +1) = 10) E (NAO (10 = 10))
Java ( ( (3^2)+1) == 10) && (!(10==10)) Falso
( ( ( exp(3,2) + 1 ) = 10 ) E ( NAO ( 10 = 10 ) )
VERDADEIRO E FALSO
FALSO
e)
Linguagem Expressão Resultado
Pseudocódigo (NAO((8*2) = 16) ) E ((15 mod 4) >=2)
Java (! (8*2) == 16) ) && ( ( 15 % 2) >= 2) Falso
f)
Linguagem Expressão Resultado
Pseudocódigo ( ( 3 mod 2 ) = 1) E ( (13mod3 )= 1 ) OU ( ( 3*4 )<16)
Java ( ( 3 % 2 ) = 1) && ( (13 % 3 ) == 1 ) || ( ( 3*4 ) < 16) Verdadeiro
g)
Linguagem Expressão Resultado
Pseudocódigo ( (18 > 13) E (exp(2, 5)+1 = 33) ) E ( ( (24 mod 8) > 0)
E (72 < 80) )
Falso
Java ( (18 > 13) && (2 ^ 5)+1 = 33) ) && ( ( (24 % 8) > 0)
&& (72 < 80) )
h)
Linguagem Expressão Resultado
Pseudocódigo NAO ((15*2)>(exp(3,2)*3) OU ((2*5)+(2.5*2)>=12) )
Java ! ( ( 15*2)>(3^2*3) ) || ( ( 2*5)+(2.5 * 2) >=12) ) Falso
A) ! ( ( 72 % 8) == 0)
B) ( ( 3 ^ 2 * 1 ) > 9 ) || ( ( 17 * 0 ) > 10 )
C) ( ( 3 + 2 / 2 ) >3 ) && ( ( 12 – 5 % 2 ) == 11 )
D) ! ( 2 + 3 == 5 ) || ! ( 3 > 2 )
Este exercício deve ser entregue de forma on-line como atividade da agenda.
.
Link: https://www.youtube.com/watch?v=ntCQmyfhA30 - Acessado em 14/12/2017
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no YouTube uma Palylist denominada ;“Curso de Java para Iniciantes – Grátis, Completo
e com Certificado ” e assista as vídeo aulas de 1 a 8 disponível em :
https://www.youtube.com/playlist?list=PLHz_AreHm4dkI2ZdjTwZA4mPMxWTfNSpR. Acessado
em 14/12/2017.
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009.
AGENDA 10
A LÓGICA APLICADA EM JAVA
Imagem 12
Os computadores não pensam por nós, nem entendem nossa língua! Para que eles possam
executar uma ação, para que façam qualquer coisa é preciso explicar tudo nos mínimos detalhes
e na língua deles. O problema é que a linguagem dos computadores é uma grande sequência de
números binários, ou seja, zeros e uns como, por exemplo:
101110111011011001110110011000101 0... Isto traz muita dificuldade para nós, seres humanos.
Você consegue se imaginar lendo ou escrevendo instruções de mais de mil páginas, decorando
centenas de códigos binários? Será que você estaria fazendo um curso técnico de informática, se
soubesse que teria que programar binários?
Assim como nós, o computador também tem um idioma para comunicação. Este Idioma é
chamado de Linguagem de Programação. É como na realidade, onde em cada país se fala um
idioma diferente para se comunicar.
Na prática, a Lógica de Programação, será os verbos, substantivos e características presentes em
todos os idiomas. Aquelas frases que todos devem saber, principalmente caso viaje para outro
pais, frases como “Como faço para chegar ali”, “Onde fica o banheiro” e “Preciso de ajuda”.
Em uma Linguagem de Programação, também precisamos aprender seus comandos básicos, que
são derivados da Lógica de Programação, sendo assim, se aprendermos o momento certo para
exibir uma mensagem na tela do usuário, podemos executar o processo com o auxílio de qualquer
linguagem, basta “traduzir” o comando.
Para os nossos estudos, utilizaremos a linguagem de Programação Java, por ser gratuita e uma
das linguagens mais utilizadas no mercado, como veremos a seguir.
Imagem 13
Você já pensou em quantas vezes por dia as pessoas
acessam sites diversos a fim de consultar extratos
bancários, fazer compras, estudar, pesquisar, ver as
notícias que estão acontecendo no momento,
etc...etc...etc. Você acredita que todas estas aplicações,
inclusive aquelas envolvidas no processo de atualização
das notícias que aparecem a cada minuto na tela do seu
computador, podem ser desenvolvidas a partir do Java? A
partir de agora vamos aplicar a lógica de programação na
linguagem Java, fazendo um paralelo entre fluxogramas e
pseudocódigos com a Linguagem Java. Preparado? Então
vamos mergulhar no tema dessa agenda!
Java é uma linguagem orientada a objetos1 que foi desenvolvida nos anos de 1990 pela Sun
Microsystems, projetada para ser pequena, simples e portável a todas as plataformas e sistemas
operacionais. É utilizada para desenvolver aplicativos corporativos, páginas web com conteúdo
dinâmico e interativo, aprimorar a funcionalidade de servidores www e está cada vez mais sendo
utilizada para desenvolvimento de aplicativos móveis para telefones celulares, pagers e PDAs.
Muito provavelmente você já deve ter ouvido falar sobre a linguagem Java. Basta ler uma revista
de informática ou matérias sobre desenvolvimento de softwares que logo encontra alguma
informação sobre Java, dado o sucesso que esta linguagem tem tido no mercado, principalmente
pelo fato dos programas escritos em Java poderem ser executados virtualmente em qualquer
plataforma e aceitos em qualquer tipo de computador ou outros aparelhos, uma característica
marcante da Internet. Por isso, o Java tem se destacado muito no mercado e aprender esta
linguagem é importante para você e para a sua profissão!
Java é uma Linguagem de Programação Orientada a Objetos, porém para que você
compreenda melhor a Lógica utilizando esta Linguagem, iremos utilizar o Console
(uma forma estruturada) para exercitar os comandos.
1
Linguagem de Programação Orientada a Objetos (P.O.O) significa que esta Linguagem de Programação utilizará os
conceitos de Orientação a Objetos (O.O.) o qual veremos no módulo seguinte com mais profundidade.
2
Compilação é a ação de transformar um código amigável escrito com uma Linguagem de Programação em um
programa executável baseado em Código de Máquina.
3
Código Fonte é o conjunto de instruções criadas pelo programador utilizando uma Linguagem de Programação.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 40
Além disto, o Java é uma linguagem de programação que pode ser utilizada para desenvolver
páginas da Internet, através de um Servidor Web configurado para executar páginas do tipo Java
Server Pages (jsp). Com ele também podemos desenvolver aplicativos para celulares que utilizam
o Sistema Operacional Android.
Pela sua vasta lista de plataformas suportada, utilizaremos o Java como Linguagem de
Programação de apoio no desenvolvimento da Lógica de Programação.
VOCÊ NO COMANDO
Você sabia que o Java não é a única linguagem de Programação que funciona em todos os
principais Sistemas Operacionais do Mercado? Pesquise e Reflita sobre como outras
Linguagens de Programação também existem no mercado e qual é a sua eficiência em
relação ao Java.
Vamos lá:
O que faz com que a portabilidade do Java seja eficiente é uma aplicação responsável por executar
programas desenvolvidos na linguagem. Sua função é simular um computador permitindo a
execução do código fonte, por isto recebe o nome de Máquina Virtual.
Na prática, basta instalar em seu computador a JVM desenvolvida para o Sistema Operacional
que você estará pronto para executar programas desenvolvidos em Java.
4
Compilador é a ferramenta utilizada para compilar um programa desenvolvido com o auxílio de uma Linguagem
de Programação.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 42
Como utilizaremos o Java como uma Linguagem de Programação estruturada5, não entraremos a
fundo no significado de Projeto, Pacote e Classe, pois estas definições são utilizadas em
programas Orientados a Objetos6.
VOCÊ NO COMANDO
Quais outras APIs que suportam a Linguagem de Programação Java existem no Mercado?
Todas elas são gratuitas? Quais são suas Vantagens e Desvantagens em relação a API
Eclipse? Pesquise e Reflita antes de prosseguir com a leitura.
Para criarmos um novo programa, após abrir a janela principal do Eclipse, selecionamos o menu
File, New, Java Project, conforme a figura a seguir:
5
A Programação Estruturada é uma forma de desenvolver programas baseando-se no conceito de inicio – meio –
fim de forma linear e em um único código fonte.
6
A Orientação a Objetos é uma forma de Desenvolver Programas baseada em Classes e Objetos, afim de aproximar
a forma na qual o código fonte é desenvolvido das nossas ações do dia a dia.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 43
3. JRE: você só deve alterar esta opção caso você tenha o JDK instalado em seu computador
em mais de uma versão e deseje testar seus programas em uma versão mais antiga do
JDK.
4. Project Layout: nesta opção você indicará como o Eclipse deve organizar os arquivos de
seu programa. O ideal é manter a opção padrão selecionada, pois ela manterá seus
códigos fontes sempre em uma pasta separada do restante do projeto.
5. Working Sets: apenas para usuários avançados. Com esta opção você poderá mesclar
dados do seu projeto com o de outros projetos localizados em diferentes workspaces.
Após inserir um nome para o seu projeto e alterar as demais opções, caso seja necessário,
clique em Finish. Você voltará para a tela inicial, porém desta vez haverá um pequeno botão
ao lado esquerdo ou direito da do Eclipse, dependendo da versão utilizada. O botão aparenta
conforme a imagem a seguir:
Note que ao lado direito, marcado com o número 1, temos a janela Project Explorer. Será por
esta Janela que localizaremos os arquivos contidos no nosso projeto.
Importante: Caso você feche acidentalmente a janela Project Explorer, poderá acessa-la
novamente através do menu Window > Show View > Project Explorer.
Agora que temos o projeto, vamos criar um arquivo para o nosso código fonte:
Em Project Explorer, entre na pasta referente ao seu projeto, localize a pasta chamada src7,
clique com o botão direito nela e selecione New > Class:
7
A pasta src (abreviação para source Code) é a pasta padrão do eclipse para receber códigos fontes.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 45
Assim como na criação do projeto, o nome do arquivo de código fonte não pode conter
espaços, acentuação e caracteres especiais. Fique atento!
Agora que você já criou um código Fonte em Java, você poderá aprender a estrutura básica de
um programa. A seguir temos uma imagem representando um código fonte em Java:
Você pode ver na imagem que o programa em si está dentro de uma Classe. Esta estrutura é
necessária para permitir que no futuro o seu programa em Java se torne um programa Orientado
a Objetos.
Os comandos Início e Fim contidos no Pseudocódigo, são substituídos por chaves { } em Java,
sendo a abertura de Chave { o início e, o fechamento de chave } o final do seu programa. Em
algumas estruturas que veremos posteriormente, também utilizaremos marcações de início e fim
através de chaves.
A partir de agora, os novos comandos apresentados a você sempre serão apresentados em Java,
além da sua forma utilizada no Fluxograma e no Pseudocódigo.
O comando Escreva
Com o auxílio dele é possível desde enviar uma simples mensagem ao usuário do programa, como
também mostrar o resultado de uma conta. Na prática: tudo o que você deseja que o usuário
veja, deverá utilizar este comando para mostrar.
Em Java, por ser uma linguagem de programação, devemos indicar o caminho completo da
operação de exibição de mensagem para o usuário, que é feita da seguinte forma:
VOCÊ NO COMANDO
Agora que vimos o comando print e println reflita: Qual dos dois comandos você acha
que é o mais eficiente? Existe alguma situação específica para a utilização de cada um
dos comandos?
O comando println pulará uma linha na tela, antes de iniciar a escrita da mensagem.
Tipos de
Tipos de Valores compreendidos dentro do Exemplo de
variáveis
variáveis Java tipo valores em Java.
Pseudocódigo
byte Números entre -128 e 127. 10
short Números entre -32768 e 32767. 13320
Números entre -2147483648 e
Int -170000000
Inteiro 2147483647.
Números entre -
long 9223372036854775808 e 14000222999333
9223372036854775807.
float Números reais entre -1038 até 1038. 0.134
Real 143.49382930192
double Números reais entre -10308 até 10308.
83
Um único caractere (letra), entre
char ‘d’
apóstrofos. Exemplo: ‘a’.
Caractere
Mais de um caractere, entre aspas.
String “Informática”
Exemplo: “Técnico em Informática”.
Lógico boolean Verdadeiro ou Falso. falso
Note que em Java, o único tipo de dado que se inicia com letra maiúscula é o String. Vale lembrar
também que os números decimais são separados por ponto ( . ) ao invés de vírgula.
Voltando ao caso da Agenda Telefônica, qual seria o tipo de dados que o número de telefone
dado pelo Juvenal seria?
O número de telefone seria uma variável do tipo String, pois apesar de ser um número de
telefone, não efetuamos nenhum tipo de cálculo com este número, sendo assim, não é necessário
definir este tipo de dado como inteiro.
Após identificar qual será o tipo da variável que você utilizará, basta declara-la8 em seu programa,
seguindo o padrão para cada linguagem de programação, sendo:
Caso você necessite de mais de uma palavra para definir o nome de uma variável, junte as
palavras ou então separe-as apenas com um underline _ .
Remova as preposições do nome da variável, assim o nome dela ficará mais objetivo e fácil de
entender.
Não inclua mais do que duas palavras em um nome de variável, seja sempre objetivo.
8
Com a declaração de variável avisamos o computador que ele deve criar um espaço na memória para receber um
valor posteriormente. Todo o espaço na memória declarado deve ter um nome e ser vinculado a um tipo de
variável.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 50
Em uma linguagem de programação, os caracteres especiais são palavras reservadas que são
utilizadas pela linguagem para trabalhar comandos especiais, cálculos etc. Se você utilizar
caracteres especiais em nome de variáveis, o computador não entenderá se ele deverá demarcar
o espaço da variável na memória ou se iniciará algum procedimento especial do computador, por
isto tentar colocar um nome destes resultará em erro de compilação9.
9
Erros de compilação são configurados quando há erros na estrutura do código fonte. Caso este tipo de erro
ocorra, não será possível a execução do programa.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 51
O comando Leia
O comando Leia é o comando responsável por receber dados inseridos pelo usuário. Em geral
estes dados são inseridos através do teclado, podendo ser numérico ou caractere dependendo
do tipo de dados que a variável que receberá o valor estiver configurada.
Como o computador não saberá qual será o valor que o usuário digitará, sempre teremos que
utilizar uma variável para armazenar o valor obtido através do comando Leia. A sintaxe do
comando Leia é:
Pseudocódigo:
Java:
Em Java um programa inicial contém apenas o suporte a exibição de mensagens no monitor,
processamentos básicos de dados e utilização de variáveis com o objetivo de garantir a otimização
do espaço de seu programa em disco e consequentemente, o peso da sua aplicação.
Para que seja possível a utilização de recursos diferentes, é necessário realizar uma importação
de uma biblioteca de classes para o seu Projeto.
Estas bibliotecas contém as instruções necessárias para que o Java consiga trabalhar com novas
funções conforme a necessidade do programador. Vale lembrar que não é recomendado que
você faça uma importação de biblioteca em seu programa caso não seja a intenção utiliza-la,
podendo acarretar perca de desempenho desnecessária na sua aplicação.
Para importar uma biblioteca, basta seguir o seguinte comando:
Note que o comando import deve ser inserido na primeira linha do seu código, antes mesmo de
todos os códigos gerados automaticamente pela IDE Eclipse.
Mas existe apenas a biblioteca Java para ser importada? Não! O Java possui inúmeras bibliotecas
que poderão ser importadas sempre que necessário. Além disto você também poderá importar
bibliotecas feitas por outras pessoas, com o objetivo de poupar muito trabalho no
desenvolvimento de uma nova ferramenta da estaca zero.
Voltando a leitura de dados. Após a importação da ferramenta Scanner, precisamos “cria-la”
dentro do nosso programa, utilizando o seguinte comando:
O comando para criar o leitor dentro do nosso programa é chamado de instância. Na instância é
onde a sua ferramenta importada cria vida, tornando-se funcional e utilizável na sua aplicação. A
partir deste momento, o leitor será carregado na memória do computador junto com a sua
aplicação.
teste = leitor.nextBoolean();
Exemplo prático de um programa
Por ser o nosso primeiro programa, antes de construir o fluxograma, precisamos identificar a
entrada, o processamento e a saída dos dados dentro do nosso programa:
Entrada: O programa deverá solicitar para que o usuário digite dois números, do tipo
numérico.
Processamento: O programa calculará a soma destes números.
Saída: O programa exibirá a soma destes números.
Imagem 17
Seguindo a definição de variáveis, precisamos identificar quais dados não serão fixos no nosso
programa. Verificando as informações construídas no passo 1, nota-se que os dois números que
o usuário digitar e a soma deles não são fixos, podendo ser modificado a cada vez em que o
usuário utilizar o programa.
Logo, as variáveis serão:
Agora que já sabemos as variáveis e a sequência lógica do nosso programa, podemos construir o
fluxograma conforme a simbologia apresentada anteriormente:
Sempre procure identificar a entrada, o processamento e a saída dos seus dados em qualquer
fluxograma, assim a chance de conter erros no fluxograma cairá consideravelmente.
Após construir o fluxograma, ficará muito fácil criar o Pseudocódigo, basta “traduzir” a simbologia
do Fluxograma para o Pseudocódigo:
Declare
Numero 1 como inteiro
Numero 2 como inteiro
Soma como inteiro
Inicio
Escreva(“Programa Soma – Este programa calculará a soma entre 2 números”)
Escreva(“Digite o PRIMEIRO número”)
Leia(numero1) Entrada
Escreva(“Digite o SEGUNDO número”)
Leia(numero2)
VOCÊ NO COMANDO
Assim como fizemos com o Pseudocódigo, basta aplicar as regras básicas da linguagem Java.
Em primeiro lugar, criaremos um novo projeto para este exemplo da mesma forma na qual vimos
anteriormente.
A seguir, aplicamos o Pseudocódigo, adaptando-o para a linguagem Java. Não podemos esquecer
de importar a biblioteca responsável pela leitura de dados:
Algumas considerações:
1. Você percebeu que há explicações precedidas por duas barras // ou /* ? Estes sinais
indicam comentários do Java, com eles você poderá escrever qualquer mensagem para o
programador ou então anotar informações importantes sobre o seu código. Estes códigos
não serão processados pelo computador.
a. Os comandos para iniciar um comentário em Java são:
b. // comentário de uma única linha
c. /*
i. Comentário de múltiplas linhas
d. */
e. A codificação indicada como comentário ficará por padrão na cor verde.
2. O Java é uma linguagem Case Sensitive, ou seja, o Java diferencia as letras maiúsculas de
minúsculas. Para o Java a letra “a” minúscula é diferente da letra “A” maiúscula. Por este
motivo, os comandos da linguagem devem ser reproduzidos fielmente a sua
apresentação, caso contrário o comando não será reconhecido. É o caso do
System.out.println(), onde o S deve ser sempre digitado em letra maiúscula.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 58
3. Todo o comando feito em Java deve ser finalizado por um ponto e virgula ( ; ). É através
do ponto e virgula que o Java entende que o comando foi finalizado, executando-o e
preparando-se para receber o próximo comando. Caso você esqueça do ponto e vírgula
(que por sinal é o erro mais comum), o seu programa não funcionará.
4. Caso o seu texto digitado com auxílio do Eclipse fique sublinhado em vermelho, significa
que ele está com erro. Caso isto ocorra, primeiro você deve sempre corrigi-lo, caso
contrário seu programa não funcionará. Geralmente estes erros são causados por “erro
de sintaxe”, em outras palavras, o comando foi digitado incorretamente.
A última etapa do nosso programa é executa-lo e testar para ver se tudo ocorreu bem. Para testa-
lo, basta clicar no nome da sua classe com o botão direito (em Project Explorer) e selecionar a
opção Run > Java Application:
Abaixo do seu Código Fonte, você verá uma janela chamada Console, onde você poderá inserir os
dados para a utilização de seu programa:
Caso a janela Console não apareça, você pode abri-la acessando o menu Window > Show View >
Console.
Vale lembrar que caso haja erros em seu Código Fonte, o Eclipse retornará uma
mensagem de erro, não sendo possível executar o seu código enquanto os erros
(sublinhados em vermelho) não sejam corrigidos.
Antes de mais nada, os programas devem ser fáceis de se utilizar e os usuários devem fazer isso
intuitivamente. Para tanto todo programador deve atentar-se a interface com o usuário. Vamos
aprender uma maneira alternativa de entrada de saída de dados mais elegante para utilizarmos
em nossos futuros programas em Java. Até aqui utilizamos o que chamamos de modo console,
ou seja, uma tela de terminal que não aceitava elementos gráficos para interagirmos com o
programa.
VOCÊ NO COMANDO
Um programador deve sempre tentar desenvolver uma interface com o usuário que seja
simples de ser utilizada. Contudo essa interface deve agradar ao cliente que está
contratando os seus serviços. Pensando como o programador, reflita como isso pode
interferir na prática de programação antes de prosseguir a leitura.
Entrada de dados
JOptionPane.showInputDialog(mensagem);
Na linha 7 realizamos a declaração da variável entrada do tipo String que armazenará o conteúdo
inserido pelo usuário.
Na linha 8 a variável entrada recebe o conteúdo do comando
JOptionPane.showInputDialog(“Entre com um nome”);. Vamos analisar como esta linha se
comporta. Este comando solicita ao usuário que digite algum dado para o sistema. Mas qual dado
é este? No nosso exemplo o dado solicitado é o nome – Entre com um nome. O resultado para o
usuário será:
Saída de dados
JOptionPane.showMessageDialog(null, mensagem);
Agora sabendo como realizar a entrada e a saída de dados de forma gráfica, conseguimos fazer
um programa que leia e exiba dados para o usuário em modo gráfico, como no exemplo a seguir:
Neste exemplo apresentado o programa exibe uma janela pedindo o nome do usuário na linha
10 e posteriormente exibe o nome digitado na linha 13. Resultado:
VOCÊ NO COMANDO
Pense em um programa que realize a leitura do nome do usuário, a idade e o
telefone. Como o programador desenvolveria um programa simples usando os
conceitos aprendidos até agora utilizando interface gráfica?
Conversão de tipos
Um tipo nada mais é do que o conteúdo que uma variável consegue armazenar. Um
tipo String pode armazenar caracteres e números. Um tipo int números inteiros e os
tipos double e float números reais.
No exemplo da figura acima a entrada de dados feita na linha 12 é salva na variável auxiliar que
é do tipo String. Porém estamos trabalhando com números, nesse exemplo, e um dado do tipo
String armazena texto. Para isto devemos fazer a conversão de tipo (cast em inglês), ou seja,
temos que realizar a conversão de um tipo de dado para outro. Ex: de String para int, de String
para Double, etc. O Java possui comandos específicos para executar o cast.
VOCÊ NO COMANDO
Pense em o que poderia acontecer se fizermos uma operação matemática qualquer, por
exemplo uma adição, entre duas variáveis do tipo String sem que a tenhamos feito o cast
para um tipo numérico.
e) Maria foi ao mercado e comprou 15 ovos para fazer bolos de chocolate para os seus netos.
Sabendo que cada bolo utiliza-se 4 ovos e que maria já possuía 3 ovos em casa, quantos
ovos sobrará para que ela possa fazer posteriormente uma omelete para almoçar?
Resolução:
Primeiramente precisamos descobrir como é feito o cálculo de uma Média Aritmética.
Para este cálculo utilizamos a seguinte fórmula matemática:
Resposta final:
d. Quais são as variáveis necessárias para construir um programa que leia dois nomes e os
exibam na ordem inversa da qual foi digitado?
e. Anabilis, é uma cozinheira que vende marmitas para trabalhadores da construção civil em
diversos empreendimentos. Para calcular a quantidade de marmitas que ela deve fazer
por dia, ela multiplica por 5 o número de empreendimentos em que ela visitará, pois sabe
que em média ela venderá 5 marmitas por empreendimento. Além disto ela costuma levar
quatro marmitas extras para caso as vendas dela em algum empreendimento seja além
do esperado. Sendo assim, quais são as variáveis necessárias para que Anabilis faça seu
cálculo em um programa de computador?
Fluxograma Pseudocódigo Java
a. Um programa que leia o seu nome e sobrenome, e exiba-os na sua forma inversa
(sobrenome, nome).
Resolução:
Fluxograma Pseudocódigo
Início Declare
nome como caractere
sobrenome como caractere
nome como caractere Inicio
sobrenome como caractere
Escreva(“Programa 5a – Este programa inverterá o seu nome
e sobrenome”)
Programa 5a – Este
Escreva(“Digite o seu nome: “)
programa inverterá o seu Leia(nome)
nome e sobrenome. Escreva(“Digite o seu sobrenome: “)
Leia(sobrenome)
Escreva( sobrenome + “, “ + nome);
Digite o seu nome: Fim
nome
sobrenome
sobrenome + nome
Fim
b. Um programa que leia 5 valores, some os 4 primeiros valores e divida o resultado pelo 5
valor.
c. Um programa que calcule a média aritmética simples, entre 4 notas.
d. Um programa que leia o seu ano de nascimento e mostre a sua idade. Lembre-se, para
calcular a idade tendo-se apenas o ano de nascimento, subtraia o seu ano de nascimento
do ano atual.
e. Um programa que calcule o resto da divisão entre 2 números.
f. Um programa que leia um nome e dois valores. Após a leitura dos valores, exiba o nome
da pessoa e a divisão entre os dois valores.
g. Um programa que calcule a soma entre 3 valores digitados, após calcular a soma, o usuário
digitará um quarto valor. O programa multiplicará a soma pelo quarto valor digitado e o
exibirá.
Respostas:
4.
Pseudocódigo Fluxograma
Início
Programa ex1
Início Bem-Vindo ao
Escreva (“Bem-Vindo ao Programa do Ex. 1”) Programa do Ex. 1”
Fim.
Fim
Java
5.
Pseudocódigo Fluxograma
Início
Programa ex2
nome como caractere
Declare
nome como caractere Digite o seu Nome
Início nome
Escreva (“Digite o seu nome”)
Leia (nome) O seu nome é
Escreva (“O seu nome é ”)
Escreva (nome)
nome
Fim.
Fim
Java
6.
Pseudocódigo Fluxograma
Início
soma
Fim
Java
7.
Pseudocódigo Fluxograma
Início
Digite o Código do
Produto
Programa ex3
codigo
Declare
codigo como inteiro Digite Nome do
nome como caractere Produto
preco como real
nome
Início
Escreva (“Digite Código do produto”) Digite Preço do
Leia (codigo) Produto
Escreva (“Digite Nome do produto”)
Leia (nome) preco
Escreva (“Digite Preço do produto”)
Leia (preco)
O Produto
Escreva (“O Produto ”)
Escreva (nome)
nome
Escreva (“com o código ”)
Escreva (codigo)
Escreva (“Custa R$ ”) com o código
Escreva (nome)
Fim. codigo
Custa R$
preco
Fim
Java
8.
Lógica de Programação para o Curso Técnico em Informática EaD
DESENVOLVENDO A LÓGICA 77
Pseudocódigo Fluxograma
Início
soma
Fim
Java
Pseudocódigo Fluxograma
Início
soma
Fim
Java
Exercício 1
a) Ler dois números e efetuar as quatro operações matemáticas básicas (soma, subtração,
multiplicação e divisão) exibindo o resultado de cada operação individualmente.
b) Ler um nome, serie, telefone e a média de um aluno. Após a leitura exibir os dados no
seguinte formato:
------------------------------------ Técnico em Informática EAD ----------------------------------------
Nome: <nome do aluno> Telefone: <telefone do aluno>
Série: <série do aluno>
-------------------------------------------------------------------------------------------------------------------
Média: <média do aluno>
-------------------------------------------------------------------------------------------------------------------
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no YouTube uma Palylist denominada ;“Curso de Java para Iniciantes – Grátis, Completo
e com Certificado ” e assista as vídeo aulas de 1 a 8 disponível em :
https://www.youtube.com/playlist?list=PLHz_AreHm4dkI2ZdjTwZA4mPMxWTfNSpR. Acessado
em 14/12/2017
Livros:
Centro Paula Souza. (2010). Informática, programação de computadores (Vol. 4). São Paulo:
Fundação Padre Anchieta.
Deitel, P., & Deitel, H. (2010). Java - Como Programar. São Paulo, SP: Pearson Prentice Hall.
Puga, S., & Rissetti, G. (2009). Lógica de programação e estrutura de dados com aplicações em
Java. São Paulo: Pearson Prentice Hall.
AGENDA 11
ESTRUTURAS DE DE CISÃO “SE...SENÃO... FIM-SE”
Há momentos na vida em que precisamos tomar algumas decisões, não é? E sabemos que
dependendo da decisão que tomamos seguimos para um caminho ou outro na vida. Por exemplo:
se você prestar um concurso para um emprego e obtiver nota suficiente para ser aprovado,
provavelmente, se decidir por assumir este emprego, logo a sua vida tomará outro rumo. A partir
daquele momento, você mudará de emprego e seguirá outra rotina de trabalho, com novos
desafios, novos colegas e novo ambiente de trabalho. Imagem 18
A partir de uma tomada de decisão optamos por
fazer ou não fazer determinados procedimentos
ou funções em nossas vidas. Bem, assim também
acontece quando fazemos um programa de
computador ou mais recentemente aplicativos
para telefones celulares inteligentes, os
chamados apps. Pode existir determinados
momentos, dentro de um programa, que sejam
necessários executar diferentes procedimentos
de acordo com as condições estabelecidas. O
assunto deste capítulo é exatamente este: saber
utilizar as Estruturas de Decisão em um programa
de computador. Essas estruturas permitem que o programa execute diferentes tipos de
procedimentos baseados em uma determinada decisão. Vamos estudá-las?
Imagine a seguinte situação: Um programa que calcule a média escolar de um aluno e apresente
o resultado na tela. Até aqui, sem problemas! Mas imagine que este programa também deva
escrever na tela se o aluno está aprovado ou reprovado de acordo com a média calculada. Neste
caso, em determinado momento será necessário que o programa verifique a média calculada e
tome a decisão de escrever na tela: Aprovado ou Reprovado.
A estrutura de decisão tem a finalidade de tomar uma decisão. Veja o fluxograma desta estrutura:
Se a média for maior ou igual a 7 (se a condição for verdadeira), o aluno foi aprovado, senão, (se
a condição for falsa), o aluno foi reprovado. Entendeu? Pronto, para mergulhar no tema deste
capítulo?
Imagem 19
Estruturas de Decisão
Até agora trabalhamos somente com programas que
realizavam tarefas simples como a realização de
entrada e saída de dados e pequenos cálculos
matemáticos. Contudo os algoritmos criados até aqui não possuem poder de decisão. Ou seja,
eles sempre executam as mesmas tarefas independentemente dos resultados obtidos.
Infelizmente, na vida real, temos que tomar decisões que muitas vezes são difíceis e que podem
alterar o rumo de nossas vidas. Com os programas ocorre a mesma coisa.
Em programação chamamos essas decisões de Estrutura de Decisão. No Java, chamamos de
comando IF.
Estruturas de decisão IF (Se...Fim)
(condição)
SE (condição) Então SIM if (condição){
{comando(s)} {comando(s)};
Fim-Se Não }
Comando(s)
Para um entendimento melhor é mais fácil e prático colocar um exemplo de aplicação: vamos
imaginar que em um determinado trecho de um programa precisamos tomar uma decisão para
saber se uma pessoa é maior de idade. O programa codificado é apresentado a seguir:
O comando condicional SE testa a condição idade >=18, ou seja, se a idade for maior ou igual a
18 anos Então, condição sim ou verdadeira será executado o comando Escreva (“Maior de
idade”), caso contrário nada será feito (Fim-Se). Se observarmos o fluxograma fica mais fácil de
compreender o que ocorre.
Na programação Java conforme a sintaxe apresentada e tomando como base o exemplo da tabela
acima a palavra SE é substituída pelo IF, a comparação permanece a mesma, a palavra Então é
substituída pela {, o comando Escreva é substituído pelo JOptionPane.showMessageDialog e
finalmente o Fim-Se é substituído pelo }.
Realizando a codificação em Java de um programa completo teremos:
Explicando a Estrutura de decisão presente na linha 16. O comando de decisão if (idade >=18) irá
executar o que estiver dentro das chaves até a linha 18, se e somente se o valor da idade for
Lógica de Programação para o Curso Técnico em Informática EaD
ESTRUTURAS DE DECISÃO “SE...SENÃO...FIM-SE” 86
maior ou igual a 18. Caso contrário não executará nenhum comando adicional e o programa será
encerrado.
Se ao executarmos o programa, digitarmos a idade de 18 anos, por exemplo:
Acabamos de ver uma estrutura de decisão que somente realiza uma ação distinta caso a o teste
condicional seja verdadeiro. Contudo, em geral, necessitamos que alguma ação seja tomada
também caso o teste condicional seja falso. Para isso temos o comando If-Else:
Observando a tabela acima notamos que caso o teste lógico condicional falhe temos um comando
ou grupo de comandos a serem executados (comandos após o Senão). Vamos observar o exemplo
a seguir que consiste no mesmo exemplo anterior, porém com comandos sendo executados caso
o teste condicional seja falso.
idade”) }
Fim-Se
Observamos que é praticamente idêntico ao exemplo anterior, porém caso o teste condicional
falhe (resultado falso – não) executamos um comando que exibe a mensagem “menor de idade”
para o usuário. Isso é feito através da utilização da cláusula Senão no Pseudocódigo e else no
Java.
Outro fato muito comum de se acontecer é a necessidade de utilizarmos mais de uma estrutura
de decisão simultaneamente. Pode-se notar que em uma estrutura de decisão podemos somente
ter duas saídas: verdadeiro e falso. Mas e quando necessitamos de uma saída com mais de duas
alternativas?
Para isso usamos as estruturas de decisão aninhadas que consistem em utilizar um comando SE
encadeado no interior de outro. Parece confuso à primeira vista, mas explicando com um
exemplo o entendimento será rápido. Partindo do mesmo exemplo de classificação de idade
anterior. Podíamos classificar somente em maior de idade e menor de idade. Mas e se
quiséssemos classificar também como igual a 18 anos? A codificação do programa ficaria da
seguinte forma:
Pseudocódigo Java
if (idade >=18){
SE (idade >=18) Então if (idade==18){
SE (idade = 18) Então JOptionPane.showMessageDialog(null, “igual a 18”);
Escreva (“Igual a 18”) }
Senão else {
Escreva (“Maior de 18”) JOptionPane.showMessageDialog(null, “Maior de 18”);
Fim-Se }
Senão }
Escreva (“Menor de idade”) else {
Fim-Se JOptionPane.showMessageDialog(null, “Menor de idade”);
}
Note que ao executar a primeira tomada de decisão se (idade>=18) em caso verdadeiro sabe-se
somente que a idade é maior ou igual a 18. Para saber se a idade é igual a 18, é necessária a
execução de outra estrutura de decisão se (idade=18). Em caso afirmativo sabemos que é igual e
Lógica de Programação para o Curso Técnico em Informática EaD
ESTRUTURAS DE DECISÃO “SE...SENÃO...FIM-SE” 89
em caso negativo sabemos que é maior de 18 anos (maior de 18). Isso que chamamos de estrutura
de decisão aninhada.
Achou que faltou algo? O fluxograma? Lá vem ele logo a seguir:
Fluxograma
Idade>=18 SIM
Não
Código em Java:
Um exemplo de exercício com programa completo: suponha que precisamos fazer um programa
para o usuário inserir um número de 1 a 7 para que este exiba qual é o dia da semana
Início
Digite um
número de 1 a
”
dia
Sim
Você escolheu
1
Domingo
Não
Sim
Você escolheu
2
Segunda
Não
Sim Você escolheu
3
Terça
Não
Sim Você escolheu
4
Quarta
Não
Sim Você escolheu
5
Quinta
Não
Sim Você escolheu
3
Sexta
Não
Sim Você escolheu
3
Sábado
Não
Número
Inválido
Fim
VOCÊ NO COMANDO
Observando os exemplos apresentados sobre estruturas de decisão aninhadas, existe
alguma relação entre o número de alternativas e o número necessário de
comparações a serem efetuadas? Reflita sobre o assunto.
Para realizarmos uma comparação de um conteúdo de uma variável com uma String – sequência
de caracteres - no Java temos que utilizar um método especial o .equals().
Mas como utilizamos o .equals()? Vejamos o exemplo abaixo:
VOCÊ NO COMANDO
Como poderíamos elaborar um programa que faça a leitura de um nome de usuário e
uma senha e libere o acesso ao aplicativo somente se ambos estiverem corretos?
Elabore um programa em Java que leia um número e compare se ele é maior ou igual a 100.
1. Faça um programa que leia dois números do tipo Double, realize a sua soma e informe se ele
é menor que 10.000.
2. Elabore um programa que leia um número e o classifique como par ou ímpar.
Obs.: para utilizar o resultado do resto da divisão utilize o comando mod <numero>.
Ex.: 10 mod 3. O resultado será 1.
No Java basta substituir o “/” (divisão) por “%” (resto da divisão). Ex.: 10 % 3.
3. Escreva um programa que leia um nome de um cliente e o valor da compra dela e caso a
compra seja superior a R$1.000,00 retorne uma mensagem contendo o nome do cliente e o
valor da compra e informe que ele é um cliente VIP e ganhou um desconto de 10% sobre o
valor da próxima compra
4. Gustavo deseja determinar se um número está compreendido entre 10 e 100. Escreva um
programa que realize a leitura de um número inteiro e informe a Gustavo se este está
compreendido entre 10 e 100
Respostas:
1.
Pseudocódigo Fluxograma
Início
Declare
Entre com um
numero como real número
Início
Escreva (“Entre com um número”)
numero
Leia (numero)
Se ( numero>=100 ) Então
Escreva (“ O número inserido é maior ou Não
numero
SIM
igual a 100”) >=100
Senão
O número inserido
Escreva (“O número inserido é menor O número inserido
é maior ou igual a
que100”) é menor que 100”
100”
Fim-Se
Fim.
Fim
Java
2.
Pseudocódigo Fluxograma
Início
Declare
num1 como real num1
num2 como real
soma como real Entre com o
número 2”
Início
Escreva (“Entre com o número 1”) num2
Leia (num1)
Escreva (“Entre com o número 2”)
Soma <- num1 +
Leia (num2) num 2
soma <- num1 + num2
Se ( soma<10000 ) Então
Escreva (“ A soma é menor que 10000”) Soma<
SIM
10.000
Fim-Se
Fim. A soma é menor
Não que 10.000”
Fim
Java
3.
Pseudocódigo Fluxograma
Início
Fim
Java
4.
Pseudocódigo Fluxograma
Início
Declare
Nome do Cliente
nome como caractere
valor, desconto, total como real
Início nome
Escreva (“Nome do Cliente”)
Leia (nome)
Escreva (“Valor da compra R$”) Valor da compra
Leia (valor)
valor
Se ( valor > 1000 ) Então
desconto = valor * 0,10
total = valor – desconto Não
Valor >
SIM
1000
Escreva (“ O cliente”, nome, “é um
cliente
desconto = valor * 0,10 desconto = valor * 0,10
total = valor – desconto total = valor – desconto
VIP”)
Escreva (“Valor da compra R$”, valor)
Escreva (“Valor do desconto R$”, O cliente nome,
O cliente nome
é um cliente VIP
desconto)
Escreva (“Valor Total R$”, total)
Senão Valor da compra Valor da compra
valor valor
desconto = 0
total = valor – desconto
Escreva (“ O cliente”, nome)
Escreva (“Valor da compra R$”, valor) Valor do Valor do
desconto desconto desconto desconto
Escreva (“Valor do desconto R$”,
desconto)
Escreva (“Valor Total R$”, total) Valor total R$ Valor total R$
total total
Fim-Se
Fim.
Fim
Java
5.
Pseudocódigo Fluxograma
Início
Fim
Java
6.
Pseudocódigo Fluxograma
Início
Programa ex6
numero como inteiro
Declare
numero como inteiro Entre com um
Início número
Escreva (“Entre com um número”)
Leia (numero) numero
Se ( (numero mod 2)=0 E (numero mod
5)=0
)
(numero mod 2) = 0
Então E
Escreva (“ O número é divisível por 2 (numero mod 5) = 0
Não SIM
e 5”)
Senão
Escreva (“O número não é divisível
por 2 O número não é O número é
divisível por 2 e 5” divisível por 2 e 5”
e 5”)
Fim-Se
Fim.
Fim
Java
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Exercício 2
Recentemente o Estatuto do idoso foi alterado pela lei n. 13.466 de 12/07/2017 que acrescenta
uma nova classificação de prioridade de atendimento dentre os idosos. O Artigo 2º m inciso 2 diz
que “dentre os idosos, é assegurada prioridade especial aos maiores de 80 anos, atendendo-se
suas necessidades sempre preferencialmente em relação aos demais idosos.” 1 Com isso é
necessária uma alteração do programa que foi desenvolvido pela empresa NewInfo
acrescentando mais essa situação disposta em lei.
Exercício 3
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no YouTube um vídeo denominado ;“EstruturaCondicional VisuALG”, disponível em :
http://www.youtube.com/watch?v=mJzVSmv5vn8. Acessado em 29/10/2017.
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009
Artigos:
MORAES, Paulo Sérgio de. ;“Lógica de Programação”, 2000, disponível em
;http://www.siban.com.br/destaque/21_carta.pdf. Acessado em 29/10/2017
AGENDA 12
ESTRUTURAS DE DECISÃO “SELECIONE ...CASO...SENÃO...FI M_SELECIONE”
Imagem 20
facilitar a escrita do algoritmo quando se têm muitos caminhos a serem seguidos a partir de uma
decisão. Assim como a estrutura “Se...senão...fim_se”, é necessário saber quando e como utilizar
o “Selecione...caso...senão...fim_selecione”.
Fim. Não
Número
Inválido
Fim
O pseudocódigo inicia-se com a leitura da variável dia e a estrutura de seleção Selecione Caso
utiliza a variável dia para comparar com as diversas opções de 1 a 7. Caso o número inserido
corresponda a um dos critérios o programa escreve o dia da semana correspondente para o
usuário. Por exemplo, se o usuário digitar 6, o programa irá escrever somente “você escolheu
Sexta”, pois é a única comparação válida. Se o programa não achar nenhuma comparação válida
a cláusula Senão é executada e é exibida a mensagem “número inválido” para o usuário.
Você acha que já viu o programa em algum lugar? Não é impressão, não! É
exatamente o mesmo programa de exemplo de Estrutura de decisão aninhada da
agenda anterior. Com essa nova estrutura que foi apresentada o código foi escrito de
maneira muito mais elegante. O fluxograma permaneceu o mesmo sem alteração
nenhuma.
Lógica de Programação para o Curso Técnico em Informática EaD
ESTRUTURAS DE DECISÃO “SELECIONE...CASO...SENÃO...FIM_SELECIONE” 110
Exemplo:
se o usuário entrar com o valor 3, teremos dia = 3 e ao executarmos o comando case 3:
(dia=3), como o resultado da comparação será verdadeiro, ele executará o comando
JOptionPane.showMessageDialog(null, “Você escolheu Terça”); e o comando break; e
por fim finalizará o programa.
O comando break tem a finalidade de parar a execução do comando switch, uma ver que
já foi executada a ação necessária (comparação verdadeira) e não há a necessidade de se
continuar com o comando switch.
VOCÊ NO COMANDO
Pense em como poderíamos elaborar um aplicativo em pseudocódigo utilizando a
estrutura selecione caso...senão...fim_selecione em que o usuário possa selecionar entre
6 cores distintas. Reflita como podemos resolver essa questão antes de prosseguir a
leitura.
Até agora não foi realizado nenhum tratamento de erros quando o usuário insere algo errado no
sistema como, por exemplo, insere um caractere no lugar de um número. Quando isso acontece
sem o tratamento de erro, do ponto de vista do usuário o programa simplesmente fecha. Do
Parece uma coisa desnecessária realizarmos tratamento de erros à primeira vista. Mas
reflita: quantas vezes não ficamos com raiva quando ao utilizar algum software ou
app e ele simplesmente fechou sem dar nenhuma explicação? Temos que pensar
sempre no usuário do programa.
Mas, o problema realmente é com o usuário que fica sem saber o que aconteceu. Com certeza
algum programa de computador ou app de celular já fechou inesperadamente sem nenhum aviso
de erro e perdemos o que já estava sendo feito. Isso dá uma raiva imensa.
Para evitar ou minimizar aborrecimentos, no Java existem várias técnicas e rotinas de tratamento
de erros. Vamos apresentar aqui o comando try-catch. Ele consiste em capturar erros na
conversão de tipos na entrada de dados para os nossos programas. O comando trata mais tipos
de erro, mas não é o escopo desta explicação.
A sintaxe é:
try{
comando(s);
} cacth (NumberFormatException e){
Comando(s);
}
Na linha 11 o comando try tenta executar os comandos das linhas 12 a 14 que estão dentro das
chaves, que é fechada na linha 15. Caso não consiga, ele executa a cláusula catch
(NumberFormatException e) e os comandos dentro das chaves das linhas 15 a 18. Isto Exibirá
uma mensagem de erro.
Quando não ocorre nenhum erro de inserção de dados por parte do utilizador, ou seja, é inserido
um número inteiro o programa exibe a mensagem: “O número inserido foi <numero>” como nas
figuras abaixo:
Quando um erro de inserção de dados ocorre e, por exemplo, um caractere ou número real é
inserido a seguinte mensagem de erro aparece:
Um detalhe interessante: não sei se repararam, mas a caixa de diálogo da Erro! Fonte de
eferência não encontrada. é bem diferente da Erro! Fonte de referência não encontrada.. Isso
porque durante a escrita da caixa de diálogo de saída, esta foi formatada. Vamos analisar o
comando da linha 16 e 17:
É isso que inclui a formação da caixa de diálogo. A parte em vermelho (“E R R O”), insere o título
da janela e a parte em verde (JOptionPane.ERROR_MESSAGE) altera o ícone para uma cruz
vermelha para indicar erro.
Exemplo:
Se quisermos exibir uma mensagem de alerta para o usuário com um ponto de exclamação o
código será:
VOCÊ NO COMANDO
Acabamos de ver como podemos modificar a exibição de uma caixa de diálogo de saída
de dados. Explore um pouco na IDE Eclipse algumas outras personalizações desta caixa
de diálogo. Utilize a função de auto completar comandos da IDE. Para usar esta função
basta digitar o início de um comando e pressionar as teclas Control (CRTL) + barra de
espaços.
Código Produto
Os exercícios de 1 a 4 devem ser desenvolvidos elaborando o
100 Lápis preto N.2
pseudocódigo, fluxograma e linguagem Java:
150 Borracha branca
200 Caneta Azul
1. Vanessa precisa desenvolver um programa em que ao se
230 Caneta Vermelha
digitar o código de um produto cadastrado da papelaria
256 Giz de Cera 12un.
Lápis Colorido este retorne o nome do produto. Se o código 300 Cartolina Branca
do produto não estiver cadastrado o programa deve exibir 310 Resma de Sulfite
a mensagem produto não cadastrado. A tabela a seguir branco A4
descreve os códigos e os produtos cadastrados: 400 Estojo Escolar Verde
470 Caderno universitário
Como Vanessa resolveria essa questão? 100fls.
500 Caderno brochura 50
fls.
Como Eliberto faria esse programa? Elabore uma mensagem diferente para ser exibida para
o usuário ao selecionar cada um dos itens dos menus.
3. Além do menu apresentado na questão anterior Eliberto precisa fazer alguns submenus com
a seguinte estrutura:
1. Cadastrar usuário
2. Alterar dados
1. Alterar nome
2. Alterar Endereço
3. Alterar telefone
4. Alterar RG.
3. Excluir usuário
Altere o programa do exercício anterior para incluir este submenu e exiba uma mensagem
correspondente de acordo com o menu escolhido pelo usuário.
4. Crie um programa de uma calculadora com cinco operações básicas (soma, subtração,
multiplicação, divisão e resto da divisão) onde dois números reais devem ser inseridos, e
posteriormente em um menu o usuário escolha qual operação deve ser realizada. Após a
execução da operação selecionada o resultado deve ser apresentado na tela do computador.
5. Elabore um programa em que o usuário deva inserir um número do tipo double e a seguir o
programa exiba este número. O programa deve conter uma rotina de tratamento de erros
quanto a inserção de dados de tipos errados.
6. Refaça o exercício 4 sobre estruturas de seleção (calculadora) adicionando a rotina de
tratamento de erros try-catch. Não se esqueça de alterar a caixa de diálogo quando houver
um erro na execução do programa
7. Denis decidiu, por curiosidade, elaborar um programa que realiza a conversão de quilômetros
para milhas. Sabe-se que uma milha tem 1,609km. Como Denis resolveria este problema? O
programa deve utilizar o tratamento de erros do tipo try-catch.
Respostas:
Comando de Seleção de Múltipla
1.
Pseudocódigo Fluxograma
Início
Fim. Não
Produto não
cadastrado
Fim
Java
2.
Pseudocódigo Fluxograma
Fim-selecione
Fim. Fim
Java
3.
Pseudocódigo Fluxograma
Início
opcao, submenu
Programa ex3 como Inteiro
Declare
opcao como inteiro Entre com a
Início opção desejada
Escreva (“Entre com a opção desejada:”)
Escreva (“1 – Cadastrar usuário”)
Escreva (“2 – Alterar dados”)
opcao
Escreva (“3 – Excluir usuário”)
Leia (opcao) Sim
Cadastrando
1
Selecione Caso (opcao) Usuário
Caso condição 1 Não
Sim
Escreva (“Cadastrando Usuário”) 2
Selecione a
Caso condição 2 opção desejada
Escreva (“Menu de alteração de dados”) Não
Escreva (“Selecione a opção desejada:”)
Escreva (“1 – Alterar nome”) submenu
Escreva (“2 – Alterar Endereço”) Sim
Alterar nome
Escreva (“3 – Alterar Telefone”) 1
selecionado
Escreva (“4 – Alterar RG”) Não
Leia (submenu) Sim Alterar
Selecione Caso (submenu) 2 endereço
selecionado
Caso condição 1 Não
Escreva (“Alterar nome selecionado”) Sim Alterar telefone
Caso condição 2 3
selecionado
Escreva (“Alterar Endereço selecionado”)
Caso condição 3
Alterar telefone
Escreva (“Alterar telefone selecionado”) 4
selecionado
Caso condição 4
Escreva (“Alterar RG selecionado”) Não
Senão 1 opção Inválida
Escreva (“Opção Inválida”)
Fim-selecione
Caso condição 3
Escreva (“Exclusão de usuários”)
Senão Sim Exclusão de
3
Escreva (“Opção Inválida”) Usuários
Fim-selecione
Fim. Não
opção Inválida
Fim
Java
4.
Pseudocódigo Fluxograma
Início
Entre com o
Programa ex4 primeiro
Declare número
num1, num2 e resultado como real
operacao como inteiro
num1
Início
Escreva (“Entre com o primeiro número”)
Entre com o
Leia (num1) segundo
Escreva (“Entre com o segundo número”) número
Leia (num2)
Escreva (“Digite a operação desejada: ”)
Escreva (“1 –soma”) num2
Escreva (“2 – subtração”)
Escreva (“3 – multiplicação”) Entre com a
Escreva (“4 – divisão”) operação
Escreva (“5 – resto da divisão”) desejada
Leia (operacao)
Selecione Caso (operacao)
Caso condição 1 operacao
Resultado <- num1 + num2
Caso condição 2 Sim
1 Resultado <- num1 + num2
Resultado <- num1 - num2 Não
Caso condição 3 Sim
Resultado <- num1 * num2 2 Resultado <- num1 - num2
resultado
Fim
Java
Try-Catch
Observação: resolução dos exercícios somente em Java.
5.
6.
7.
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Na agenda anterior, no último exercício, Joaquina
desejava escrever um programa pseudocódigo,
fluxograma e em linguagem Java que ao se entrar com
um número inteiro de 1 a 12 ele exiba o nome do mês
do ano correspondente. Caso coloque um número fora
desta faixa o programa deve exibir uma mensagem de
erro: “mês inválido”.
Bem agora que nessa agenda vocês estudaram o comando selecione caso...senão...fim_selecione,
reescreva o pseudocódigo, o fluxograma e o programa em Java utilizando os novos
conhecimentos construídos ao longo dessa semana.
Exercício 2
Imagem 21
Maurício está programando em linguagem Java quando se
deparou com um problema de entrada de dados. O
programa que ele estava desenvolvendo fechava
inesperadamente quando o usuário inseria no sistema um
tipo de dado inconsistente com o tipo de dado declarado na
variável utilizada para o armazenamento da informação. Isso
pode vir a causar um grande transtorno pois o usuário fica
sem saber qual o motivo do programa encerrar-se inesperadamente.
O programa que Maurício está desenvolvendo consiste na leitura do número de um voo e no peso
de 10 de bagagens em quilogramas a serem despachadas. Posteriormente o programa deve
calcular o peso total da carga e o peso médio de cada volume de bagagem.
Considerando que o número do voo consiste em uma sequência alfanumérica e uma bagagem
pode ter um peso que inclua casas decimais, como Maurício pode resolver esse problema
utilizando tratamento de erros?
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no YouTube um vídeo denominado ;“ Seleção de Múltipla Escolha (Escolha...Caso)”,
disponível em : ;http:// www.youtube.com/watch?v=UG27GMtvzQM. Acessado em 02/11/2017.
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009
AGENDA 13
ESTRUTURAS DE REPETI ÇÃO “PARA...FIM -PARA”
A frase acima sinaliza o objeto de estudo desta aula: a Repetição. Mas antes que você ache
estranho falar de repetição na lógica de programação, e também para entender melhor o
conceito, vamos fazer uma analogia com o nosso cotidiano. Imagine a troca de uma lâmpada que
está queimada em um determinado cômodo da casa. Imagine, também, que no momento da
troca dispomos de uma caixa com várias lâmpadas que podem estar queimadas ou podem ser
novas, mas não dá para saber só com olhar. Qual seria então o nosso procedimento? Obviamente,
teríamos que experimentar colocando cada lâmpada individualmente no bocal até que uma delas
acenda, não é mesmo? Da mesma forma, na lógica de programação, também temos a
necessidade de “experimentar” várias opções na busca pela opção mais acertada. A forma como
isso é feito, a estrutura utilizada e em quais momentos, é exatamente o tema de que trata esta
aula.
Pense numa situação em que você está em uma festa e precisa reproduzir uma lista
de 10 músicas durante toda a balada. Você pode escolher em repetir manualmente
esta lista ou deixar programado para que as músicas fiquem tocando até o momento
que você pare a reprodução dessa lista.
Além dos desvios sequenciais, é possível criar desvios em loop ou repetição, ou seja, repetir
trechos do algoritmo sobre determinada condição e controlar a forma com que serão executados.
O comando "para...fim-para" permite que uma variável realize a contagem do número de
repetição a executar, conforme a indicação inicial e final dessa contagem e também indique o
formato em que essa tarefa será realizada. Observe o quadro a seguir e veja as sintaxes em
pseudocódigo quanto em Java são parecidas:
Pseudocódigo Fluxograma
Início
Fim
Apenas para você assimilar melhor, o pseudocódigo inicia-se com a leitura da variável numero
com tipo de dados inteiro, ou seja, esta variável irá receber apenas números inteiros. Após esta
leitura desta variável, inicia-se a execução da estrutura de repetição PARA onde realizará a
“contagem” dos números um por vez (está para repetir 1 por vez) até chegar no número 09. Ao
chegar no limite declarado (número 9) irá mostrar os números da sequência de 1 até 10.
Como a condição é:
VOCÊ NO COMANDO
Pense em como poderíamos elaborar um programa utilizando a estrutura para...fim-
para em que o usuário mostre os números de 01 até 10 na tela. Reflita como podemos
resolver essa questão antes de prosseguir a leitura.
Pseudocódigo: No Java:
Resultado:
Observe que apenas usamos a sintaxe System.out.println nas linhas 6 e 8 do código para que a
informação apareça no Console. Além disso, a estrutura do FOR iniciou com valor 0 e foi até 10
com passos 1 (linha 7 do código), ou seja, ele andou de um em um, como mostra a tela do
resultado.
VOCÊ NO COMANDO
Pense em uma situação em que você precise calcular a média de 30 alunos e informar a
situação de cada um deles, ou seja, informar a média como também se cada um dos 30
alunos estão “Aprovados” ou “Reprovados”. Reflita sobre este novo conceito antes de
prosseguir com a leitura.
Pseudocódigo Fluxograma
Início
Fim.
Fim
No Java:
Observe que utilizamos o Laço de Repetição PARA (linha 11) e o Laço de Decisão (linha 18) para
que resolvesse o problema informado anteriormente. Além disso, utilizamos o Scanner (linhas 1,
10, 13 e 16) para que o usuário pudesse digitar as notas e o programa realizar todo cálculo.
Repare que estamos utilizando diversos conceitos aprendidos nas agendas anteriores,
ou seja, tudo que você está estudando é acumulativo e poderá ser usado tudo de uma
vez para que realize um melhor Programa para solução do problema.
Teste de Mesa
Para que possamos nos certificar de que o algoritmo realizado está correto, antes de passar para
a linguagem de programação (no nosso caso, Java) podemos testá-lo simulando valores e verificar
se o resultado é o esperado. Esta simulação não é realizada no computador utilizando nenhum
software. É realizada no papel.
Calma! O Teste de Mesa é muito simples de realizar. Basta montar uma pequena tabela
e começar a simular os valores utilizando o seu pseudocódigo.
Para exemplificar, vamos voltar no algoritmo anterior (Mostrar os números de 01 até 09 com
passo 01) e aplicar o Teste de Mesa.
contador resultado
0 0 Veja que você iniciou com zero e como o
0+1 1 exercício pede o incremento, ou seja,
1+1 2 precisa somar 1 ao resultado anterior.
2+1 3
3+1 4
4+1 5
5+1 6
E como foi dito anteriormente, como o
6+1 7 valor final é i<10, então iremos até o
7+1 8 valor 9.
8+1 9
Início
Programa ex1
Num = 0
Declare
num como inteiro
Início contador = contador +1
Escreva (“Entre com um número”)
Leia (numero)
Para (num de 1 até 1000 repita passo 1)
contador >0 Fim
Faça (mostrar num) SIM NÂO
fim-para
NUM
Fim
No Java:
Resultado:
2.
Programa ex4
Declare
X, i, res como inteiro
Início
Leia (x)
Para (i de 1 até 10 repita passo 1)
Res x * i
Escreva (x, “*”, i, “=”, res)
fim-para
fim
No Java:
Resultado:
3.
Programa ex5
Declare
x, i como inteiro
Início
Para (i de 1 até 5 repita passo 1)
Escreva (“Informe o”, i, “° número: “)
Leia (x)
Escreva (x, “^2 = ”, x ^2)
fim-para
fim
No Java:
Resultado:
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Joaquim tem uma Padaria e seu aniversário está próximo. Ele e sua família decidiram além de
fazer a tradicional comemoração, irão selecionar 10 produtos na Padaria para fazer a promoção
da semana de 50% desses produtos.
Exercício 2
Giovanna adora usar computador, navegar na internet e matemática. Ela decidiu estudar tabuada
devido sua dificuldade durante o período de aula (ela apenas sabe as tabuadas dos números 0
até 05).
Ao navegar na internet aprendeu a desenvolver alguns algoritmos e decidiu desenvolver algo para
ajudá-la em seus estudos com tabuada.
Escreva para Giovanna um Algoritmo e um Programa em Java da Tabuada dos números 6 até 10.
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009
AGENDA 14
ESTRUTURAS DE REPETI ÇÃO “ENQUANTO... FIM-ENQUANTO” E “REPITA. .. ATÉ
QUE”
Imagem 22
Você reparou que fazemos diversas atividades repetidas ao longo da vida? E no seu cotidiano?
Todo dia você acorda em um determinado horário, come algo, pega ônibus ou metrô ou trem ou
os três para chegar na escola, assisti a aula, faz as tarefas, volta da escola e assim vai. Se pararmos
um pouco e pensarmos quantas atividades repetimos... imagine o computador!
Ainda bem que para o computador, tem a Lógica de Programação e as Estruturas de Repetição
que somadas ajudam a desenvolver diversos algoritmos para que estas atividades rotineiras
fiquem mais fáceis e práticas.
Na agenda passada você conheceu uma das Estruturas de Repetição: “PARA...FIM-PARA” e agora
irá conhecer outras duas que também são importantes e com certeza nas próximas agendas e
módulos ajudará bastante na Programação.
nesta agenda, que tal começar a separar antes que façamos uma SIM
pequena bagunça?
NÂO
Primeiro vamos para o “ENQUANTO... FIM-ENQUANTO”
conhecida também como somente “ENQUANTO” (While). Instruções
“ENQUANTO... FIM-ENQUANTO”
Este Laço de Repetição, como informado anteriormente, trabalha enquanto a condição for
verdadeira e vai executando as instruções. Porém a condição sendo falsa, ele sai do loop e vai
para o próximo comando na programação.
Pseudocódigo Fluxograma
Início
Declare
num como inteiro
num < 10 Fim
Início SIM NÃO
Enquanto (num < 10) faça
Mostre num
fim-enquanto contador = contador +1
mostrar num
No Java:
Observe que na linha 5 temos a estrutura de repetição Enquanto (while) tendo como condição a
situação que o exercício colocou (números menores que 10). As linhas 6 e 7 são exatamente os
comandos que são executados dentro desta estrutura.
Resultado:
Dica! A condição colocada acima foi num < 10 e por isso você deve ter percebido no
resultado que os números que saíram foram do 0 até o 9.
VOCÊ NO COMANDO
Você viu que o comando ENQUANTO é muito simples. Como no exemplo acima, foi
mostrado apenas os números de 0 até 9, será que você consegue fazer com que mostre
no Java os números de 0 até 10?
Dica: este assunto já foi abordado na agenda anterior!
No Java:
A diferença deste código no Java com o anterior é apenas o operador igual (=). Ao colocar a
condição < = 10 você incluiu o 10 na condição e o resultado (mostrando a seguir) aparecem os
números de 0 a 10.
Resultado:
Instruções
Repetir
<Comando> do {
<Comando> instrução
Condição
<Comando> }
SIM
Agora que você já conhece um pouco mais esta estrutura, vamos voltar ao exercício anterior e
fazer nesta estrutura: Elabore um Algoritmo, Fluxograma e um Programa em Java que mostre
todos os números menores que 10.
Pseudocódigo Fluxograma
Início
Programa ex01
num = 0
Declare
num como inteiro
mostrar num
Início
repetir
Mostre num contador = contador +1
até (num < 10)
fim-repetir
num < 10 Fim
SIM NÃO
No Java:
Observe que estamos com o mesmo exercício e o resultado é o mesmo, porém com outro Laço
de repetição. Nas linhas 6 até 10 é a sintaxe do REPITA ATÉ.
Na agenda passada foi informado que podemos misturar o PARA (for) com o SE (if)
para que possamos atingir a solução de um problema na programação. Assim, como
no PARA, podemos, também, usar o ENQUANTO (while) e o REPITA ATÉ (do while)
com o SE (if) com o mesmo propósito.
Exemplo: Desenvolver um Programa em Java onde é solicitado ao usuário o seu nome, cargo
(Diretor, Gerente ou Operacional) e salário. Seguindo a tabela abaixo é feito um cálculo para
verificar se o funcionário tem direito ao empréstimo e qual o valor.
No exemplo acima, observamos que além dos usos do Laço de repetição WHILE (linhas 14 até
17), da Estrutura de seleção IF (linhas 21 até 26), foi utilizado, também, o Scanner (linhas 1, 10,
12, 16 e 21).
1. Faça o Fluxograma e um Programa em Java que leia 50 números, calcule e exiba a média
aritmética dele.
2. Faça um Programa em Java para calcular a soma dos dígitos de um número. Por exemplo:
N°: 21 -> 2+1 = 3
3. Faça um Programa em Java para realizar comparação de números e informar o número maior.
Para este código será necessário solicitar ao usuário digitar a quantidade de números que ele
quer comparar e ele deverá digitar os números.
Respostas:
1.
Fluxograma: Java:
Início
num = 0
media
contador = contador +1
mostrar media
2.
3.
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Na Agenda 11, você realizou este exercício com a Estrutura de Decisão. Agora, realize com a
Estrutura de Repetição: while ou do while (você pode escolher).
A empresa NewInfo está desenvolvendo um sistema para classificar a prioridade na fila de espera
de atendimento de um de seus clientes. A classificação da prioridade consiste em perguntar a
idade do usuário a ser atendido e encaminhá-lo para uma fila prioritária caso este seja maior de
60 anos.
Elabore um programa que peça para o utilizador inserir a sua idade e exiba na tela a mensagem
“fila prioritária” caso este tenha mais de 60 anos ou exiba “fila comum” caso contrário. Apresente
a resposta em pseudocódigo, fluxograma e linguagem de programação Java.
Exercício 2
Na Agenda 13, você realizou este exercício com a Estrutura de Repetição PARA (for). Agora, realize
com a Estrutura de Repetição: while ou do while (você pode escolher).
Giovanna adora usar computador, navegar na internet e matemática. Ela decidiu estudar tabuada
devido sua dificuldade durante o período de aula (ela apenas sabe as tabuadas dos números 0
até 05). Ao navegar na internet aprendeu a desenvolver alguns algoritmos e decidiu desenvolver
algo para ajuda-la em seus estudos com tabuada.
Escreva para Giovanna um Algoritmo e um Programa em Java da Tabuada dos números 6 até 10.
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no Youtube um vídeo denominado “Curso de Java #11 – Estruturas de Repetição
(Parte1)”, disponível em : https://www.youtube.com/watch?v=2fawKjR8d4c. Acessado em
30/11/2017.
Livros:
FORBELLONE, André L. V.; ELBERSPACHER, Henri Frederico. Lógica de Programação: A Construção
de Algoritmos e Estrutura de Dados. Editora Pearson, 2000.
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009
AGENDA 15
VETORES
Imagem 23
Você certamente já viu uma barra de chocolate não é mesmo? Mais do que isso – se tiver o
mesmo apreço por chocolate que a maioria das pessoas, será capaz até de citar marcas, formatos
e texturas desta guloseima. Entre estes formatos está o mais conhecido – aquele em que
podemos visualizar os “quadradinhos” que formam uma barra. Assim, quando pensamos em uma
barra de chocolate, entendemos que uma mesma barra é composta por pedaços menores.
Esses pedaços podem ter recheios que, via de regra, são de um único sabor (normalmente uma
calda de morango). Antes que você corra para o supermercado mais próximo da sua casa a fim
de comprar uma barra de chocolate, vamos entender o que isso tem a ver com esta aula.
Similarmente à barra de chocolate, variáveis também podem armazenar vários valores, como se
fossem o recheio armazenado nos “pedaços” desta barra.
Seguindo esta mesma analogia, esses valores devem obrigatoriamente ser do mesmo tipo, como
o recheio sempre do mesmo sabor, lembra-se?.
Às variáveis que possuem estas particularidades chamamos vetores, as quais são o foco desta
agenda.
Até então trabalhamos com variáveis simples, que só recebem um dado por vez. Para atender às
exigências da programação, precisamos aprender a lidar com uma técnica de programação que
nos permitirá trabalhar com um agrupamento de várias informações dentro de uma mesma
variável, tornando a programação muito mais rápida e eficiente. É por isto que nesta agenda
estudaremos sobre a prática do uso de Vetores.
Vamos imaginar uma Barra de chocolate, destas que são divididas em vários
quadradinhos. Você compra os quadradinhos do chocolate individualmente, cada um
em sua própria embalagem? Provavelmente não. Você certamente faria a opção por
comprar uma barra completa de uma única vez, pela comodidade e também pelo preço, que
acaba saindo mais barato não é mesmo?
Quando trabalhamos com vetores a ideia é praticamente a mesma. Juntamos vários valores em
uma única variável, cada uma com o seu espaço, similar a barra de chocolate, com o intuito de
facilitar o acesso aos dados e economia de espaço em memória.
Com esta facilidade, o processo de leitura e gravação de um dado em uma variável, torna-se
simplificado graças as estruturas de repetição. Como esta simplificação será feita? É o que
veremos durante este capítulo. Vamos lá?
Imagem 24
Durante seus estudos de Lógica de Programação, você já passou por alguma situação onde seja
necessária a declaração de muitas variáveis para o mesmo propósito?
Alguma vez você já se perguntou se para calcular a média entre 10 notas de um aluno seria
necessário declarar 10 variáveis?
Até então trabalhamos com variáveis simples, que só recebem um dado por vez. Para atender às
exigências da programação, precisamos aprender a lidar com uma técnica de programação que
nos permitirá trabalhar com um agrupamento de várias informações dentro de uma mesma
variável, tornando a programação muito mais rápida e eficiente. É por isto que neste capítulo
estudaremos sobre a prática do uso de Vetores, que são variáveis especiais, com a capacidade de
receber diversos valores.
Agora que você já aprendeu a manipular variáveis e as principais estruturas de todas as linguagens
de programação, chegou a hora de aprender a trabalhar com um tipo especial de variável: os
vetores.
Vetores, ou Matrizes Unidimensionais são variáveis diferentes, nela podemos receber mais de um
valor, desde que todos os valores sejam do mesmo tipo (int, double, String etc).
Vetores foram desenvolvidos para que leituras e gravações de dados repetitivos sejam
simplificados através das estruturas de repetição, uma vez que valores individuais devem sempre
ser lidos individualmente, não sendo possível ler N variáveis dentro de uma única estrutura de
repetição.
Imagem 25
VOCÊ NO COMANDO
Agora que já vimos que vetores são variáveis que podem receber mais de um valor, em
quais casos já estudados podemos substituir variáveis repetidas por vetores? Reflita
sobre este novo conceito antes de prosseguir com a leitura.
Para entender melhor a importância deste tipo de variável, vamos resolver a seguinte situação
problema:
Isto que o programa está fazendo apenas uma função básica, sem muitos incrementos.
Com vetores, podemos reorganizar este código para utilizar menos da metade dos comandos, e
com uma vantagem: Não é necessário acrescentar nenhuma linha de código extra, seja necessário
cadastrar 10, 100 ou até 1000 convidados.
Em primeiro lugar para trabalhar com um vetor, devemos declara-lo, assim como fazemos com
uma variável, a diferença é que na declaração devemos especificar a quantidade de “casas” que
o vetor terá.
Cada casa do vetor, para o computador, é um espaço onde poderá ser escrito um valor. A primeira
casa do vetor, sempre será a casa de número zero devido a numeração binária utilizada em
qualquer meio computacional, onde o primeiro número é zero.
Vale lembrar que assim como uma variável, você nunca deve declarar um vetor sem
necessidade. Um problema comum para quem está iniciando os estudos com vetores
é a declaração de mais casas no vetor do que realmente necessita, ou o estouro do
vetor, que é o fato de tentar alocar mais valores no vetor do que ele suporta. Tome cuidado!
Declarando um vetor
Para declarar um vetor é muito simples, basta seguir o seu padrão conforme a tabela abaixo:
Pseudocódigo Java
Repare que tanto o Pseudocódigo, quanto o Fluxograma utilizam a mesma forma para
declarar um Vetor. Isto acontece porque ambas as notações utilizam a mesma
linguagem como base. O Português Estruturado.
Dando continuidade ao nosso Vetor, vamos verificar como ficará o problema da Jennifer
utilizando Vetores?
VOCÊ NO COMANDO
Seguindo o vetor de convidados da imagem, como deve ser feito para exibir que a Kirla
foi convidada? E para exibir todos os convidados? Você tem alguma ideia? Reflita sobre
isto antes de dar continuidade a leitura.
Em Java:
Pseudocódigo Java
convidados como conjunto[1..10] de caractere String[] convidados = new String[];
b) Declarar um vetor para possibilitar o cálculo de uma média aritmética simples com base
em 15 notas.
Pseudocódigo Java
Pseudocódigo Java
d) Declarar um vetor com 4 senhas diferentes para ser lidas e comparadas posteriormente.
Pseudocódigo Java
a) Luana necessita de um programa para o cálculo das médias dos alunos de sua escola de
música. Para cada módulo do curso, o aluno efetua 5 atividades. Caso a média destas
atividades seja maior que 5, o aluno poderá passar para o próximo módulo. Desenvolva
um programa em Java utilizando Vetores que calcule a média para os alunos de Luana
corretamente.
b) Desenvolva um programa que leia 20 valores inteiros. Após a leitura, o programa deverá
exibir os números armazenados no vetor, porém, os números que estiverem em casas
pares do vetor, o valor deverá ser multiplicado por 2.
c) Marcos, Fibula e Jurema, alunos do primeiro módulo Curso Técnico em Informática,
decidiram criar um novo jogo para a VI Feira de Informática da Escola onde estudam, afim
de demonstrar o conhecimento adquirido e também entreter os visitantes.
Neste jogo, serão cadastradas previamente em um vetor (dentro do próprio código fonte),
5 palavras secretas, que terão algo em comum entre elas. Durante a execução do
programa, será exibido para o usuário, o que as palavras tem em comum e o usuário
digitará uma palavra. Se a palavra estiver no vetor, será exibida uma mensagem para o
usuário, avisando-o que ele acertou o palpite e parabenizando-o. Caso contrário será
exibida uma mensagem de erro.
Desafio: Para que o jogo fique mais empolgante, o usuário poderá ter até 3 chances de
acertar uma das palavras.
d) Desenvolva um programa que leia 10 números do tipo inteiro, porém exiba apenas os
números pares que foram cadastrados.
e) Desenvolva um programa que leia 5 valores de um vetor e os exiba na ordem inversa da
qual foram cadastrados.
Respostas
1.
b)
Pseudocódigo Java
media como conjunto [1..10] de real double[] media = new Double[10];
c)
Pseudocódigo Java
numero como conjunto [1..15] de inteiro int[] media = new int[15];
d)
Pseudocódigo Java
2.
a) Pseudocódigo
declare
nota como conjunto[1..5] de real
soma como real
media como real
contador como inteiro
inicio
para contador de 1 ate 5 passo 1 faca
leia(nota[contador])
fim-para
para contador de 1 ate 5 passo 1 faca
soma <- soma + nota[contador]
fim-para
media <- soma/5
se media >= 5 entao
escreva("O aluno tirou "+ media+ ", portanto está APROVADO")
senao
escreva("O aluno tirou "+ media+ ", portanto está REPROVADO")
fim-se
fim
No Java:
b) Pseudocódigo
declare
valor como conjunto[1..20] de inteiro
contador como inteiro
mult como inteiro
numeros como caractere
inicio
para contador de 1 ate 20 passo 1 faca
leia(valor[contador])
fim-para
numeros <- "Os números digitados foram: "
para contador de 1 ate 20 passo 1 faca
se valor[contador] mod 2 = 0 entao
mult <- valor[contador] * 2
numeros <- numeros + mult + " "
senao
numeros <- numeros + valor[contador]
fim-se
fim-para
escreva(numeros)
fim
No Java:
c) Pseudocódigo
declare
resposta como conjunto[1..5] de caractere
palavra como caractere
acerto como caractere
contador como inteiro
inicio
resposta[1] = "Futebol"
resposta[2] = "Natação"
resposta[3] = "Ciclismo"
resposta[4] = "Arremesso de peso"
resposta[5] = "Remo"
escreval("São esportes Olímpicos")
escreva("A palavra é: ")
leia(palavra)
acerto = "nao"
para contador de 1 ate 5 passo 1 faca
se resposta[contador] = palavra entao
escreva("Parabéns, você acertou!!!")
acerto = "sim"
fim-se
fim-para
se acerto = "nao" entao
escreva("Poxa! Você errou!")
fim-se
fim
No Java:
Pseudocódigo:
declare
resposta como conjunto[1..5] de caractere
palavra como caractere
acerto como caractere
contador como inteiro
tentativa como inteiro
inicio
resposta[1] = "Futebol"
resposta[2] = "Natação"
resposta[3] = "Ciclismo"
resposta[4] = "Arremesso de peso"
resposta[5] = "Remo"
escreval("São esportes Olímpicos")
acerto = "nao"
para tentativa de 1 ate 3 passo 1 faca
escreva("A palavra é: ")
leia(palavra)
para contador de 1 ate 5 passo 1 faca
se resposta[contador] = palavra entao
escreva("Parabéns, você acertou!!!")
acerto = "sim"
tentativa <-3
fim-se
fim-para
se acerto = "nao" entao
escreva("Poxa! Você errou!")
fim-se
fim-para
se acerto = "nao" entao
escreva("Poxa! Você errou!")
fim-se
fim
No Java:
d) Pseudocódigo
declare
valor como conjunto[1..10] de inteiro
contador como inteiro
numeros como caractere
inicio
para contador de 1 ate 10 passo 1 faca
leia(valor[contador])
fim-para
numeros <- "Os números pares digitados foram: "
para contador de 1 ate 10 passo 1 faca
se valor[contador] mod 2 = 0 entao
numeros <- numeros + valor[contador] + “ “
fim-se
fim-para
escreva(numeros)
fim
No Java:
declare
numeros como conjunto[1..5] de inteiro
contador como inteiro
resultado como caractere
inicio
para contador de 1 ate 5 passo 1 faca
escreva ("Digite o " + contador + " numero")
leia(numeros[contador])
fim-para
resultado<- "Os números em ordem inversa são: "
para contador de 5 ate 1 passo -1 faca
resultado <- resultado + numeros[contador]
fim-para
escreva(resultado)
fim
No Java:
Como você já sabe, cada programa, cada código fonte gerado, sempre há mais de uma forma
de se estruturar o programa para receber os mesmos resultados ao final. Ao se Tratar
de Vetores, não é diferente. Nesta aula vimos a sua forma básica, abordando apenas
uma dimensão. Dependendo da circunstância na qual se encontra o problema,
podemos utilizar também as Matrizes Bidimensionais e Heterogêneas para resolver nossos
problemas computacionais, basta saber utiliza-los adequadamente.
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Imagem 25
A empresa LotoCom, uma empresa especializada em
sorteios para promoções, decidiu iniciar a programação de
um novo software para trabalhar com uma nova forma de
testar a sorte dos participantes de seus sorteios. Neste
programa, os participantes deverão inserir 3 números da
sorte, de 0 a 38, em um vetor de três posições.O sistema
deverá somar todos os números do vetor que forem
divisíveis por 4. Após a soma, deverá dividir o número
encontrado por 3. Se o resultado da conta do vetor for
Lógica de Programação para o Curso Técnico em Informática EaD
VETORES 176
acima de 25, o sistema mostrará que o usuário terá prêmio máximo, se estiver entre 20 e 25,
prêmio comum e abaixo disso avisará que ele não receberá prêmio nenhum.
Como deve ficar o programa codificado em Java?
Fonte da imagem: https://mx.depositphotos.com/88907452/stock-illustration-abstract-dark-grey-random-numbers.html.
Acessado em 21/12/2017.
Não esqueça que para saber se um número é divisível por outro, deve-se utilizar o
operador responsável por calcular o resto da divisão.
Exercício 2
Como Monito não tem um conhecimento tão vasto em Java, ao executar seu programa o sistema
retornou:
Como foi observado, não deu certo o programa construído por ele. Para resolver este problema,
como Monito deverá alterar seu código para que o número do mês apareça corretamente?
Replique o programa criado por Monito no seu computador, e corrija suas falhas.
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Apostila:
Apostila de Algoritmo Estruturado de Salete Buffoni – Capítulo 5. Disponível em:
http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/Algoritmos.pdf. Acessado em 18/10/2017.
Livro:
Lógica de Programação e Estruturas de Dados com Aplicações em Java de Sandra Puga e Gerson
Risseti. Editora Pearson, 2009.
AGENDA 16
MATRIZES
Imagem 26
Ninguém entende as mulheres! Sapatos e bijuterias, um de cada cor, são algumas das
prioridades na vida delas. Só quem é mulher pode entender muito bem isso!
Vive comprando e, quando procura e não acha, compra mais ainda porque pensa que não
tem. Isso só acontece porque na maioria das vezes as coisas não estão muito bem
organizadas. E quando encontra o brinco azul, mas só acha o anel vermelho... Nada combina!
Amanda resolveu colocar um fim na bagunça das suas bijuterias e comprou uma caixa com 3
fileiras, cada uma com 3 repartições e assim conseguiu organizar certinho cada conjunto de
cores, um em cada fileira, colocando os brincos, anéis e colares, cada um numa repartição.
Aí, pronto! Ficou tudo guardado em ordem, sem perder nenhum conjunto de cores!
Assim acontece com os dados no mundo da programação, quando precisam ser armazenados
ou lidos de acordo com a relação entre eixos, representados por mais de um valor dentro de
uma variável. É o que chamamos de matrizes que são variáveis que armazenam múltiplos
valores com mais de uma dimensão. Assim como as gavetas com as fileiras que contém mais
de uma repartição!
Até agora você aprendeu a trabalhar com o uso de uma única variável indexada com apenas uma
dimensão (uma coluna com várias linhas), que são os vetores que acabamos de estudar. No
entanto, existem situações onde precisamos trabalhar com mais de um tipo de informação sendo
necessário utilizar mais de uma coluna, onde devemos ter variáveis no sentido horizontal e
vertical. Por este motivo é muito importante você estudar matrizes de mais de uma dimensão!
Nas agendas anteriores foram explicados o conceito e a prática de vetores, que nada mais é do
que uma matriz com uma dimensão – linha ou coluna - e posteriormente o conceito de uma
matriz. Vale ressaltar que uma matriz também pode ser chamada de Array, termo originário do
inglês e também muito utilizado.
Um modo fácil de entender o conceito de como os elementos de uma matriz são ordenados é
realizar uma comparação com o jogo de batalha naval, onde as linhas são representadas por
números e as colunas por letras. Para identificarmos um elemento no “campo de batalha” do jogo
utilizamos uma combinação de letra e número, por exemplo A10 ou D5. Nas matrizes a
identificação é exatamente idêntica, porém utilizamos somente números para a representação e
para não realizamos confusão usamos duas variáveis distintas, uma para a representação das
linhas e outra das colunas, como foi visto na agenda anterior.
Lógica de Programação para o Curso Técnico em Informática EaD
MATRIZES 181
1 2 ... 100
1 10 7 ...
2 34 78 ... 9
... ... ... ... 18
100 6 3 ... 54
Matrizes são utilizadas constantemente em nosso cotidiano sem nos darmos conta. Vamos a um
exemplo: um professor para realizar o fechamento das notas bimestrais de uma de suas turmas
possui notas de três atividades de cada um de seus alunos e resolve colocar tudo em uma tabela.
Considerando que todas as notas podem ser números reais teremos tipos de dados idênticos para
todos os campos, inclusive para a média das notas. Assim cada uma das notas individuais de seus
alunos da tabela representa um elemento da matriz. E esses elementos podem ser facilmente
referenciados para a realização de cálculos ou outra operação necessária.
5 7 6 6
8 8 8 8
[ ]
… … … …
10 8 9 9
Pense na matriz representada acima: nas três primeiras colunas temos as notas das 3
atividades e na última coluna a média bimestral. É um modo muito simples e eficaz de
representamos os dados em programação.
O conceito de como uma matriz é declarada e utilizada já foi explicado anteriormente. Neste
capítulo focaremos na parte prática da utilização delas em pseudocódigo e em Java.
A sintaxe da declaração de uma matriz bidimensional é ilustrada na tabela a seguir:
Pseudocódigo Java
Declare
<tipo> <nome>[ ][ ] = new <tipo>[n][m];
<nome> como conjunto [1..n][1..m] de <tipo>
Onde temos que <nome> é o nome da matriz, <tipo> é o tipo de variável a ser armazenada na
matriz e n o número de linhas e m o número de colunas.
Pseudocódigo Java
Declare
int mat[ ][ ] = new int [10][10];
mat como conjunto [1..10][1..10] de inteiro
Em ambos os casos temos a declaração de uma matriz mat com duas dimensões (linha e coluna)
com 100 posições no total (10 linhas x 10 colunas).
Aqui cabe uma observação muito importante: note que foram ilustradas duas matrizes acima. Na
matriz de pseudocódigo a contagem inicia-se pelo número 1 (um). Já na matriz do Java a
contagem inicia-se pelo número 0 (zero). Lembre-se disso!
Outros exemplos:
Pseudocódigo Java
Declare
String nomes[ ][ ] = new String [10][5];
nomes como conjunto [1..10][1..5] de caractere
double num[ ] [ ] = new double [4][4];
num como conjunto [1..4][1..4] de real
float num1[ ] [ ] = new float [4][4];
VOCÊ NO COMANDO
Até agora foram declaradas matrizes sem valores inicializados. Pesquise e Pense em
como poderíamos declarar uma matriz 2x2 (duas linhas por duas colunas) com os seus
valores inteiros já inicializados em Java.
Na agenda passada, você estudou Vetores. A mesma situação que você viu agora com
Matriz, também, pode acontecer com os Vetores.
O acesso aos elementos de uma matriz é feito utilizando-se comandos de repetição. Bem, foram
vistos durante o curso, três tipos de comandos de repetição. O comando de repetição “Para...Fim-
Para”, FOR no Java é o que mais se adequa as necessidades pois executa uma repetição por um
número fixo de vezes. Lembrando que uma matriz possui um número fixo de linhas e colunas.
Os comandos “Para...Fim-Para” e FOR ficariam com a seguinte sintaxe para permitir o acesso a
um elemento da matriz, considerando uma matriz 4x4 de números inteiros, com as variáveis linha
e coluna controlando o acesso a linha e a coluna das matrizes:
Pseudocódigo Java
Programa MatrizExemplo
Declare double num [] [] = new double [4][4];
num como conjunto [1..4][1..4] de real int linha, coluna;
linha, coluna como inteiro JOptionPane.showMessageDialog (null, "Inserindo
Início os dados na Matriz");
Escreva(“inserindo os dados na Matriz”) for (linha = 0; linha < 4; linha++) {
Para linha = 1 Até 4 Faça for (coluna = 0; coluna < 4; coluna++) {
Para coluna = 1 Até 4 Faça num[linha][coluna] = Double.parseDouble(
Escreva (“Entre com um número”) JOptionPane.showInputDialog("Entre com
Escreva (“linha”, linha) o número" + “\nlinha " + "" + linha +
Escreva (“coluna, coluna) "\ncoluna " + coluna));
Leia num[linha, coluna] }
Fim-Para }
Fim-Para JOptionPane.showMessageDialog (null,
Escreva(“Mostrando os dados na Matriz”) "Mostrando
Para linha = 1 Até 4 Faça os dados na Matriz");
Para coluna = 1 Até 4 Faça for (linha = 0; linha < 4; linha++) {
Escreva (“linha”, linha) for (coluna = 0; coluna < 4; coluna++) {
Escreva (“coluna, coluna) JOptionPane.showMessageDialog(null,"linha "
Escreva (“valor lido”, num[linha, coluna]) + linha + "\ncoluna " + coluna + "\nNúmero
Fim-Para " + num[linha][coluna])
Fim-Para }
Fim }
O pseudocódigo inicia-se com a declaração da matriz num 4x4 e das variáveis linha e coluna que
servirão para acessarmos os elementos da matriz. Logo depois temos dois comandos de repetição
encadeados, um para controlarmos a linha e outro para a coluna. Dessa forma os elementos da
matriz serão inseridos na primeira linha uma coluna por vez e ao chegar ao final (coluna 4) passa-
se para a linha seguinte.
Note que no interior desses dois comandos de repetição temos uma entrada de dados para inserir
o valor do elemento num[linha][coluna] da matriz. Exemplo quando a linha = 1 e a coluna = 2,
teremos acesso ao elemento num[1][2].
O mesmo ocorre na etapa “Mostrando dos dados da matriz”, porém ao invés de realizarmos a
leitura do valor num[linha][coluna] realizamos a escrita deste.
No Java ocorre algo semelhante. Primeiro realizamos a declaração da matriz e das variáveis de
controle, para na primeira dupla do comando FOR realizarmos a entrada dos dados e na segunda
dupla realizarmos a exibição dos dados inseridos.
VOCÊ NO COMANDO
Quando executamos o exemplo acima em Java, várias janelas com a exibição dos dados
são geradas. São pelo menos 16 janelas para a entrada e mais 16 para a saída de dados.
Desafio: Tente modificar o programa de modo que ele fique com as 16 janelas de entrada
e somente 1 janela de saída. Obs.: a resposta estará na resolução dos exercícios deste
capítulo na seção Exercitando e Aprimorando.
Vamos a mais um exemplo: vamos retomar o exemplo do início do capítulo onde o professor
desejava fazer uma matriz em um programa para calcular as notas bimestrais dos seus estimados
alunos. Considerando que ele tem dez alunos nessa classe e três notas de atividades mais a média,
teremos uma matriz com 10 linhas e 4 colunas. Uma linha para cada aluno, 3 colunas para as
notas dos alunos e uma coluna para o cálculo da média. Como codificaríamos esse programa?
Pseudocódigo
Programa MatrizExemplo
Declare
notas como conjunto [1..10][1..4] de real
linha, coluna como inteiro
media como real
Início
Escreva(“inserindo os dados na Matriz”)
Para linha = 1 Até 10 Faça
Para coluna = 1 Até 3 Faça
Escreva (“Entre com um número”)
Escreva (“linha”, linha)
Escreva (“coluna, coluna)
Leia notas[linha, coluna]
Fim-Para
Fim-Para
Escreva(“calculando...”)
Media = 0
Para linha = 1 Até 10 Faça
Para coluna = 1 Até 3 Faça
No Java:
VOCÊ NO COMANDO
Pense em como poderíamos inserir o tratamento de erros Try-Catch no exemplo acima.
1. Como estudante do ensino médio Paulo deseja fazer um software que realize a soma de duas
matrizes 4x4. Ele sabe que para realizar a soma de duas matrizes, segundo a matemática,
cada elemento da matriz A deve ser somado ao seu elemento correspondente da matriz B,
gerando o resultado em uma terceira matriz C. Soma de matrizes: A[1,1] + B[1,1] = C[1,1].
Como Paulo resolverá essa questão?
2. Paulo agora quer um outro programa que realize a soma de todos os elementos de uma
matriz 10x10 contendo números inteiros. Como Paulo deve elaborar o programa?
3. Altere o programa do exercício 2 para que este calcule também a média de todos os valores
da matriz 10x10.
4. Roberta deseja fazer um programa que armazene somente três dados de cada um dos
visitantes de seu restaurante: o nome completo, a cidade e o estado aonde residem. O
programa deve ser capaz de armazenar 100.000 pessoas. Como Roberta resolveria esse
problema?
Dica: Durante os testes faça com somente 10 entradas e depois altere para o que foi
pedido.
Respostas:
1.
Pseudocódigo
Programa MatrizEx1
Declare
a como conjunto [1..4][1..4] de inteiro
b como conjunto [1..4][1..4] de inteiro
c como conjunto [1..4][1..4] de inteiro
linha, coluna como inteiro
Início
Escreva(“inserindo os dados na Matriz A”)
Para linha = 1 Até 4 Faça
Para coluna = 1 Até 4 Faça
Escreva (“Entre com um número”)
Escreva (“linha”, linha)
Escreva (“coluna, coluna)
Leia a[linha,coluna]
Fim-Para
Fim-Para
No Java:
2.
Pseudocódigo
Programa MatrizEx2
Declare
a como conjunto [1..10][1..10] de inteiro
linha, coluna, soma como inteiro
Início
Escreva(“inserindo os dados na Matriz”)
Para linha = 1 Até 10 Faça
Para coluna = 1 Até 10 Faça
Escreva (“Entre com um número”)
Escreva (“linha”, linha)
Escreva (“coluna, coluna)
Leia a[linha, coluna]
Fim-Para
Fim-Para
Escreva(“calculando...”)
soma = 0
Para linha = 1 Até 4 Faça
Para coluna = 1 Até 4 Faça
soma = soma + a[linha, coluna]
Fim-Para
Fim-Para
No Java:
3.
Pseudocódigo
Programa MatrizEx3
Declare
a como conjunto [1..10][1..10] de inteiro
linha, coluna, soma como inteiro
media como real
Início
Escreva(“inserindo os dados na Matriz”)
Para linha = 1 Até 10 Faça
Para coluna = 1 Até 10 Faça
Escreva (“Entre com um número”)
Escreva (“linha”, linha)
Escreva (“coluna, coluna)
Leia a[linha, coluna]
Fim-Para
Fim-Para
Escreva(“calculando...”)
soma = 0
Para linha = 1 Até 4 Faça
Para coluna = 1 Até 4 Faça
soma = soma + a[linha, coluna]
Fim-Para
Fim-Para
media = soma / (10 *10)
No Java:
4.
Pseudocódigo
Programa MatrizEx2
Declare
dados como conjunto [1..100000][1..3] de caractere
linha, coluna como inteiro
Início
Escreva(“inserindo os dados na Matriz”)
Para linha = 1 Até 100000 Faça
Escreva (“Entre com o nome”)
Leia dados[linha, 1]
Escreva (“Entre com a Cidade”)
Leia dados[linha, 2]
Escreva (“Entre com o Estado”)
Leia dados[linha, 3]
Fim-Para
Fim-Para
Escreva(“dados...”)
Para linha = 1 Até 100000 Faça
Para coluna = 1 Até 3 Faça
Se (coluna = 1) Então
Escreva (“Nome “, dados[linha,coluna])
Se (coluna = 2) Então
Escreva (“Cidade “, dados[linha,coluna])
Senão
Escreva (“Estado “, dados[linha,coluna])
Fim-Para
Fim-Para
Fim
No Java:
Resposta do desafio:
Estes exercícios devem ser entregues de forma on-line como atividades da agenda.
Exercício 1
Angélica precisa escrever um programa no qual a primeira linha de uma matriz bidimensional 5 x
5 deve ser colocada na última e vice-versa. Faça a codificação do programa em pseudocódigo e
em Java.
Exercício 2 Imagem 27
Para aprofundamento dos temas discutidos nesta aula, seguem abaixo algumas dicas de filmes,
livros e artigos que se relacionam com o conteúdo estudado. Estas dicas são muito importantes
para você!
Vídeo:
Procure no YouTube um vídeo denominado ;“ Matrizes + VisuAlg”, disponível em :
http://www.youtube.com/watch?v=C0fqsjFF1YE. Acessado em 02/11/2017.
Livros:
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009.
FONTES IMAGÉTICAS:
Imagem 01: Livro Telecurso Tec: Módulo 1 – Andrea Ramal; Silvina Ramal.
Imagem 03: Livro Comércio Telecurso Tec: Módulo 2 – Andrea Ramal; Silvina Ramal.
Imagem 04: Livro Telecurso Tec: Módulo 1 – Andrea Ramal; Silvina Ramal.
Imagem 06: Livro Telecurso Tec: Módulo 1 – Andrea Ramal; Silvina Ramal.
REFERÊNCIAS
PUGA, SANDRA; RISSETTI, GERSON. Lógica de Programação e Estruturas de Dados com Aplicações
em Java. Editora Pearson. 2009.