arrays”, vetor de caracteres e stringarrays”, vetor de ...jarakaki/lic/semana8.pdf · cadeia de...

15
LIC 2020 © Julio Arakaki Ciência da Computação 1 “Arrays”, vetor de caracteres e string “Arrays”, vetor de caracteres e string Prof. Julio Arakaki Ciência da Computação

Upload: others

Post on 10-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

1

“Arrays”, vetor de caracteres e string“Arrays”, vetor de caracteres e string

Prof. Julio Arakaki

Ciência da Computação

Page 2: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

2

Array (Matriz)Array (Matriz)

09/03/20 08:41

Tipo agregado homogêneo de dados.Cada elemento é identificado pela sua posição neste agregado (em relação ao primeiro elemento).

Dois tipos distintos estão envolvidos em matrizes: tipo do elemento e tipo do índice.

Para referenciar os elementos, utiliza-se índices e/ou expressões com os índices.

Em C, C++, Java e C#, todos elementos de uma matriz precisam ser do mesmo tipo.

Questões: qual o tipo do índice? Quando uma matriz é alocada? Como inicializar uma matriz? Matrizes multidimensionais são permitidas?

Page 3: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

3

Matriz (acesso)Matriz (acesso)

09/03/20 08:41

Indexação ou acesso aos elementos de uma matriz, é feito através do mapeamento de índices para estes elementos:

nome_matriz (valor_do_indice) => elemento

- Fortran e Ada utiliza parênteses.

- A maioria das linguagens utilizam colchetes.

Em C e C++:double valores[10]; ...valores[0] = -4.56;...valores[4] = 3.14;...

Page 4: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

4

Matriz (acesso)Matriz (acesso)

09/03/20 08:41

Em Java:

Em C, C++, C#, Java, o índice começa em 0

Page 5: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

5

Matriz (inicialização)Matriz (inicialização)

09/03/20 08:41

C, C++, Java, C#

int list [] = {4, 5, 7, 83};

Strings em C and C++

char name [] = ″freddie″;

Arrays de strings em C e C++

char *names [] = {″Bob″, ″Jake″, ″Joe″};

String em java

String[] names = {″Bob″, ″Jake″, ″Joe″};

Page 6: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

6

Matriz (inicialização)Matriz (inicialização)

09/03/20 08:41

Em Java:

Page 7: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

7

Matriz (inicialização)Matriz (inicialização)

09/03/20 08:41

Em Java:111 222

333 444

0 1

0

1

Page 8: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

8

Exemplos (em java)Exemplos (em java)

09/03/20 08:41

double [ ] data = new double[10]; // cria a rray para 10 doubles

Nota notas[ ] = new Nota[5]; // cria array para 10 objetos do tipo Nota

data[2] = 29.95;

Page 9: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

9

Exemplos (em java)Exemplos (em java)

09/03/20 08:41

String s = “abc”; // s.length()

char [] vetc = {‘a’, ‘b’, ‘c’}; // vetc.length

Como imprimir cada caractere nos dois casos?

Page 10: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

10

Cadeia de caracteres (“String”)Cadeia de caracteres (“String”)

09/03/20 08:41

Um tipo cadeia de caracteres corresponde a uma sequência de caracteres.

Questões: – Deve ser um “array” (vetor) de caracteres ou um tipo

primitivo?– Devem ter tamanho estático ou dinâmico?

Operações mais comuns: atribuição, concatenação, referência, sub-cadeias, comparação.

A maioria das linguagens oferecem bibliotecas de funções ou bibliotecas de classes para realizar a manipulação das cadeias de caracteres.

Page 11: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

11

Cadeia de caracteres (“String”)Cadeia de caracteres (“String”)

09/03/20 08:41

Em C e C++, utiliza-se vetor (array unidimensional) do tipo char: char str[] = “texto”;

Neste caso, internamente é utilizado um caractere especial (nulo: ‘/0’ ) como um terminador de sequência.

Ex. de funções de biblioteca mais usadas para cadeias de caracteres em C e C++ são: strcpy, strcat, strcmp e strlen.

Estas funções são inerentemente inseguras: strcpy (dest, orig);

Pode ocorrer transbordamento (“overflow”). Ou seja, se o tamanho de dest for 5 e orig for 10:

char dest[5];char orig[] = “1234567890”;

Page 12: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

12

Cadeia de caracteres (“String”)Cadeia de caracteres (“String”)

09/03/20 08:41

Em java tem as classes String (imutáveis) e StringBuffer (mutáveis).

C# e Ruby também tem classes similares a Java para manipulação de cadeias de caracteres.

Em Python cadeia de caracteres é um tipo primitivo.

Page 13: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

13

Cadeia de caracteres (“String”)Cadeia de caracteres (“String”)

09/03/20 08:41

Exemplo em java:

... String s = "Ze "; s += "Maria"; for (int i = 0; i < s.length(); i++){ System.out.println(s.charAt(i)); }

...

Page 14: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

14

Exercícios/discussãoExercícios/discussão

09/03/20 08:41

• Qual a aplicação de array numa linguagem de programação?

• Array de caracteres e String qual a diferença?• O que será impresso no código a seguir? Se

houver erro, descreva e especifique se ele é detectado em tempo de compilação ou em tempo de execução.

double[] a = new double[10]; System.out.println(a[0]);

double[] b = new double[10];System.out.println(b[10]);

double[] c; System.out.println(c[0]);

Page 15: Arrays”, vetor de caracteres e stringArrays”, vetor de ...jarakaki/lic/Semana8.pdf · Cadeia de caracteres (“String”)Cadeia de caracteres (“String”) 09/03/20 08:41 Em

LIC 2020

© Julio Arakaki Ciência da Computação

15

Referência BibliográficaReferência Bibliográfica

1. Sebesta, Robert. “Conceitos de Linguagem de Programação”, 11a. Ed. Porto Alegre, Bookman, 2018.

2. Horstmann, Cay, “Conceitos de Computação com Java”. 5a. Ed. – Dados eletronicos – Porto Alegre, Bookman, 2009.

09/03/20 08:41