O que são arrays: estruturas de dados homogêneas coleção de elementos do mesmo tipo...

Post on 07-Apr-2016

218 views 3 download

Transcript of O que são arrays: estruturas de dados homogêneas coleção de elementos do mesmo tipo...

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++; }