Upload
maria-fernanda-alvaro-paixao
View
220
Download
3
Embed Size (px)
Citation preview
Programação I
Arrays
Arrays
O que são arrays: estruturas de dados homogêneas coleção de elementos do mesmo tipo
referenciada por um nome comum um array pode ser imaginado como uma
linha em uma tabela são usados para ordenação e busca
Arrays
Arrays são compostos por posições contíguas na memória
Exemplo: um array de 4 elementos
Arrays
Como declarar arrays: <tipo dos elementos> <nome> [<número de
elementos>];
Exemplo:int v[10];float notas[4];
Arrays
<tipo> <nome> [<número de elementos>];
tipo: o tipo de dado que o array armazena. Arrays só podem armazenar um único tipo
nome: qualquer identificador válido. Mesmas regras de identificadores de variáveis
número de elementos: array são estruturas estáticas, portanto o tamanho é definido na declaração
Acessando elementos do array Os elementos são acessados por meio
do nome seguido do índice do elemento O índice do primeiro elemento é O (zero)
e do último é n-1, sendo n o número de elementos
Exemplo:int a[3]; primeiro elemento : a[0] segundo elemento: a[1] terceiro elemento: a[2]
Acessando elementos do array Para atribuir valor ao elemento do array:
a[2] = 10; //armazena 10 no elemento de índice 2
Para usar o valor do elemento do array:
soma = a[0] + a[1];
Acessando elementos do array Acessar um array sem especificar o
índice é um erro de sintaxe
int a[10];a = 99; //errocout << a; //erro
Acessando elementos do array Acessar um elemento “fora” do array é
um erro de lógica e traz resultados inesperados em tempo de execução
int a[10];… soma = soma + a[10];
Inicializando arrays
Com estrutura de repetição
int arr[10]; int i = 0; for(i=0; i<10; i++) {
arr[i] = 0; }
Inicializando arrays
Atribuindo valor a cada elemento
char vogais[5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
int a[3] = { 1, 4, 9};
Inicializando arrays
Atribuindo valor zero a todos os elementos
int a[100] = {0}; //isto funciona
No entanto
int a[100] = {-1}; //isto não funciona!
Array de caracteres
Arrays de caracteres possuem certas características próprias
A principal diferença entre este tipo e os arrays numéricos é que eles podem ser tratados como palavras ou frases
Por exemplo, é possível “ler” todos os caracteres de uma vez só
Array de caracteres
Declarando um array de char:
char palavra[30];
Declarando e inicializando:
char vogais[6]={ ‘a’, ‘b’, ‘c’, ‘d’, ‘e’};ou
char vogais[6]=“aeiou”; // isto pode na declaração
Array de caracteres
Arrays de char devem reservar a última posição para o terminador ‘\0’ ou caractere NULL
Isto é especialmente importante quando a “palavra” não ocupa todas as posições
Exemplochar p[30] = “teste”;
Internamente será armazenado“teste\0” sobrando 24 posições
Array de caracteres
Atribuição de valoresa[0]=‘x’;a[1]=‘y’;
No entanto:a = “xy”; // isto é um erro
a[1] = “x” // isto é um erro
Array de caracteres
Lendo valores Não use cin
Para ler arrays de caracteres gets( <array>) ; não faz verificação de tamanho
Esta função faz parte de <cstdio>
Array de caracteres
Lendo valores – exemplo
char a[10]; gets(a);
Lê uma palavra ou frase e coloca cada letra em uma posição do array, a partir da posição 0
Array de caracteres
mostrando valores – exemplo
char a[10]; …
puts(a); //exibe o conteúdo do array
Oucout << a;
Array de caracteres
Outras funções para caracteres tolower(<caractere>) - converte para
minúsculo toupper (<caractere>) – converte para
maiúsculo isspace (<caractere>) - retorna
verdadeiro se o caractere for um espaço em branco
isdigit (<caractere>) - verifica se o caractere é um número decimal
Outras funções para arrays de caracteres strcpy(<destino>, <conteúdo>); Exemplo
char frase[50];
frase = “teste”; // isto é um erro
strcpy(frase, “teste”); // copia a cadeia // “teste” no array frase
Outras funções para arrays de caracteres strcmp(<array>, <array>); compara se dois arrays são iguais Exemplo
char palavra[50], outraPalavra[50];
if (frase == “teste”) // isto é um erro
strcmp(palavra, outraPalavra)
Outras funções para arrays de caracteres strcmp( ) é uma função que recebe
duas cadeias de caracteres e retorna:
0, se as duas cadeias forem iguais -1, se a primeira for menor que a segunda 1, se a primeira for maior que a segunda
Array de duas dimensões
Arrays podem ter mais de uma dimensão Arrays de duas dimensões podem ser
vistos como tabelas e geralmente são chamados de matrizes
Matrizes são conjuntos de dados arranjados na forma de linhas e colunas
Para identificar um elemento na tabela é necessário indicar a linha e coluna do elemento (célula)
Array de duas dimensões
Array de duas dimensões
Declarando arrays de duas dimensões
int a[3][4];
Inicializando na declaração
int a[2][2] = {{ o,o}, {0,0}};
Array de duas dimensões
Inicializando com estrutura de repetição
int a[3][4];for (i=0; i < 3; i++){
for (j=0; j < 4; j++){a[i][j] = 0;
}}
Array de duas dimensões
Inicializando com estrutura de repetição
int a[3][4];for (i=0; i < 3; i++){for (j=0; j < 4; j++){a[i][j] = 0;}} sempre é necessário referenciar alinha e coluna
Array de duas dimensões
Lendo os dados de uma matriz
int a[3][4];for (i=0; i < 3; i++){
for (j=0; j < 4; j++){cin >> [i][j];
}}
Array de duas dimensões
Mostrando os dados de uma matriz
int a[3][4];for (i=0; i < 3; i++){for (j=0; j < 4; j++){cout << [i][j] << “\t”;}cout << endl; //muda a linha}
Busca em Arrays
Uma busca consiste em saber: se um dado elemento está no array quantas ocorrências do elemento
procurado existem no array Exemplo:
Dado um número de candidato, saber se ele está na lista dos aprovados
Busca em Arrays
Exemplo:…bool achou = false;
while (i < TAM){ if (lista[i] == elemento){ achou = true; } i++; }
Busca em Arrays
Exemplo melhorado:…bool achou = false;
while (i < TAM && !achou){ if (lista[i] == elemento){ achou = true; } i++; }