SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
© Prof. Cícero Quarto – cicero.uema@gmail.com
Capítulo 4
Instruções
de Controle: Parte I
PROGRAMAÇÃO ORIENTADA A OBJETOS
© Prof. Cícero Quarto – cicero.uema@gmail.com
2
2
Objetivos
• Utilizar técnicas básicas de solução de problemas;
• Desenvolver algoritmos por meio do processo de refinamento;
• Utilizar instruções de seleção if e if ... else;
• Utilizar a instrução while;
• Utilizar repetição controlada por contador e por sentinela;
• Utilizar operadores compostos de atribuição, incremento e
decremento;
• A portabilidade dos tipos de dados primitivos
© Prof. Cícero Quarto – cicero.uema@gmail.com
3
Introdução
Antes de escrever um programa (algoritmo)
para resolver um problema:
Devemos ter um entendimento
completo do problema;
Devemos ter uma abordagem
cuidadosamente planejada para resolvê-lo;
Entender os tipos de blocos de
construção e Deve-se empregar técnicas de
construção do programa comprovadas.
Os conceitos apresentados neste capítulo
são cruciais na construção de classes e
manipulação de objetos.
Neste capítulo, são
introduzidas as instruções if, if
... else e while do Java, três
dos blocos de construção que
permitem especificar a lógica
requerida para que os
métodos realizem suas tarefas;
Serão descritos os
operadores de incremento e
decremento do Java.
© Prof. Cícero Quarto – cicero.uema@gmail.com
4
4
Algoritmos
- Qualquer problema de computação pode ser resolvido
executando uma série de ações em uma ordem específica.
Um procedimento para resolver um problema em termos
de:
das ações (instruções) a executar e
da ordem em que essas ações executam
chama-se algoritmo.
Especificar a ordem
das ações a serem
executadas
Instruções de
controle
© Prof. Cícero Quarto – cicero.uema@gmail.com
5
Pseudocódigo
Pseudocódigo é uma linguagem informal que ajuda a
desenvolver algoritmos sem a preocupação com os estritos
detalhes da sintaxe da linguagem Java.
Pseudocódigo
CONVERTIDO
(escrito,
desenvolvido)
Partes estruturadas
de programas Java
Não leva em
consideração detalhes
da sintaxe da
linguagem. É entendido
e amigável ao usuário.
Estritamente um
algoritmo
na linguagem padrão a ser
executado em um
computador. Compilado
em linguagem de
máquina.
© Prof. Cícero Quarto – cicero.uema@gmail.com
6
Estruturas de controle
Normalmente, instruções em um programa são executadas
uma após a outra na ordem em que são escritas;
Esse processo é chamado execução sequencial;
Várias instruções Java permitem que você especifique que
a próxima instrução a executar não é necessariamente a
próxima na sequência. Isso é chamado de transferência de
controle;
O trabalho de Bohm e Jacopini demonstrou que todos os
programas poderiam ser escritos em termos de somente três
estruturas de controle – a estrutura de sequência, a
estrutura de seleção e a estrutura de repetição
© Prof. Cícero Quarto – cicero.uema@gmail.com
7
Estrutura de sequência em Java
A estrutura de sequência está incorporada ao Java. A não ser que
seja instruído de outra forma, o computador executa as instruções
Java uma depois da outra na ordem em que elas são escritas;
O diagrama de atividades na Figura 1 ilustra uma estrutura de
sequência típica em que dois cálculos são realizados na ordem;
adiciona grade a total
adiciona 1 a counter
Instrução Java correspondente:
total = total + grade;
Instrução Java correspondente:
counter = counter + 1;
Figura 1: Diagrama de atividades da
estrutura de sequência.
© Prof. Cícero Quarto – cicero.uema@gmail.com
8
Diagrama de atividades UML
adiciona grade a total
adiciona 1 a counter
Instrução Java correspondente:
total = total + grade;
Instrução Java correspondente:
counter = counter + 1;
Um diagrama de atividades UML modela o fluxo de trabalho (também chamado
atividade) de uma parte de um sistema de software;
Esses fluxos de trabalho podem incluir uma parte de um algoritmo, como a
estrutura de sequência na Figura 1;
Os diagramas de atividade são compostos de símbolos, como símbolos de
estado de ação (retângulos com os lados esquerdo e direito substituídos por arcos
curvados para fora), losangos e pequenos círculos. Esses símbolos são conectados
por setas de transição, que representam o fluxo da atividade – isto é, a ordem em
que as ações devem ocorrer.
Figura 1: Diagrama de
atividades da estrutura de
sequência.
© Prof. Cícero Quarto – cicero.uema@gmail.com
9
Instrução de seleção em Java
O Java contém três tipos de instruções de seleção:
Instruções de seleção
em Java
if if ... else switch
INSTRUÇÃO DE SELEÇÃO
ÚNICA (porque seleciona
ou ignora uma única ação
(ou um único grupo de
ações)
INSTRUÇÃO DE SELEÇÃO
DUPLA ( porque seleciona
entre duas ações diferentes
(ou grupo de ações)
INSTRUÇÃO DE
SELEÇÃO MÚLTIPLA
(porque seleciona entre
muitas ações (ou grupo
de ações)
© Prof. Cícero Quarto – cicero.uema@gmail.com
10
10
Instrução de repetição em Java
O Java fornece três instruções de repetição (também
chamadas instruções de loop);
Permitem que programas executem instruções
repetidamente contanto que uma condição (chamada
condição de continuação do loop) permaneça verdadeira. A
Tabela 1 resume as três instruções de repetição do Java.
INSTRUÇÃO DESCRIÇÃO
while Realizam a ação (ou grupo de ações) no seu corpo zero ou mais
vezes – se a condição de continuação do loop for inicialmente for
falsa, a ação (ou grupo de ações) não será executada.
for
do ... while Realiza a ação (ou grupo de ações) no seu corpo uma ou mais vezes
Tabela 1: Instruções de repetição em Java
© Prof. Cícero Quarto – cicero.uema@gmail.com
1
11
A instrução de seleção única if
Os programas utilizam instruções de seleção para escolher cursos
alternativos de ações;
Por exemplo, suponha que a nota de aprovação de um exame seja 60.
A instrução em pseudocódigo (ver Figura 2):
Determina se a condição “nota do aluno é maior que ou igual a 60” é
verdadeira. Nesse caso “Aprovado” é impresso, e a próxima instrução de
pseudocódigo é “realizada”;
Se a condição for falsa, a instrução imprima é ignorada e a próxima instrução
de pseudocódigo na sequência é realizada.
Figura 2: Instrução em
pseudocódigo (arquivo do
autor).
© Prof. Cícero Quarto – cicero.uema@gmail.com
12
A instrução de seleção única if ...
A instrução de pseudocódigo if precedente pode ser escrita
em Java, conforme ilustra a Figura 3:
Figura 3: Instrução em Java
(arquivo do autor).
A Figura 4 ilustra a instrução de seleção única if. Essa figura contém o
símbolo mais importante em um diagrama de atividade – o losango, ou
símbolo de decisão, que indica que uma decisão deve ser tomada;
imprime
“Aprovado”
[grade >= 60]
[grade < 60]
Figura 4: Diagrama de atividades UML
de uma Instrução de seleção única if em
Java.
© Prof. Cícero Quarto – cicero.uema@gmail.com
3
13
A instrução de seleção única if ...
A instrução de pseudocódigo if precedente pode ser escrita em
Java, conforme ilustra a Figura 3:
Figura 3: Instrução em Java
(arquivo do autor).
A Figura 4 ilustra a instrução de seleção única if. Essa figura
contém o símbolo mais importante em um diagrama de
atividade – o losango, ou símbolo de decisão, que indica que
uma decisão deve ser tomada;
imprime
“Aprovado”
[grade >= 60]
[grade < 60]
Figura 4: Diagrama de atividades UML
de uma Instrução de seleção única if em
Java.
© Prof. Cícero Quarto – cicero.uema@gmail.com
4
14
A instrução de seleção dupla if ... else
A instrução if de seleção única realiza uma ação indicada somente
quando a condição é true; caso contrário, a ação é pulada;
A instrução de seleção dupla if ... else permite especificar uma
ação a realizar quando a condição é verdadeira e uma ação
diferente quando a ação é falsa. Por exemplo, este pseudocódigo:
Se a nota do aluno for maior que ou igual a 60
Imprima “Aprovado”
Caso contrário (Else)
Imprima “Reprovado”
Veja no slide a seguir a instrução if … else equivalente em Java é:
© Prof. Cícero Quarto – cicero.uema@gmail.com
15
5
A instrução de seleção dupla if ... else em Java
If ( studentGrade >= 60 )
System.out.println( “Passed”);
else
System.out.println( “Failed” );
Boa prática de programação!
Recue as duas instruções do corpo de uma instrução if … else
© Prof. Cícero Quarto – cicero.uema@gmail.com
16
Diagrama de atividades UML da instrução de
seleção dupla if … else
A Figura 5 ilustra o fluxo de controle na instrução if … else.
Mais uma vez, os símbolos no diagrama de atividades UML
(além do estado inicial, setas de transição e estado final) representam
os estados e decisões da ação.
imprime
“Reprovado”
imprime
“Aprovado”
[grade < 60] [grade >= 60]
Figura 5: Diagrama de atividades da UML de instrução de seleção dupla if … else (Deitel,
© Prof. Cícero Quarto – cicero.uema@gmail.com
17
Operador condicional (?:)
• O Java fornece o operador condicional (?:) que pode ser utilizado
no lugar de uma instrução if … else.
É o único operador ternário do
Java (operador que recebe três operandos);
Juntos, os operandos e o símbolo ?:
formam uma expressão condicional;
- o primeiro operando (à esquerda do ?)
é uma expressão boolean (isto é, uma condição que é avaliada como
um valor boolean – true ou false);
- o segundo operando (entre o ? e :) é o valor
da expressão condicional se a expressão boolean for true e o terceiro
operando (à direita do :) é o valor da expressão condicional se a
expressão boolean for avaliada como false. Veja um exemplo no slide
seguinte:
© Prof. Cícero Quarto – cicero.uema@gmail.com
18
Operador condicional (?:)
System.out.println( studentGrade >= 60 ? “Passed” :
“Failed”);
Considerações:
(i) Imprime o valor do argumento da expressão condicional de
println;
(ii) A expressão condicional nessa instrução é avaliada para
a string “Passed” se a expressão boolean studentGrade >= 60
for verdadeira e para a string “Failed” se a expressão boolean
for falsa;
(iii) Essa instrução realiza essencialmente a mesma função da
instrução if … eles;
(iv) A precedência do operador condicional é baixa, então a
expressão condicional inteira normalmente é colocada entre
parênteses.
© Prof. Cícero Quarto – cicero.uema@gmail.com
19
Instruções if … else aninhadas
• Um programa pode testar múltiplos casos colocando instruções
if … else dentro de outras instruções if … else para criar
instruções if … else aninhadas;
• Por exemplo, o pseudocódigo a seguir representa uma if
… else aninhada que imprime A para notas de exame maiores que
ou igual a 90, B para notas de 80 a 89, C para notas de 70 a 79, D
para notas de 60 a 69 e F para todas as outras notas:
Se a nota do aluno for maior que ou igual a 90
Imprima “A”
Caso contrário
Se a nota do aluno for maior que ou igual a 80
Imprima “B”
Caso contrário
Se a nota do aluno for maior que ou igual a 70
Imprima “C”
Caso contrário
Se a nota do aluno for maior que ou igual a 60
Imprima “D”
Caso contrário
Imprima “F”
© Prof. Cícero Quarto – cicero.uema@gmail.com
20
Instruções if … else aninhadas
• O mesmo pseudocódigo, mostrado no slide anterior, pode ser reescrito
é mostrado abaixo:
if( studentGrade >= 90 )
System.out.println( “A”);
else
if( studentGrade >= 80 )
System.out.println( “B”);
else
if( studentGrade >= 70 )
System.out.println( “C”);
else
if( studentGrade >= 80 )
System.out.println( “D”);
else
System.out.println( “F”);
if( studentGrade >= 90 )
System.out.println( “A”);
else if( studentGrade >= 80 )
System.out.println( “B”);
else if( studentGrade >= 70 )
System.out.println( “C”);
else if( studentGrade >= 60 )
System.out.println( “D”);
else
System.out.println( “F”);
Observação:
Ambas as formas A e B são idên
estão corretas.
A
B
© Prof. Cícero Quarto – cicero.uema@gmail.com
21
O problema do else oscilante
• O compilador Java sempre associa um else à instrução if
imediatamente anterior, a menos que instruído de outro modo pela
colocação de chaves ({e});
• Esse comportamento pode levar àquilo que é chamado do
problema do else oscilante. Por exemplo:
if( x > 5 )
if( y > 5 )
System.out.println( “x and y are > 5” );
else
System.out.println( “x is <= 5” );
Obs.: Se a condição da instrução if externa for falsa, o if … else interno é
pulado e nada é exibido. Para forçar a instrução if … else aninhada para
executar como foi originalmente concebida, devemos escrevê-la como no slide
a seguir:
© Prof. Cícero Quarto – cicero.uema@gmail.com
22
O problema do else oscilante
if( x > 5 )
{
if( y > 5)
System.out.println( “x and y are > 5” );
}
else
System.out.println( “x is <= 5” );
Consideração:
As chaves indicam que a segunda instrução if está no
corpo da primeira e que a instrução else está associada
com a primeira instrução if.
© Prof. Cícero Quarto – cicero.uema@gmail.com
23
Blocos
◈ A instrução if normalmente espera somente uma instrução no
seu corpo;
◈Para incluir várias instruções no corpo de uma if (ou no corpo de
um else de uma instrução if … eles), inclua as instruções dentro
de chaves ({ e });
◈As instruções contidas em um par de chaves formam um bloco;
◈Um bloco pode ser colocado em qualquer lugar em um programa
em que uma única instrução pode ser colocada;
◈O exemplo a seguir inclui um bloco na parte else de uma
instrução if … else:
© Prof. Cícero Quarto – cicero.uema@gmail.com
24
Blocos – exemplo
if( grade >= 60 )
System.out.println( “Passed” );
else
{
System.out.println( “Failed” );
System.out.println( “You must take this course again.” );
}
© Prof. Cícero Quarto – cicero.uema@gmail.com
25
A instrução de repetição while
♦ Uma instrução de repetição (ou um loop) permite especificar
que um programa deve repetir uma ação enquanto alguma
condição permanece verdadeira;
♦ Como exemplo da instrução de repetição while do Java,
considere um segmento de programa projetado para encontrar a
primeira potência de 3 maior que 100;
♦ Suponha que a int product tenha sido inicializada como 3;
♦ Quando a instrução while seguinte terminar a execução,
product conterá o resultado:
while( product <= 100 )
product = 3 * product;
♦ Quando a instrução while for falsa, a execução de programa
continua com a próxima instrução depois da instrução while.
© Prof. Cícero Quarto – cicero.uema@gmail.com
26
Diagrama de atividades UML da instrução de
repetição while
• O diagrama de atividades UML na Figura 6 ilustra o fluxo
de controle na instrução while;
• Esse diagrama também introduz o símbolo de agregação
(representado por um losango);
Figura 6: Diagrama de atividades da UML da instrução de repetição while
(Deitel, p. 89, 8a. Edição) - Java
triplica o valor
de product
Instrução Java correspondente
product = 3 * product;
merge
decision
[product <= 100]
[product > 100]
© Prof. Cícero Quarto – cicero.uema@gmail.com
27
Implementando a repetição controlada por
contador na classe GradeBook
♦ A classe GradeBook (Figura 4.6) contém um construtor (linhas
19-21) que atribui um valor à variável de instância courseName da
classe (declarada na linha 16);
♦ As linhas 24-26, 29-31 e 34-38 declaram métodos
setCourseName, getCourseName e displayMessage,
respectivamente;
♦ As linhas 41-69 declaram o método determineClassAverage,
que implementa o algoritmo de média da classe.
© Prof. Cícero Quarto – cicero.uema@gmail.com
28
Operadores de atribuição composta
♦ Os operadores de atribuição composta abreviam expressões de
atribuição. Instruções como:
variável = variável operador expressão;
onde operador é um dos operadores binários +, -, *, / ou % (ou
outros que discutiremos mais adiante), pode ser escrita na forma:
variável operador= expressão;
Por exemplo, você pode abreviar a instrução:
c = c + 3;
com o operador de atribuição composta de adição, +=, como:
c += 3;
♦ A Tabela no slide a seguir mostra os operadores aritméticos de
atribuição composta, expressões de exemplo que utilizam os
operadores e explicações do que os operadores fazem.
© Prof. Cícero Quarto – cicero.uema@gmail.com
29
Operadores aritméticos de atribuição composta
Operador de
atribuição
Expressão de
atribuição
Explicação Atribuições
Suponha: int c = 3, d = 5, e = 4, f = 6, g = 12
+= c += 7 c = c + 7 10 a c
-= d -= 4 d = d - 4 1 a d
*= e *= 5 e = e * 5 20 a e
/= f /= 3 f = f / 3 2 a f
%= g %= 9 g = g % 9 3 a g
Tabela 2 | Operadores aritméticos de atribuição composta (Java - Como
Programar, Deitel, 8o ed., p. 102, 2010).
© Prof. Cícero Quarto – cicero.uema@gmail.com
30
Operadores de incremento e decremento
▪ O Java fornece dois operadores unários para adicionar 1 a ou
para subtrair 1 do valor de uma variável numérica. Esses são o
operador de incremento unário, ++, e o operador de decremento
unário, --, que são resumidos na Tabela abaixo.
Operador Nome do
operador
Expressão de
exemplo
Explicação
++ pré-incremento ++a Incrementa a por 1, então utiliza o
novo valor de a na expressão em
que a reside.
++ pós-incremento a++ Utiliza o valor atual de a na
expressão em que a reside, então
incrementa a por 1.
-- pré-decremento --b Decrementa b por 1, então utiliza o
novo valor de b na expressão em
que b reside.
-- pós-decremento b-- Utiliza o valor atual de b na
expressão em que b reside, então
decrementa b por 1.
© Prof. Cícero Quarto – cicero.uema@gmail.com
31
Classe Increment que demonstra as
funcionabilidades dos operadores de pré-
incremento e pós-incremento
1 // Figura 4.15: Increment.java
2 // operadores de pré-incremento e pós-incremento
3
4 public class Increment {
5 public static void main( String[] args ) {
6 int c;
7 // demonstra o operador de pós-incremento
8 c = 5; // atribui 5 à variável c
9 System.out.println( c ); // imprime 5
10 System.out.println( c++ ); // imprime 5 e pós-incrementa
11 System.out.println( c ); // imprime 6
12
13 System.out.println(); // pula uma linha
14
15 // demonstra o operador de pré-incremento
16 c = 5; // atribui
5 à variável c
17 System.out.println( c ); // imprime 5
18 System.out.println( ++c ); // pré-incrementa e imprime 6
19 System.out.println( c ); // imprime 6
20
21 } // fim de main
22 } // fim da classe Increment
Saída do aplicativo
© Prof. Cícero Quarto – cicero.uema@gmail.com
32
Tipos primitivos
▪ A tabela no Apêndice D (Java como programar, ed. 8. p. 1070)
lista os oito tipos primitivos em Java.
▪ Como ocorre com suas linguagens predecessoras, C e C++, o
Java requer que todas as variáveis tenham um tipo. Por essa razão,
o Java é referido como uma linguagem fortemente tipada.
• Cada tipo do Apêndice D é listado com seu tamanho em
bits (há oito bits em um byte) e seu intervalo de valores;
• As variáveis de instância dos char, byte, short, int, long,
float e double recebem o valor 0 por padrão;
• Atribui-se às variáveis de instância do tipo boolean o
valor false por padrão;
• As variáveis de instância de tipo por referência são
inicializadas por padrão para o valor null.
© Prof. Cícero Quarto – cicero.uema@gmail.com
33
APÊNDICE D – Tipos primitivos
Tipo Tamanho em
bits
Valores
boolean true ou false
char 16 'u0000' a 'uFFFF' (0 a 65535)
byte 8 -128 a +127 (-27 a 27 -1)
short 16 -32.768 a +32.767 (-215 a 215 -1)
int 32 -2.147.483.648 a +2.147.483.647 (-231 a 231 -1)
long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 (-263 a 263 -
1)
float 32 Intervalo negativo:
-3,4028234663852886E+38 a -1,40129846432481707e-45
Intervalo positivo:
1,40129846432481707e-45 a
3,4028234663852886E+38
double 64 Intervalo negativo:
-1,7976931348623157E+308 a -4,94065645841246544e-324
Intervalo positivo:
4,94065645841246544e-324 a 1,7976931348623157E+308
Figura D.1 | Tipos primitivos do Java (Adaptação do Deitel, p. 1070)
© Prof. Cícero Quarto – cicero.uema@gmail.com
34
(Opcional) Estudo de caso de GUI e imagens
gráficas: criando desenhos simples
▪ Um recurso atraente do Java é o suporte a gráficos, que permite
a programadores aprimorar aplicativos visualmente;
▪ Esta seção introduz uma das capacidades gráficas do Java –
desenhar linhas;
▪ Esta seção também aborda os princípios básicos da criação de
uma janela para exibir um desenho na tela do computador.
© Prof. Cícero Quarto – cicero.uema@gmail.com
35
Sistema de coordenadas do Java
▪ Para desenhar em Java, você deve primeiro entender o sistema de
coordenadas do Java (Figura 7), um esquema para identificar
pontos na tela;
eixo x
eixo y
(0, 0)
+x
+y (x, y)
Considerações:
♦ Por padrão, o canto superior esquerdo de um
componente GUI tem as coordenadas (0, 0);
♦ Um par de coordenadas é composto de uma
coordenada x (a coordenada horizontal) e uma
coordenada y (a coordenada vertical);
♦ As coordenadas indicam onde elementos gráficos
devem ser exibidos em uma tela;
♦ Unidades coordenadas são medidas em pixels. (O
termo pixel significa “picture element” [elemento de
imagem]
© Prof. Cícero Quarto – cicero.uema@gmail.com
36
Sistema de coordenadas do Java
▪ Para desenhar em Java, você deve primeiro entender o sistema
de coordenadas do Java (Figura 7), um esquema para identificar
pontos na tela;
eixo x
eixo y
(0, 0)
+x
+y (x, y)
Considerações:
♦ Por padrão, o canto superior esquerdo de um
componente GUI tem as coordenadas (0, 0);
♦ Um par de coordenadas é composto de uma
coordenada x (a coordenada horizontal) e uma
coordenada y (a coordenada vertical);
♦ As coordenadas indicam onde elementos gráficos
devem ser exibidos em uma tela;
♦ Unidades coordenadas são medidas em pixels. (O
termo pixel significa “picture element” [elemento de
imagem]
© Prof. Cícero Quarto – cicero.uema@gmail.com
37
Primeiro aplicativo de desenho
▪ Nosso primeiro aplicativo de desenho simplesmente desenha
duas linhas;
▪ A classe DrawPanel (Figura 4.18) realiza o desenho real,
enquanto a classe DrawPanelTest (Figura 4.19) cria uma janela
para exibir o desenho;
▪ Na classe DrawPanel, as instruções import nas linhas 12-13
permitem utilizar a classe Graphics (do pacote java.awt), que
fornece vários métodos para desenhar texto e formas na tela, e a
classe JPanel (do pacote javax.swing), que fornece uma área em
que podemos desenhar.
© Prof. Cícero Quarto – cicero.uema@gmail.com
38
Figura 4.18: DrawPanel
Comentando a classe DrawPanel
♦ A linha 15 utiliza a palavra-chave extends para
indicar que a classe DrawPanel é um tipo aprimorado de
JPanel;
♦ A palavra-chave extends representa o relacionamento
conhecido como herança, no qual nossa nova classe
DrawPanel inicia com os membros existentes (dados e
métodos) a partir da classe JPanel;
♦ A classe a partir da qual DrawPanel herda, JPanel,
aparece à direita da palavra-chave extends;
♦ Nessa relação de herança, JPanel é chamado de
superclasse e DrawPanel é chamado de subclasse;
♦ Isso resulta em uma classe DrawPanel com os
atributos (dados) e comportamentos (métodos) da classe
JPanel, bem como os novos recursos que estamos
adicionando à nossa declaração da classe DrawPanel –
especificamente, a capacidade de desenhar duas linhas
ao longo das diagonais do painel;
♦ A herança é explicada detalhadamente no Capítulo 9.
Por enquanto, você deve simular nossa classe
DrawPanel criando os seus próprios programas gráficos.
Figura 4.18 | Utilizando drawLine
para conectar os cantos de um
painel
© Prof. Cícero Quarto – cicero.uema@gmail.com
39
Método paintComponent
▪ Todo JPanel, incluindo nosso DrawPanel, contém um método
paintComponent (linhas 18-30), que o sistema chama
automaticamente sempre que precisa exibir o JPanel;
▪ O método paintComponent deve ser declarado conforme
mostrado na linha 17 – caso contrário, o sistema não o chamará;
▪ Esse método é chamado quando um JPanel é exibido na tela pela
primeira vez, quando é ocultado e então exibido por uma janela na
tela e quando a janela em que aparece é redimensionada;
▪ O método paintComponent requer um argumento, um objeto de
Graphics, que é oferecido pelo sistema quando ele chama
paintComponent.
A primeira instrução em cada método paintComponent que
você cria sempre deve ser:
© Prof. Cícero Quarto – cicero.uema@gmail.com
40
Método paintComponent – cont...
A primeira instrução em cada método paintComponent que você
cria sempre deve ser;
super.paintComponent( g );
▪ que assegura que o painel seja exibido
corretamente antes de começarmos a desenhá-lo;
▪ em seguida, as linhas 21-22 chamam os métodos
que a classe DrawPanel herda de JPanel. Como DrawPanel estende
JPanel, DrawPanel pode utilizar alguns métodos public de JPanel;
▪ os métodos getWidth e getHeight retornam a
largura e a altura de JPanel, respectivamente;
▪ as linhas 21-22 armazenam esses valores nas
variáveis locais width e height;
▪ por fim, as linhas 25-28 utilizam a variável g de
Graphics para chamar o método drawLine a fim de desenhar as
duas linhas.
© Prof. Cícero Quarto – cicero.uema@gmail.com
41
Método paintComponent – cont...Método paintComponent – cont...
▪ o método drawLine desenha uma linha entre dois pontos
representados pelos seus quatro argumentos. Os dois primeiros
argumentos são as coordenadas x e y para uma extremidade, e os
dois últimos argumentos são as coordenadas para a outra
extremidade;
▪ se você redimensionar a janela, as linhas serão dimensionadas de
maneira correspondente, uma vez que os argumentos estão baseados
na largura e altura do painel;
▪ Redimensionar a janela nesse aplicativo resulta em uma chamada
de sistema a paintComponent para redesenhar o conteúdo de
DrawPanel.
© Prof. Cícero Quarto – cicero.uema@gmail.com
42
Classe DrawPanelTest
▪ Para exibir a DrawPanel na tela, você deve colocá-la em uma
janela. Você cria uma janela com um objeto da classe Jframe;
▪ Em DrawPanelTest.java (Figura 4.19), a linha 12 importa a classe
JFrame a partir do pacote javax.swing;
♦ Α linha 17 em main cria um objeto
DrawPanel, que contém nosso desenho,
e a linha 20 cria um novo JFrame que
pode armazenar e exibir o nosso painel;
♦ A linha 23 chama o método JFrame
setDefaultCloseOperation com o
argumento
Jframe.EXIT_ON_CLOSE para
indicar que o aplicativo deve terminar
quando o usuário fecha a janela;
♦ A linha 25 usa o método add da
classe JFrame para anexar o DrawPanel
a JFrame;
© Prof. Cícero Quarto – cicero.uema@gmail.com
43
Classe DrawPanelTest
♦ A linha 26 configura o tamanho da
Jframe. O método setSize recebe dois
parâmetros que representam a largura e a
altura do Jframe, respectivamente;
♦ Por fim, a linha 27 exibe Jframe
chamando seu método setVisible com o
argumento true. Quando a Jframe é
exibida, o método paintComponent de
DrawPanel (linhas 7-30 da Figura 4.18) é
implicitamente chamado e as duas linhas
são desenhadas (veja as saídas de
exemplo na Figura 4.19). Tente
redimensionar a janela para ver que as
linhas sempre são desenhadas com base
na largura e na altura atual da janela.
© Prof. Cícero Quarto – cicero.uema@gmail.com
44
Saída do aplicativo DrawPanelTest
Figura 4.19': Saída do aplicativo DrawPanelTest
© Prof. Cícero Quarto – cicero.uema@gmail.com
45
Exercícios do Estudo de caso de GUI e imagens
gráficas
Resolver os exercícios 4.1 (a e b) e 4.2 (a e b), página 107
do livro Java – como programar, 8o edição. Autor: Deitel

Weitere ähnliche Inhalte

Was ist angesagt?

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Java: Estruturas de Repetição
Java: Estruturas de RepetiçãoJava: Estruturas de Repetição
Java: Estruturas de RepetiçãoArthur Emanuel
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...André Constantino da Silva
 
Guia prático para criar algoritmos
Guia prático para criar algoritmosGuia prático para criar algoritmos
Guia prático para criar algoritmosMauro Pereira
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimosCleide Soares
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: ExceçõesEduardo Mendes
 
UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28Hélio Medeiros
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Algoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmosAlgoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmosMauro Pereira
 

Was ist angesagt? (19)

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Java: Estruturas de Repetição
Java: Estruturas de RepetiçãoJava: Estruturas de Repetição
Java: Estruturas de Repetição
 
If
IfIf
If
 
Java14
Java14Java14
Java14
 
Aula02
Aula02Aula02
Aula02
 
Introd aplicjava
Introd aplicjavaIntrod aplicjava
Introd aplicjava
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Guia prático para criar algoritmos
Guia prático para criar algoritmosGuia prático para criar algoritmos
Guia prático para criar algoritmos
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Lista exercícios
Lista exercíciosLista exercícios
Lista exercícios
 
Visualg
VisualgVisualg
Visualg
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimos
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: Exceções
 
UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28UnP Eng. Software - Aula 28
UnP Eng. Software - Aula 28
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Algoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmosAlgoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmos
 

Andere mochten auch

Pradipkumar singh, MBA with 3 yrs of work exp.
Pradipkumar singh, MBA with 3 yrs of work exp. Pradipkumar singh, MBA with 3 yrs of work exp.
Pradipkumar singh, MBA with 3 yrs of work exp. iilm
 
The Earth Wide Open 2009
The Earth Wide Open 2009The Earth Wide Open 2009
The Earth Wide Open 2009AlanParks
 
Serigrafia Domus Veritas
Serigrafia Domus VeritasSerigrafia Domus Veritas
Serigrafia Domus VeritasGrupo Duarte
 
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02Silmar Pereira
 
Maccssii 7.2 representacion funciones racionales
Maccssii 7.2 representacion funciones racionalesMaccssii 7.2 representacion funciones racionales
Maccssii 7.2 representacion funciones racionalesTarpafar
 
Traspaso Prezzi a Powerpoint
Traspaso Prezzi a PowerpointTraspaso Prezzi a Powerpoint
Traspaso Prezzi a Powerpointgemaarmes
 
Trabajo practico nº1
Trabajo practico nº1Trabajo practico nº1
Trabajo practico nº1Leonel Paz
 
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...Biblioteca Virtual
 
Animals
AnimalsAnimals
Animalsnmbsc
 

Andere mochten auch (20)

Numerais
NumeraisNumerais
Numerais
 
Pradipkumar singh, MBA with 3 yrs of work exp.
Pradipkumar singh, MBA with 3 yrs of work exp. Pradipkumar singh, MBA with 3 yrs of work exp.
Pradipkumar singh, MBA with 3 yrs of work exp.
 
RelaxART Waterproof
RelaxART WaterproofRelaxART Waterproof
RelaxART Waterproof
 
Road to Chicago 2013
Road to Chicago 2013Road to Chicago 2013
Road to Chicago 2013
 
The Earth Wide Open 2009
The Earth Wide Open 2009The Earth Wide Open 2009
The Earth Wide Open 2009
 
Serigrafia Domus Veritas
Serigrafia Domus VeritasSerigrafia Domus Veritas
Serigrafia Domus Veritas
 
CIÊNCIAS
CIÊNCIASCIÊNCIAS
CIÊNCIAS
 
Leite de Soja
Leite de SojaLeite de Soja
Leite de Soja
 
Fotosdiferentes
FotosdiferentesFotosdiferentes
Fotosdiferentes
 
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02
Ntics usodenovastecnologiasnoensinoadistancia-110717082518-phpapp02
 
Grupo 5
Grupo 5Grupo 5
Grupo 5
 
Maccssii 7.2 representacion funciones racionales
Maccssii 7.2 representacion funciones racionalesMaccssii 7.2 representacion funciones racionales
Maccssii 7.2 representacion funciones racionales
 
Estrategias
EstrategiasEstrategias
Estrategias
 
Traspaso Prezzi a Powerpoint
Traspaso Prezzi a PowerpointTraspaso Prezzi a Powerpoint
Traspaso Prezzi a Powerpoint
 
Mariádne
MariádneMariádne
Mariádne
 
INVENTANDO EL FUTURO
INVENTANDO EL FUTUROINVENTANDO EL FUTURO
INVENTANDO EL FUTURO
 
Trabajo practico nº1
Trabajo practico nº1Trabajo practico nº1
Trabajo practico nº1
 
PNE 2011-2020 - MESA REDONDA
PNE 2011-2020 - MESA REDONDAPNE 2011-2020 - MESA REDONDA
PNE 2011-2020 - MESA REDONDA
 
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...
IdentificaçãO De Dificuldades No IníCio Do Aleitamento Materno Mediante Aplic...
 
Animals
AnimalsAnimals
Animals
 

Ähnlich wie Controle de fluxo em Java: instruções de seleção e repetição

6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxoEugenio Caetano
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismosdiogoa21
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de RepetiçãoProfessor Samuel Ribeiro
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockitoRenan Uchôa
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova Rogério Cardoso
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Introducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoIntroducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoMarcelo Rodrigues
 
Aula 12 -Seleção Múltipla.pdf
Aula 12 -Seleção Múltipla.pdfAula 12 -Seleção Múltipla.pdf
Aula 12 -Seleção Múltipla.pdfViniciusBortolini1
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Apostila de Cálculo (UFRPE) - Volume 2
Apostila de Cálculo (UFRPE) - Volume 2Apostila de Cálculo (UFRPE) - Volume 2
Apostila de Cálculo (UFRPE) - Volume 2Matheus Alves
 

Ähnlich wie Controle de fluxo em Java: instruções de seleção e repetição (20)

Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Aula5
Aula5Aula5
Aula5
 
Cap08
Cap08Cap08
Cap08
 
6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
modulo1.pdf
modulo1.pdfmodulo1.pdf
modulo1.pdf
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismos
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
02 controle de fluxo
02   controle de fluxo02   controle de fluxo
02 controle de fluxo
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Introducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoIntroducao a Lógica de Programação
Introducao a Lógica de Programação
 
Repetições e vetores
Repetições e vetoresRepetições e vetores
Repetições e vetores
 
Aula 12 -Seleção Múltipla.pdf
Aula 12 -Seleção Múltipla.pdfAula 12 -Seleção Múltipla.pdf
Aula 12 -Seleção Múltipla.pdf
 
Aula3
Aula3Aula3
Aula3
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Apostila de Cálculo (UFRPE) - Volume 2
Apostila de Cálculo (UFRPE) - Volume 2Apostila de Cálculo (UFRPE) - Volume 2
Apostila de Cálculo (UFRPE) - Volume 2
 

Mehr von Cícero Quarto

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Cícero Quarto
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabciceroCícero Quarto
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalCícero Quarto
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1Cícero Quarto
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetosCícero Quarto
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 

Mehr von Cícero Quarto (8)

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015
 
Análise Estatística
Análise EstatísticaAnálise Estatística
Análise Estatística
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabcicero
 
Arquitetura SMA
Arquitetura SMAArquitetura SMA
Arquitetura SMA
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetos
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 

Kürzlich hochgeladen

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdfBlendaLima1
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholacleanelima11
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 

Kürzlich hochgeladen (20)

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 

Controle de fluxo em Java: instruções de seleção e repetição

  • 1. © Prof. Cícero Quarto – cicero.uema@gmail.com Capítulo 4 Instruções de Controle: Parte I PROGRAMAÇÃO ORIENTADA A OBJETOS
  • 2. © Prof. Cícero Quarto – cicero.uema@gmail.com 2 2 Objetivos • Utilizar técnicas básicas de solução de problemas; • Desenvolver algoritmos por meio do processo de refinamento; • Utilizar instruções de seleção if e if ... else; • Utilizar a instrução while; • Utilizar repetição controlada por contador e por sentinela; • Utilizar operadores compostos de atribuição, incremento e decremento; • A portabilidade dos tipos de dados primitivos
  • 3. © Prof. Cícero Quarto – cicero.uema@gmail.com 3 Introdução Antes de escrever um programa (algoritmo) para resolver um problema: Devemos ter um entendimento completo do problema; Devemos ter uma abordagem cuidadosamente planejada para resolvê-lo; Entender os tipos de blocos de construção e Deve-se empregar técnicas de construção do programa comprovadas. Os conceitos apresentados neste capítulo são cruciais na construção de classes e manipulação de objetos. Neste capítulo, são introduzidas as instruções if, if ... else e while do Java, três dos blocos de construção que permitem especificar a lógica requerida para que os métodos realizem suas tarefas; Serão descritos os operadores de incremento e decremento do Java.
  • 4. © Prof. Cícero Quarto – cicero.uema@gmail.com 4 4 Algoritmos - Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem específica. Um procedimento para resolver um problema em termos de: das ações (instruções) a executar e da ordem em que essas ações executam chama-se algoritmo. Especificar a ordem das ações a serem executadas Instruções de controle
  • 5. © Prof. Cícero Quarto – cicero.uema@gmail.com 5 Pseudocódigo Pseudocódigo é uma linguagem informal que ajuda a desenvolver algoritmos sem a preocupação com os estritos detalhes da sintaxe da linguagem Java. Pseudocódigo CONVERTIDO (escrito, desenvolvido) Partes estruturadas de programas Java Não leva em consideração detalhes da sintaxe da linguagem. É entendido e amigável ao usuário. Estritamente um algoritmo na linguagem padrão a ser executado em um computador. Compilado em linguagem de máquina.
  • 6. © Prof. Cícero Quarto – cicero.uema@gmail.com 6 Estruturas de controle Normalmente, instruções em um programa são executadas uma após a outra na ordem em que são escritas; Esse processo é chamado execução sequencial; Várias instruções Java permitem que você especifique que a próxima instrução a executar não é necessariamente a próxima na sequência. Isso é chamado de transferência de controle; O trabalho de Bohm e Jacopini demonstrou que todos os programas poderiam ser escritos em termos de somente três estruturas de controle – a estrutura de sequência, a estrutura de seleção e a estrutura de repetição
  • 7. © Prof. Cícero Quarto – cicero.uema@gmail.com 7 Estrutura de sequência em Java A estrutura de sequência está incorporada ao Java. A não ser que seja instruído de outra forma, o computador executa as instruções Java uma depois da outra na ordem em que elas são escritas; O diagrama de atividades na Figura 1 ilustra uma estrutura de sequência típica em que dois cálculos são realizados na ordem; adiciona grade a total adiciona 1 a counter Instrução Java correspondente: total = total + grade; Instrução Java correspondente: counter = counter + 1; Figura 1: Diagrama de atividades da estrutura de sequência.
  • 8. © Prof. Cícero Quarto – cicero.uema@gmail.com 8 Diagrama de atividades UML adiciona grade a total adiciona 1 a counter Instrução Java correspondente: total = total + grade; Instrução Java correspondente: counter = counter + 1; Um diagrama de atividades UML modela o fluxo de trabalho (também chamado atividade) de uma parte de um sistema de software; Esses fluxos de trabalho podem incluir uma parte de um algoritmo, como a estrutura de sequência na Figura 1; Os diagramas de atividade são compostos de símbolos, como símbolos de estado de ação (retângulos com os lados esquerdo e direito substituídos por arcos curvados para fora), losangos e pequenos círculos. Esses símbolos são conectados por setas de transição, que representam o fluxo da atividade – isto é, a ordem em que as ações devem ocorrer. Figura 1: Diagrama de atividades da estrutura de sequência.
  • 9. © Prof. Cícero Quarto – cicero.uema@gmail.com 9 Instrução de seleção em Java O Java contém três tipos de instruções de seleção: Instruções de seleção em Java if if ... else switch INSTRUÇÃO DE SELEÇÃO ÚNICA (porque seleciona ou ignora uma única ação (ou um único grupo de ações) INSTRUÇÃO DE SELEÇÃO DUPLA ( porque seleciona entre duas ações diferentes (ou grupo de ações) INSTRUÇÃO DE SELEÇÃO MÚLTIPLA (porque seleciona entre muitas ações (ou grupo de ações)
  • 10. © Prof. Cícero Quarto – cicero.uema@gmail.com 10 10 Instrução de repetição em Java O Java fornece três instruções de repetição (também chamadas instruções de loop); Permitem que programas executem instruções repetidamente contanto que uma condição (chamada condição de continuação do loop) permaneça verdadeira. A Tabela 1 resume as três instruções de repetição do Java. INSTRUÇÃO DESCRIÇÃO while Realizam a ação (ou grupo de ações) no seu corpo zero ou mais vezes – se a condição de continuação do loop for inicialmente for falsa, a ação (ou grupo de ações) não será executada. for do ... while Realiza a ação (ou grupo de ações) no seu corpo uma ou mais vezes Tabela 1: Instruções de repetição em Java
  • 11. © Prof. Cícero Quarto – cicero.uema@gmail.com 1 11 A instrução de seleção única if Os programas utilizam instruções de seleção para escolher cursos alternativos de ações; Por exemplo, suponha que a nota de aprovação de um exame seja 60. A instrução em pseudocódigo (ver Figura 2): Determina se a condição “nota do aluno é maior que ou igual a 60” é verdadeira. Nesse caso “Aprovado” é impresso, e a próxima instrução de pseudocódigo é “realizada”; Se a condição for falsa, a instrução imprima é ignorada e a próxima instrução de pseudocódigo na sequência é realizada. Figura 2: Instrução em pseudocódigo (arquivo do autor).
  • 12. © Prof. Cícero Quarto – cicero.uema@gmail.com 12 A instrução de seleção única if ... A instrução de pseudocódigo if precedente pode ser escrita em Java, conforme ilustra a Figura 3: Figura 3: Instrução em Java (arquivo do autor). A Figura 4 ilustra a instrução de seleção única if. Essa figura contém o símbolo mais importante em um diagrama de atividade – o losango, ou símbolo de decisão, que indica que uma decisão deve ser tomada; imprime “Aprovado” [grade >= 60] [grade < 60] Figura 4: Diagrama de atividades UML de uma Instrução de seleção única if em Java.
  • 13. © Prof. Cícero Quarto – cicero.uema@gmail.com 3 13 A instrução de seleção única if ... A instrução de pseudocódigo if precedente pode ser escrita em Java, conforme ilustra a Figura 3: Figura 3: Instrução em Java (arquivo do autor). A Figura 4 ilustra a instrução de seleção única if. Essa figura contém o símbolo mais importante em um diagrama de atividade – o losango, ou símbolo de decisão, que indica que uma decisão deve ser tomada; imprime “Aprovado” [grade >= 60] [grade < 60] Figura 4: Diagrama de atividades UML de uma Instrução de seleção única if em Java.
  • 14. © Prof. Cícero Quarto – cicero.uema@gmail.com 4 14 A instrução de seleção dupla if ... else A instrução if de seleção única realiza uma ação indicada somente quando a condição é true; caso contrário, a ação é pulada; A instrução de seleção dupla if ... else permite especificar uma ação a realizar quando a condição é verdadeira e uma ação diferente quando a ação é falsa. Por exemplo, este pseudocódigo: Se a nota do aluno for maior que ou igual a 60 Imprima “Aprovado” Caso contrário (Else) Imprima “Reprovado” Veja no slide a seguir a instrução if … else equivalente em Java é:
  • 15. © Prof. Cícero Quarto – cicero.uema@gmail.com 15 5 A instrução de seleção dupla if ... else em Java If ( studentGrade >= 60 ) System.out.println( “Passed”); else System.out.println( “Failed” ); Boa prática de programação! Recue as duas instruções do corpo de uma instrução if … else
  • 16. © Prof. Cícero Quarto – cicero.uema@gmail.com 16 Diagrama de atividades UML da instrução de seleção dupla if … else A Figura 5 ilustra o fluxo de controle na instrução if … else. Mais uma vez, os símbolos no diagrama de atividades UML (além do estado inicial, setas de transição e estado final) representam os estados e decisões da ação. imprime “Reprovado” imprime “Aprovado” [grade < 60] [grade >= 60] Figura 5: Diagrama de atividades da UML de instrução de seleção dupla if … else (Deitel,
  • 17. © Prof. Cícero Quarto – cicero.uema@gmail.com 17 Operador condicional (?:) • O Java fornece o operador condicional (?:) que pode ser utilizado no lugar de uma instrução if … else. É o único operador ternário do Java (operador que recebe três operandos); Juntos, os operandos e o símbolo ?: formam uma expressão condicional; - o primeiro operando (à esquerda do ?) é uma expressão boolean (isto é, uma condição que é avaliada como um valor boolean – true ou false); - o segundo operando (entre o ? e :) é o valor da expressão condicional se a expressão boolean for true e o terceiro operando (à direita do :) é o valor da expressão condicional se a expressão boolean for avaliada como false. Veja um exemplo no slide seguinte:
  • 18. © Prof. Cícero Quarto – cicero.uema@gmail.com 18 Operador condicional (?:) System.out.println( studentGrade >= 60 ? “Passed” : “Failed”); Considerações: (i) Imprime o valor do argumento da expressão condicional de println; (ii) A expressão condicional nessa instrução é avaliada para a string “Passed” se a expressão boolean studentGrade >= 60 for verdadeira e para a string “Failed” se a expressão boolean for falsa; (iii) Essa instrução realiza essencialmente a mesma função da instrução if … eles; (iv) A precedência do operador condicional é baixa, então a expressão condicional inteira normalmente é colocada entre parênteses.
  • 19. © Prof. Cícero Quarto – cicero.uema@gmail.com 19 Instruções if … else aninhadas • Um programa pode testar múltiplos casos colocando instruções if … else dentro de outras instruções if … else para criar instruções if … else aninhadas; • Por exemplo, o pseudocódigo a seguir representa uma if … else aninhada que imprime A para notas de exame maiores que ou igual a 90, B para notas de 80 a 89, C para notas de 70 a 79, D para notas de 60 a 69 e F para todas as outras notas: Se a nota do aluno for maior que ou igual a 90 Imprima “A” Caso contrário Se a nota do aluno for maior que ou igual a 80 Imprima “B” Caso contrário Se a nota do aluno for maior que ou igual a 70 Imprima “C” Caso contrário Se a nota do aluno for maior que ou igual a 60 Imprima “D” Caso contrário Imprima “F”
  • 20. © Prof. Cícero Quarto – cicero.uema@gmail.com 20 Instruções if … else aninhadas • O mesmo pseudocódigo, mostrado no slide anterior, pode ser reescrito é mostrado abaixo: if( studentGrade >= 90 ) System.out.println( “A”); else if( studentGrade >= 80 ) System.out.println( “B”); else if( studentGrade >= 70 ) System.out.println( “C”); else if( studentGrade >= 80 ) System.out.println( “D”); else System.out.println( “F”); if( studentGrade >= 90 ) System.out.println( “A”); else if( studentGrade >= 80 ) System.out.println( “B”); else if( studentGrade >= 70 ) System.out.println( “C”); else if( studentGrade >= 60 ) System.out.println( “D”); else System.out.println( “F”); Observação: Ambas as formas A e B são idên estão corretas. A B
  • 21. © Prof. Cícero Quarto – cicero.uema@gmail.com 21 O problema do else oscilante • O compilador Java sempre associa um else à instrução if imediatamente anterior, a menos que instruído de outro modo pela colocação de chaves ({e}); • Esse comportamento pode levar àquilo que é chamado do problema do else oscilante. Por exemplo: if( x > 5 ) if( y > 5 ) System.out.println( “x and y are > 5” ); else System.out.println( “x is <= 5” ); Obs.: Se a condição da instrução if externa for falsa, o if … else interno é pulado e nada é exibido. Para forçar a instrução if … else aninhada para executar como foi originalmente concebida, devemos escrevê-la como no slide a seguir:
  • 22. © Prof. Cícero Quarto – cicero.uema@gmail.com 22 O problema do else oscilante if( x > 5 ) { if( y > 5) System.out.println( “x and y are > 5” ); } else System.out.println( “x is <= 5” ); Consideração: As chaves indicam que a segunda instrução if está no corpo da primeira e que a instrução else está associada com a primeira instrução if.
  • 23. © Prof. Cícero Quarto – cicero.uema@gmail.com 23 Blocos ◈ A instrução if normalmente espera somente uma instrução no seu corpo; ◈Para incluir várias instruções no corpo de uma if (ou no corpo de um else de uma instrução if … eles), inclua as instruções dentro de chaves ({ e }); ◈As instruções contidas em um par de chaves formam um bloco; ◈Um bloco pode ser colocado em qualquer lugar em um programa em que uma única instrução pode ser colocada; ◈O exemplo a seguir inclui um bloco na parte else de uma instrução if … else:
  • 24. © Prof. Cícero Quarto – cicero.uema@gmail.com 24 Blocos – exemplo if( grade >= 60 ) System.out.println( “Passed” ); else { System.out.println( “Failed” ); System.out.println( “You must take this course again.” ); }
  • 25. © Prof. Cícero Quarto – cicero.uema@gmail.com 25 A instrução de repetição while ♦ Uma instrução de repetição (ou um loop) permite especificar que um programa deve repetir uma ação enquanto alguma condição permanece verdadeira; ♦ Como exemplo da instrução de repetição while do Java, considere um segmento de programa projetado para encontrar a primeira potência de 3 maior que 100; ♦ Suponha que a int product tenha sido inicializada como 3; ♦ Quando a instrução while seguinte terminar a execução, product conterá o resultado: while( product <= 100 ) product = 3 * product; ♦ Quando a instrução while for falsa, a execução de programa continua com a próxima instrução depois da instrução while.
  • 26. © Prof. Cícero Quarto – cicero.uema@gmail.com 26 Diagrama de atividades UML da instrução de repetição while • O diagrama de atividades UML na Figura 6 ilustra o fluxo de controle na instrução while; • Esse diagrama também introduz o símbolo de agregação (representado por um losango); Figura 6: Diagrama de atividades da UML da instrução de repetição while (Deitel, p. 89, 8a. Edição) - Java triplica o valor de product Instrução Java correspondente product = 3 * product; merge decision [product <= 100] [product > 100]
  • 27. © Prof. Cícero Quarto – cicero.uema@gmail.com 27 Implementando a repetição controlada por contador na classe GradeBook ♦ A classe GradeBook (Figura 4.6) contém um construtor (linhas 19-21) que atribui um valor à variável de instância courseName da classe (declarada na linha 16); ♦ As linhas 24-26, 29-31 e 34-38 declaram métodos setCourseName, getCourseName e displayMessage, respectivamente; ♦ As linhas 41-69 declaram o método determineClassAverage, que implementa o algoritmo de média da classe.
  • 28. © Prof. Cícero Quarto – cicero.uema@gmail.com 28 Operadores de atribuição composta ♦ Os operadores de atribuição composta abreviam expressões de atribuição. Instruções como: variável = variável operador expressão; onde operador é um dos operadores binários +, -, *, / ou % (ou outros que discutiremos mais adiante), pode ser escrita na forma: variável operador= expressão; Por exemplo, você pode abreviar a instrução: c = c + 3; com o operador de atribuição composta de adição, +=, como: c += 3; ♦ A Tabela no slide a seguir mostra os operadores aritméticos de atribuição composta, expressões de exemplo que utilizam os operadores e explicações do que os operadores fazem.
  • 29. © Prof. Cícero Quarto – cicero.uema@gmail.com 29 Operadores aritméticos de atribuição composta Operador de atribuição Expressão de atribuição Explicação Atribuições Suponha: int c = 3, d = 5, e = 4, f = 6, g = 12 += c += 7 c = c + 7 10 a c -= d -= 4 d = d - 4 1 a d *= e *= 5 e = e * 5 20 a e /= f /= 3 f = f / 3 2 a f %= g %= 9 g = g % 9 3 a g Tabela 2 | Operadores aritméticos de atribuição composta (Java - Como Programar, Deitel, 8o ed., p. 102, 2010).
  • 30. © Prof. Cícero Quarto – cicero.uema@gmail.com 30 Operadores de incremento e decremento ▪ O Java fornece dois operadores unários para adicionar 1 a ou para subtrair 1 do valor de uma variável numérica. Esses são o operador de incremento unário, ++, e o operador de decremento unário, --, que são resumidos na Tabela abaixo. Operador Nome do operador Expressão de exemplo Explicação ++ pré-incremento ++a Incrementa a por 1, então utiliza o novo valor de a na expressão em que a reside. ++ pós-incremento a++ Utiliza o valor atual de a na expressão em que a reside, então incrementa a por 1. -- pré-decremento --b Decrementa b por 1, então utiliza o novo valor de b na expressão em que b reside. -- pós-decremento b-- Utiliza o valor atual de b na expressão em que b reside, então decrementa b por 1.
  • 31. © Prof. Cícero Quarto – cicero.uema@gmail.com 31 Classe Increment que demonstra as funcionabilidades dos operadores de pré- incremento e pós-incremento 1 // Figura 4.15: Increment.java 2 // operadores de pré-incremento e pós-incremento 3 4 public class Increment { 5 public static void main( String[] args ) { 6 int c; 7 // demonstra o operador de pós-incremento 8 c = 5; // atribui 5 à variável c 9 System.out.println( c ); // imprime 5 10 System.out.println( c++ ); // imprime 5 e pós-incrementa 11 System.out.println( c ); // imprime 6 12 13 System.out.println(); // pula uma linha 14 15 // demonstra o operador de pré-incremento 16 c = 5; // atribui 5 à variável c 17 System.out.println( c ); // imprime 5 18 System.out.println( ++c ); // pré-incrementa e imprime 6 19 System.out.println( c ); // imprime 6 20 21 } // fim de main 22 } // fim da classe Increment Saída do aplicativo
  • 32. © Prof. Cícero Quarto – cicero.uema@gmail.com 32 Tipos primitivos ▪ A tabela no Apêndice D (Java como programar, ed. 8. p. 1070) lista os oito tipos primitivos em Java. ▪ Como ocorre com suas linguagens predecessoras, C e C++, o Java requer que todas as variáveis tenham um tipo. Por essa razão, o Java é referido como uma linguagem fortemente tipada. • Cada tipo do Apêndice D é listado com seu tamanho em bits (há oito bits em um byte) e seu intervalo de valores; • As variáveis de instância dos char, byte, short, int, long, float e double recebem o valor 0 por padrão; • Atribui-se às variáveis de instância do tipo boolean o valor false por padrão; • As variáveis de instância de tipo por referência são inicializadas por padrão para o valor null.
  • 33. © Prof. Cícero Quarto – cicero.uema@gmail.com 33 APÊNDICE D – Tipos primitivos Tipo Tamanho em bits Valores boolean true ou false char 16 'u0000' a 'uFFFF' (0 a 65535) byte 8 -128 a +127 (-27 a 27 -1) short 16 -32.768 a +32.767 (-215 a 215 -1) int 32 -2.147.483.648 a +2.147.483.647 (-231 a 231 -1) long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 (-263 a 263 - 1) float 32 Intervalo negativo: -3,4028234663852886E+38 a -1,40129846432481707e-45 Intervalo positivo: 1,40129846432481707e-45 a 3,4028234663852886E+38 double 64 Intervalo negativo: -1,7976931348623157E+308 a -4,94065645841246544e-324 Intervalo positivo: 4,94065645841246544e-324 a 1,7976931348623157E+308 Figura D.1 | Tipos primitivos do Java (Adaptação do Deitel, p. 1070)
  • 34. © Prof. Cícero Quarto – cicero.uema@gmail.com 34 (Opcional) Estudo de caso de GUI e imagens gráficas: criando desenhos simples ▪ Um recurso atraente do Java é o suporte a gráficos, que permite a programadores aprimorar aplicativos visualmente; ▪ Esta seção introduz uma das capacidades gráficas do Java – desenhar linhas; ▪ Esta seção também aborda os princípios básicos da criação de uma janela para exibir um desenho na tela do computador.
  • 35. © Prof. Cícero Quarto – cicero.uema@gmail.com 35 Sistema de coordenadas do Java ▪ Para desenhar em Java, você deve primeiro entender o sistema de coordenadas do Java (Figura 7), um esquema para identificar pontos na tela; eixo x eixo y (0, 0) +x +y (x, y) Considerações: ♦ Por padrão, o canto superior esquerdo de um componente GUI tem as coordenadas (0, 0); ♦ Um par de coordenadas é composto de uma coordenada x (a coordenada horizontal) e uma coordenada y (a coordenada vertical); ♦ As coordenadas indicam onde elementos gráficos devem ser exibidos em uma tela; ♦ Unidades coordenadas são medidas em pixels. (O termo pixel significa “picture element” [elemento de imagem]
  • 36. © Prof. Cícero Quarto – cicero.uema@gmail.com 36 Sistema de coordenadas do Java ▪ Para desenhar em Java, você deve primeiro entender o sistema de coordenadas do Java (Figura 7), um esquema para identificar pontos na tela; eixo x eixo y (0, 0) +x +y (x, y) Considerações: ♦ Por padrão, o canto superior esquerdo de um componente GUI tem as coordenadas (0, 0); ♦ Um par de coordenadas é composto de uma coordenada x (a coordenada horizontal) e uma coordenada y (a coordenada vertical); ♦ As coordenadas indicam onde elementos gráficos devem ser exibidos em uma tela; ♦ Unidades coordenadas são medidas em pixels. (O termo pixel significa “picture element” [elemento de imagem]
  • 37. © Prof. Cícero Quarto – cicero.uema@gmail.com 37 Primeiro aplicativo de desenho ▪ Nosso primeiro aplicativo de desenho simplesmente desenha duas linhas; ▪ A classe DrawPanel (Figura 4.18) realiza o desenho real, enquanto a classe DrawPanelTest (Figura 4.19) cria uma janela para exibir o desenho; ▪ Na classe DrawPanel, as instruções import nas linhas 12-13 permitem utilizar a classe Graphics (do pacote java.awt), que fornece vários métodos para desenhar texto e formas na tela, e a classe JPanel (do pacote javax.swing), que fornece uma área em que podemos desenhar.
  • 38. © Prof. Cícero Quarto – cicero.uema@gmail.com 38 Figura 4.18: DrawPanel Comentando a classe DrawPanel ♦ A linha 15 utiliza a palavra-chave extends para indicar que a classe DrawPanel é um tipo aprimorado de JPanel; ♦ A palavra-chave extends representa o relacionamento conhecido como herança, no qual nossa nova classe DrawPanel inicia com os membros existentes (dados e métodos) a partir da classe JPanel; ♦ A classe a partir da qual DrawPanel herda, JPanel, aparece à direita da palavra-chave extends; ♦ Nessa relação de herança, JPanel é chamado de superclasse e DrawPanel é chamado de subclasse; ♦ Isso resulta em uma classe DrawPanel com os atributos (dados) e comportamentos (métodos) da classe JPanel, bem como os novos recursos que estamos adicionando à nossa declaração da classe DrawPanel – especificamente, a capacidade de desenhar duas linhas ao longo das diagonais do painel; ♦ A herança é explicada detalhadamente no Capítulo 9. Por enquanto, você deve simular nossa classe DrawPanel criando os seus próprios programas gráficos. Figura 4.18 | Utilizando drawLine para conectar os cantos de um painel
  • 39. © Prof. Cícero Quarto – cicero.uema@gmail.com 39 Método paintComponent ▪ Todo JPanel, incluindo nosso DrawPanel, contém um método paintComponent (linhas 18-30), que o sistema chama automaticamente sempre que precisa exibir o JPanel; ▪ O método paintComponent deve ser declarado conforme mostrado na linha 17 – caso contrário, o sistema não o chamará; ▪ Esse método é chamado quando um JPanel é exibido na tela pela primeira vez, quando é ocultado e então exibido por uma janela na tela e quando a janela em que aparece é redimensionada; ▪ O método paintComponent requer um argumento, um objeto de Graphics, que é oferecido pelo sistema quando ele chama paintComponent. A primeira instrução em cada método paintComponent que você cria sempre deve ser:
  • 40. © Prof. Cícero Quarto – cicero.uema@gmail.com 40 Método paintComponent – cont... A primeira instrução em cada método paintComponent que você cria sempre deve ser; super.paintComponent( g ); ▪ que assegura que o painel seja exibido corretamente antes de começarmos a desenhá-lo; ▪ em seguida, as linhas 21-22 chamam os métodos que a classe DrawPanel herda de JPanel. Como DrawPanel estende JPanel, DrawPanel pode utilizar alguns métodos public de JPanel; ▪ os métodos getWidth e getHeight retornam a largura e a altura de JPanel, respectivamente; ▪ as linhas 21-22 armazenam esses valores nas variáveis locais width e height; ▪ por fim, as linhas 25-28 utilizam a variável g de Graphics para chamar o método drawLine a fim de desenhar as duas linhas.
  • 41. © Prof. Cícero Quarto – cicero.uema@gmail.com 41 Método paintComponent – cont...Método paintComponent – cont... ▪ o método drawLine desenha uma linha entre dois pontos representados pelos seus quatro argumentos. Os dois primeiros argumentos são as coordenadas x e y para uma extremidade, e os dois últimos argumentos são as coordenadas para a outra extremidade; ▪ se você redimensionar a janela, as linhas serão dimensionadas de maneira correspondente, uma vez que os argumentos estão baseados na largura e altura do painel; ▪ Redimensionar a janela nesse aplicativo resulta em uma chamada de sistema a paintComponent para redesenhar o conteúdo de DrawPanel.
  • 42. © Prof. Cícero Quarto – cicero.uema@gmail.com 42 Classe DrawPanelTest ▪ Para exibir a DrawPanel na tela, você deve colocá-la em uma janela. Você cria uma janela com um objeto da classe Jframe; ▪ Em DrawPanelTest.java (Figura 4.19), a linha 12 importa a classe JFrame a partir do pacote javax.swing; ♦ Α linha 17 em main cria um objeto DrawPanel, que contém nosso desenho, e a linha 20 cria um novo JFrame que pode armazenar e exibir o nosso painel; ♦ A linha 23 chama o método JFrame setDefaultCloseOperation com o argumento Jframe.EXIT_ON_CLOSE para indicar que o aplicativo deve terminar quando o usuário fecha a janela; ♦ A linha 25 usa o método add da classe JFrame para anexar o DrawPanel a JFrame;
  • 43. © Prof. Cícero Quarto – cicero.uema@gmail.com 43 Classe DrawPanelTest ♦ A linha 26 configura o tamanho da Jframe. O método setSize recebe dois parâmetros que representam a largura e a altura do Jframe, respectivamente; ♦ Por fim, a linha 27 exibe Jframe chamando seu método setVisible com o argumento true. Quando a Jframe é exibida, o método paintComponent de DrawPanel (linhas 7-30 da Figura 4.18) é implicitamente chamado e as duas linhas são desenhadas (veja as saídas de exemplo na Figura 4.19). Tente redimensionar a janela para ver que as linhas sempre são desenhadas com base na largura e na altura atual da janela.
  • 44. © Prof. Cícero Quarto – cicero.uema@gmail.com 44 Saída do aplicativo DrawPanelTest Figura 4.19': Saída do aplicativo DrawPanelTest
  • 45. © Prof. Cícero Quarto – cicero.uema@gmail.com 45 Exercícios do Estudo de caso de GUI e imagens gráficas Resolver os exercícios 4.1 (a e b) e 4.2 (a e b), página 107 do livro Java – como programar, 8o edição. Autor: Deitel