34
1 Prof. Jucimar Souza Variáveis, Operadores e Variáveis, Operadores e Estruturas de Controle Estruturas de Controle Java Básico Capítulo 2 Objetivos da Aula Conhecer os Tipos de Dados Aprender as Regras de Declaração de Variáveis Abstrair as Recomendações Gerais de Nomenclatura Verificar os Operadores e sua procedência Estudar e Implementar programas envolvendo Estruturas de Controle Variáveis, Operadores e Estruturas de Controle

Java Básico

Embed Size (px)

DESCRIPTION

Objetivo da Aula:Conhecer os Tipos de DadosAprender as Regras de Declaração de VariáveisAbstrair as Recomendações Gerais de NomenclaturaVerificar os Operadores e sua procedênciaEstudar e Implementar programas envolvendo Estruturas de Controle

Citation preview

Page 1: Java Básico

1

Prof. Jucimar Souza

Variáveis, Operadores e Variáveis, Operadores e

Estruturas de ControleEstruturas de Controle

Java Básico

Capítulo 2

� Objetivos da Aula� Conhecer os Tipos de Dados� Aprender as Regras de Declaração de Variáveis� Abstrair as Recomendações Gerais de Nomenclatura

� Verificar os Operadores e sua procedência� Estudar e Implementar programas envolvendo Estruturas de Controle

Variáveis, Operadores e Estruturas

de Controle

Page 2: Java Básico

2

2.1 Tipos de Dados Primitivos

A linguagem Java possui 8 tipos básicos de dados e que são agrupados em 4 categorias, a saber:

� Inteiros� Byte, Inteiro Curto, Inteiro e Inteiro Longo

� Ponto Flutuante� Ponto Flutuante Simples ou Duplo

� Caractere� Caractere

� Lógico� Boleano

2.1.1 Tipos de Dados Inteiros

� Existem 4 diferentes tipos de dados inteiros, a saber:

Tipo Faixa de Valores bits

byte -128 a +127 8

short (inteiro curto ) -32.768 a +32.767 16

int (inteiro) -2.147.483.648 a +2.147.483.647

32

long (inteiro longo) -9.223.372.036.854.775.808 a+9.223.372.036.854.775.807

64

� Por default os valores literais são tratados como inteiros simples (int).

Page 3: Java Básico

3

2.1.2 Tipos de Dados em Ponto Flutuante

� Existem duas representações para pontos flutuantes que se diferenciam pela precisão oferecida:� float: reais com precisão simples (32 bits)� double: oferece dupla precisão (64 bits)

� Os valores em ponto flutuante do Java estão em conformidade com o padrão IEEE 754, tendo:� O ponto como separador de casas decimais� O expoente podendo ser escrito usando o caracter ‘e’ ou ‘E’. Exemplo: 2.35E6 (= 2.35x106 = 2350000) ou

2.3578e-2 (= 2.3578 x 10-2 = 0.023578)

IEEE: Institute for Electrical and Electronic Engineers (www.ieee.org.br)

2.1.3 Tipos de Dados Caractere� O tipo char permite a representação de caracteres individuais.� Representação interna no padrão UNICODE, cada caractere ocupa 16 bits (2

bytes) sem sinal, o que permite representar até 32.768 char. � O valor literal de caracteres deve estar delimitado por aspas simples.� Alguns caracteres especiais:

Representação Significado

\n Nova linha

\r Retorno de carro

\b Retrocesso (backspace)

\t Tabulação

\f Nova página

\’ Apóstrofe

\” Aspas

\\ Barra Invertida

\u223d Caractere UNICODE 233d

\fca Hexadecimal

Page 4: Java Básico

4

2.1.4 Tipos de Dados Lógico

� O tipo lógico boolean é capaz de assumir valores false (falso) ou true (verdadeiro) que equivalem aos estados off (desligado) e on (ligado) ou no (não) e yes (sim).

� Não existem equivalência entre os valores do tipo lógico e valores inteiros tal como existem em C/C++.

2.2 Declaração de Variáveis

� Uma variável em uma linguagem é similar a uma variável em Matemática. � Matemática � Nome + Domínio + Valor� Linguagem � Nome + Tipo + Valor (ou conteúdo)

� O nome de uma variável em Java pode ser uma seqüência de um ou mais caracteres alfabéticos e numéricos, iniciados por uma letra ou ainda pelos caracteres ‘_’ (undescore) ou ‘$’ (cifrão).

� Os nomes não podem conter outros símbolos gráficos, operadores ou espaços em branco, podendo ser arbitrariamente longos embora apenas os primeiros 32 caracteres serão utilizados para distinguir nomes de diferentes variáveis.

� Letras maiúsculas são consideradas diferentes das minúsculas.� Exemplos válidos de nomes de variáveis:

a resultado x2o $minimo_especial RESULT Maximo DataNasc

Page 5: Java Básico

5

2.2 Declaração de Variáveis

� Exemplos inválidos:

1x Resul geral salario-minimo int

� As palavras reservadas da linguagem Java, que portanto não podem ser utilizadas como nome de variáveis ou outros elementos, são:

abstractassertbooleanbreakbytecasecatchcharclass

constcontinuedefaultdodoubleelseenumextendsfalsefinal

finallyfloatforgotoifimplementsimportinstanceofInt

interfacelongnativenewnullpackageprivateprotected

publicreturnshortstaticstrictfpsuperswitchsynchronizedthis

throwthrowstransienttruetryvoidvolatilewhile

2.2 Declaração de Variáveis � Declaração de uma variável

� Tipo nome_var1 [,nome_var2 [,nome_var3 [… ,nome_varN]]] ;� Declaração Individual

int i;float total, preco;byte mascara;double valorMedio;

� Declaração em Conjuntochar nota1, nota2;

� Declaração com valor inicial para uma variávelint quantidade = 0;float angulo = 1.35;boolean ok = false;char letra = ‘a’;

� As variáveis podem ser declaradas em qualquer ponto do programa e estão em conformidade com as regras de escopo de variáveis.

Page 6: Java Básico

6

2.2.1 Regras para Nome de Variáveis

� Em Java, recomenda-se que a declaração de variáveis utilize nomeiniciados com letras minúsculas. Caso o nome seja composto de maisde uma palavra, as demais devem ser iniciadas com letras maiúsculastal como nos exemplos:

contador total sinalposicaoAbsoluta mediaMinimaBimestre mediaFinalTurma

� A utilização de caracteres numéricos no nome é livre enquanto o uso do traço de sublinhar (underscore ‘_’) não é recomendado.

2.3 Comentários

� São trechos de texto, usualmente explicativos, inseridos dentro doprograma de forma que não sejam considerados como parte docódigo.

� Tipos de comnetários:

� De uma linha (//)

.// comentário de uma linha

x = x*i; // comentário após duas barras

/* comentário de

múltiplas linhas */

/** comentário de documentação que

* também pode ter múltiplas linhas

*/

� De documentação

� Uma ou mais linhas (múltiplas linhas)

Page 7: Java Básico

7

2.3 Comentários (cont.)

� Geralmente o comentário de documentação é posicionadoimediatamente antes do elemento a ser documentado e tem seuconteúdo extraído automaticamente pelo utilitário javadoc.

� Esta ferramenta gera páginas em formato HTML contendo oscomentários organizados da mesma forma que a documentaçãofornecida juntamente com o JDK.

� Pode-se adicionam tags html aos comentários de documentação,incluindo imagens, tabelas, textos explicativos, links e outrosrecursos.

� Tipos de informações administradas pelo javadoc que através demarcadores pré-definidos iniciados com “@” permitem a criaçãoautomática de ligações hipertexto entre a documentação e aformatação padronizada de outros elementos, tais como o nome doautor, parâmetros, tipos de retorno, etc, como abaixo:/** Classe destinada ao armazenamento de dados relacionados a

* arquivos ou diretórios.* <p> Pode ser usada para armazenar árvores de diretórios.* @autor Jucimar Souza* @veja java.io.File*/

2.4 Operadores

A linguagem Java oferece um conjunto bastante amplo deoperadores destinados a realização de operações aritméticas, lógicas,relacionais e de atribuição.

� Operadores AritméticosOperador Significado Exemplo

+ Adição a + b- Subtração a - b* Multiplicação a*b/ Divisão a/b% Resto da divisão inteira a%b- Sinal negativo (- unário) -a+ Sinal positivo (+ unário) +a++ Incremento unário ++a ou a++-- Decremento unário --a ou a--

Estes operadores aritméticos podem ser combinados para formar expressões onde deve ser observada a precedência (ordem convencional) de avaliação dos operadores.

Page 8: Java Básico

8

2.4 Operadores

� Multiplicação e Divisão: * e /� int um = 3 / 2; // divisão de inteiros gera um inteiro� float umEmeio = (float) 3 / 2; // ocorre promoção aritmética para float� double xyz = umEmeio * um; // ocorre promoção aritmética para float

� Módulo: %� int resto = 7 % 2; // resto = 1

� Adição e Subtração: + e -� long l = 1000 + 4000;� double d = 1.0 – 0.01;

� Concatenação:� long var = 12345;� String str = “O valor de var é “ + var;� Na concatenação de Strings, as variáveis ou literais são promovidos a String antes:

� String str = “O valor de var é “ + Long.toString( var );

2.4 Operadores (cont.)Exemplo 2.1: Um exemplo de uma aplicação que declara algumasvariávies, atribui valores iniciais e efetua algumas operações imprimindo osresultados obtidos.

//Aritmetica.javapublic class Aritmetica {

static public void main (String args[]) {//Declaração e inicialização das variáveisint a = 5, b = 2;//Várias situações envolvendo os operadores aritméticosSystem.out.println("a = " + a); System.out.println("b = " + b); System.out.println("-b = " + (-b)); System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a*b)); System.out.println("a / b = " + (a/b)); System.out.println("(float) a / b = " + ( (float) a/b)); System.out.println("a % b = " + (a%b)); System.out.println("a++ = " + (a++)); System.out.println("a = " + a);System.out.println("--b = " + (--b)); System.out.println("b = " + b);

} //fim do método main} //fim da classe Aritmetica

Page 9: Java Básico

9

2.4 Operadores (cont.)

� Operadores Relacionais� São operadores que permitem comparar valores literais, variáveis ou

o resultado de expressões retornando um resultado do tipo lógico, istoé, um resultado falso ou verdadeiro. Os operadores relacionaisdisponíveis são:

Operador Significado Exemplo

== Igual a = = b!= Diferente a != b> Maior que a > b>= Maior ou igual a a >= b< Menor que a < b<= Menor ou igual a a <= b

2.4 Operadores (cont.)

Operador

Significado Exemplo

== Igual a = = b!= Diferente a != b> Maior que a > b>= Maior ou igual a a >= b< Menor que a < b<= Menor ou igual a a <= b

//Relacional.javapublic class Relacional{

static public void main (String args[]) {int a = 15, b = 10;

System.out.println("a = " + a); System.out.println("b = " + b);

System.out.println("a = b => " + (a == b)); System.out.println("a != b => " + (a != b)); System.out.println("a > b => " + (a > b)); System.out.println("a >= b => " + (a >= b)); System.out.println("a < b => " + (a < b)); System.out.println("a <= b => " + (a <= b));

} //fim do método main} //fim da classe Relacional

� Exemplo 2.2: Um exemplo simples envolvendo operadores relacionais.

Page 10: Java Básico

10

2.4 Operadores (cont.)� Operadores Lógicos

� São operadores que permitem conectar logicamente o resultadode diferentes expressões aritméticas ou relacionais construindoassim uma expressão resultante composta de várias partes.

Operador Significado Exemplo

&& E lógico (and) a && b|| Ou lógico (or) a || b! Negação (not) !a

boolean resultado = false;i = 0;y = a*x + b;

byte a, b, c;a = b = c = 0;//equivalência a=(b= (c=0))

� Operadores de Atribuição� A atribuição é a operação que permite definir o valor de uma

variável através de uma constante ou através do resultado de umaexpressão envolvendo operações diversas.

2.4 Operadores (cont.)

Operador Condicional : ?� É também conhecido como operador ternário, pois trabalha com 3

operandos. Ele avalia o primeiro operando. Caso a avaliação retorne true, ele executa o segundo operando. Senão, ele executa o terceiro operando. O segundo e terceiro operandos DEVEM ser do mesmo tipo (senão, use cast).

� O código do operador ternário abaixo:� int x = 10;� int y = (x > 10) ? x : x+1;

� é semelhante ao código abaixo:int x = 10;int y;if ( x > 10 ) {

y = x;} else {y = x + 1;

}

Page 11: Java Básico

11

Novo Recurso no J2SE – printf

� O método System.out.printf usado para imprimir dados.

System.out.printf(“%s\n %s\n “, “Bem Vindo”,” ao Programação Java”);

� A chamada de método especifica 3 argumentos. Se o método exigir multiplos argumentos, os argumentos serão separados por virgula

Exemplo usando o printf

public class BemVindo{

public static void main( String args[]){

System.out.printf("%s\n%s\n","Bem Vindo a ","Programação Java");

}}

Page 12: Java Básico

12

Lendo Numeros com no J2SE 5.0

� O uso da class Scanner do pacote java.util� Faça a declaração

� import java.util.Scanner;

� Declare a variavel para trabalhar com a entrada de dados

� Scanner entrada = new Scanner( System.in );

� Daclare as variaveis para armazenar os dados� int numero1, numero2;

� Efetue a entrada de dados utilizando o método adequado ao tipo de variavel p/ receber o numero:

� numero1 = entrada.nextInt();

//Soma2Numeros.javaimport java.util.Scanner;

public class Soma2Numeros {public static void main(String args[]) {

Scanner entrada = new Scanner( System.in );int a,b,soma;

System.out.println("Programa para somar dois numeros\n\n");System.out.println("Digite os valores");System.out.print("a="); a = entrada.nextInt();System.out.print("b=");b = entrada.nextInt();soma = a + b;System.out.printf("A soma e %d\n",soma);}

}

� Exemplo 2.4: Um exemplo, usando a classe Scanner, para somar doisnúmeros.

Page 13: Java Básico

13

2.5 - Casting e Promoção

� Alguns valores são incompatíveis se você tentar fazer uma atribuição direta. Enquanto um número real costuma ser representado em uma variável do tipo double, tentar atribuir ele a uma variável int não funciona pois é um código que diz: “i deve

valer d”, mas não se sabe se d realmente é um número inteiro ou não.

double d = 3.1415;

int i = d; // não compila

O mesmo ocorre no seguinte trecho:

int i = 3.14;

O mais interessante, é que nem mesmo o seguinte código compila:

double d = 5; // ok, o double pode conter um número inteiro

int i = d; // não compila

2.5 - Casting e Promoção(cont)

� Já no caso a seguir é o contrário:int i = 5;

double d2 = i;� O código acima compila sem problemas, já que um double pode

guardar um número com ou sem ponto flutuante. Todos os inteiros representados por uma variável do tipo int podem ser guardados em uma variável double, então não existem problemas no código acima.

� Ás vezes, precisamos que um número quebrado seja arredondado e armazenado num número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted) como um número inteiro. Esse processo recebe o nome de casting.

Page 14: Java Básico

14

2.5 - Casting e Promoção(cont)

double d3 = 3.14;

int i = (int) d3;

� O casting foi feito para moldar a variável d3 como um int. O valor dela agora é 3.

� O mesmo ocorre entre valores int e long.

long x = 10000;

int i = x; // nao compila, pois pode estar perdendo informação

� E, se quisermos realmente fazer isso, fazemos o casting:

long x = 10000;

int i = (int) x;

2.5.1 - Casos não tão comuns de casting e atribuição

� Alguns castings aparecem também:float x = 0.0;

� O código acima não compila pois todos os literais com ponto flutuante são considerados double pelo Java. E float não pode receber um double sem perda de informação, para fazer isso funcionar podemos escrever o seguinte:

float x = 0.0f;� A letra f indica que aquele literal deve ser tratado como float. Outro caso, que é

mais comum:double d = 5;float f = 3;float x = (float) d + f;

� Você precisa do casting porque o Java faz as contas e vai armazenando sempre no maior tipo que apareceu durante as operações, no caso o double. E no mínimo, o Java armazena em um int.

� Até casting com variáveis do tipo char podem ocorrer. O único tipo primitivo que não pode ser atribuído a nenhum outro tipo é o boolean.

Page 15: Java Básico

15

2.5.2 - Castings possíveis� Abaixo estão relacionados todos os casts possíveis na linguagem Java,

mostrando quando você quer converter de um valor para outro. A indicação Impl. quer dizer que aquele cast é implícito e automático, ou seja, você não precisa indicar o cast explicitamente. (lembrando que o tipo boolean não pode ser convertido para nenhum outro tipo)

2.6 Funções Matemáticas� Funções matemáticas que podem ser utilizadas para simplificar

cálculos e expressões:Função Significado

Math.abs(valor) Retorna o valor absoluto de um númeroMath.sqrt(valor) Retorna o valor da raiz quadrada de um númeroMath.cos(valor) Retorna o co-seno de um ângulo.Math.sin(valor) Retorna o seno de um ângulo.Math.tan(valor) Retorna a tangente de um ângulo.Math.acos(valor) Retorna o arco seno de um numero.Math.atan(valor) Retorna o arco tangente de um numero.Math.round(valor) Arredonda o valor de um núm. para seu inteiro mais

próximo.Math.floor(valor) Arredonda o valor de um número para baixo.Math.ceil(valor) Arredonda o valor de um número para cima.Math.log(valor) Retorna o logaritmo natural de um número.

Math.pow(base, potência) Potenciação.Math.PI Constante numérica que retorna o valor de PI.Math.E Constante numérica que se refere ao valor da base

para logaritmos naturais.Math.min(valor1, ...,valorN)Math.max(valor1, ...,valorN)

Retorna o menor e o maior valor , respectivamente, de um conjunto numérico.

Page 16: Java Básico

16

2.7 Estruturas de Controle

� As estruturas de controle são divididas em:� Estruturas Sequenciais� Estruturas de Decisão� Estruturas de Repetição

Fluxo Seqüencialde Execução

Desvio do Fluxode Execução

Fluxo Repetitivode Execução

2.7 Estruturas de Controle

� Simbologia Básica

TerminalSeta de Fluxo de Dados

Processamento

Display

DecisãoConectorConectorTeclado

Page 17: Java Básico

17

2.7.1 Estrutura de Controle Sequencial

public class <nomeClasse> {public <nomeMétodo> {

//Declaração das variáveis tipo v1, v2, ..., vN;tipo resultado;

leia(v1, v2, ..., vN);resultado = v1 + v2 + ... +vN;escreva(resultado);}}

resultado = v1 + v2 + ... +vN

inicio

fim

v1, v2, ..., vN

resultado

Diagrama de blocos Portugol para C++/Java

2.7.1 Estrutura de Controle Sequencial

“Programa para calcular

a Força (2ª Lei de 4ewton)”

“Informe a:”“massa:”

“aceleração:”

inicio

massa, a

forca = massa*a

fim

forca

import java.util.Scanner;public classe forcaLeiNewton {public estatic void main (String args[]) {//Declaração das variáveis double massa, a, forca;Scanner entrada = new Scanner( System.in );

System.out.println("Programa para calcular aForça - 2ª Lei de Newton");

System.out.println(“Informe a:");System.out.print(“massa: ");massa = entrada.nextDouble();System.out.print(“a: ");

a = entrada.nextDouble();forca = massa*a;System.out.println(“A forca é: ” + forca);} //fim do método principal}//fim da classe

Exemplo 2.4

Diagrama de blocos Programa em Java

Page 18: Java Básico

18

� Exercícios

Faça programas em Java para resolver problemas que envolvam:1. O Movimento Uniforme (MU): S = So + v*t.2. O Movimento Uniformemente Variado (MUV):

Equação Horária da Velocidade: v = vo + a*t.Equação horária do espaço: S = So + vo*t + (a*t2)/2.Equação de Torricelli: v2 = vo

2 + 2*a*(S – So).

3. Progressão Aritmética:Termo geral: an = a1 + (n – 1)*r, para n ∈N*

Soma dos n termos: Sn = ((a1 + an)*n)/2

4. Progressão Geométrica:Termo geral: an = a1*qn - 1, para n ∈N* e n≥2.

5. Calcular a área de um: quadrado, retângulo, triângulo ou círculo.

2.7.1 Estrutura de Controle Sequencial

2.7.2 Estruturas de Decisão

public class <nomeClasse> {public <nomeMétodo> { //Declaração das variáveis tipo v1, v2, ..., vN;tipo resultado;

resultado = 0;leia(v1, v2, ..., vN);

se (condição)resultado = v1 + v2 + ... +vN;

escreva(resultado);}}

Diagrama de blocos

Portugol para C++/Java

inicio

fim

v1, v2, ..., vN

resultado

condição

resultado = v1 + v2 + ... + vN

VF

resultado = 0

� Estrutura de Decisão Simples

Page 19: Java Básico

19

2.7.2 Estruturas de Decisãopublic class <nomeClasse> {public <nomeMétodo> { //Declaração das variáveis tipo v1, v2, ..., vN;tipo resultado1, resultado2;

resultado1 = 0; resultado2 = 0;leia(v1, v2, ..., vN);

se (condição){

resultado1 = v1 + v2 + ... + vN;resultado2 = 1*v1 + 2*v2 +...+N*vN;

}

escreva(resultado1);escreva(resultado2);}}

Diagrama de blocos

Portugol para C++/Java

inicio

fim

v1, v2, ..., vN

resultado1resultado2

condição

resultado1 = v1 + v2 + ... + vNresultado2 = 1*v1 + 2*v2 +...+ N*vN

VF

resultado1 = 0resultado2 = 0

2.7.2 Estruturas de Decisão

inicio

fim

senha

mensagem

senha==“java2”

mensagem = “Acesso Autorizado!”

VF

“Programa para Autorizar

o acesso a um cofre.”

“Digite a senha:”

mensagem = “Acesso Negado!”

Exemplo 2.5

public class SenhaCofreDecSimples {public static void main (String args[]) {

//Declaração das variáveis

String mensagem, senha; mensagem = "Acesso Negado!";

System.out.println("Programa para Autorizar o acesso a um cofre");

System.out.print("Digite a senha:");senha = entrada.next(); if (senha.equals(“java2"))

mensagem = "Acesso Autorizado";

System.out.println(mensagem);

} //fim do método principal}//fim da classe

Programa em Java

Page 20: Java Básico

20

2.7.2 Estruturas de Decisão

public class <nomeClasse> {public <nomeMétodo> { //Declaração das variáveis

tipo v1, v2, ..., vN;tipo resultado;

leia(v1, v2, ..., vN);

se(condição)

resultado = v1 + v2 + ... +vN;senão

resultado = 1*v1 + 2*v2 +...+ N*vN;

escreva(resultado);}}

Diagrama de blocos

Portugol para C++/Java

� Estrutura de Decisão Composta

inicio

fim

v1, v2, ..., vN

resultado

condição

resultado = v1 + v2 +... + vN

VF

resultado = 1*v1 + 2*v2 +...+ N*vN

2.7.2 Estruturas de Decisão

Diagrama de blocos

Exemplo 2.6

inicio

fim

senha

mensagem

senha=“java2”

mensagem = “Acesso Autorizado!”

VF

Programa para Autorizar

o acesso a um cofre.

Digite a senha:

mensagem = “Acesso Negado!”

import java.util.Scanner;public class SenhaCofreDecComp {public static void main (String args[ ]) {//Declaração das variáveis

String mensagem, senha;Scanner entrada = new Scanner(System.in); System.out.println("Programa para Autorizar

o acesso a um cofre");System.out.print("Digite a senha:");senha = entrada.next();if (senha.equals(“java2"))

mensagem = "Acesso Autorizado";else

mensagem = "Acesso Negado";

System.out.println(mensagem);

} //fim do método principal}//fim da classe

Programa em Java

Page 21: Java Básico

21

2.7.2 Estruturas de Decisão

se(condição1){

Instruções quando a condição1 for V;}

senão{

se(condição2){

Instruções quando a condição1 for F;E a condição2 for V;

}

senão{

Instruções quando a condição1 ea condição2 forem F;

}}

Diagrama de blocos

Portugol para C++/Java

� Estrutura de Decisão Encadeada

condição1

Instruções quando a condição1 for verdadeira

VF

condição2

Instruções quando a condição1 for falsa e a condição2 for verdadeira

VF

Instruções quando a condição1 e a condição2

forem falsas

2.7.2 Estruturas de Decisão

import java.util.Scanner;

public class SistemaCondEnc {public static void main (String args[]) {

Scanner entrada = new Scanner(System.in);//Declaração das variáveis double x, fx;

System.out.println("Programa: Sistema com 3 equacoes");System.out.print("Informe o valor de x: ");x = entrada.nextDouble();//Estrutura de Decisao Encadeadaif(x>=3)

fx=Math.pow(x,2)+x-5;else

if(x>=-1)fx=x+1;

elsefx=1;

System.out.printf("F(x) = %.2f\n", fx);} //fim do método principla

}//fim da classe

� Estrutura de Decisão Encadeada

Exemplo 2.7: y = x2 + x- 5, se x ≥≥≥≥ 3; y = x + 1, se –1 ≤≤≤≤ x < 3; e y = 1, se x < -1.

Page 22: Java Básico

22

2.7.2 Estruturas de Decisão

� Seleção de Múltipla Escolha

escolha(opcao){

caso v1: instrução1;

caso v2: instrução2;

o o o

caso v4: instrução1;

}

/* Programa: as 4 operações matemáticas */

import java.util.Scanner;

public class CalcSelMulEscolha {

public static void main(String args[]) {

Scanner entrada = new Scanner(System.in);

double a, b, result=0;

int op; //operacao

System.out.println("Calculadora");

System.out.println("1 - Soma");

System.out.println("2 - Subtração");

System.out.println("3 - Multiplicação");

System.out.println("4 - Divisão");

System.out.print("Escolha uma opção: ");

op = entrada.nextInt();System.out.print(" 1o. valor: ");

a = entrada.nextDouble();

System.out.print(" 2o. valor: ");

b = entrada.nextDouble();

System.out.print("Resultado: ");

switch(op){

case 1: result = a + b;

break;

case 2: result = a - b;

break;

case 3: result = a*b;

break;

case 4: result = a/b;

break;

default: System.out.print("Escolha de opção inválida");

} //fim do switch

System.out.printf("%6.2f\n",result);

} //fim do método principal

} //

Page 23: Java Básico

23

Exercícios� Faça programas em Java para resolver problemas que envolvam:1) Controle de entrada de um funcionário a um sistema, apenas quando ele digitar o login e a senha

corretamente. Sabe-se que inicialmente a autorização é negada.2) Leia um valor de x e forneça o resultado de f(x). Sabendo que f(x) = x2 + 2x, se x ≥ 1, e f(x) = -3x +

1, se x < 1.3) Calcular a média de uma disciplina, informando se o aluno estar reprovado ou aprovado. ( Media =

(Prova1 + Prova2 + 3*Projeto)/5, Aprovado ≥ 7,0).4) Calcule o termo geral de uma PA ou PG.

PA: an = a1 + (n – 1)*r, para n ∈N*

PG: an = a1*qn - 1, para n ∈N* e n≥2.6) Calcule o Imposto de Renda a ser descontado no salário de um trabalhador. As faixas salariais em

função dos descontos são mostradas na tabela abaixo.

7) Dados três valores para os lados (A, B e C) de um triângulo verificar e informar se estes valoresformam um triângulo (A<B+C e B<A+C e C<B+C) ou não. Em caso verdadeiro, informe se é umtriângulo eqüilátero (A=B e B=C), isósceles (A=B ou B=C ou A=C) ou escaleno (todos os ladosdiferentes).

Faixa Salarial(R$) Desconto

Até 1.050,00 Isento

> 1.050,00 e ≤ 2.500,00 15%

> 2.500,00 e ≤ 7.500,00 25%

> 7.500,00 35%

2.7.3 Estruturas de Repetição� Classificação-se em Repetição com:

� Teste no início;� Teste no final;� Variável de controle.

Page 24: Java Básico

24

2.7.3 Estruturas de Repetição� Repetição com teste no início

condição

Instruções executadas enquanto a condição

for verdadeira

V

F

public class <nomeClasse> {public <nomeMétodo> {

o o o

enquanto (condição) {

Instruções a serem executadas;enquanto a condição for verdadeira;

}

o o o

}}

Diagrama de blocosPortugol para C++/Java

2.7.3 Estruturas de Repetição� Repetição com teste no início

/* Programa para escrever uma PA */import java.util.Scanner;

public class PotenciaWhile {public static void main(String args[]) { int base, exp, pot;Scanner entrada = new

Scanner(System.in);System.out.println("Programa: Potência

de um numero(com While)");System.out.print(“Base: "); base = entrada.nextInt();System.out.print(“Expoente: ");exp = entrada.nextInt();pot = 1;while(exp>0){ pot = pot*base;exp--; //exp = exp –1;

}System.out.print(“Potencia: “+pot);

}}

Diagrama de blocos

exp > 0

pot = pot*baseexp = exp -1

V

F

fim

pot

inicio

base, exp

pot = 1

Programa em Java

Exemplo

Page 25: Java Básico

25

2.7.3 Estruturas de Repetição

/* Programa para escrever uma PA */public class EscrevePA_While {public static void main(String args[]) {

Scanner entrada = new Scanner(System.in);

int a1, an, //primeiro e último termor, //razao n; //numero de termos

System.out.println("Programa:escrever uma PA (Looping:teste no inicio)");

System.out.println("Digite os valores");System.out.print("Primeiro termo: "); a1 = entrada.nextInt();System.out.print("Razao: ");r = entrada.nextInt();System.out.print("Numero de termos: ");n = entrada.nextInt();System.out.print("PA: ");while(n>0){an = a1 + (n-1)*r;System.out.print(" " +an);n--;

}} //fim do método principal

} //fim da classe

� Repetição com teste no início

2.7.3 Estruturas de Repetição� Repetição com teste no final

/* Programa: Potência de um numero*/public class PotenciaWhile {

public static void main(String args[]) { int base, exp, pot;Scanner entrada = new Scanner(System.in);

System.out.println("Programa: Potênciade um numero(com Do While)");

System.out.print(“Base: "); base = entrada.nextInt();System.out.print(“Expoente: ");exp = entrada.nextInt();pot = 1;do{pot = pot*base;exp--; //exp = exp - 1;

}while(exp>0);System.out.print(“Potencia: “+pot);

}}

Diagrama de blocos

exp > 0

pot = pot*baseexp = exp -1

V

F

fim

pot

inicio

base, exp

pot = 1

Programa em Java

Exemplo

Page 26: Java Básico

26

2.7.3 Estruturas de Repetição

import java.util.Scanner;public class ForcaLeiNewtonDoWhile {public static void main (String args[]) {double massa, a, forca;char resp; //resposta do usuárioScanner entrada = new Scanner(System.in);

do{System.out.println("Programa: Lei de Newton");System.out.print("massa: ");massa = entrada.nextDouble();System.out.print("aceleracao: ");a = entrada.nextDouble();forca = massa*a;System.out.printf("Forca: %6.2f“, forca);System.out.print("\nDeseja continuar calculando? [S]Sim

[Outro tecla]Nao.......: "); resp = entrada.next().charAt(0);

}while((resp=='s')||(resp=='S'));} //fim do método principal

}//fim da classe

� Repetição com teste no final

2.7.3 Estruturas de Repetição� Repetição com variável de controle

Diagrama de blocos

pot = pot*base

fim

pot

inicio

base, exp

cont=1; cont<=exp;cont++

import java.util.Scanner;public class PotenciaFor {

public static void main(String args[]) { int base, exp, pot, cont;Scanner entrada = new Scanner(System.in);

System.out.println("Programa: Potência de um numero(com While)");

System.out.print("Base: "); base = entrada.nextInt();System.out.print("Expoente: ");exp = entrada.nextInt();pot=1;for(cont=1; cont<=exp;cont++){pot = pot*base;

}

System.out.print("Potencia: "+pot); }

}

Programa em Java

Page 27: Java Básico

27

2.7.3 Estruturas de Repetição

import java.util.Scanner;public class EscrevePaForDo {public static void main(String args[]) {

int a1, an,r, cont, n;Scanner entrada = new Scanner(System.in);char resp; //resposta do usuarioSystem.out.println("Programa para escrever uma PA (com For");do{

System.out.print("Primeiro termo: "); a1 = entrada.nextInt();System.out.print("Razao: ");r = entrada.nextInt();System.out.print("Numero de termos: ");n = entrada.nextInt();System.out.print("PA: ");an=0;for(cont=1;cont<=n;cont++){

an = a1 + (cont-1)*r;System.out.print(" " +an);

}System.out.print(“\nDeseja continuar calculando? [S]Sim

[Outro Tecla]Nao.....:"); resp = entrada.next().charAt(0);

}while((resp=='s')||(resp=='S'));} //fim do metodo

} //fim da classe

� Repetição com variável de controle

2.7.4 - Uso do break e continue

� break/continue� Altera o fluxo do controle do laço

� break� Causa a imediata saída de uma estrutura de controle

� Pode ser usado nas instruções while, for, do/while ou switch

� continue� Pula as instruções restantes no corpo do laço

� Prossegue com a próxima iteração do laço� Pode ser usado nas instruções while, for or do/while

Page 28: Java Básico

28

1 // BreakTest.java

2 // Usando a instrução break em uma estrutura for

3

4 // Java packages

5 import javax.swing.JOptionPane;

6

7 public class BreakTest {

8

9 // método main começa a execução da aplicação Java

10 public static void main( String args[] )

11 {

12 String saidaDados = "";

13 int conta;

14

15 // loop 10 vezes

16 for ( conta = 1; conta <= 10; conta++ ) {

17

18 // se conta é 5, termina o loop

19 if ( conta == 5 )

20 break; // para o loop somente se conta == 5

21

22 saidaDados += conta + " ";

23

24 } //fim da estrutura for

25

26 saidaDados += "\n Parou o laço com conta = " + conta;

27 System.out.println(saidaDados);

28

29 System.exit( 0 ); // termina a aplicação

30

31 }

32

33 }

1 // ContinueTest.java

2 // Usando a instrução break em uma estrutura for

3

4 // Java packages

5 import javax.swing.JOptionPane;

6

7 public class ContinueTest {

8

9 // método main começa a execução da aplicação Java

10 public static void main( String args[] )

11 {

12 String saidaDados = "";

13 int conta;

14

15 // loop 10 vezes

16 for ( conta = 1; conta <= 10; conta++ ) {

17

18 // se conta é 5 salta o loop e faz a intereção

19 if ( conta == 5 )

20 continue; // para o loop somente se conta == 5

21

22 saidaDados += conta + " ";

23

24 } //fim da estrutura for

25

26 saidaDados += "\n pulou o numero 5 em função do continue " + conta;

27 JOptionPane.showMessageDialog( null, saidaDados );

28

29 System.exit( 0 ); // termina a aplicação

30

31 }

32

33 }

Page 29: Java Básico

29

2.7.5 Estruturas de Repetição� Exercícios: Desenvolva um programa para:

1) Calcular N! (fatorial de N), sendo que o valor inteiro deN deve ser fornecido pelo usuário.

2) Gerar a série de Fibonacci que é formada pela seguintesequência: 1, 1, 2, 3, 5, 8, 13, 21, ... A quantidade denúmero da série o usuário informará.

3) Gerar a série 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, onde N é umnúmero fornecido pelo usuário.

4) Informar os N primeiros termos de uma PG. O primeirotermo, a razão e número de termos será fornecido pelousuário.

5) Calcular a área de figuras bidimensionais: quadrado,retângulo, triângulo e círculo.

Obs.: Os programas devem oferecer aos usuários a oportunidade decontinuar realizando os cálculos.

Como lidar com erros

Page 30: Java Básico

30

Alguns erros de compilação comuns

Exemplos de erros de compilação

Page 31: Java Básico

31

Exemplos de Erros de Compilação (2)

Exemplos de Erros de Compilação (3)

Page 32: Java Básico

32

Erros (II)

Erros de Execução Comuns e suas possíveis causas

Page 33: Java Básico

33

Exemplos de Erros de Tempo de Execução

Exemplos de Erros de Tempo de Execução

Page 34: Java Básico

34

Como achar erros de tempo de execução