SlideShare uma empresa Scribd logo
1 de 34
Enumerações
Instrução de selecção switch
Gama limitada dos tipos inteiros
 Encapsulação
 Cópia de instâncias
 Igualdade de instâncias
2013/2014 Fundamentos de Programação 2
2013/2014 Fundamentos de Programação 3
 Sexo
 boolean?
 int?
 String?
 Dias da semana
 int?
 String?
 Meses do ano
 Pontos cardinais
 Estado civil
2013/2014 Fundamentos de Programação 4
Por exemplo:
class Human {
…
public boolean isFemale() {
return isFemale;
}
…
private boolean isFemale;
}
Problemas:
1. Representação indirecta.
2. Não se pode imprimir o sexo.
Por exemplo:
class Human {
…
public static final int MALE = 0;
public static final int FEMALE = 1;
…
public int getSex() {
return sex;
}
…
private int sex;
}
Problemas:
1. Inteiros podem tomar muito mais que os dois
valores pretendidos.
2. Ao imprimir surgem números.
Por exemplo:
class Human {
…
public static final
String MALE = "Male";
public static final
String FEMALE = "Female";
…
public String getSex() {
return sex;
}
…
private String sex;
}
Problemas:
1. Cadeias de caracteres podem tomar muito mais
que os dois valores pretendidos.
2. Comparação possível apenas com equals.
Mesmos problemas!
Mesmos problemas!
 São classes, mas especiais
 São tipos de valor (e de referência!)
 Valores
 Definidos explicitamente, por extensão
 Em número finito
 Fixos
 Formam sequência
2013/2014 Fundamentos de Programação 5
!!??
Tipo de valores a representar Java
Sexo (masculino e feminino) public enum Sex {
MALE,
FEMALE
}
Dias da semana (de domingo a segunda-feira) public enum DayOfTheWeek {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
}
Pontos cardeais (Norte, Sul, Este e Oeste) public enum CardinalDirection {
NORTH,
SOUTH,
EAST,
WEST
}
2013/2014 Fundamentos de Programação 6
public static void main(final String[] arguments) {
final DayOfTheWeek day = DayOfTheWeek.MONDAY;
DayOfTheWeek someDay = DayOfTheWeek.FRIDAY;
out.println("Monday is " + day + ".");
someDay = DayOfTheWeek.valueOf("FRIDAY");
someDay = DayOfTheWeek.valueOf("Friday");
if (someDay == DayOfTheWeek.FRIDAY)
out.println("Some day is Friday.");
out.println("Some day is " + someDay + ".");
}
2013/2014 Fundamentos de Programação 7
_Monday is MONDAY.
_
Monday is MONDAY.
Some day is Friday.
_
Monday is MONDAY.
Some day is Friday.
Some day is FRIDAY.
_
 Disponibilizado automaticamente
 Devolve valor enumerado dada cadeia de caracteres
com o seu nome exacto
 Exemplo
public enum Sex { MALE, FEMALE }
final Sex sex = Sex.valueOf("MALE");
2013/2014 Fundamentos de Programação 8
«enumeration»
Sex
MALE
FEMALE
sex
 Disponibilizada automaticamente
 Devolve cadeia de caracteres com nome exacto do
valor enumerado
 Exemplo
public enum Sex { MALE, FEMALE }
final Sex sex = Sex.FEMALE;
final String sexName = sex.toString();
2013/2014 Fundamentos de Programação 9
Mas pode sobrepor-se
versão especializada!
«enumeration»
Sex
MALE
FEMALE
sex
sexName
“FEMALE”
 Disponibilizada automaticamente
 values() devolve uma array com todos os valores, por
ordem de declaração
 Exemplo
public enum CardinalDirection {
NORTH,
SOUTH,
EAST,
WEST
}
for (CardinalDirection direction : CardinalDirection.values())
out.println(direction);
2013/2014 Fundamentos de Programação 10
«enumeration»
CardinalDirection
NORTH
EAST
SOUTH
WEST
direction
 Evitar usar!
 name() devolve sempre cadeia de caracteres
com nome exacto do valor enumerado
 ordinal() devolve número de ordem do
valor enumerado
 Por ordem de declaração
 Primeiro valor tem ordem 0 (zero)
2013/2014 Fundamentos de Programação 11
 Pode-se definir atributos e métodos
específicos
 Pode-se definir construtores específicos
(desde que privados ou privados do pacote)
 Cada valor pode ter sua própria sobreposição
de uma dada operação
2013/2014 Fundamentos de Programação 12
public enum CardinalDirection {
NORTH, SOUTH, EAST, WEST;
public String prettyName() {
return name().charAt(0) +
name().substring(1).toLowerCase();
}
}
…
out.println(CardinalDirection.NORTH.name());
out.println(CardinalDirection.SOUTH.prettyName());
2013/2014 Fundamentos de Programação 13
_NORTH
_
NORTH
South
_
2013/2014 Fundamentos de Programação 14
switch (expressão) {
case valor1:
instruções1
break;
case valor2:
instruções2
break;
…
default:
instruções
break;
}
2013/2014 Fundamentos de Programação 15
 Alternativa ao if-else
 Quando fluxo de execução tem vários casos
de acordo com valor de expressão
 Expressão de controlo e valores dos casos
 Tipos primitivos inteiros (byte, short, int, etc.)
 char
 String
 Enumerações
2013/2014 Fundamentos de Programação 16
Mas não
boolean!(obrigado
Nélio! )
public enum Command {
SAVE, LOAD, EXIT;
}
…
final Scanner inputScanner = new Scanner(System.in);
out.print("Introduza um comando: ");
final String commandText = inputScanner.nextLine();
final Command command = Command.valueOf(commandText);
switch(command) {
case SAVE:
…
break;
case LOAD:
…
break;
case EXIT:
…
break;
}
2013/2014 Fundamentos de Programação 17
Nos casos de um switch recorrendo a
uma enumeração, usa-se apenas os
valores enumerados, i.e., não se pode
preceder o valor do nome da
enumeração: Command.LOAD.
Sem o break, a execução continua,
passando para os casos seguintes!
2013/2014 Fundamentos de Programação 18
0 0 0 0
2013/2014 Fundamentos de Programação 19
1 1 1 1 0123456789101112131415 Suponhamos…
Com 4 bits
representamos 16
inteiros com valores
entre 0 e 15.
Com n bits
representamos 2n
inteiros com valores
entre 0 e 2n-1.
0 0 0 0
2013/2014 Fundamentos de Programação 20
0 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
0 0 0 0
2013/2014 Fundamentos de Programação 21
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
2013/2014 Fundamentos de Programação 22
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Negativos Positivos
2013/2014 Fundamentos de Programação 23
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
789
10
11
12
13
14
15
+1
-1
1000
1001
1010
1011
1100
1101
1110
1111
Primeiro bit
simpático para
identificar
valores
negativos.
Negativos Positivos
2013/2014 Fundamentos de Programação 24
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7-8-7
-6
-5
-4
-3
-2
-1
+1
-1
1000
1001
1010
1011
1100
1101
1110
1111
+1
-1
2013/2014 Fundamentos de Programação 25
Negativos Positivos
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7-8-7
-6
-5
-4
-3
-2
-1
+1
-1
1000
1001
1010
1011
1100
1101
1110
1111
+1
-1
7 + 1 = -8
6 + 2 = -8
5 + 4 = -7
-8 - 1 = 7
-5 - 6 = 5
2013/2014 Fundamentos de Programação 26
Negativos Positivos
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7-8-7
-6
-5
-4
-3
-2
-1
+1
-1
1000
1001
1010
1011
1100
1101
1110
1111
+1
-1
2013/2014 Fundamentos de Programação 27
0…0
00…01
0…
0…
01…11
0
1
…
2n-1-1-2n-1
…
-1
10…00
10…01
1…
1…
11…11
(231 -1) + 1 = -231
-231 - 1 = 231 - 1
ou seja,
2147483647 + 1 =
-2147483648
-2147483648 - 1 =
2147483647
2013/2014 Fundamentos de Programação 28
0…0
00…01
0…
0…
01…11
0
1
…
231-1-231
…
-1
10…00
10…01
1…
1…
11…11
final int minimum = Integer.MIN_VALUE;
final int maximum = Integer.MAX_VALUE;
out.println(minimum);
out.println(maximum);
2013/2014 Fundamentos de Programação 29
_-2147483648
_
-2147483648
2147483647
_
Também estão
definidos os extremos
dos outros tipos
inteiros.
2013/2014 Fundamentos de Programação 30
Tipo Bits Valor mínimo Valor máximo
byte 8 -128 127
short 16 -32768 32767
int 32 -2147483648 2147483647
long 64 -9223372036854775808 9223372036854775807
import java.math.BigInteger;
…
public class BigIntegerTester {
public static BigInteger factorialOf(BigInteger n) {
BigInteger factorial = BigInteger.valueOf(1);
while (n != BigInteger.ZERO) {
factorial = factorial.multiply(n);
n = n.subtract(BigInteger.ONE);
}
return factorial;
}
public static void main(final String[] arguments) {
out.println("Number of different deck shuffles: "
+ factorialOf(BigInteger.valueOf(52)));
}
}
2013/2014 Fundamentos de Programação 31
 Enumerações em Java
 Instrução de selecção switch
 Limites dos tipos inteiros
 Classe especial BigInteger
2013/2014 Fundamentos de Programação 32
 Enumerações no JavaTutorial
 Classe BigInteger na API do Java 7
2013/2014 Fundamentos de Programação 33
 Enumerações
 Instrução de selecção switch
 Gama limitada dos tipos inteiros
2013/2014 Fundamentos de Programação 34

Mais conteúdo relacionado

Mais procurados

12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Ismar Silveira
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Manuel Menezes de Sequeira
 

Mais procurados (20)

12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Java2
Java2Java2
Java2
 
Java5
Java5Java5
Java5
 
Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3Paradigmas de Linguagens de Programacao - Aula #3
Paradigmas de Linguagens de Programacao - Aula #3
 
Fundamentos de C#
Fundamentos de C#Fundamentos de C#
Fundamentos de C#
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 

Destaque

2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...Manuel Menezes de Sequeira
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectosManuel Menezes de Sequeira
 
Redes - Camada Enlace
Redes - Camada EnlaceRedes - Camada Enlace
Redes - Camada EnlaceLuiz Arthur
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosManuel Menezes de Sequeira
 

Destaque (11)

2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
Redes - Camada Enlace
Redes - Camada EnlaceRedes - Camada Enlace
Redes - Camada Enlace
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 

Semelhante a 11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de Programação

Revisão de lógica
Revisão de lógicaRevisão de lógica
Revisão de lógicaneilaxavier
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesSuissa
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRodrigo Almeida
 
Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?Tales Andrade
 
Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06André Phillip Bertoletti
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03profwtelles
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 

Semelhante a 11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de Programação (20)

Aula3
Aula3Aula3
Aula3
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Revisão de lógica
Revisão de lógicaRevisão de lógica
Revisão de lógica
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
TypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slidesTypeScript - Olhe teu tipo, script slides
TypeScript - Olhe teu tipo, script slides
 
Resolucao trabalho euromilhoes
Resolucao trabalho euromilhoesResolucao trabalho euromilhoes
Resolucao trabalho euromilhoes
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas Embarcados
 
Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?Swift!.opcionais.oh!.my()?!?
Swift!.opcionais.oh!.my()?!?
 
Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06Lógica de Programação - Unimep/Pronatec - Aula06
Lógica de Programação - Unimep/Pronatec - Aula06
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Javascript
JavascriptJavascript
Javascript
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Falando "Postgrês"
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 

Mais de Manuel Menezes de Sequeira

Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, ScannerManuel Menezes de Sequeira
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteresManuel Menezes de Sequeira
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...Manuel Menezes de Sequeira
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoManuel Menezes de Sequeira
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorManuel Menezes de Sequeira
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoManuel Menezes de Sequeira
 

Mais de Manuel Menezes de Sequeira (11)

Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 
Eng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectosEng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectos
 

Último

Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 

Último (20)

Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 

11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de Programação

  • 1. Enumerações Instrução de selecção switch Gama limitada dos tipos inteiros
  • 2.  Encapsulação  Cópia de instâncias  Igualdade de instâncias 2013/2014 Fundamentos de Programação 2
  • 3. 2013/2014 Fundamentos de Programação 3
  • 4.  Sexo  boolean?  int?  String?  Dias da semana  int?  String?  Meses do ano  Pontos cardinais  Estado civil 2013/2014 Fundamentos de Programação 4 Por exemplo: class Human { … public boolean isFemale() { return isFemale; } … private boolean isFemale; } Problemas: 1. Representação indirecta. 2. Não se pode imprimir o sexo. Por exemplo: class Human { … public static final int MALE = 0; public static final int FEMALE = 1; … public int getSex() { return sex; } … private int sex; } Problemas: 1. Inteiros podem tomar muito mais que os dois valores pretendidos. 2. Ao imprimir surgem números. Por exemplo: class Human { … public static final String MALE = "Male"; public static final String FEMALE = "Female"; … public String getSex() { return sex; } … private String sex; } Problemas: 1. Cadeias de caracteres podem tomar muito mais que os dois valores pretendidos. 2. Comparação possível apenas com equals. Mesmos problemas! Mesmos problemas!
  • 5.  São classes, mas especiais  São tipos de valor (e de referência!)  Valores  Definidos explicitamente, por extensão  Em número finito  Fixos  Formam sequência 2013/2014 Fundamentos de Programação 5 !!??
  • 6. Tipo de valores a representar Java Sexo (masculino e feminino) public enum Sex { MALE, FEMALE } Dias da semana (de domingo a segunda-feira) public enum DayOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } Pontos cardeais (Norte, Sul, Este e Oeste) public enum CardinalDirection { NORTH, SOUTH, EAST, WEST } 2013/2014 Fundamentos de Programação 6
  • 7. public static void main(final String[] arguments) { final DayOfTheWeek day = DayOfTheWeek.MONDAY; DayOfTheWeek someDay = DayOfTheWeek.FRIDAY; out.println("Monday is " + day + "."); someDay = DayOfTheWeek.valueOf("FRIDAY"); someDay = DayOfTheWeek.valueOf("Friday"); if (someDay == DayOfTheWeek.FRIDAY) out.println("Some day is Friday."); out.println("Some day is " + someDay + "."); } 2013/2014 Fundamentos de Programação 7 _Monday is MONDAY. _ Monday is MONDAY. Some day is Friday. _ Monday is MONDAY. Some day is Friday. Some day is FRIDAY. _
  • 8.  Disponibilizado automaticamente  Devolve valor enumerado dada cadeia de caracteres com o seu nome exacto  Exemplo public enum Sex { MALE, FEMALE } final Sex sex = Sex.valueOf("MALE"); 2013/2014 Fundamentos de Programação 8 «enumeration» Sex MALE FEMALE sex
  • 9.  Disponibilizada automaticamente  Devolve cadeia de caracteres com nome exacto do valor enumerado  Exemplo public enum Sex { MALE, FEMALE } final Sex sex = Sex.FEMALE; final String sexName = sex.toString(); 2013/2014 Fundamentos de Programação 9 Mas pode sobrepor-se versão especializada! «enumeration» Sex MALE FEMALE sex sexName “FEMALE”
  • 10.  Disponibilizada automaticamente  values() devolve uma array com todos os valores, por ordem de declaração  Exemplo public enum CardinalDirection { NORTH, SOUTH, EAST, WEST } for (CardinalDirection direction : CardinalDirection.values()) out.println(direction); 2013/2014 Fundamentos de Programação 10 «enumeration» CardinalDirection NORTH EAST SOUTH WEST direction
  • 11.  Evitar usar!  name() devolve sempre cadeia de caracteres com nome exacto do valor enumerado  ordinal() devolve número de ordem do valor enumerado  Por ordem de declaração  Primeiro valor tem ordem 0 (zero) 2013/2014 Fundamentos de Programação 11
  • 12.  Pode-se definir atributos e métodos específicos  Pode-se definir construtores específicos (desde que privados ou privados do pacote)  Cada valor pode ter sua própria sobreposição de uma dada operação 2013/2014 Fundamentos de Programação 12
  • 13. public enum CardinalDirection { NORTH, SOUTH, EAST, WEST; public String prettyName() { return name().charAt(0) + name().substring(1).toLowerCase(); } } … out.println(CardinalDirection.NORTH.name()); out.println(CardinalDirection.SOUTH.prettyName()); 2013/2014 Fundamentos de Programação 13 _NORTH _ NORTH South _
  • 14. 2013/2014 Fundamentos de Programação 14
  • 15. switch (expressão) { case valor1: instruções1 break; case valor2: instruções2 break; … default: instruções break; } 2013/2014 Fundamentos de Programação 15
  • 16.  Alternativa ao if-else  Quando fluxo de execução tem vários casos de acordo com valor de expressão  Expressão de controlo e valores dos casos  Tipos primitivos inteiros (byte, short, int, etc.)  char  String  Enumerações 2013/2014 Fundamentos de Programação 16 Mas não boolean!(obrigado Nélio! )
  • 17. public enum Command { SAVE, LOAD, EXIT; } … final Scanner inputScanner = new Scanner(System.in); out.print("Introduza um comando: "); final String commandText = inputScanner.nextLine(); final Command command = Command.valueOf(commandText); switch(command) { case SAVE: … break; case LOAD: … break; case EXIT: … break; } 2013/2014 Fundamentos de Programação 17 Nos casos de um switch recorrendo a uma enumeração, usa-se apenas os valores enumerados, i.e., não se pode preceder o valor do nome da enumeração: Command.LOAD. Sem o break, a execução continua, passando para os casos seguintes!
  • 18. 2013/2014 Fundamentos de Programação 18
  • 19. 0 0 0 0 2013/2014 Fundamentos de Programação 19 1 1 1 1 0123456789101112131415 Suponhamos… Com 4 bits representamos 16 inteiros com valores entre 0 e 15. Com n bits representamos 2n inteiros com valores entre 0 e 2n-1.
  • 20. 0 0 0 0 2013/2014 Fundamentos de Programação 20 0 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
  • 21. 0 0 0 0 2013/2014 Fundamentos de Programação 21 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
  • 22. 2013/2014 Fundamentos de Programação 22 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
  • 23. Negativos Positivos 2013/2014 Fundamentos de Programação 23 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 789 10 11 12 13 14 15 +1 -1 1000 1001 1010 1011 1100 1101 1110 1111 Primeiro bit simpático para identificar valores negativos.
  • 24. Negativos Positivos 2013/2014 Fundamentos de Programação 24 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7-8-7 -6 -5 -4 -3 -2 -1 +1 -1 1000 1001 1010 1011 1100 1101 1110 1111 +1 -1
  • 25. 2013/2014 Fundamentos de Programação 25 Negativos Positivos 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7-8-7 -6 -5 -4 -3 -2 -1 +1 -1 1000 1001 1010 1011 1100 1101 1110 1111 +1 -1
  • 26. 7 + 1 = -8 6 + 2 = -8 5 + 4 = -7 -8 - 1 = 7 -5 - 6 = 5 2013/2014 Fundamentos de Programação 26 Negativos Positivos 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7-8-7 -6 -5 -4 -3 -2 -1 +1 -1 1000 1001 1010 1011 1100 1101 1110 1111 +1 -1
  • 27. 2013/2014 Fundamentos de Programação 27 0…0 00…01 0… 0… 01…11 0 1 … 2n-1-1-2n-1 … -1 10…00 10…01 1… 1… 11…11
  • 28. (231 -1) + 1 = -231 -231 - 1 = 231 - 1 ou seja, 2147483647 + 1 = -2147483648 -2147483648 - 1 = 2147483647 2013/2014 Fundamentos de Programação 28 0…0 00…01 0… 0… 01…11 0 1 … 231-1-231 … -1 10…00 10…01 1… 1… 11…11
  • 29. final int minimum = Integer.MIN_VALUE; final int maximum = Integer.MAX_VALUE; out.println(minimum); out.println(maximum); 2013/2014 Fundamentos de Programação 29 _-2147483648 _ -2147483648 2147483647 _ Também estão definidos os extremos dos outros tipos inteiros.
  • 30. 2013/2014 Fundamentos de Programação 30 Tipo Bits Valor mínimo Valor máximo byte 8 -128 127 short 16 -32768 32767 int 32 -2147483648 2147483647 long 64 -9223372036854775808 9223372036854775807
  • 31. import java.math.BigInteger; … public class BigIntegerTester { public static BigInteger factorialOf(BigInteger n) { BigInteger factorial = BigInteger.valueOf(1); while (n != BigInteger.ZERO) { factorial = factorial.multiply(n); n = n.subtract(BigInteger.ONE); } return factorial; } public static void main(final String[] arguments) { out.println("Number of different deck shuffles: " + factorialOf(BigInteger.valueOf(52))); } } 2013/2014 Fundamentos de Programação 31
  • 32.  Enumerações em Java  Instrução de selecção switch  Limites dos tipos inteiros  Classe especial BigInteger 2013/2014 Fundamentos de Programação 32
  • 33.  Enumerações no JavaTutorial  Classe BigInteger na API do Java 7 2013/2014 Fundamentos de Programação 33
  • 34.  Enumerações  Instrução de selecção switch  Gama limitada dos tipos inteiros 2013/2014 Fundamentos de Programação 34