Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American...

59
 SISTEMAS DE INFORMAÇÃO 1  1 1 Professoras: Ariane Machado Lima Fátima L.S. Nunes Caracteres e Cadeias de caracteres / Switch

Transcript of Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American...

Page 1: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

1  1

1

Professoras:Ariane Machado LimaFátima L.S. Nunes

Caracteres e

Cadeias de caracteres /

Switch

Page 2: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

2  2

2

Tipos primitivos de variáveis• Inteiros

– byte (8 bits) – short (16 bits)– int (32 bits) – long (64 bits)

• Ponto flutuante– float (32 bits)– double (64 bits)

• Booleano– boolean (tamanho não definido, embora seja 1 bit de

informação)

Page 3: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

3  3

3

Tipos de variáveis• Inteiros

– byte (8 bits) – short (16 bits)– int (32 bits) – long (64 bits)

• Ponto flutuante– float (32 bits)– double (64 bits)

• Booleano– boolean (tamanho não definido, embora seja 1 bit de

informação)• Caracteres

– char (16 bits)

c

Page 4: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

4  4

4

Exemploclass Questionario{ void verificaRespostaBinaria(char resp) {

if ( (resp == 's') || (resp == 'S'))System.out.println (“A resposta foi sim”);

else if ( (resp == 'n') || (resp == 'N'))System.out.println (“A resposta foi não”);

else System.out.println (“Resposta inválida”);

}}

Page 5: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

5  5

5

O que são os caracteres?

• Valores do tipo char armazenam– Símbolos (caracteres visíveis como letras,

algarismos, etc.)– Sinais de controle (tabulação, fim de linha, fim de

arquivo, etc)

• Todos escritos entre aspas simples

• Caracteres de controle precedidos de \

Page 6: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

6  6

6

Exemplos

• 'a' – caractere a, que é diferente de 'A'• '5' – caractere 5, que é diferente do numeral 5• '&' - caractere &• '\n' – fim de linha• '\t' – tabulação (tab)• ? - caractere '

Page 7: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

7  7

7

Exemplos

• 'a' – caractere a, que é diferente de 'A'• '5' – caractere 5, que é diferente do numeral 5• '&' - caractere &• '\n' – fim de linha• '\t' – tabulação (tab)• '\'' - caractere '

Page 8: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

8  8

8

Exemplos

• 'a' – caractere a, que é diferente de 'A'• '5' – caractere 5, que é diferente do numeral 5• '&' - caractere &• '\n' – fim de linha• '\t' – tabulação (tab)• '\'' - caractere '• ? - caractere \

Page 9: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

9  9

9

Exemplos

• 'a' – caractere a, que é diferente de 'A'• '5' – caractere 5, que é diferente do numeral 5• '&' - caractere &• '\n' – fim de linha• '\t' – tabulação (tab)• '\'' - caractere '• '\\' - caractere \

Page 10: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

10  10

10

Como os caracteres podem ser armazenados no comptador?

• Computador só guarda bits...

Page 11: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

11  11

11

Como os caracteres podem ser armazenados no comptador?

• Computador só guarda bits...

• Tabela que associa cada caractere a um número

• Exemplos:– ASCII (lê-se: asc 2)– Unicode

Page 12: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

12  12

12

ASCII• American Standard Code for Information

Interchange

• ASCII padrão com 128 caracteres

• ASCII extendido com 256 caracteres

• Caractere precisa ser armazenado em 8 bits

• Bastante usada até por volta do final dos anos 80

Page 13: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

13  13

13

ASCII - padrãoCaracteres invisíveis(a maioria obsoletos, da época dos cartões perfurados)

Page 14: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

14  14

14

ASCII extendido (fabricante-dependente!!!)

IBM

Page 15: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

15  15

15

Declínio do ASCII

• Código limitado

– Usado pelo Notepad do Windows

– Usado quando pede-se para salvar como “text only”

• Não contempla caracteres de outras línguas

• Dependente de plataforma

Page 16: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

16  16

16

Unicode

• Movimento iniciado em 1986, discutindo-se a criação de um padrão internacional

• Consórcio Unicode fundado em 1991• Alguns membros:

Page 17: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

17  17

17

Unicode• “Unicode fornece um número único para cada

caracter, não importa a plataforma, o programa ou a língua.”

• A primeira versão do Unicode (1991 a 1995) era uma codificação de 16 bits.

• A partir da Unicode 2.0 vai de U+0000 a U+10FFFF, o que significa um espaço de 21 bits– Diferentes formas para representar esse código

Page 18: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

18  18

18

UTFs - Unicode transformation format

• UTF é um mapeamento de cada ponto Unicode para uma sequência única de bytes

• UTF-8 usa 1 a 4 bytes (de 8 bits)

• UTF-16 usa 1 a 2 unidades de 16 bits

• UTF-32 usa 1 unidade de 32 bits

Page 19: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

19  19

19

UTFs - Unicode transformation format

• UTF é um mapeamento de cada ponto Unicode para uma sequência única de bytes

• UTF-8 usa 1 a 4 bytes (de 8 bits)– Mais comum na web

• UTF-16 usa 1 a 2 unidades de 16 bits– Java e Windows

• UTF-32 usa 1 unidade de 32 bits– Muitos sistemas UNIX

Page 20: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

20  20

20

Unicode e Java• Java usa UTF-16• char ocupa 16 bits• Se um caracter é um número, posso escrever algo

como:class Caracteres{ void imprimeNPrimeirosCaracteres (int n) { char caracter = 0; while (caracter < n) { System.out.print(caracter + " "); caracter++; } System.out.println(""); }}

Page 21: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

21  21

21

• ou...

void imprimeNCaracteresAPartirDe (char caractere, int n) { int i = 1; while (i <= n) { System.out.print(caractere + " "); caractere++; i++; } System.out.println(""); }

Page 22: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

22  22

22

ASCII e Unicode

• Note que os 128 primeiros caracteres Unicode equivalem aos 128 caracteres ASCII padrão

• Em C, um char tem 8 bits e usa ASCII

• Mais detalhes sobre Unicode em:www.unicode.org

Page 23: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

23  23

23

Tipos de variáveis• Inteiros

– byte (8 bits) – default: 0– short (16 bits)– default: 0– int (32 bits) – default: 0– long (64 bits) – default: 0L

• Ponto flutuante– float (32 bits) – default: 0.0f– double (64 bits) – default: 0.0d

• Booleano– boolean (tamanho não definido, embora seja 1 bit de

informação) – default: false• Caracteres

– char (16 bits) – default: '\u0000' (ou 0)

Page 24: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

24  24

24

Exemplo: minúsculas e maiúsculas

boolean eMinuscula (char c){

?}

Page 25: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

25  25

25

Exemplo: minúsculas e maiúsculas

boolean eMinuscula (char c){

if ((c >= 'a') && (c <= 'z'))return true;

else return false;

}

Page 26: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

26  26

26

Exemplo: minúsculas e maiúsculas

boolean eMinuscula (char c){

return ((c >= 'a') && (c <= 'z'));}

Page 27: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

27  27

27

Exemplo: minúsculas e maiúsculas

boolean eMinuscula (char c){

return ((c >= 'a') && (c <= 'z'));}

boolean eMaiuscula (char c){

?}

Page 28: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

28  28

28

Exemplo: minúsculas e maiúsculas

boolean eMinuscula (char c){

return ((c >= 'a') && (c <= 'z'));}

boolean eMaiuscula (char c){

return ((c >= 'A') && (c <= 'Z'));}

Page 29: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

29  29

29

Exemplo: minúsculas e maiúsculas

char minusculaParaMaiuscula (char c){

?}

Page 30: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

30  30

30

Exemplo: minúsculas e maiúsculas

char MinusculaParaMaiuscula (char c){

if (eMaiuscula(c))return c;

else if (eMinuscula(c)){

?} else {

System.out.println(“Caractere inválido!”);return '\u0000';

}

Page 31: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

31  31

31

Exemplo: minúsculas e maiúsculas

char MinusculaParaMaiuscula (char c){

if (eMaiuscula(c))return c;

else if (eMinuscula(c)){

int distancia = 'A' – 'a';?

} else {

System.out.println(“Caractere inválido!”);return '\u0000';

}

Page 32: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

32  32

32

Exemplo: minúsculas e maiúsculas

char MinusculaParaMaiuscula (char c){

if (eMaiuscula(c))return c;

else if (eMinuscula(c)){

int distancia = 'A' – 'a';return (c+distancia);

} else {

System.out.println(“Caractere inválido!”);return '\u0000';

}

Page 33: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

33  33

33

Cadeias de caracteres

• “Esta é uma cadeia de caracteres”

• System.out.println(“Esta é uma cadeia de caracteres”);

• 2 opções para implementar essa cadeias:– Vetor (ou array) de caracteres (vamos aprender

em maio)– Classe String, já pronta em Java

Page 34: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

34  34

34

String

• Instanciação não precisa usar new explicitamente

• String str = “Esta é uma cadeia de caracteres”;

Page 35: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

35  35

35

String : + é o operador de concatenação

String a = “Esta é uma “;String b = “cadeia de caracteres”;String c = a + b;

System.out.println(c);

Page 36: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

36  36

36

Podemos concatenar Strings e números

String res = “O resultado é “;int i = 10;String c = res + i;

System.out.println(c);

Page 37: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

37  37

37

Alguns métodos da classe String

• char charAt (int index) – devolve o caractere que está na posição index(índices vão de zero até o tamanho do string menos 1)

String str = “mesa”;System.out.println(str.charAt (0)); // imprime mSystem.out.println(str.charAt (3)); // imprime a

Page 38: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

38  38

38

Alguns métodos da classe String

• boolean endsWith (String suffix) – verifica se a string termina com o sufixo suffix(índices vão de zero até o tamanho do string menos 1)

void processaArquivosJava (String nomeDoArquivo){

if (nomeDoArquivo.endsWith(“.java”)){// faz o que tem que fazer

}else

System.out.println(“Este não é um arquivo java”);}

Page 39: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

39  39

39

Alguns métodos da classe String

• int indexOf (char ch) – devolve o índice da primeira ocorrência de ch na string, ou -1 caso não exista(índices vão de zero até o tamanho do string menos 1)

String nomeArquivo = “Caracteres.java”;System.out.println(nomeArquivo.indexOf('.'));

// imprime ?System.out.println(nomeArquivo.indexOf('x'));

// imprime ?

Page 40: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

40  40

40

Alguns métodos da classe String

• int indexOf (char ch) – devolve o índice da primeira ocorrência de ch na string, ou -1 caso não exista(índices vão de zero até o tamanho do string menos 1)

String nomeArquivo = “Caracteres.java”;System.out.println(nomeArquivo.indexOf('.'));

// imprime 10System.out.println(nomeArquivo.indexOf('x'));

// imprime -1

Page 41: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

41  41

41

Alguns métodos da classe String

• int length() – devolve o tamanho da string

String str = “java”;System.out.println(str.length()); // imprime 4

Page 42: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

42  42

42

Alguns métodos da classe String

• String toUpperCase() – devolve a string convertida em maiúscula

String str = “java”;System.out.println(str.toUpperCase()); // imprime JAVA

Page 43: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

43  43

43

Alguns métodos da classe String

• int compareTo(String other) – compara duas strings. Devolve:– inteiro positivo se other for “menor”– 0 se forem iguais– inteiro negativo se other for “maior”(ordem lexicográfica)

String str1 = “mesa”; String str2 = “cadeira”; System.out.println(str1.compareTo(str2))); // imprime 10

Page 44: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

44  44

44

Alguns métodos da classe String

• String substring(int inicio, int fim) – devolve um objeto String formado pelo substring do índice inicio ao índice fim

String str = “banana”; System.out.println(str.substring(1, 3)); // imprime ana

Page 45: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

45  45

45

Outros métodos em...

• http://java.sun.com/javase/6/docs/api/java/lang/String.html

Page 46: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

4616/04/09 46

46

Comando Switch• Algumas vezes queremos tratar de forma

diferenciada vários possíveis (e diferentes) resultados de uma mesma expressão

void executaOpcaoUsuario(int opcao){if (opcao == 1) { /* faça certas coisas - 1*/ }else if (opcao == 2) { /* faça certas coisas - 2 */ }...elseif (opcao == n) { /* faça certas coisas - n*/ }else { /* faça outras coisas */ }

}

Page 47: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

4716/04/09 47

47

Comando Switch • Sintaxe:

switch (expressao){ case constante 1:

{comandos_1 se expressão == constante 1}case constante 2: {comandos_2 se expressão == constante 2}

...case constante n:

{comandos_n se expressão == constante n}default:

{comandos_d se resultados anteriores falsos}}

Page 48: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

4816/04/09 48

48

Comando Switch • Sintaxe:

switch (expressao){ case constante 1:

{comandos_1 se expressão == constante 1}case constante 2: {comandos_2 se expressão == constante 2}

...case constante n:

{comandos_n se expressão == constante n}default:

{comandos_d se resultados anteriores falsos}}

comandos i a n são executados NESTA ORDEM quando expressão é igual à constante i

Page 49: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

4916/04/09 49

49

Exemplo

class ExemploSwitch{ void executaOpcaoUsuario(int opcao) { switch (opcao) { case 1: System.out.println("Usuário digitou opção 1"); case 2: System.out.println("Usuário digitou opção 2"); case 3: System.out.println("Usuário digitou opção 3"); case 4: System.out.println("Usuário digitou opção 4"); default: System.out.println("Opcão inválida"); } }}

> ExemploSwitch s = new ExemploSwitch()> s.executaOpcaoUsuario (2)

?

Page 50: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5016/04/09 50

50

Exemplo

class ExemploSwitch{ void executaOpcaoUsuario(int opcao) { switch (opcao) { case 1: System.out.println("Usuário digitou opção 1"); case 2: System.out.println("Usuário digitou opção 2"); case 3: System.out.println("Usuário digitou opção 3"); case 4: System.out.println("Usuário digitou opção 4"); default: System.out.println("Opcão inválida"); } }}

> ExemploSwitch s = new ExemploSwitch()> s.executaOpcaoUsuario (2)

Usuário digitou opção 2Usuário digitou opção 3Usuário digitou opção 4

Page 51: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5116/04/09 51

51

Comando Switch • Sintaxe:

switch (expressao){ case constante 1:

{comandos_1 se expressão == constante 1; break; }case constante 2: {comandos_2 se expressão == constante 2 ; break; }

...case constante n:

{comandos_n se expressão == constante n ; break; }default:

{comandos_d se resultados anteriores falsos}}

Page 52: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5216/04/09 52

52

Exemploclass ExemploSwitch{ void executaOpcaoUsuario(int opcao) { switch (opcao) { case 1: System.out.println("Usuário digitou opção 1"); break; case 2: System.out.println("Usuário digitou opção 2"); break; case 3: System.out.println("Usuário digitou opção 3"); break; case 4: System.out.println("Usuário digitou opção 4"); break; default: System.out.println("Opcão inválida"); } }}

> ExemploSwitch s = new ExemploSwitch()> s.executaOpcaoUsuario (4)Usuário digitou opção 4> s.executaOpcaoUsuario (2)Usuário digitou opção 2> s.executaOpcaoUsuario (0)Opcão inválida

Page 53: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5316/04/09 53

53

Comando Switch switch (expressao){ case constante 1:

{comandos_1 se expressão == constante 1; break; }case constante 2: {comandos_2 se expressão == constante 2 ; break; }

...case constante n:

{comandos_n se expressão == constante n ; break; }default:

{comandos_d se resultados anteriores falsos}}

Equivale a

if (expressão == constante 1) { comandos_1; }else if (expressão == constante 2) { comandos_2; }...else if (expressão == constante n) { comandos_n; }else { comandos_d; }

Page 54: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5416/04/09 54

54

Switch com charclass ExemploSwitch{ void executaOpcaoUsuario(char opcao) { switch (opcao) { case 'S': System.out.println("Usuário digitou opção S - Salvar"); break; case 'A': System.out.println("Usuário digitou opção A - Abrir"); break; case 'F': System.out.println("Usuário digitou opção F - Fechar"); break; case 'C': System.out.println("Usuário digitou opção C – Salvar Como"); break; default: System.out.println("Opcão inválida"); } }}

Page 55: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5516/04/09 55

55

Comando Switch • Sintaxe:

switch (expressao){ case constante 1:

{comandos_1 se expressão == constante 1; break; }case constante 2: {comandos_2 se expressão == constante 2 ; break; }

...case constante n:

{comandos_n se expressão == constante n ; break; }default:

{comandos_d se resultados anteriores falsos}}

OPCIONAL

Page 56: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5616/04/09 56

56

Exemplo 2:Dado um mês, imprime o número de dias que ele tem

Page 57: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5716/04/09 57

57

Exemplo 2:Dado um mês, imprime o número de dias que ele tem

switch (mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDias = 31; break; case 4: case 6: case 9: case 11: numDias = 30; break; case 2: if ( ((ano % 4 == 0) && !(ano % 100 == 0)) || (ano % 400 == 0) ) numDias = 29; else numDias = 28; break; default: System.out.println("Mês inválido."); break; } System.out.println("Número de dias = " + numDias);

Page 58: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

SISTEMAS DEINFORMAÇÃO

5816/04/09 58

58

Switch e break

• Em Java, a expressão do switch:– pode ser dos tipos primitivos int, short, byte, char

e enum (este ainda não aprendemos)– pode ser dos tipos abstratos Integer, Short, Byte e

Character (também não vimos)– Obs: não pode ser String

• A exigência de um break para não seguir a execução dos demais comandos é considerado um ponto fraco de Java (herdado de C)

Page 59: Caracteres e Cadeias de caracteres / Switchariane/ach2001/ACH2001-Aula13... · ASCII • American Standard Code for Information Interchange • ASCII padrão com 128 caracteres •

   SISTEMAS DEINFORMAÇÃO

59  59

59

Professoras:Ariane Machado LimaFátima L.S. Nunes

Caracteres e

Cadeias de caracteres /

Switch