Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex:...
Transcript of Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex:...
CIn.ufpe.br
ComputaçãoEletrônicaVetoreseMatrizes
Prof:LucianoBarbosa
CIn.ufpe.br
Recapitulando:Funções
2
CIn.ufpe.br
Recapitulando:FunçãoVoid
3
CIn.ufpe.br
Recapitulando:EscopodasVariáveis
4
Avariáveldeescopolocalnamain,sobrepõe
adeescopoglobal
Referênciaàvariávellocal
Referênciaàvariávelglobal
CIn.ufpe.br
Vetores
• Atéagora:variáveleconstante• Armazenarcentenasdevalores->criarcentenasdevariáveis
– Nãoéumaboasolução
CIn.ufpe.br
Exemplo• Amédiaaritméticadeumconjuntodevaloresédadapela
seguinteexpressão:
– Oprogramaabaixocalculaamédiaaritméticaentrecincovalores:
Comoseriaesteprogramaseprecisarmoscalcularamédiaentre200notas?
CIn.ufpe.br
Solução:VariáveisCompostas
• Conjunto(coleção)devaráveisdeummesmotipodedados• Podemser:
– Unidimensionais:vetores– Multidimensionais:matrizes
7
CIn.ufpe.br
VariáveisCompostasUnidimensionais:Vetores(Arrays)
• Representamumacoleçãodevariáveisdeummesmotipo– Estruturadedadoshomogêneaeunidimensional
• Sintaxe:tiponome_do_vetor[tamanho];
• Tamanhorepresentaonúmerodeelementos;• Oíndicedovetorvariade0a(tamanho-1);• Ex.:
8
0.0 0.0 0.0 0.0 0.0
Declaraumvetordotipofloatcom5posições
CIn.ufpe.br
Vetores(Arrays)
• Coleçãodecaixasdevariáveis• Variáveisalocadassequencialmentenamemória• Endereçoinicialcorrespondeaoprimeiroelemento(índice0)
dovetor.• Oacessoacadaposiçãodovetorrealizadoutilizando-seseu
índice:
9
0.0 0.0 0.0 0.0 0.0
Posições:notas[0]notas[1]notas[2]notas[3]notas[4]
Índices:01234
CIn.ufpe.br
AcessoaosElementos
• Nomedovetorseguidodoíndicedoelementoentrecolchetes• notas[2]é3ºelementodoarray:
• notas[2]éumavariáveldotipofloat
2.5 3.2 1.9 4.1 2.0
notas[2]
CIn.ufpe.br
Exemplo
• Leranotade5alunosdeumadisciplinaecalcularamédia.
11
Declaraumvetorde5posições.
Armazenaovalorlidonai-ésimaposição.
Acessaovalordai-ésimaposição.
CIn.ufpe.br
Vetores:ValoresnosColchetes
• Significadosdiferentes:– Nadeclaraçãodeumvetor:informaaquantidadeNdeposiçõesque
devemseralocadas– Apósadeclaração:informaaposiçãoqueseráacessadaparaleituraou
gravaçãodeinformação.Deveserumvalorentre[0...(N-1)]
12
DeclaraumvetordeN=5posições.
Gravainformaçãonaposiçãoiem[0...4].
Lêinformaçãodaposiçãoiem[0...4].
CIn.ufpe.br
Vetoreseseuslimites
• Noexemploanterior:– Vetorpossuicincoposições– Índicedaúltimaposiçãoé4– Acessarnotas[5]causafalhadememória.
• Índicedevevariarde0a[tamanho-1];• Cnãoavisaquandoolimitedeumvetoréexcedido!• Seoprogramatranspuserofimdovetorduranteaoperaçãode
atribuição,osvaloresserãoarmazenadosemposiçõesinválidasdememória,ousobrescrevendooutrasvariáveis;
13
Oprogramadortemaresponsabilidadedeverificarolimitedovetor!
0.0 0.0 0.0 0.0 0.0
Índices:01234
CIn.ufpe.br
Vetoreseseuslimites
• Errocomum:acessoforadoslimites• Exemplo:
14
Deveriaser:i<20
Ondeestáoerro?
Aposiçãopares[20]estáforadovetor!
CIn.ufpe.br
Vetores:Inicialização
• Tipo1:
• Tipo2:
• Compiladoralocaespaçosuficienteparaarmazenartodososvalores
15
Vetoressópodemserinicializadosdessaformaemsuadeclaração!
CIn.ufpe.br
Vetores:Inicialização
• Quandootamanhodovetorforespecificadoehouveralistadeinicialização:– Sehámenosinicializadoresqueotamanhoespecificado,osoutrosserão
zero;– Maisinicializadoresqueonecessárioimplicaumavisodecompilação
(warning).
• Quandonãoinicializado:otamanhodeveserespecificadonadeclaração
16
CIn.ufpe.br
Vetores:DeclaraçãodoTamanho
• Valorliteral,nãoumavariável– Determinadoemtempodecompilação
• Exemplo:
17
Erro!nAlunosédesconhecidoemtempodecompilação
CIn.ufpe.br
Vetores:Constantes#defineproTamanho
• Conhecidasemtempodecompilação
18
Recomendável!poisfacilitaalegibilidadeeamanutençãodocódigo.Seforprecisoaumentaronúmerodealunosbastamodifica-loemumlocal.
CIn.ufpe.br
Vetorescomoparâmetrodefunções
• Podeserpassadocomoargumentoparaumafunção• Aopassarumvetorparaumafunçãopodemosmodificaro
conteúdodestevetordentrodafunção:– Passa-senaverdadeoendereçodoprimeiroelementodovetorna
memória;– Osdemaisestãonasposiçõesseguintesdememória;
• Podemospassartambémumelementoemparticulardeumvetorparaumafunção– Oparâmetrodeveserdomesmotipodovetor
19
CIn.ufpe.br
Vetorescomoparâmetrodefunções
20
Recebeumvetorfloateonúmerodeelementoscomoparâmetroecalculaamédia
Declaraçãodeumvetorfloatde10posições
Passaestevetorcomoargumentoparaafunção
“media”
CIn.ufpe.br
Vetorescomoparâmetrodefunções
21
Recebeumvetorfloat,onúmerodeelementose
umvalorqueseráutilizadoparamodificaro
vetor
Declaraçãodeumvetorfloatde10posições
Passaestevetorjuntamentecomosoutrosvalorescomoargumentoparaafunção
“incrementar”
Imprimeovetormodificadopor“incrementar”
CIn.ufpe.br
Elementodevetorcomoparâmetrodefunções
22
Recebeumanotafloat,eamédiacomaqualanotaserácomparada
Declaraçãodeumvetorcomasnotasjápreenchidas
Passaovalornaposiçãoidovetorcomoargumentoparaa
função“aprovado”
CIn.ufpe.br
Atividade1
• SendoVovetorabaixoeasvariáveisX=2eY=4,quaisosvaloresde:
23
a) V[X+1] b) V[X] + 1 c) V[X+Y] d) V[8-V[2]] e) V[V[V[7]]]
2 6 8 3 10 9 1 21 33 14
0 1 2 3 4 5 6 7 8 9
CIn.ufpe.br
Atividadesadicionais-Vetores1. Construaumprogramaquepreencheumvetordeinteirosde
100números,colocando0nasposiçõesparese1nasímpares.2. Construaumprogramaquelê,somaeimprimeoresultadoda
somadeumvetordeinteirosde10posições.3. Construaumprogramaquemultipliqueosvaloresdeumvetor
dereaisde20posiçõespelosvaloresdeumoutrovetordereaisde20posições.Oprimeirovetordeveserinicializadocomvalorescrescentesapartirde1eosegundovetorcomvaloresdecrescentesapartirde20.Osresultadosdasmultiplicaçõesdevemserarmazenadosnumterceirovetor.
4. Leiaumvetorde16posiçõesetroqueos8primeirosvalorespelos8últimosevice-versa.Escrevaaofinalovetorobtido.
5. Refaçaasquestõesanteriorescriandoumafunçãoparacadaumadelas.
24
CIn.ufpe.br
Desafio–bubblesort
• Construaumprogramaqueleiaeguardeoselementosemumvetorde20posições.Emseguidaoalgoritmoordenaoselementosdovetordeacordocomobubblesort:– Obubblesort,ouordenaçãoporflutuação(literalmente"porbolha"),é
umalgoritmodeordenaçãodosmaissimples.– Aideiaépercorrerovetordiversasvezes,acadapassagemfazendo
flutuarparaotopoomaiorelementodasequência.– Essamovimentaçãolembraaformacomoasbolhasemumtanquede
águaprocuramseupróprionível,edissovemonomedoalgoritmo.
• Transformeesteprogramaemumafunçãoparaaordenaçãodevetores
• Vejaumexemplonopróximoslide
25
CIn.ufpe.br
Desfio–Passo-a-passo• Tomemosoconjuntodenúmeros"51428",eordenarovetordenúmerodomenorparao
maiorusandobubblesort.Emcadaetapa,oselementosescritosemnegritoestãosendocomparados.Trêspassagensserãonecessárias.
• Primeiropassagem:– (51428)para(15428),aqui,oalgoritmocomparaosdoisprimeiroselementos,etroca-osjáque5>1.– (15428)para(14528),troca,jáque5>4– (14528)para(14258),troca,jáque5>2– (14258)para(14258),agora,umavezqueesseselementosjáestãoemordem(5<8),oalgoritmonãoos
troca.• Segundapassagem:
– (14258)para(14258),nãotroca– (14258)para(12458),troca,jáque4>2– (12458)para(12458),nãotroca– (12458)para(12458),nãotroca
• Agora,ovetorjáestáordenado,masnossoalgoritmonãosabedisso.Oalgoritmoprecisademaisumapassageminteira,semqualquertrocaparasaberqueestáordenado.
• Terceirapassagem:– (12458)para(12458),nãotroca– (12458)para(12458),nãotroca– (12458)para(12458),nãotroca– (12458)para(12458),nãotroca
• Nãohouvetroca:fim!(oalgoritmoterminaquandoocorreumapassagemportodoovetorsemquehajanenhumatroca)
26
CIn.ufpe.br
BubbleSort5
1
4
2
8
27
1
5
4
2
8
1
4
5
2
8
1
5
4
2
8
1
4
2
5
8
1
4
2
5
8
1
4
5
2
8
1
4
2
5
8
CIn.ufpe.br
BubbleSort1
4
2
5
8
28
1
4
2
5
8
1
2
4
5
8
1
4
2
5
8
1
2
4
5
8
1
2
4
5
8
1
2
4
5
8
1
2
4
5
8
CIn.ufpe.br
LimitaçãodeVetores• Vetorespermitemdefinirumconjuntodedados(array)
unidimensional.Ex.:
• Eseprecisarmosdemaisdimensões?– Ex:arraydeduasdimensões:
– Nestecaso,asoluçãoédeclararumvetormultidimensional;• Nestecursovamostratarapenasdearrayscom:
– Umadimensão:chamadosdevetores– Duasdimensões:chamadosdematrizes
• Conceitospodemserfacilmentegeneralizadosparadeclarararrayscomumnúmeromaiordedimensões.
0.0 0.0 0.0 0.0 0.0
floatvet[5];Declaraumvetordeumadimensãocom5posições
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
CIn.ufpe.br
VariáveisCompostasBidimensionais(matrizes)
• Vetordevetores:umvetorondecadaposiçãocontémumoutrovetor:
30
Vetor devetores
CIn.ufpe.br
VariáveisCompostasBidimensionais(matrizes)
• Exemplo:
31
linhas
colunas
CIn.ufpe.br
VariáveisCompostasBidimensionais(matrizes)
• Manipulação:
32
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
MATRIZ
MATRIZ[2][3]
CIn.ufpe.br
VariáveisCompostasBidimensionais(matrizes)
• Matrizéumaestruturadedadoshomogêneabidimensional.• Declaração:
tiponome_da_matriz[m][n];
m:representaonúmerodelinhasdamatrizn:onúmerodecolunas– Asduasdimensõessão,respectivamente,aquantidadedelinhase
colunasdamatriz– Ex:intmat[10][3];
33
CIn.ufpe.br
VariáveisCompostasBidimensionais(matrizes)
34
... x[0][n-2] x[0][n-1] x[0][0] x[0][1] x[0][2]
x é uma matriz bidimensional m x n.
linha 1
col. 1 col. 2 col. 3 col. n-1 col. n
... x[1][n-2] x[1][n-1] x[1][0] x[1][1] x[1][2] linha 2 ... ... ... ... ...
... x[m-1][n-2] x[m-1][n-1] x[m-1][0] x[m-1][1] x[m-1][2] linha m
CIn.ufpe.br
Matrizes:Inicialização
• Podeserfeitanadeclaração:
• Nosegundocaso,deveserinformadaaomenosasegundadimensão
• Usandolaços:
35
CIn.ufpe.br
Matrizes-Impressão
• Exemplo:imprimindooconteúdodeumamatrizutilizandolaçosaninhados:
36
CIn.ufpe.br
Matrizespassadasporparâmetro
• Énecessárioespecificaraquantidadedecolunasdamatrizoutodasasdimensões:
37
CIn.ufpe.br
Atividade-Matrizes1. Construaumalgoritmoqueefetueeapresenteoresultadodasoma
entreduasmatrizes3x5.Inicializeamatrizcomvaloresquaisquereimprimaoresultadonatela.
2. Façaumprogramaquemultiplicaumamatriz3x3deinteirosporumescalarkeimprimaoresultadonatela.Ousuáriodevefornecerosvaloresdamatrizedek.
3. Leiaumamatriz20x20.LeiatambémumvalorX.Oprogramadeveráfazerumabuscadessevalornamatrize,aofinalescreveralocalização(linhaecoluna)ouumamensagemde“nãoencontrado”.
4. Dadaumamatriz5x5,elaboreumalgoritmoqueimprima:– Adiagonalprincipal– Adiagonalsecundária– Asomadalinha4– Asomadacoluna2– Tudo,excetoadiagonalprincipal
5. Refaçaasquestõesanteriorescriandoumafunçãoparacadaumadelas.38
CIn.ufpe.br
Atividadesadicionais-Matrizes
1. Façaumprogramaparamultiplicarduasmatrizescomtamanhoaté10x10,armazenandooresultadoemumaterceiramatriz.– Oprogramadevesolicitaraousuárioasduasdimensõesdasduasmatrizes;– Oprogramadeveverificarseasmatrizespodemsermultiplicadase
apresentarumamensagemdeerro,casonãosejapossível.
2. Refaçaoprogramaanteriortransformandoapenasocódigoquefazamultiplicaçãodasmatrizesemumafunção.– Afunçãorecebecomoparâmetroastrêsmatrizeseasdimensõesdasduas
primeirasmatrizes.Oresultadodamultiplicaçãodasduasprimeirasmatrizesdeveserarmazenadonaterceiramatriz.;
– Afunçãodeveretornarfalsosenãoforpossívelmultiplicarasmatrizes,everdadeirocasocontrário.
– Afunçãonãodevelerasmatrizes,imprimiroresultado,nemamensagemdeerro.Istodeveserfeitonafunçãoprincipal.
39