Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições1. IntroduçãoAté agora temos introduzido dire...
Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições   Veja então um exemplo concreto:   Exemplo ...
Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e CondiçõesVoltamos atacar este assunto de visibilidade ...
Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições5. Criando Condições Com Operadores E Express...
Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições7. O Escopo De Um Bloco ifTal como aprendemos...
Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e CondiçõesGlossáriobloco: um secção de código, consisti...
Upcoming SlideShare
Loading in …5
×

Ficha teorica aula_input_reader

362 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
362
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ficha teorica aula_input_reader

  1. 1. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições1. IntroduçãoAté agora temos introduzido directamente os dados directamente no código. Para aprendizagemde manipulação de dados faz sentido, mais é a forma mais “matreca” de fazer leitura de dados.Tipicamente a leitura pode ser feita de um ficheiro, de uma base de dados ou ainda do teclado.Para que os programas tenham utilidade e versatilidade é necessário que o utilizador possafornecer dados e que o programa possa manipular esses dados introduzidos. Já vimos que temosas seguintes opções para imprimir na tela:System.out.println() e System.out.print(). Sendo que a unica diferenca entre osstatements esta no facto de no primeiro caso o curso desce uma linha e segundo mantém namesma linha.E até agora já vimos os seguintes tipos de statements : 1. Output 2. MatemáticaAgora, vamos ver mais dois: 1. Input; 2. Condição2. Entrada de DadosAté agora somente escrevemos programas que fazem output (saída de dados), concretamente naforma de texto escrito na consola, através de chamar o método System.out.println. Masqualquer programa sério precisa também de receber input (entrada de dados) de uma variedadede fontes: a consola, um ficheiro, base de dados ou uma conexão da rede etc. Infelizmente,receber input é algo que é meio complicado para um novato em Java, por isso aproveitaremosde uma classe “ajudante” para facilitar as novas vidas.Trata-se da classe InputReader, que, conforme o nome indica, “facilita a leitura” de dados.Para aprender o uso desta classe, naturalmente começamos com o Javadoc dele, que o professorvai disponibilizar.Vamos aprender a usar a classe durante as aulas práticas, mais por enquanto note os seguintespontos: 1. O bytecode tem que estar na mesma pasta que contém as mesmas classes que o aluno estiver a programar de modo que esta classe esteja disponível para uso no código. 2. Não pode ser instanciada, ou seja não se cria um objecto desta classe simplesmente invocamos o método usando directamente a classe tal como na classe Math. //Lê do teclado um caracterer char letra = InputReader.readChar(); 3. Note bem que este método pode travar a execução do programa. Ou seja, ele esperará, com a paciência infinita do computador, até que o utilizador digite algo e bata na tecla “ENTER”. Se o utilizador não fazer isto, o programa ficará parado nesta linha durante milhões de anos. 1
  2. 2. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições Veja então um exemplo concreto: Exemplo 1 Escreva um programa em Java que recebe o nome e idade lidos do teclado e imprime os na consola.public class EntradaDeDados { public static void main(String[] args){ //Coloco uma mensagem bonita para comunicação com o utilizador System.out.print("Escreva o seu primeiro nome: "); String nome = InputReader.readString(); System.out.print("Escreva a sua idade: "); int idade = InputReader.readInt(); //Imprime na consola o que foi introduzido System.out.println("O seu nome é "+nome+" e voce tem "+idade+"anos"); } }3. Blocos e EscopoUm bloco em Java é qualquer conjunto de linhas que são embrulhadas por chavetas { }. Jávimos um uso de blocos – o corpo do método main() é sempre formado por um único bloco –mas durante a cadeira encontraremos muitos outros usos. Todos os blocos compartilham umacaracterística extremamente importante – eles restringem o escopo de variáveis declarado pordentro deles.Escopo é o “universo visível” para uma variável. É um pouco parecido com a situação deidentificar uma pessoa dentro de diferentes contextos sociais. Por exemplo, imagine que vocêtem um irmão chamado José, e também um colega com o mesmo nome. Agora dentro da tuafamília, se alguém falar de “José”, será óbvio a quem está a referir. Mas quando estas nafaculdade, não será tão fácil! Provavelmente, você usará teu julgamento para perceber de qualJosé estão a falar. Mas finalmente, imagine que um “Madjonedjone” encontra te na estrada efala “Heyta, ma brother, quero falar com Zé”. Pode ser qualquer um dos milhares dos Josés nacidade de Maputo com quem ele precisa de “bater o papo”.Então em Java, temos algo parecido. A regra que já aprendemos que proíbe declarar duasvariáveis com o mesmo nome de facto não é a história inteira! Na realidade, quando umavariável é definido dentro de um bloco, e a outra não, é possível. Isto é por causa de uma outraregra:Uma variável definida dentro de um bloco não é visível fora deste bloco. Quando o bloco emquestão é o corpo de um método, esta variável é chamado uma variável local. 2
  3. 3. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e CondiçõesVoltamos atacar este assunto de visibilidade de variáveis quando estivermos a ver os métodos.4. CondiçãoUm aspecto fundamental da programação é executar um ou mais statements mediante umacondição. Para fazer isto em Java existe várias soluções sendo a mais simples dela o if.Basicamente o if funciona de uma maneira muito simples: if(condição) { bloco }Ou seja: Se uma dada condição for verdadeira, executa o bloco delimitado pelas chavetas a seguir. Caso contrário, salta para o primeiro statement após o bloco.Veja o exemplo abaixo:Escreva um programa em Java que pega o nome do filme, a idade do comprador, preço inicialdo filme e imprime o preço baseado na idade do comprador. Se a idade estiver abaixo de 12desconto 15%.public class Filmes { /** * @param args */ public static void main(String[] args) { //1. Obter o nome do filme, preço normal e a idade de comprador System.out.print("Introduza o titlo do filme:"); String nomeDoFilme = InputReader.readString(); System.out.print("Introduza a idade do comprador:"); int idadeDoComprador = InputReader.readInt(); System.out.print("Introduza o preço inicial do filme:"); double precoDoFilme = InputReader.readDouble(); if(idadeDoComprador < 12) { //2.calcula o preço do filme System.out.println("Aplicando descconto de 15%"); precoDoFilme = precoDoFilme * 0.85; } //3. Imprima na consola o preço final do filme System.out.println("O filme "+nomeDoFilme+" custa apenas"+precoDoFilme+" MT"); }}Nas secções a seguir, veremos todos os detalhes de como preparar a parte mais importante destaestrutura, a condição. 3
  4. 4. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições5. Criando Condições Com Operadores E Expressões booleanosUma condição é nada mais de uma expressão que devolve um valor booleano. Ou seja, somentepode ser verdadeira ou falsa – ou em Java, true ou false. Para criar uma tal expressão, bastausar um dos seis operadores de comparação(VEJA NA FICHA TEORICA 4 os operadoreslógicos e de comparação)Veja o exemplo abaixo:int a = 3, b = 5;if(a != b) //correcto - ambos operandos são int{ System.out.println("a é diferente de b");}if(a > 4.0) //correcto - ambos operandos são numéricos{ System.out.println("a é maior de 4");}if(b < "8") //ERRADO - um operador é numérico mas o outro é String{ System.out.println("b é menor de 8");}6. Guardando O Resultado De Expressões boolean Em VariáveisTal como o resultado de qualquer outro cálculo, é possível guardar o valor de uma expressãobooleana para reutiliza-lo mas tarde no programa. Tem que se definir uma variável do tipoboolean. Esta variável somente pode conter true ou false. Veja o exemplo abaixo:int idade = 11;boolean podeVerFilme = idade > 17;if(!podeVerFilme){ System.out.println("Es jóvem demais - vai lá tomar sorvete!");} 4
  5. 5. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e Condições7. O Escopo De Um Bloco ifTal como aprendemos na aula passada, uma variável declarada dentro de um bloco não é visívelfora do bloco. Esta regra aplica igualmente também ao bloco que segue a uma condição if.Veja o exemplo abaixo:int idade = 11;boolean podeVerFilme = idade > 17;if(!podeVerFilme){ //na linha abaixo, a variável idade é perfeitamente visível String mensagem = "Tens " + idade + " anos. Es jovem - vai tomar sorvete!";}System.out.println(mensagem); //ERRO: aqui a variável mensagem é invisível8 . DesafiosDesafio 1Escreva um programa em Java que lê um numero inteiro do teclado e imprime o a raiz cúbicadeste numero se o mesmo for par.Desafio 2Escreva um programa em Java que lê dois números reais do teclado e imprime na tela somenteo Maior numero entre os dois. 5
  6. 6. Programação I – Java: Inteiração com Utilizador, Blocos e Escopos e CondiçõesGlossáriobloco: um secção de código, consistindo em um ou mais statements, isolado do resto porchavetas – { no inicio e } no fim.escopo: o “universo de visibilidade” ou “alcance” de uma certa variável. Tipicamente, oescopo de um statement é definido pelo bloco em que ela está definida.fluxo de controle: a sequência de execução dos statements num programa – tipicamente, estanão corresponde à simples ordem em que o statements aparecem no código do programa.variável local: uma variável definido dentro do corpo de um método, que não é visível fora doescopo daquele bloco, e “morre” uma vez que o método termina execução.boolean: um tipo para variáveis e expressões que somente pode conter o valor true ou o valorfalsecondição: uma expressão que produz um valor do tipo booleanif: uma palavra-chave de controle do fluxo, que testa uma certa condição, e se for verdade,executa o bloco imediatemente a seguirinput/output: os termos em inglês (e programação) para entrada/saída de dados – as vezesabreviadas simplesmente: I/O. 6

×