Escolar Documentos
Profissional Documentos
Cultura Documentos
Captulo 06 Arrays
Filipe Marques
Arrays
Introduo
Um array um conjunto de elementos consecutivos do mesmo tipo, que podem ser acedidos individualmente a partir de um nico nome. Por exemplo, se desejarmos armazenar o volume de vendas efectuado em cada ms de uma determinada empresa, podemos declarar um array de 12 posies. Cada posio vai conter o volume mensal, correspondendo a primeira posio ao volume de vendas de Janeiro, a Segunda posio ao volume de vendas de Fevereiro, etc. Desta forma, evitamos que tenham de ser declaradas 12 variveis, sendo colocada toda a informao numa s varivel.
Declarao de Arrays
A declarao de um array com uma nica dimenso obedece seguinte sintaxe:
int dados[30];
Para declarar um array de 50 reais:
float vencimentos[50];
Para identificar cada elemento do array necessrio um ndice que indique qual a sua posio no array. Assim, vencimentos[i] indica aquilo que est na posio i do array vencimentos. Por exemplo, se pretendermos declarar um array de 6 inteiros denominado comissoes:
Pgina 2
Filipe Marques
Arrays
int comissoes[6];
comissoes[0] comissoes[1] comissoes[2] comissoes[3] comissoes[4] Comissoes[5]
Em C todos os ndices de um array com n elementos varia entre 0 e n-1, sendo cada elemento acedido atravs dos parntesis rectos. Por exemplo, colocar o valor 230 na primeira posio do array:
comissoes[0] = 230;
230
comissoes[0] comissoes[1] comissoes[2] comissoes[3] comissoes[4] Comissoes[5]
Por exemplo, para colocar na ltima posio o triplo do valor do primeiro elemento:
comissoes[5] = comissoes[0]*3;
230 690
comissoes[0] comissoes[1] comissoes[2] comissoes[3] comissoes[4] Comissoes[5]
Dado que os arrays comeam em 0, o n-simo elemento est sempre na posio (ou ndice) n-1. O seguinte extracto de cdigo coloca em cada posio do array o ndice respectivo.
Pgina 3
Filipe Marques
Arrays
#include <stdio.h> main() { float sal[12]; float total; int i; /* Leitura dos valores*/ for (i=0; i<12 ; i++) { printf("Introd. o salrio do mes %d:",i+1); scanf("%f",&sal[i]); } /* Mostrar os valores Mensais e calcular o total */ puts(" Mes Valor "); for (i=0, total=0.0 ; i<12 ; i++) { printf(" %3d %9.2f\n",i+1,sal[i]);
Pgina 4 Filipe Marques
Arrays
Constantes
Os programas devem ser escritos de forma que se for pretendida uma pequena alterao no seja necessrio efectuar grandes alteraes no cdigo dos programas. Suponhamos o seguinte programa:
#include <stdio.h> main() { int v[10], i; for(i=0;i<10;i++) v[i]=0; for(i=0;i<10;i++) v[i]=i; for(i=10-1;i>=0;i--) printf("%d\n",v[i]); }
Este programa funciona para um array de 10 elementos, no entanto, se for necessrio alter-lo de forma a utilizar um array de 25 elementos tem de ser feita alterao em quatro locais especficos do programa. Agora imagine que em vez deste programa tinha um programa com milhares de linhas de cdigo ...
Pgina 5 Filipe Marques
Arrays
Para resolvermos este tipo de problemas devemos utilizar constantes. Normalmente a definio das constantes deve ser feita imediatamente a seguir aos includes, podendo ser realizada de duas formas diferentes. Imaginemos que pretendemos definir a constante NUM com o valor fixo de 10. const int NUM = 10; #define NUM 10 Se efectussemos esta definio no programa anterior apenas necessitvamos de efectuar uma alterao no cdigo do programa. Enquanto que uma constante definida com const existe fisicamente numa determinada posio de memria, a constante definida com #define apenas uma forma de substituio de todas as ocorrncias na fase de prprocessamento, isto , antes da fase de compilao. O tipo definido em #define o tipo que resulta da expresso que aparece na componente do valor. Dado que o #define no faz parte da linguagem C, no seguida de ponto e vrgula.
Arrays Multi-Dimensionais
At agora, apenas usamos arrays de uma dimenso. Mas, por exemplo, para implementar o famoso jogo do galo precisamos de um array de 2 dimenses, ou mais vulgarmente conhecido como matriz. Como cada quadrcula pode conter um X, um 0 ou um espao em branco, teremos de considerar um array de caracteres. Assim, poderamos definir da seguinte forma um array de 3 linhas e 3 colunas.
Pgina 6
Filipe Marques
Arrays
Exerccios
Escreva um programa que declare um array com 10 nmeros inteiros e coloque posteriormente em cada uma das posies o valor do seu ndice. Dever posteriormente imprimir os valores do array. #include <stdio.h> #define N 10 main() { int v[N],i; for (i=0;i<N;i++) v[i] = i;
for (i=0;i<N;i++) printf("%d\n",v[i]); } Escreva um programa que apresente o maior nmero de um array de 10 nmeros reais. #include <stdio.h> #define N 10 main() { float x[] = {60.0,20.0,15.0,50.0,27.0,12.0,3.0,30.0,55.0,62.0}; int i; float maior = x[0]; for (i=1; i<N; i++) if (x[i] > maior) maior = x[i]; printf("Maior elemento = %f\n",maior); }
Pgina 7 Filipe Marques
Arrays
Escreva um programa que coloque nas n primeiras posies de um array de 5 caracteres um determinado caractere. Dever posteriormente imprimir os valores do array. #include<stdio.h> main() { char s[5]={'a','b','c','d','e'}; int i,num,car; printf("Quantos quer escrever? "); scanf("%d",&num); printf("O que quer escrever? "); scanf(" %c",&car); for(i=0; i<num; i++) s[i] = car; for(i=0; i<5; i++) printf("%c\n",s[i]); } Escreva um programa que verifique se os primeiros n elementos de dois arrays de 5 inteiros so iguais ou no. #include<stdio.h> main() { int s1[5]={1,2,3,4,5}; int s2[5]={1,2,3,4,6}; int i,num; printf("Quantos quer comparar? "); scanf("%d",&num); for(i=0; i<num; i++) if (s1[i] != s2[i]) {
Pgina 8 Filipe Marques
Arrays
Pgina 9
Filipe Marques