6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos de Programação
-
Upload
manuel-menezes-de-sequeira -
Category
Education
-
view
968 -
download
1
description
Transcript of 6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos de Programação
Apresentação 6
Manipulação de caracteresRelação entre os tipos char e intTipos de valor vs. tipos de referência
Fundamentos de Programação 2
Da apresentação anterior…
Atribuições especiais
Arrays em Java
Instruções de iteração: while e do-while for e foreach
Classes-pacote2013/2014
Fundamentos de Programação 3
Tipo primitivo char
Cada variável char guarda um caractere
Valores literais entre plicas
Exemplo char letter = 'k';
2013/2014
‘k’
letter
‘k’
letter : char ou
Fundamentos de Programação 4
Caracteres: códigos
Cada caractere tem código único
Códigos de letras latinas Consecutivos Ordem alfabética Minúsculas e
maiúsculas separadas
Caractere Código
… …
A 65
… …
Z 90
… …
a 97
… …
z 122
… …
2013/2014
Sem marcas
diacríticas!
Fundamentos de Programação 5
Conversão entre char e int
Caracteres convertíveis para códigos
Códigos convertíveis para caracteres
Exemplo char original = 'b'; int code = (int) original; char recovered = (char) code;
2013/2014
‘b’
original
98
code
‘b’
recovered
Fundamentos de Programação 6
Caracteres: operadores aritméticos
char letter1 = 'c';letter1++;
char letter2 = 'b';letter2--;
final int difference = letter1 - letter2;
2013/2014
100 - 97
‘c’
letter1
‘b’
letter2
3
difference
‘d’
letter1
‘a’
letter2
Fundamentos de Programação 7
Caracteres: operadores relacionais
Comparam códigos!
Exemplos c > 'a' – Caractere em c tem código
superior ao de ‘a’ c1 <= c2 – Caractere em c1 tem código
não superior ao caractere em c2
2013/2014
Fundamentos de Programação 8
Exemplo: array com minúsculas por ordem alfabética
final int numberOfLetters = 'z' - 'a' + 1; // 26
final char[] letters = new char[numberOfLetters];
for(int i = 0; i != letters.length; i++)
letters[i] = (char) ('a' + i);
2013/2014
Fundamentos de Programação 9
Problema: Cifra de César
2013/2014
Saiba mais na Wikipédia.
Cifra com deslocação
de 2.
a b c x y z…
a b c d e z…
a t a c a r
c v c e c t
cifra
Fundamentos de Programação 10
Variáveis que guardam
referências.
Atribuição: valor vs. referênciaTipos de valor (int, boolean, etc.)int a = 7;int b = a;int c;
Tipos de referência (arrays, classes)int[] a = {1, 2, 3};int[] b = a;int[] c;
2013/2014
7
a
7
b
0
c
Excepto no caso de
variáveis locais.
Variáveis locais têm sempre de
ser inicializadas
explicitamente.
a
b
null
c
Excepto no caso de
variáveis locais.
Variáveis locais têm sempre de
ser inicializadas
explicitamente.
1 2 3
0 1 2
Variáveis que guardam valores.
Valor especial significando
«não referencia
nada».
Invocação: passagem por valorpublic static void increment(int value) { value++;}
… main(…) { int number = 3;
increment(number);
out.println(number);}
2013/2014 Fundamentos de Programação 11
Que aparece?
Pois! Este procedimento está errado!
Invocação: passagem por valorpublic static void increment(int value) { value++;}
… main(…) { int number = 3;
increment(number);
out.println(number);}
2013/2014 Fundamentos de Programação 12
value = number
3
number
3
value
4
value
Aparece 3!
Invocação: passagem por valor de uma referência
public static void incrementFirstOf(final int[] values) { values[0]++;}
… main(…) { final int[] numbers = {3, 2, 1, 0};
incrementFirstOf(numbers);
out.println(numbers[0]);}
2013/2014 Fundamentos de Programação 13
Que aparece?
Invocação: passagem por valor de uma referência
public static void incrementFirstOf(final int[] values) { values[0]++;}
… main(…) { int[] numbers = {3, 2, 1, 0};
incrementFirstOf(numbers);
out.println(numbers[0]);}
2013/2014 Fundamentos de Programação 14
values = numbers
numbers
values
Aparece 4!
2 1 0
0 1 2 3
43
Fundamentos de Programação 15
A reter
Manipulação de caracteres
Relação entre os tipos char e int
Tipos de valor vs. tipos de referência
2013/2014
Fundamentos de Programação 16
Sumário
Manipulação de caracteres
Relação entre os tipos char e int
Tipos de valor vs. tipos de referência
2013/2014