Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex:...

39
CIn.ufpe.br Computação Eletrônica Vetores e Matrizes Prof: Luciano Barbosa

Transcript of Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex:...

Page 1: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

ComputaçãoEletrônicaVetoreseMatrizes

Prof:LucianoBarbosa

Page 2: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Recapitulando:Funções

2

Page 3: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Recapitulando:FunçãoVoid

3

Page 4: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Recapitulando:EscopodasVariáveis

4

Avariáveldeescopolocalnamain,sobrepõe

adeescopoglobal

Referênciaàvariávellocal

Referênciaàvariávelglobal

Page 5: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetores

•  Atéagora:variáveleconstante•  Armazenarcentenasdevalores->criarcentenasdevariáveis

–  Nãoéumaboasolução

Page 6: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Exemplo•  Amédiaaritméticadeumconjuntodevaloresédadapela

seguinteexpressão:

–  Oprogramaabaixocalculaamédiaaritméticaentrecincovalores:

Comoseriaesteprogramaseprecisarmoscalcularamédiaentre200notas?

Page 7: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Solução:VariáveisCompostas

•  Conjunto(coleção)devaráveisdeummesmotipodedados•  Podemser:

–  Unidimensionais:vetores–  Multidimensionais:matrizes

7

Page 8: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 9: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 10: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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]

Page 11: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Exemplo

•  Leranotade5alunosdeumadisciplinaecalcularamédia.

11

Declaraumvetorde5posições.

Armazenaovalorlidonai-ésimaposição.

Acessaovalordai-ésimaposição.

Page 12: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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].

Page 13: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 14: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetoreseseuslimites

•  Errocomum:acessoforadoslimites•  Exemplo:

14

Deveriaser:i<20

Ondeestáoerro?

Aposiçãopares[20]estáforadovetor!

Page 15: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetores:Inicialização

•  Tipo1:

•  Tipo2:

•  Compiladoralocaespaçosuficienteparaarmazenartodososvalores

15

Vetoressópodemserinicializadosdessaformaemsuadeclaração!

Page 16: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetores:Inicialização

•  Quandootamanhodovetorforespecificadoehouveralistadeinicialização:–  Sehámenosinicializadoresqueotamanhoespecificado,osoutrosserão

zero;–  Maisinicializadoresqueonecessárioimplicaumavisodecompilação

(warning).

•  Quandonãoinicializado:otamanhodeveserespecificadonadeclaração

16

Page 17: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetores:DeclaraçãodoTamanho

•  Valorliteral,nãoumavariável–  Determinadoemtempodecompilação

•  Exemplo:

17

Erro!nAlunosédesconhecidoemtempodecompilação

Page 18: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetores:Constantes#defineproTamanho

•  Conhecidasemtempodecompilação

18

Recomendável!poisfacilitaalegibilidadeeamanutençãodocódigo.Seforprecisoaumentaronúmerodealunosbastamodifica-loemumlocal.

Page 19: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 20: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetorescomoparâmetrodefunções

20

Recebeumvetorfloateonúmerodeelementoscomoparâmetroecalculaamédia

Declaraçãodeumvetorfloatde10posições

Passaestevetorcomoargumentoparaafunção

“media”

Page 21: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Vetorescomoparâmetrodefunções

21

Recebeumvetorfloat,onúmerodeelementose

umvalorqueseráutilizadoparamodificaro

vetor

Declaraçãodeumvetorfloatde10posições

Passaestevetorjuntamentecomosoutrosvalorescomoargumentoparaafunção

“incrementar”

Imprimeovetormodificadopor“incrementar”

Page 22: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Elementodevetorcomoparâmetrodefunções

22

Recebeumanotafloat,eamédiacomaqualanotaserácomparada

Declaraçãodeumvetorcomasnotasjápreenchidas

Passaovalornaposiçãoidovetorcomoargumentoparaa

função“aprovado”

Page 23: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 24: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 25: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 26: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 27: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 28: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 29: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 30: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

VariáveisCompostasBidimensionais(matrizes)

•  Vetordevetores:umvetorondecadaposiçãocontémumoutrovetor:

30

Vetor devetores

Page 31: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

VariáveisCompostasBidimensionais(matrizes)

•  Exemplo:

31

linhas

colunas

Page 32: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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]

Page 33: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 34: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 35: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Matrizes:Inicialização

•  Podeserfeitanadeclaração:

•  Nosegundocaso,deveserinformadaaomenosasegundadimensão

•  Usandolaços:

35

Page 36: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Matrizes-Impressão

•  Exemplo:imprimindooconteúdodeumamatrizutilizandolaçosaninhados:

36

Page 37: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

CIn.ufpe.br

Matrizespassadasporparâmetro

•  Énecessárioespecificaraquantidadedecolunasdamatrizoutodasasdimensões:

37

Page 38: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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

Page 39: Computação Eletrônica Vetores e Matrizesluciano/cursos/ce/vetores... · 2018-08-12 · – Ex: array de duas dimensões: – Neste caso, a solução é declarar um vetor multidimensional;

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