Académique Documents
Professionnel Documents
Culture Documents
Variáveis, Operadores e
Estruturas de Controle
Prof. Jucimar Souza
Capítulo 2
Variáveis, Operadores e Estruturas
de Controle
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
1
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
2.1.2 Tipos de Dados em Ponto Flutuante
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
3
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++.
4
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:
5
2.2.1 Regras para Nome de Variáveis
Em Java, recomenda-se que a declaração de variáveis utilize nome
iniciados com letras minúsculas. Caso o nome seja composto de mais
de uma palavra, as demais devem ser iniciadas com letras maiúsculas
tal como nos exemplos:
2.3 Comentários
São trechos de texto, usualmente explicativos, inseridos dentro do
programa de forma que não sejam considerados como parte do
código.
Tipos de comnetários:
De uma linha (//)
// comentário de uma linha
.
x = x*i; // comentário após duas barras
De documentação
/** comentário de documentação que
* também pode ter múltiplas linhas
*/
6
2.3 Comentários (cont.)
Geralmente o comentário de documentação é posicionado
imediatamente antes do elemento a ser documentado e tem seu
conteúdo extraído automaticamente pelo utilitário javadoc.
Esta ferramenta gera páginas em formato HTML contendo os
comentários organizados da mesma forma que a documentação
fornecida juntamente com o JDK.
Pode-se adicionam tags html aos comentários de documentação,
incluindo imagens, tabelas, textos explicativos, links e outros
recursos.
Tipos de informações administradas pelo javadoc que através de
marcadores pré-definidos iniciados com “@” permitem a criação
automática de ligações hipertexto entre a documentação e a
formatação padronizada de outros elementos, tais como o nome do
autor,
/** parâmetros, tipos ao
Classe destinada de armazenamento
retorno, etc, como
de abaixo:
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 de
operadores destinados a realização de operações aritméticas, lógicas,
relacionais e de atribuição.
Operadores Aritméticos
Operador 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.
7
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 );
8
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 relacionais
disponíveis são:
9
2.4 Operadores (cont.)
Operadores Lógicos
São operadores que permitem conectar logicamente o resultado
de diferentes expressões aritméticas ou relacionais construindo
assim uma expressão resultante composta de várias partes.
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 uma
expressão envolvendo operações diversas.
boolean resultado = false; byte a, b, c;
i = 0; a = b = c = 0;
y = a*x + b; //equivalência a=(b= (c=0))
10
Novo Recurso no J2SE – printf
System.out.printf("%s\n%s\n","Bem Vindo a
","Programação Java");
}
}
11
Lendo Numeros com no J2SE 5.0
//Soma2Numeros.java
import java.util.Scanner;
12
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
13
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;
14
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)
15
2.7 Estruturas de Controle
As estruturas de controle são divididas em:
Estruturas Sequenciais
Estruturas de Decisão
Estruturas de Repetição
Terminal Decisão
Seta de Fluxo de Dados Conector
Processamento Conector
Display Teclado
16
2.7.1 Estrutura de Controle Sequencial
17
2.7.1 Estrutura de Controle Sequencial
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 = vo2 + 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.
F V resultado = 0;
condição leia(v1, v2, ..., vN);
escreva(resultado);
}
}
resultado
Portugol para C++/Java
fim
Diagrama de blocos
18
2.7.2 Estruturas de Decisão
public class <nomeClasse> {
public <nomeMétodo> {
inicio
//Declaração das variáveis
tipo v1, v2, ..., vN;
resultado1 = 0 tipo resultado1, resultado2;
resultado2 = 0
resultado1 = 0;
resultado2 = 0;
leia(v1, v2, ..., vN);
v1, v2, ..., vN
se (condição){
F V resultado1 = v1 + v2 + ... + vN;
condição
resultado2 = 1*v1 + 2*v2 +...+N*vN;
}
resultado1 = v1 + v2 + ... + vN escreva(resultado1);
resultado2 = 1*v1 + 2*v2 +...+ N*vN
escreva(resultado2);
}
}
resultado1
resultado2 Portugol para C++/Java
fim
Diagrama de blocos
System.out.println(mensagem);
mensagem = “Acesso
Autorizado!”
} //fim do método principal
}//fim da classe
mensagem
Programa em Java
fim
19
2.7.2 Estruturas de Decisão
Estrutura de Decisão Composta
inicio
public class <nomeClasse> {
public <nomeMétodo> {
v1, v2, ..., vN
//Declaração das variáveis
F V tipo v1, v2, ..., vN;
condição tipo resultado;
Diagrama de blocos
Portugol para C++/Java
System.out.println(mensagem);
fim
Diagrama de blocos Programa em Java
20
2.7.2 Estruturas de Decisão
Estrutura de Decisão Encadeada
F V
condição1
F V Instruções quando a
condição2
condição1 for verdadeira
21
2.7.2 Estruturas de Decisão
escolha(opcao){
caso v1: instrução1;
Seleção de Múltipla Escolha caso v2: instrução2;
o o o
caso v4: instrução1;
}
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");
22
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.
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%
7) Dados três valores para os lados (A, B e C) de um triângulo verificar e informar se estes valores
formam um triângulo (A<B+C e B<A+C e C<B+C) ou não. Em caso verdadeiro, informe se é um
triângulo eqüilátero (A=B e B=C), isósceles (A=B ou B=C ou A=C) ou escaleno (todos os lados
diferentes).
23
2.7.3 Estruturas de Repetição
Repetição com teste no início
}
}
Diagrama de blocos
Portugol para C++/Java
24
2.7.3 Estruturas de Repetição
Repetição com teste no início
/* Programa para escrever uma PA */
public class EscrevePA_While {
public static void main(String args[]) {
Scanner entrada = new Scanner(System.in);
Diagrama de blocos
Programa em Java
25
2.7.3 Estruturas de Repetição
Repetição com teste no final
import java.util.Scanner;
public class ForcaLeiNewtonDoWhile {
public static void main (String args[]) {
double massa, a, forca;
char resp; //resposta do usuário
Scanner 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
import java.util.Scanner;
inicio public class PotenciaFor {
public static void main(String args[]) {
int base, exp, pot, cont;
Scanner entrada = new Scanner(System.in);
base, exp
System.out.println("Programa: Potência
de um numero(com While)");
cont=1; cont<=exp;cont++ System.out.print("Base: ");
base = entrada.nextInt();
System.out.print("Expoente: ");
exp = entrada.nextInt();
pot = pot*base pot=1;
for(cont=1; cont<=exp;cont++){
pot = pot*base;
pot }
System.out.print("Potencia: "+pot);
}
fim }
26
2.7.3 Estruturas de Repetição
Repetição com variável de controle
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 usuario
System.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
27
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 }
28
2.7.5 Estruturas de Repetição
Exercícios: Desenvolva um programa para:
1) Calcular N! (fatorial de N), sendo que o valor inteiro de
N deve ser fornecido pelo usuário.
2) Gerar a série de Fibonacci que é formada pela seguinte
sequência: 1, 1, 2, 3, 5, 8, 13, 21, ... A quantidade de
número da série o usuário informará.
3) Gerar a série 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, onde N é um
número fornecido pelo usuário.
4) Informar os N primeiros termos de uma PG. O primeiro
termo, a razão e número de termos será fornecido pelo
usuário.
5) Calcular a área de figuras bidimensionais: quadrado,
retângulo, triângulo e círculo.
29
Alguns erros de compilação comuns
30
Exemplos de Erros de Compilação (2)
31
Erros (II)
32
Exemplos de Erros de Tempo de Execução
33
Como achar erros de tempo de execução
34