1 estruturas de controle márcia j. n. rodrigues lucena [email protected] especialização em...

55
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena [email protected] Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

1

Estruturas de Controle

Márcia J. N. Rodrigues [email protected]

Especialização em Técnicas e Ferramentas de Apoio à DecisãoDepartamento de Informática e Matemática Aplicada

Universidade Federal do Rio Grande do Norte

Transparências baseadas no capítulo 5 do livro Deitel e Deitel

Page 2: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

2

Estruturas de Controle - Parte 2

Roteiro5.1 Introdução5.2 Repetição controlada por contador5.3 Estrutura de Repetição FOR5.4 Exemplos5.5 Estrutura de Seleção Múltipla switch5.6 Estrutura de repetição do/while5.7 Instruções break e continue5.8 Instruções rotuladas break e continue5.9 Operadores Lógicos5.10 Resumo

Page 3: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

3

5.1 Introdução

Antes de escrever um programa Ter um entendimento do problema Planejamento cuidadoso para resolvê-lo

Ao escrever um programa Conhecer quais tipos de blocos de construção

existem Utilizar bons princípios de programação

Page 4: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

4

Bloco

Qualquer número de instruções simples que são delimitadas por um par de chaves ({})

Os blocos definem o escopo das variáveis.public static void main(String[] args) {

int n;

// ...

{ int k; // k é local, pertence ao bloco e

/* ... */ } // definida somente até o final

} // do bloco

Page 5: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

5

5.2 Repetição Controlada por contador

Repetição controlada por contador requer Nome de uma variável de controle (ou contador de laço) Valor inicial Condição que testa o valor final da variável de controle

(ou seja se o laço deve continuar) Incremento pelo qual a variável de controle é

modificada a cada passagem do laço Exemplo a seguir de um applet

Page 6: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

6

1// Fig. 5.1: WhileCounter.java

2// Counter-controlled repetition

3import java.awt.Graphics;

4import javax.swing.JApplet;

5

6public class WhileCounter extends JApplet {

7 public void paint( Graphics g )

8 {

9 int counter = 1; // initialization10

11 while ( counter <= 10 ) { // repetition condition12 g.drawLine( 10, 10, 250, counter * 10 );

13 ++counter; // increment

14 }

15 }

16}

Page 7: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

7

Algoritmo

1. import

2. Class WhileCounter

3. Método Paint

3.1 Inicialização do contador

3.2 Loop

3.3 chamada do método drawline

3.4 Incremento

Program Output

Page 8: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

8

5.2 Repetição Controlada por contador

Variável de controle é nomeada e iniciada Declarações com inicialização são instruções executáveis

Condição para testar o valor da variável

Método drawLine( x1, y1, x2, y2 ) Referencia o objeto Graphics Desenha linha de (x1, y1) para (x2, y2)

Incrementa o contador

9 int counter = 1; // initialization

11 while ( counter <= 10 ) { // repetition condition

12 g.drawLine( 10, 10, 250, counter * 10 );

13 ++counter; // increment

Page 9: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

9

5.2 Repetição Controlada por contador

Este programa pode ser mais conciso Inicializando o contador com zero

while ( ++counter <= 10 ) g.drawLine( 10, 10, 250, counter * 10 );

O incremento é feito dentro do while

Page 10: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

10

5.3 Estrutura de Repetição For

Vamos refazer o exemplo anterior usando a estrutura For

Page 11: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

11

Loop using for

Program Output

1// Fig. 5.2: ForCounter.java

2// Counter-controlled repetition with the for structure

3import java.awt.Graphics;

4import javax.swing.JApplet;

5

6public class ForCounter extends JApplet {

7 public void paint( Graphics g )

8 {

9 // Initialization, repetition condition and incrementing10 // are all included in the for structure header.

11 for ( int counter = 1; counter <= 10; counter++ )

12 g.drawLine( 10, 10, 250, counter * 10 );

13 }

14}

Page 12: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

12

5.3 Estrutura de Repetição For

No for temos :inicializãção, condição e incremento Formato geralfor (inicialização; teste de continuação do loop; incremento )

instrução Se existem muitas instruções utilize as chaves para delimitar o

bloco Variável controle existe apenas no corpo da estrutura for Se o teste de condição é inicialmente false o corpo do for não é

nem executado

11 for ( int counter = 1; counter <= 10; counter++ )

12 g.drawLine( 10, 10, 250, counter * 10 );

Page 13: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

13

5.3 Estrutura de Repetição For

Pode ser usada expressão aritmética Seja x = 2, y = 10for ( int j = x; j <= 4 * x * y; j += y / x )

Equivalente afor ( int j = 2; j <= 80; j += 5 )

For pode ser representada por uma estrutura whileinicialização;while ( condição teste) {

instrução incremento;

}

Page 14: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

14

5.3 Estrutura de Repetição For11 for ( int counter = 1; counter <= 10; counter++ )

12 g.drawLine( 10, 10, 250, counter * 10 );

verd

falso

int counter = 1

counter <= 10 counter++

g.drawLine( 10, 10, 250, counter * 10 );

Inicializa o valor da variável de controle

Determina se o valor final da variável de controle foi alcançado Corpo do laço pode

conter muitas instruções

Incrementa a varia'vel de controle

Page 15: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

15

5.4 Exemplos

Calcular o valor de um depósito de R$1000 com taxa de juros de 5% ao ano

Calcular para 10 anos Use a = p (1 + r )n

p – quantidade original r – taxa de juros anual n – número de anos a – quantidade em depósito no fim do n-ésimo ano

Use um laço for para calcular o valor

n

Page 16: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

16

Use for loop to calculate interest

1// Fig. 5.6: Interest.java2// Calculating compound interest3import java.text.DecimalFormat;4import javax.swing.JOptionPane;5import javax.swing.JTextArea;67public class Interest {8 public static void main( String args[] )9 {10 double amount, principal = 1000.0, rate = .05;1112 DecimalFormat precisionTwo = new DecimalFormat( "0.00" );13 JTextArea outputTextArea = new JTextArea( 11, 20 );1415 outputTextArea.append( "Year\tAmount on deposit\n" );1617 for ( int year = 1; year <= 10; year++ ) {18 amount = principal * Math.pow( 1.0 + rate, year );19 outputTextArea.append( year + "\t" +20 precisionTwo.format( amount ) + "\n" );21 }2223 JOptionPane.showMessageDialog(24 null, outputTextArea, "Compound Interest",25 JOptionPane.INFORMATION_MESSAGE );2627 System.exit( 0 ); // terminate the application28 }29}

Page 17: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

17

Saída do programa

Page 18: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

18

5.4 Exemplos

variáveis

Classe DecimalFormat (package java.text) String de controle de formato indica a apresentação dos números ponto

flutuante "0.00" Dois dígitos a direita do decimal e pelo menos 1 a esquerda Método format retorna um String formatado

Classe JTextArea (package javax.swing) Componente gráfico que mostra muitas linhas Inicializado para apresentar 11 linhas e 20 colunas de texto

10 double amount, principal = 1000.0, rate = .05;

12 DecimalFormat precisionTwo = new DecimalFormat( "0.00" );

13 JTextArea outputTextArea = new JTextArea( 11, 20 );

Page 19: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

19

5.4 Exemplos

Método append (of class JTextArea) Adiciona texto no objeto JTextArea Inicialmente possui string vazio

Laço for executa 10 vezes Método pow (class Math)

Math.pow( x, y ) Retorna um double

15 outputTextArea.append( "Year\tAmount on deposit\n" );

21 }

17 for ( int year = 1; year <= 10; year++ ) {18 amount = principal * Math.pow( 1.0 + rate, year );19 outputTextArea.append( year + "\t" +20 precisionTwo.format( amount ) + "\n" );

Page 20: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

20

5.4 Exemplos

static método showMessageDialog Classe JOptionPaneshowMessageDialog mostra um String ou

componente GUI, como JTextArea

23 JOptionPane.showMessageDialog(

24 null, outputTextArea, "Compound Interest",

25 JOptionPane.INFORMATION_MESSAGE );

Page 21: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

21

1// Fig. 5.6: Interest.java

2// Calculating compound interest

33import java.text.DecimalFormat;

4import javax.swing.JOptionPane;

5import javax.swing.JTextArea;

6

7public class Interest {

8 public static void main( String args[] )

9 {

10 double amount, principal = 1000.0, rate = .05;

11

12 DecimalFormat precisionTwo = new DecimalFormat( "0.00" );

1313 JTextArea outputTextArea = new JTextArea( 11, 20 );

14

15 outputTextArea.append( "Year\tAmount on deposit\n" );

16

17 for ( int year = 1; year <= 10; year++ ) {

1818 amount = principal * Math.pow( 1.0 + rate, year );

1919 outputTextArea.append( year + "\t" +

2020 precisionTwo.format( amount ) + "\n" );

21 }

22

2323 JOptionPane.showMessageDialog(

24 null, outputTextArea, "Compound Interest",

25 JOptionPane.INFORMATION_MESSAGE );

26

27 System.exit( 0 ); // terminate the application

28 }

29}

Notice the import statements required.

New JTextArea object initialized to hold 11 rows and 20 columns of text.

new operator used to create new objects.

Use method append to add to the String in the JTextArea object.

Notice the format of method Math.pow

Use method format to output the formatted number as a String.

Use the JTextArea reference as an argument to showMessageDialog

Page 22: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

22

1. import

2. Class Interest

2.1 Initialize variables

2.2 DecimalFormat

3. for loop

3.1 Math.pow

3.2 append

3.3 format

3.4 showMessageDialog

Algoritmo

Page 23: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

23

Saída do Programa

Page 24: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

24

5.5 Estrutura Switch

switch Estrutura de múltipla seleção

Format Série de rótulos case e um opcional default caseswitch ( value ){

case value1:actions

case value2:actions

default:actions

} break; sai da estrutura

Page 25: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

25

5.5 Estrutura Switch

true

false

.

.

.

case a case a action(s) break

case b case b action(s) break

false

false

case z case z action(s) break

true

true

default action(s)

Page 26: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

26

5.5 Estrutura Switch

Method init Entrada do usuário

9 public void init()

10 {11 String input;1213 input = JOptionPane.showInputDialog( 14 "Enter 1 to draw lines\n" +

15 "Enter 2 to draw rectangles\n" +16 "Enter 3 to draw ovals\n" );

1718 choice = Integer.parseInt( input );19 }

7 int choice;

Page 27: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

27

5.5 Estrutura Switch

Estrutura switch - compara choice com cases case rótulos – pode ser valores do tipo byte, short, int, long e char Usa aspas simples para caracter: 'A' Pode haver múltiplas ações para cada case

break – sai da estrutura switch

Rótulo default – opcional, ação pode ser tomada caso não ocorra nenhum dos rótulos acima

24 switch( choice ) {

25 case 1:

26 g.drawLine( 10, 10, 250, 10 + i * 10 );

27 break;

36 default:

37 JOptionPane.showMessageDialog(

38 null, "Invalid value entered" );

Page 28: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

28

1. Class SwitchTest

2. init

3. paint

3.1 for

3.2 switch

1// Fig. 5.7: SwitchTest.java2// Counting letter grades3import java.awt.Graphics;4import javax.swing.*;56public class SwitchTest extends JApplet {7 int choice; 89 public void init()10 {11 String input;1213 input = JOptionPane.showInputDialog( 14 "Enter 1 to draw lines\n" +15 "Enter 2 to draw rectangles\n" +16 "Enter 3 to draw ovals\n" );1718 choice = Integer.parseInt( input );19 }2021 public void paint( Graphics g )22 {23 for ( int i = 0; i < 10; i++ ) { 2424 switch( choice ) {2525 case 1:26 g.drawLine( 10, 10, 250, 10 + i * 10 );2727 break;28 case 2:29 g.drawRect( 10 + i * 10, 10 + i * 10,30 50 + i * 10, 50 + i * 10 );31 break;

Notice how case labels are used to test for the integer entered.

break exits the switch structure.

Place the value to compare inside the switch statement.

Page 29: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

29

Program Output

34 50 + i * 10, 50 + i * 10 );

35 break;

3636 default:

37 JOptionPane.showMessageDialog(

38 null, "Invalid value entered" );

39 } // end switch

40 } // end for

41 } // end paint()

42} // end class SwitchTest

32 case 3:33 g.drawOval( 10 + i * 10, 10 + i * 10,

Page 30: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

30

Page 31: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

31

5.6 Estrutura do while

Similar a estrutura while Condição é testada depois do corpo do laço Açoes são executadas pelo menos uma vez

Formato do {

instrução }

while ( condição );

Boa prática coloca chaves mesmo se não for requerido

Page 32: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

32

5.6 Estrutura do while

true

false

action(s)

condition

Page 33: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

33

1// Fig. 5.9: DoWhileTest.java

2// Using the do/while repetition structure

3import java.awt.Graphics;

4import javax.swing.JApplet;

5

6public class DoWhileTest extends JApplet {

7 public void paint( Graphics g )

8 {

9 int counter = 1;

10

1111 do {

1212 g.drawOval( 110 - counter * 10, 110 - counter * 10,

13 counter * 20, counter * 20 );

14 ++counter;

15 } while ( counter <= 10 );

16 }

17}Method drawOval( x1, y1, width, height )

Same arguments as drawRect, but the rectangle defines the oval's bounding box.

Notice format of do/while loop.

Page 34: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

34

Algoritmo

1. Class DoWhileTest

2. paint

3. do/while loop

Page 35: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

35

5.7 Instruções break e continue

break Saída imediata do while, for, do/while or switch

Continua a partir da próxima instrução depois do laço

Uso comum do breakSaída antecipada do laçoPula os outros rótulos da estrutura switch

Page 36: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

36

5.7 Instruções break e continue

continue Pula as outras instruçoes do corpo do while, for ou do/while Procede com a próxima interação do laço

while e do/while A condição do laço é avaliada imediatamente após o continue

Estrutura for Expressão de incremento é executada, então o teste é avaliado

Page 37: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

37

1// Fig. 5.11: BreakTest.java2// Using the break statement in a for structure3import javax.swing.JOptionPane;45public class BreakTest {6 public static void main( String args[] )7 {8 String output = "";9 int count;1011 for ( count = 1; count <= 10; count++ ) {12 if ( count == 5 )

1313 break; // break loop only if count == 51415 output += count + " ";16 }1718 output += "\nBroke out of loop at count = " + count;19 JOptionPane.showMessageDialog( null, output );20 System.exit( 0 );21 }22}

break causes an immediate exit from the loop.

Page 38: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

38

1// Fig. 5.12: ContinueTest.java2// Using the continue statement in a for structure3import javax.swing.JOptionPane;45public class ContinueTest {6 public static void main( String args[] )7 {8 String output = "";910 for ( int count = 1; count <= 10; count++ ) {11 if ( count == 5 )

1212 continue; // skip remaining code in loop13 // only if count == 51415 output += count + " ";16 }1718 output += "\nUsed continue to skip printing 5";19 JOptionPane.showMessageDialog( null, output );20 System.exit( 0 );21 }

continue skips the rest of the body and goes to the next iteration.

Page 39: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

39

1.

1// Fig. 5.13: BreakLabelTest.java

2// Using the break statement with a label

3import javax.swing.JOptionPane;

4

5public class BreakLabelTest {

6 public static void main( String args[] )

7 {

8 String output = "";

9

1010 stop: { // labeled compound statement

11 for ( int row = 1; row <= 10; row++ ) {

12 for ( int column = 1; column <= 5 ; column++ ) {

13

14 if ( row == 5 )

1515 break stop; // jump to end of stop block

16

17 output += "* ";

18 }

19

20 output += "\n";

21 }

22

23 // the following line is skipped

24 output += "\nLoops terminated normally";

25 }

26

Begins labeled compound statement stop:

Labeled break statement to exit stop block.

Page 40: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

40

5.9 Operadores Lógicos

Operadores Lógicos Até o momento utilizamos <, >, ==, etc para testar

condições Operadores lógicos permitem condições mais

complexas && ( AND )

Retorna true se ambas condições são verdadeiras || ( OR )

Retorna true se pelo menos uma condição for verdaderia

Page 41: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

41

5.9 Operadores Lógicos

! (NOT, negação) Inverte o significado de uma condição

Se a condição for false torna-se true Se a condição for true torna-se false

Operador unário, tem apenas um operando Como é feita a avaliação

Avalia o operando da esquerda, depois avalia o operando direita

Se o operando da esquerda de um && (and) for false, o operando da direita não será avaliado

Page 42: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

42

5.9 Operadores Lógicos

Operadores Lógicos ^ (Ou exclusivo)

true se existe exatamente uma condição true AND Lógico (&) e Or inclusivo (|)

trabalha identico ao regular AND and ORSempre avalia as 2 expressõesUtil em situações como esta

birthday == true | ++age >= 65

Page 43: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

43

5.9 Operadores Lógicos

ExemplosExpressão Resultado

true && false falsetrue || false true

!false truetrue ^ true false if ( ( gender == 1 ) && ( age >= 65 ) ) ++seniorFemales; seniorFemales é atualizado se ambas as condições são true

Page 44: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

44

1. Class LogicalOperators

1.1 JTextArea

1.2 JScrollPane

2. Logical operators

1// Fig. 5.19: LogicalOperators.java

2// Demonstrating the logical operators

3import javax.swing.*;

4

5public class LogicalOperators {

6 public static void main( String args[] )

7 {

88 JTextArea outputArea = new JTextArea( 17, 20 );

99 JScrollPane scroller = new JScrollPane( outputArea );

10 String output = "";

11

12 output += "Logical AND (&&)" +

1313 "\nfalse && false: " + ( false && false ) +

14 "\nfalse && true: " + ( false && true ) +

15 "\ntrue && false: " + ( true && false ) +

16 "\ntrue && true: " + ( true && true );

17

18 output += "\n\nLogical OR (||)" +

19 "\nfalse || false: " + ( false || false ) +

20 "\nfalse || true: " + ( false || true ) +

21 "\ntrue || false: " + ( true || false ) +

22 "\ntrue || true: " + ( true || true );

23

24 output += "\n\nBoolean logical AND (&)" +

25 "\nfalse & false: " + ( false & false ) +

26 "\nfalse & true: " + ( false & true ) +

27 "\ntrue & false: " + ( true & false ) +

28 "\ntrue & true: " + ( true & true );

29

JTextArea can display many lines of text. This one can display 17 rows and 20 columns.

This creates a JScrollPane object and initializes it with outputArea. This adds scrolling to outputArea.

Use the logical operators. Boolean values converted to Strings.

Page 45: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

45

3. setText

34 "\ntrue | true: " + ( true | true );

35

36 output += "\n\nBoolean logical exclusive OR (^)" +

37 "\nfalse ^ false: " + ( false ^ false ) +

38 "\nfalse ^ true: " + ( false ^ true ) +

39 "\ntrue ^ false: " + ( true ^ false ) +

40 "\ntrue ^ true: " + ( true ^ true );

41

42 output += "\n\nLogical NOT (!)" +

43 "\n!false: " + ( !false ) +

44 "\n!true: " + ( !true );

45

4646 outputArea.setText( output );

47 JOptionPane.showMessageDialog( null, scroller,

48 "Truth Tables", JOptionPane.INFORMATION_MESSAGE );

49 System.exit( 0 );

50 }

51 }

30 output += "\n\nBoolean logical inclusive OR (|)" +

31 "\nfalse | false: " + ( false | false ) +

32 "\nfalse | true: " + ( false | true ) +

33 "\ntrue | false: " + ( true | false ) +

Method setText replaces the String in the JTextArea.

Page 46: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

46

Page 47: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

47

5.10 Resumo Programação Estruturada

Programação estruturada Fácil de entender, testar, debug, modificar programas

Regras para programação estruturada1) inicie com um fluxograma simples

2) Qualquer retângulo (ação) pode ser substituído por 2 retângulos (ações) em sequência

3) Qualquer retângulo (ação) pode ser substituído por qualquer estrutura de controle (sequence, if, if/else, switch, while, do/while ou for)

4) Regras 2 e 3 são aplicadas quantas vezes necessárias e em qualquer ordem

 

Page 48: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

48

5.10 Resumo Programação Estruturada

Rule 3

Rule 3Rule 3

Rule 3 - Troque qualquer retângulo por uma estrutura

Page 49: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

49

5.10 Resumo Programação Estruturada

Todos os programas podem ser divididos em 3 partes Sequência - trivial Seleção - if, if/else, ou switch Repetição - while, do/while, or for

Programas são reducidos em Sequencia Estrutura if (seleção) Estrutura while (repetição) Estruturas de controle podem ser combinadas de 2 formas

Aninhamento (regra 3) e empilhamento (rule 2)

Page 50: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

50

Switchint opcao =

javax.swing.JOptionPane.showInputDialog( "Digite um número entre 1 e 6");

switch (opcao) { case 1: System.out.println("um");

break; case 2: System.out.println("dois");

break; case 3: case 4: System.out.println("três ou quatro");

break; default: System.out.println("Valor inválido"); break;}

Page 51: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

51

For

for (<inicialização>; <condição>; incrementador)for (int i = 0; i < 100; i++) { System.out.println(i);}

for (int i = 0, j = 10; i < j; i++, j--) { System.out.println(i);}

for (int i = 0; i < 100; ) { System.out.println(i); // Laço Infinito}

Page 52: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

52

While

while (<condição>) <instrução>final int maximo = 50;int c = -10double f = 0;System.out.println("\tºC\t\tºF");while (f<maximo) { f = (9.0 / 5.0) * c + 32.0; System.out.println("\t" + c + "\t\t" + f); c++;}

ºC ºF

-10 14.0

-9 15.8

-8 17.6

-7 19.4

-6 21.2

-5 23.0

-4 24.8

-3 26.6

-2 28.4

-1 30.2

0 32.0

1 33.8

2 35.6

3 37.4

4 39.2

5 41.0

6 42.8

7 44.6

8 46.4

9 48.2

10 50.0

Page 53: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

53

Do-While

do instruçãowhile (condição);int numero = 12345;int r = numero;int digitos = 0;do { r /= 10; digitos++;} while (r != 0);System.out.println(numero + " tem "+ digitos +

" digitos.");

Page 54: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

54

For While

for (instrução1; condição; instrução2) instrução3;

instrução1;while (condição) { instrução3; instrução2;}

for (int i = 0; i < 100; i++) { System.out.println(i);}

int i = 0;

while (i < 100) {

System.out.println(i);

i++;

}

Page 55: 1 Estruturas de Controle Márcia J. N. Rodrigues Lucena marciaj@dimap.ufrn.br Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento

55

Do-While While

do instruçãowhile (condição)

instrução;while (condição) { instrução}

int i = 0;

do {

System.out.println(i);

i++;

} while (i < 100)

int i = 0;

System.out.println(i);

while (i < 100) {

System.out.println(i);

i++;

}