Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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
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?
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;...
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
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″};
LIC 2020
© Julio Arakaki Ciência da Computação
6
Matriz (inicialização)Matriz (inicialização)
09/03/20 08:41
Em Java:
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
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;
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?
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.
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”;
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.
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)); }
...
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]);
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