340 likes | 406 Views
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.
E N D
Arrays • O quesão arrays: • estruturas de dados homogêneas • coleção de elementos do mesmotiporeferenciadapor um nomecomum • um array pode ser imaginadocomoumalinhaemumatabela • sãousadosparaordenação e busca
Arrays • Arrays sãocompostosporposiçõescontíguasnamemó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ópodemarmazenar um únicotipo • nome: qualqueridentificadorválido. Mesmasregras de identificadores de variáveis • número de elementos: array sãoestruturasestáticas, portanto o tamanho é definidonadeclaração
Acessandoelementos do array • Os elementossãoacessadospormeio do nomeseguido do índice do elemento • O índice do primeiroelemento é O (zero) e do último é n-1, sendo n o número de elementos • Exemplo: int a[3]; • primeiroelemento : a[0] • segundoelemento: a[1] • terceiroelemento: a[2]
Acessandoelementos do array • Para atribuir valor aoelemento 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];
Acessandoelementos do array • Acessar um array semespecificar o índice é um erro de sintaxe int a[10]; a = 99; //erro cout << a; //erro
Acessandoelementos do array • Acessar um elemento “fora” do array é um erro de lógica e trazresultadosinesperadosem tempo de execução int a[10]; … soma = soma + a[10];
Inicializando arrays • Com estrutura de repetição intarr[10]; int i = 0; for(i=0; i<10; i++) { arr[i] = 0; }
Inicializando arrays • Atribuindo valor a cadaelemento char vogais[5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’}; int a[3] = { 1, 4, 9};
Inicializando arrays • Atribuindo valor zero a todososelementos int a[100] = {0}; //istofunciona • No entanto int a[100] = {-1}; //istonãofunciona!
Array de caracteres • Arrays de caracteres possuem certas características próprias • A principal diferença entre estetipo e os arrays numéricos é queelespodem ser tratadoscomopalavrasoufrases • Porexemplo, é possível “ler” todososcaracteres de umavezsó
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”; // istopodenadeclaração
Array de caracteres • Arrays de char devemreservar a últimaposiçãopara o terminador ‘\0’ oucaractere NULL • Isto é especialmenteimportantequando a “palavra” nãoocupatodas as posições • Exemplo char p[30] = “teste”; • Internamenteseráarmazenado “teste\0” sobrando 24 posições
Array de caracteres • Atribuição de valores a[0]=‘x’; a[1]=‘y’; • No entanto: a = “xy”; // isto é um erro a[1] = “x” // isto é um erro
Array de caracteres • Lendovalores • Não use cin • Para ler arrays de caracteres • gets( <array>) ; • nãofazverificação de tamanho • Estafunçãofazparte de <cstdio>
Array de caracteres • Lendovalores – exemplo char a[10]; gets(a); • Lêumapalavraoufrase e colocacadaletraemumaposição do array, a partirdaposição0
Array de caracteres • mostrandovalores – exemplo char a[10]; … puts(a); //exibe o conteúdo do array • Ou cout << a;
Array de caracteres • Outrasfunçõesparacaracteres • tolower(<caractere>) - converteparaminúsculo • toupper (<caractere>) – converteparamaiúsculo • isspace (<caractere>) - retornaverdadeiro se o caractere for um espaçoembranco • isdigit (<caractere>) - verifica se o caractere é um número decimal
Outrasfunçõespara 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
Outrasfunçõespara arrays de caracteres • strcmp(<array>, <array>); • compara se dois arrays sãoiguais • Exemplo char palavra[50], outraPalavra[50]; if (frase == “teste”)// isto é um erro strcmp(palavra, outraPalavra)
Outrasfunçõespara arrays de caracteres • strcmp( ) é umafunçãoquerecebeduascadeias de caracteres e retorna: • 0, se as duascadeiasforemiguais • -1, se a primeira for menorque a segunda • 1, se a primeira for maiorque a segunda
Array de duasdimensões • Arrays podemtermais de umadimensão • Arrays de duasdimensõespodem ser vistoscomotabelas e geralmentesãochamados de matrizes • Matrizessãoconjuntos de dados arranjadosna forma de linhas e colunas • Para identificar um elementonatabela é necessárioindicar a linha e coluna do elemento (célula)
Array de duasdimensões • Declarando arrays de duasdimensões int a[3][4]; • Inicializandonadeclaração int a[2][2] = {{ o,o}, {0,0}};
Array de duasdimensõ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 duasdimensõ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árioreferenciar a linha e coluna
Array de duasdimensões • Lendoos dados de umamatriz int a[3][4]; for (i=0; i < 3; i++){ for (j=0; j < 4; j++){ cin >> [i][j]; } }
Array de duasdimensões • Mostrandoos dados de umamatriz 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 }
Buscaem Arrays • Umabuscaconsisteem saber: • se um dado elementoestá no array • quantasocorrências do elementoprocuradoexistem no array • Exemplo: • Dado um número de candidato, saber se eleestánalista dos aprovados
Buscaem Arrays • Exemplo: … boolachou = false; while(i < TAM){ if(lista[i] == elemento){ achou = true; } i++; }
Buscaem Arrays • Exemplomelhorado: … boolachou = false; while(i < TAM && !achou){ if(lista[i] == elemento){ achou = true; } i++; }