Você está na página 1de 8

Arrays

Imagineumprogramaondeprecisa=searmazenarasnotasde8provas realizadasporumaluno.Comosconhecimentosquevocpossuiat agora,serianecessriocriaroitovariveisparaarmazenarasnotas.Desta forma: *nota1,nota,2,nota3,nota4nota5,nota6,nota7,nota8:integer; *Empascalexistemestruturasquenospermitemagruparvarias informaesdentrodeumamesmavarivel.Estasestruturasso chamadasdearraysecorrespondemaconjuntosdeelementosdeum mesmotiporepresentadosporumniconome. *Osarrayspodemvariarquantoasuadimenso,isto,aquantidadede ndicesnecessriaparaaindividualizaodecadaelementodoconjunto. Oarrayunidimensionaltambmconhecidoporvetorenquantooarray bidimensionaldenominadodematriz. VETOR Asvariveiscompostas,maisconhecidascomoarrays, correspondemaconjuntosdeelementosdeummesmotipo, representadosporumniconome. Sintaxe <array>:ARRAY[INDICEINICIAL...INDICEFINAL]OF<TIPO>; OUSEJA; <nota>:array[nota1..nota8]OF<integer>; ARRAYumapalavrareservadadopascal INDICEINICIALolimiteinferiordointervalodevariaodo ndice INDICEFINALolimitesuperiordointervalodevariaodondice TIPOOTIPODOSCOMPONENTESDAVARIAVEL OINDICEFINALeoINDICEFINALdevemserdomesmotipo escalar(inteiro,caracter,oubooleano.

Comojvisto,umavarivelsomentepodeconterumvalorporvez. Nocasodosvetores,estespoderoarmazenarmaisdeumavalor porvez,poissodimensionadosexatamenteparaestefim. Vejamoscomopoderamosdeclararumvetorparaarmazenaras8 notasdeumaaluno; Declarao;VARnota:array[1..8]OFreal; Nota1 Nota2 Nota3 Nota4 Nota5 Nota6 Nota7 Nota8 VarivelarrayNOTA Exemplo Nota[1]:=5.2 Nota[2]:=8.0 Nota[3]:=9.2 Nota[4]:=7.5 Nota[5]:=8.3 Nota[6]:=10 Nota[7]:=6.3 Nota[8]:=9.7 5.2 8.0 9.2 7.5 8.3 10 6.3 9.7 Nota[1]Nota[2]Nota[3]Nota[4]Nota[5]Nota[6]Nota[7]Nota[8] Forcont:=1TO8DO Readln(nota[cont]) Notequeonomeums(nota),oquemudaainformao dentrodoconchetes.Aestainformaodamosonomedendice sendoesteoendereoondeovalorestarmazenado,ousejaa notadoaluno.Podemosimaginarovetorcomoumatabelade8 colunas.

Observaes; EmPascalpodemosdefinirarraysquenocomecem obrigatoriamentenaprimeiraposio(ndiceinicialdiferentede1). Exemplo;VARTABELA:ARRAY[10..30]OFINTEGER; Quandomanipulamososarrays,devemostrabalharcomum elementoporvez,ouseja,devemosler,escreverouatribuirvalores indicandoondiceinicialdequalelementoespecificamente estamosnosreferenciado Quandousamosumavarivelcomondicedeumarray,umerro muitocomumoestourodafaixaespecificada,ouseja,suponha queumarrayVetortenhasidodefinidoscomndicesquevariam1 at10,equeemnossoprogramavamosusaroseguintecomando vetor[ndice]:=3;.Vocpodeimaginaroqueacontecerseovalor davarivelndiceforumvalorsuperiora10?Comoporexemplo 45?Teremosgrandesproblemasnumcasocomoeste MATRIZ Matrizessoarraysquenecessitamde2indicesparaindividualizar umelentodoconjunto.Oprimeirondicerepresentaaslinhaso segundoascolunas. Vamosimaginarquequeremosreescreveroprogramadasnotasdo aluno.Agoramantendoocontroleparacincoalunosaoinvsde apenasum.Comosconhecimentosadquiridosatagoraseria necessriocriar5vetores(matrizesunidimensionais),umparacada aluno.Estaumasoluoefuncionaporem,tornanossotrabalho maiscansativo.Parafacilitarnossotrabalhocomestruturasdeste porte,existemaschamadasmatries(oumatrizes multidimensionais,sevocpensarquevetoressomatrizes unidimensionais.Amaiscomumamatrizde2dimenses. Sintaxe

<matriz>:ARRAY[INDICE1INICIAL..INDICE1FINAL,INDICE2 INICIAL..INDICE2FINAL]OF<TIPO>; <matriz>onomedavarivelquesedesejadeclarar INDICE1INICIALolimiteinferiordointervalodevariaodo primeirondice(linha) INDICE1FINALolimitesuperiordointervalodevariaodo primeirondice(linha) INDICE2INICIALolimiteinferiordointervalodevariaodo segundondice(linha) INDICE2FINALolimitesuperiordointervalodevariaodo segundondice(linha) <TIPO>;otipodoscomponentesdavarivel INDICE1INICIAL..INDICE1FINALdevemserdomesmotipoescalar (inteirocaracteroubooleano)assimdamesmoformadevesero INDICE2INICIALatoINDICE2FINAL. Vejamoscomoficariaamatrizdasnotasdos5alunos Declarao:NOTAS:array[1..5,1..4]OFreal; Notasiguala 1(lin)1(col) 2(lin) 3(lin) 4(lin) 2(col) 3(col) 4(col) 5(col) Para(lin)representaaslinhas. Para(col)representaascolunas. Ouseja5alunosnacoluna,paracadaaluno1linha E4notas,paracadalinhaumgrupodenotasparaumdeterminado aluno.

Daremosnomesaosalunosparamelhorentendimento;

a b c d f Pedro(a) Rosa(b) Carlos(c) Tomas(d) Jos(f)

TambmdaremosnotasasNotas. Nota1 Nota1 Nota1 Nota1 Nota1 Nota1,nota2,nota3,nota4para;(a)Pedro. Nota1,nota2,nota3,nota4para;(b)Rosa. Nota1,nota2,nota3,nota4para;(c)Carlos. Nota1,nota2,nota3,nota4para;(d)Tomas. Nota1,nota2,nota3,nota4para;(f)Jos. Nota2 Nota2 Nota2 Nota2 Nota2 Nota3 Nota3 Nota3 Nota3 Nota3 Nota4 Nota4 Nota4 Nota4 Nota4

Acessoamatriz Sobrevaloresguardadoeacessoacadaelementodamatriz,sendoque cadalinharepresentarumasequenciadenotaseemcadacolunauma determinadanotaparacadaaluno

Sendoque; Declarao:NOTAS:array[1..5,1..4]OFreal; Nota[1,1] Nota[2,1] Nota[3,1] Nota[4,1] Nota[5,1] Resultado 8.5 5.0 7.0 8.6 5.0 Agoradaremosparacadacolunaumamateria~ Geografia,historia,portugusematemtica Coluna1=geografa Coluna2=historia Coluna3=portugus Coluna4=matemtica 9.0 6.8 7.5 8.0 4.5 7.8 8.7 7.8 9.9 10 8.9 6.5 6.5 7.6 8.9 Nota[1,2] Nota[2,2] Nota[3,2] Nota[4,2] Nota[5,2] Nota[1,3] Nota[2,3] Nota[3,3] Nota[4,3] Nota[5,3] Nota[1,4] Nota[2,4] Nota[3,4] Nota[4,4] Nota[5,4]

Sendoassimcorretoafirmarque 1) Aluno(a)tevequalnotaemmatemtica? 2) Qualonomedoaluno(f)equalsuanotaemhistoria? 3) QuaissoasnotasdeRosa?

4) Tomastevequalnotaemgeografia? 5) Escrevaosnomesdosalunosquetiraramnotamaiorque7em historia. Acessandoamatriz Varrendodamatrizcomcomandoderepetio PROGRAMlerNOTAS; VAR Nomes:ARRAY[1..5,1..4]OFreal; linha,coluna:integer; BEGIN FORlinha:=1TO5DO FOR:=coluna:=1TO4DO READLN(notas[coluna,linha]); END. IMPORTANTELEMBRARQUEAOENTRARNOPRIMEIROLAO FOROPASCALVAILERTODOOLAODEDENTROPRAFORA,ou seja,elevailerprimeiroas4notasdaprimeiralinhasento retornaralinha2,eassimvailerasquatrosnotasdalinha2eda pordiante..