Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

15
Aula 5 Manipulação de caracteres Relação entre os tipos char e int Tipos de valor vs. tipos de referência

description

Apresentação da semana 5 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.

Transcript of Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Page 1: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Aula 5

Manipulação de caracteresRelação entre os tipos char e intTipos de valor vs. tipos de referência

Page 2: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 2

Da aula anterior…

Atribuições especiais

Matrizes em Java

Tipos de ciclos (ciclo for)

Classes pacote

2010/2011

Page 3: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 3

Tipo primitivo char

Cada variável char guarda um caractere

Valores literais entre plicas

Exemplo char letter = 'k';

2010/2011

k

letter

k

letter : char ou

Page 4: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 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

… …

2010/2011

Sem marcas

diacríticas!

Page 5: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 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;

2010/2011

b

original

98

code

b

recovered

Page 6: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 6

Caracteres: operadores aritméticos

char letter1 = 'c';letter1++;

char letter2 = 'b';letter2--;

int difference = letter1 – letter2;

2010/2011

100 - 97

c

letter1

b

letter2

3

difference

d

letter1

a

letter2

Page 7: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 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

2010/2011

Page 8: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 8

Exemplo: matriz 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);

2010/2011

Page 9: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 9

Variáveis que guardam

referências.

Atribuição: valor vs. referênciaTipos primitivos (int, boolean, etc.)int a = 7;int b = a;int c;

Tipos de referência (matrizes, classes)int[] a = {1, 2, 3};int[] b = a;int[] c;

2010/2011

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.

Page 10: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Invocação: passagem por valorpublic static void increment(int value) { value++;}

… main(…) { int number = 3;

increment(number);

out.println(number);}

19-10-2010 Introdução à Programação 10

value = number

3

number

3

value

4

value

Que aparece?

Page 11: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Invocação: passagem por valor de uma referência

public static void incrementFirstOf(final int[] values) { values[0]++;}

… main(…) { int[] numbers = {1, 2, 3, 4};

incrementFirstOf(numbers);

out.println(numbers[0]);}

19-10-2010 Introdução à Programação 11

values = numbers

numbers

values

Que aparece?

2 1 0

0 1 2 3

43

Page 12: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 12

Problema: Cifra de César

2010/2011

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

Page 13: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 13

A reter

Manipulação de caracteres

Relação entre os tipos char e int

Tipos de valor vs. tipos de referência

2010/2011

Page 14: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 14

A ler...

Capítulos 1 a 4 do livro:

Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6

2010/2011

Page 15: Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência

Introdução à Programação - DCTI - ISCTE-IUL 15

Sumário

Manipulação de caracteres

Relação entre os tipos char e int

Tipos de valor vs. tipos de referência

2010/2011