Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10:...

54
Aula 10: Introduc¸˜ ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ ao de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programa¸ ao de Computadores IV 1 / 50

Transcript of Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10:...

Page 1: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Aula 10: Introducao a Vetores e Matrizes

Fernanda Passos

Universidade Federal Fluminense

Programacao de Computadores IV

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 1 / 50

Page 2: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Agenda

1 Revisao e Contexto

2 Introducao

3 Vetores

4 Matrizes

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 2 / 50

Page 3: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Agenda

1 Revisao e Contexto

2 Introducao

3 Vetores

4 Matrizes

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 3 / 50

Page 4: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Aula Anterior:

Estruturas de Repeticao Indefinida: conjunto de sequencias de passos que sao repetidas deacordo com uma expressao logica.I A quantidade de repeticao nao e definida a priori.

Vimos que existem 2 tipos de estruturas de repeticao indefinida:I com teste no inıcio (enquanto-faca) eI com teste no fim (faca-enquanto).

Todas elas podem ser aninhadas.Vimos tambem alguns modos de uso delas.I Como flags de leitura, para a estrutura enquanto-faca.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 4 / 50

Page 5: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Foco da Aula de Hoje

Variaveis compostas:Unidimensional: vetores.Multidimensional: matrizes.

ObjetivoComparar com as variaveis simples ja vistas.Conhecer os modos de declaracao de variaveis compostas em pseudocodigo.Estudar o uso dessas estruturas de dados.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 5 / 50

Page 6: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Agenda

1 Revisao e Contexto

2 Introducao

3 Vetores

4 Matrizes

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 6 / 50

Page 7: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas

Vimos, ate agora, que as variaveis primitivas sao estruturas capazes de guardar um valor.I Correspondem a uma posicao de memoria de um computador.

Relembrando, variaveis primitivas podem ter os seguintes tipos:I numericos: inteiro e real;I caracteres;I string;I logico.

O valor de uma variavel e acessado atraves de seu identificador.No entanto, existem maneiras de se guardar e acessar um conjunto de dados agrupados deum mesmo tipo.Veremos, nesta aula, as variaveis compostas.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 7 / 50

Page 8: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao

Imagine o seguinte problema a ser resolvido de forma algorıtmica:I Calcular a media das notas de 10 alunos de uma disciplina e determinar o numero de alunos

que tiveram a nota superior a media calculada.

Possıvel solucao:1 Para cada aluno, fazer:

1 ler sua nota;2 acumular a nota em uma variavel soma (inicializada em 0);

2 calcular a media: razao entre soma e 10;3 contar quantos alunos estao acima da media;4 escrever a media e o numero de alunos com nota superior a media.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 8 / 50

Page 9: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao

Imagine o seguinte problema a ser resolvido de forma algorıtmica:I Calcular a media das notas de 10 alunos de uma disciplina e determinar o numero de alunos

que tiveram a nota superior a media calculada.Possıvel solucao:

1 Para cada aluno, fazer:1 ler sua nota;2 acumular a nota em uma variavel soma (inicializada em 0);

2 calcular a media: razao entre soma e 10;3 contar quantos alunos estao acima da media;4 escrever a media e o numero de alunos com nota superior a media.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 8 / 50

Page 10: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (II)

Pseudocodigo intermediario:

1 inıcio2 real: nota, soma, media;3 inteiro: i, contador;

4 soma ← 0;5 para i ← 1 ate 10 faca6 leia nota;7 soma ← soma + nota;8 fim9 media ← soma / 10;

10 contar quantos alunos estao acima da media e colocar o valor em contador;11 escreva contador, “alunos estao acima da media”, media;12 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 9 / 50

Page 11: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (III)

Note que o passo 2: contar quantos alunos estao acima da media precisa ser detalhado.I Uma vez com a media calculada, contar quantas notas estao acima desse valor.I Esse valor pode ser armazenado em uma variavel contador, que sera incrementada de 1 quando

a nota for maior que a media.Mas as notas ja foram lidas antes e seus valores perdidos.I E nao e possıvel colocar o calculo das notas superiores a media na repeticao onde e feita a

leitura.I E nesta parte que a media, usada na comparacao, e calculada.

O que fazer, entao?Com as ferramentas que temos ate agora, podemos pensar em duas solucoes.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 10 / 50

Page 12: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (IV)

Solucao 1: Dividir o algoritmo em duas partes:I Uma delas realiza a leitura das notas e calcula a media eI a outra realiza a leitura das notas novamente e as compara com o valor da media previamente

calculado.Note que esta solucao precisa ler os mesmos dados duas vezes.I Tornar tediosa a entrada de dados.I Torna o algoritmo mais complexo:

F E preciso garantir que as notas inseridas pela segunda vez sejam iguais aos da primeira.F Tambem nao temos ferramentas para fazer isso, ainda.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 11 / 50

Page 13: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (V)1 inıcio2 real: nota, soma, media;3 inteiro: i, contador;

4 soma ← 0;5 para i ← 1 ate 10 faca6 leia nota;7 soma ← soma + nota;8 fim9 media ← soma / 10;

10 contador ← 0;11 para i ← 1 ate 10 faca12 leia nota;13 se nota > media entao14 contador ← contador + 1;15 fim16 fim17 escreva contador, “alunos estao acima da media”, media;18 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 12 / 50

Page 14: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (VI)Solucao 2: Criar 10 variaveis para guardar cada uma das notas.

1 real: nota1, nota2, nota3, nota4, nota5, nota6, nota7, nota8, nota9, nota10, soma,media;

2 inteiro: contador;

3 leia nota1, nota2, nota3, nota4, nota5, nota6, nota7, nota8, nota9, nota10;4 media ← (nota1 + nota2 + nota3 + nota4 + nota5 + nota6 + nota7 + nota8 + nota9

+ nota10)/10;5 contador ← 0;6 se nota1 > media entao7 contador ← contador + 1;8 fim9 se nota2 > media entao

10 contador ← contador + 1;11 fim12 se nota3 > media entao13 contador ← contador + 1;14 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 13 / 50

Page 15: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (VII)

15 se nota4 > media entao16 contador ← contador + 1;17 fim18 se nota5 > media entao19 contador ← contador + 1;20 fim21 se nota6 > media entao22 contador ← contador + 1;23 fim24 se nota7 > media entao25 contador ← contador + 1;26 fim

27 se nota8 > media entao28 contador ← contador + 1;29 fim30 se nota9 > media entao31 contador ← contador + 1;32 fim33 se nota10 > media entao34 contador ← contador + 1;35 fim36 escreva contador, “alunos estao acima da

media”, media;

Repare que esta solucao nao e escalavel.I E se quisermos fazer com 100 ou 1000 alunos?I Ou ainda, com um numero indefinido de alunos?

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 14 / 50

Page 16: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Variaveis Compostas: Motivacao (VII)

15 se nota4 > media entao16 contador ← contador + 1;17 fim18 se nota5 > media entao19 contador ← contador + 1;20 fim21 se nota6 > media entao22 contador ← contador + 1;23 fim24 se nota7 > media entao25 contador ← contador + 1;26 fim

27 se nota8 > media entao28 contador ← contador + 1;29 fim30 se nota9 > media entao31 contador ← contador + 1;32 fim33 se nota10 > media entao34 contador ← contador + 1;35 fim36 escreva contador, “alunos estao acima da

media”, media;

Repare que esta solucao nao e escalavel.I E se quisermos fazer com 100 ou 1000 alunos?I Ou ainda, com um numero indefinido de alunos?

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 14 / 50

Page 17: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Agenda

1 Revisao e Contexto

2 Introducao

3 Vetores

4 Matrizes

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 15 / 50

Page 18: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Vetores

DefinicaoSao variaveis compostas homogeneas unidimensionais.Entende-se por:I compostas: permitem armazenar mais de um dado;I homogeneas: dados sao do mesmo tipo;I unidimensionais: cada dado e individualizado por um ındice unidimensional.

Em outras palavras, o vetor e uma estrutura de dados capaz de armazenar varios valoresao mesmo tempo e de mesmo tipo.Muitas vezes chamado de array .

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 16 / 50

Page 19: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Representacao de Vetores

Identificador . . .0 1 2 3 4 . . . n-1

Um vetor e um conjunto de valores de tamanho n.Todo vetor e referenciado por um identificador.Por sua vez, cada valor de um vetor e referenciado por um ındice.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 17 / 50

Page 20: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Declaracao de Vetores

Um vetor e declarado de forma semelhante a uma variavel.

Sintaxe em pseudocodigo:<tipo>: identificador[<tamanho>];

E declarado no inıcio do pseudocodigo.Apresenta um tipo para todos os valores do vetor.E referenciado por um identificador, um nome.Deve-se especificar o tamanho do vetor entre colchetes.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 18 / 50

Page 21: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Declaracao de Vetores: Exemplos

real: nota[10];inteiro: idade[7];string: CPF[3];caractere: opcao[5];

nota 10,0 8,6 9,0 6,4 5,7 5,0 7,2 4,2 7,5 8,50 1 2 3 4 5 6 7 8 9

idade 21 30 32 37 42 36 330 1 2 3 4 5 6

CPF “2132131” “999999” “8888888”0 1 2

opcao ‘c’ ‘t’ ‘g’ ‘a’ ‘s’0 1 2 3 4

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 19 / 50

Page 22: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Acessando Elementos de Vetores

Um elemento de um vetor e acessado atraves de seu identificador e a especificacao de seuındice.

Acesso a uma posicao de um vetor:identificador[<ındice>]

Identificador e o nome do vetor.ındice e a posicao do vetor em que se encontra o elemento.I Deve ser indicado entre colchetes imediatamente apos o identificador.I Seu valor varia de 0 a n − 1, onde n e o tamanho do vetor.I Pode-se usar tambem uma expressao aritmetica que retorne um valor inteiro no intervalo

valido.Importante: vamos adotar que todo vetor declarado comeca na posicao 0.I Porque a linguagem C trabalha assim.I Mas existem outras linguagens que iniciam de forma diferente.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 20 / 50

Page 23: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Acessando Valores de Vetores: Exemplos

nota 10,0 8,6 9,0 6,4 5,7 5,0 7,2 4,2 7,5 8,50 1 2 3 4 5 6 7 8 9

idade 21 30 32 37 42 36 330 1 2 3 4 5 6

CPF “2132131” “999999” “8888888”0 1 2

opcao ‘c’ ‘t’ ‘g’ ‘a’ ‘s’0 1 2 3 4

nota[1] acessa o elemento 8,6.idade[6] acessa o elemento 33.CPF[0] acessa o elemento “2132131”.opcao[2] acessa o elemento ‘g’.nota[i], para i=8, acessa o elemento 7,5.idade[i+1], para i=3, acessa o elemento 42.CPF[7 mod 3] acessa o elemento “999999”.opcao[9/2], acessa o elemento ‘s’ (o valorreal e truncado).

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 21 / 50

Page 24: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Inserindo Elementos em Vetores

Existem duas maneiras de inserir elementos em vetores:1 inicializacao e2 atribuicao/leitura.

Inicializacao:I Sintaxe:

identificador ← {<lista de constantes>};I Identificador e o nome do vetor eI na lista de contantes, os elementos sao separados por vırgula.I Pode-se inserir todos os elementos de uma vez.

Atribuicao/leitura:I Deve-se acessar o elemento de um vetor em uma atribuicao ou leitura.I Exemplos para um vetor V:

F V[2] ← 4;F leia V[0];F leia V[i];

Sempre lembrando que os elementos devem ser do mesmo tipo de declaracao do vetor.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 22 / 50

Page 25: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Inicializacao de Vetores: Exemplo 2

Em pseudocodigo:

1 inıcio2 inteiro: idade[7];

3 idade ← {21, 30, 32, 37, 42, 36, 33};4 fim

1 inıcio2 caractere: opcao[5];

3 opcao ← {‘c’, ‘t’, ‘g’, ‘a’, ‘s’};4 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 23 / 50

Page 26: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Atribuicao/Leitura de Vetores: Exemplo 3

Em pseudocodigo:

1 inıcio2 inteiro: idade[7];

3 idade[0] ← 21;4 idade[1] ← 30;5 idade[2] ← 32;6 idade[3] ← 37;7 idade[4] ← 42;8 idade[5] ← 36;9 idade[6] ← 33;

10 fim

1 inıcio2 inteiro: idade[7], i;

3 para i ← 0 ate 6 faca4 leia idade[i];5 fim6 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 24 / 50

Page 27: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Atribuicao/Leitura de Vetores: Exemplo 3 (cont.)

Em pseudocodigo:

1 inıcio2 caractere: opcao[5];

3 opcao[0] ← ‘c’;4 opcao[1] ← ‘t’;5 opcao[2] ← ‘g’;6 opcao[3] ← ‘a’;7 opcao[4] ← ‘s’;8 fim

1 inıcio2 caractere: opcao[5];

3 para i ← 0 ate 4 faca4 leia opcao[i];5 fim6 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 25 / 50

Page 28: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 4Voltando ao exemplo da motivacao: escrever o numero de alunos que tiveram a nota acimada media das notas de todos os alunos.

1 inıcio2 real: nota, soma, media;3 inteiro: i, contador;

4 soma ← 0;5 para i ← 1 ate 10 faca6 leia nota;7 soma ← soma + nota;8 fim9 media ← soma / 10;

10 contar quantos alunos estao acima da media e colocar o valor em contador;11 escreva contador, “alunos estao acima da media”, media;12 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 26 / 50

Page 29: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 4 (cont.)

1 inıcio2 real: nota[10], soma, media;3 inteiro: i, contador;

4 soma ← 0;5 para i ← 0 ate 9 faca6 leia nota[i];7 soma ← soma + nota[i];8 fim9 media ← soma / 10;

10 contador ← 0;11 para i ← 0 ate 9 faca12 se nota[i] > media entao13 contador ← contador + 1;14 fim15 fim16 escreva contador, “alunos estao acima da media”, media;17 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 27 / 50

Page 30: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 5Problema: ler um vetor de 10 elementos inteiros e, depois, imprimir o seu menor valor e aposicao em que se encontra.

1 inıcio2 inteiro: i, vetor[10], menor;

3 para i ← 0 ate 9 faca4 leia vetor[i];5 fim6 menor ← vetor[0];7 posicao ← 0;8 para i ← 1 ate 9 faca9 se vetor[i] < menor entao

10 menor ← vetor[i];11 posicao ← i;12 fim13 fim14 escreva “O menor valor”, menor, “esta na posicao”, posicao;15 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 28 / 50

Page 31: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 6Problema: ler 10 elementos inteiros e gerar um vetor de valores logicos indicandoverdadeiro para numero pares e falso para numeros ımpares. Imprimir o vetor no final.

1 inıcio2 inteiro: i, valor;3 logico: vetor[10];

4 para i ← 0 ate 9 faca5 leia valor;6 se valor mod 2 = 0 entao7 vetor[i] ← verdadeiro;8 senao9 vetor[i] ← falso;

10 fim11 fim12 para i ← 0 ate 9 faca13 escreva vetor[i];14 fim15 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 29 / 50

Page 32: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 7Ler 10 elementos inteiros e gerar dois vetores: um com os numeros ımpares e outro com osnumeros pares.

1 inteiro: valor, vetorPar[10], tam par;2 inteiro: i, vetorImpar[10], tam impar;

3 tam impar ← 0;4 tam par ← 0;5 para i ← 0 ate 9 faca6 leia valor;7 se valor mod 2 = 0 entao8 vetorPar[tam par] ← valor;9 tam par ← tam par + 1;

10 senao11 vetorImpar[tam impar] ← valor;12 tam impar ← tam impar + 1;13 fim

14 fim15 escreva “Numeros pares:”;16 para i ← 0 ate tam par-1 faca17 escreva vetorPar[i];18 fim19 escreva “Numeros ımpares:”;20 para i ← 0 ate tam impar-1 faca21 escreva vetorImpar[i];22 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 30 / 50

Page 33: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Dicas de Uso de Vetores

Deve-se usar vetor sempre que for preciso guardar conjunto de dados do mesmo tipo.Para ler e escrever vetores, usar estruturas de repeticao.I O ındice do loop e usado para “varrer” o vetor.I O ındice do loop deve variar de 0 ate o tamanho-1 do vetor.

Quando nao se sabe o tamanho do vetor, deve-se superdimensina-lo na declaracao.I “Melhor sobrar do que faltar!”I Mas cuidado para nao exagerar.I Deve-se escolher um mınimo possıvel.I No exemplo anterior, o valor escolhido para cada vetor foi 10.

F Nenhum dos dois vetores tera mais de 10 elementos.I Deve-se, tambem, usar uma variavel para guardar o seu tamanho real.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 31 / 50

Page 34: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo Usando Vetores: Exemplo 8Ler numeros inteiros positivos ate a entrada ser -1 e armazena-los em um vetor.

1 inteiro: i, valor, vetor[1000], tam vetor;

2 i ← 0;3 leia valor;4 enquanto valor >= 0 faca5 vetor[i] ← valor;6 i ← i+1;7 leia valor;8 fim9 tam vetor ← i;

10 escreva “Elementos:”;11 para i ← 0 ate tam vetor-1 faca12 escreva vetor[i];13 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 32 / 50

Page 35: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Agenda

1 Revisao e Contexto

2 Introducao

3 Vetores

4 Matrizes

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 33 / 50

Page 36: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Matrizes

DefinicaoSao variaveis compostas homogeneas multidimensionais (bidimensionais, no caso).

Matrizes seguem a ideia das matrizes da matematica.I Apresentam linhas e colunas: as duas dimensoes.I E, portanto, uma dimensao para linhas e outra para colunas.

Pode-se dizer que uma matriz e uma conjunto de vetores de mesmo tamanho.I Sendo assim, sua dimensao e representada pelo:

F dimensao para linhas: tamanho do conjunto;F dimensao para colunas: tamanho dos vetores.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 34 / 50

Page 37: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Representacao de Matrizes

Identificador 0 . . .1 . . .2 . . ....

......

...... . . . ...

m-1 . . .0 1 2 3 . . . n-1

Uma matriz e um conjunto de valores de tamanho m × n.I O numero de linhas e m.I O numero de colunas e n.

Toda matriz e referenciada por um identificador (nome da matriz).Agora, cada valor de uma matriz e referenciado por um par de ındices (i , j).

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 35 / 50

Page 38: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Declaracao de Matrizes

Uma matriz e declarada de forma semelhante a um vetor, mas agora com duas dimensoes.

Sintaxe em pseudocodigo:<tipo>: identificador[<dimensaom>][<dimensaon>];

E declarada no inıcio do pseudocodigo.Apresenta um tipo para todos os valores da matriz.E referenciada por um identificador, um nome.Deve-se especificar os tamanhos das duas dimensoes entre colchetes, cada.I dimensaom e o numero de linhas eI dimensaon e o numero de colunas.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 36 / 50

Page 39: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Declaracao de Matrizes: Exemplos

real: matriz A[3][3];inteiro: matriz B[2][4];string: cliente[5][2];

matriz A10.1 3.2 4.01.9 7.0 2.00.0 1.0 1.0

matriz B-1 3 4 1115 -8 7 2

cliente“Ana” “1234567”“Joao” “5432109”“Lucas” “8596311”“Clara” “9938491”“Pedro” “1237854”

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 37 / 50

Page 40: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Acessando Elementos de Matrizes

Um elemento de uma matriz e acessado atraves de seu identificador e a especificacao deseus ındices.

Acesso a uma posicao de uma matriz:identificador[<indicei>][<indicej>]

Identificador e o nome da matriz.indicei e indicej representam a posicao do matriz em que se encontra o elemento.I Devem ser indicados entre colchetes imediatamente apos o identificador.I Primeiro vem o ındice da linha e depois o da coluna.I Os valores de indicei variam de 0 a m − 1.I Os valores de indicej variam de 0 a n − 1.I Expressao aritmetica tambem pode ser usada.

Importante: vamos adotar que toda matriz declarada comeca na posicao (0,0).I Porque a linguagem C trabalha assim.I Mas existem outras linguagens que iniciam de forma diferente.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 38 / 50

Page 41: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Acessando Elementos de Matrizes: Exemplos

matriz A[0][0] acessa o valor 10.1.matriz A[i][0], para i=2, acessa o valor 0.0.matriz B[i][i+2], para i=0, acessa o valor 4.matriz B[i][j], para i=1 e j=3, acessa ovalor 2.cliente[i*2][i div 2], para i=2, acessa ovalor “1237854”;cliente[i*2-6][j mod 2], para i=5 e j=2,acessa o valor “Pedro”;

matriz A10.1 3.2 4.01.9 7.0 2.00.0 1.0 1.0

matriz B-1 3 4 1115 -8 7 2

cliente“Ana” “1234567”“Joao” “5432109”“Lucas” “8596311”“Clara” “9938491”“Pedro” “1237854”

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 39 / 50

Page 42: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Inserindo Elementos em Matrizes

Inicializacao:I Sintaxe:

identificador ← {{<lista 0 de constantes>}, . . . , {<lista n-1 de constantes>}};I Identificador e o nome da matriz.I Nas listas de contantes de cada linha, os elementos sao separados por vırgula.I Pode-se inserir todos os elementos de uma vez.

Atribuicao/leitura:I Deve-se acessar o elemento de uma matriz em uma atribuicao ou leitura.I Exemplos para uma matriz M:

F M[2][1] ← 4;F M[i][1] ← 10;F leia M[0][j];F leia M[i][j];

Sempre lembrando que os elementos devem ser do mesmo tipo de declaracao da matriz.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 40 / 50

Page 43: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Inicializacao de Matrizes: Exemplo 9

Em pseudocodigo:

1 inıcio2 real: matriz A[3][3];

3 matriz A ← {{10.1, 3.2, 4.0},{1.9, 7.0, 2.0}, {0.0, 1.0, 1.0}};4 fim

1 inıcio2 caractere: matriz B[2][4];

3 opcao ← {{-1, 3, 4, 11}, {15, -8, 7, 2}};4 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 41 / 50

Page 44: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Atribuicao/Leitura de Matrizes: Exemplo 10

Em pseudocodigo:

1 inıcio2 inteiro: matriz C[2][3];

3 matriz B[0][0] ← -1;4 matriz B[0][1] ← 2;5 matriz B[0][2] ← 3;6 matriz B[1][0] ← 0;7 matriz B[1][1] ← 1;8 matriz B[1][2] ← -4;9 fim

1 inıcio2 inteiro:i, j, matriz C[2][3];

3 para i ← 0 ate 1 faca4 para j ← 0 ate 2 faca5 leia matriz C[i][j];6 fim7 fim8 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 42 / 50

Page 45: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 11

Ler uma matriz 3× 3 e imprimir os elementos da diagonal principal.

1 inıcio2 inteiro: i, j, matriz[3][3];

3 para i ← 0 ate 2 faca4 para j ← 0 ate 2 faca5 leia matriz[i][j];6 fim7 fim8 para i ← 0 ate 2 faca9 escreva matriz[i][i];

10 fim11 fim

Para a matriz: 4 3 1-1 2 50 -5 7

Entrada:

431-1250-57

Saıda:

427

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 43 / 50

Page 46: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 12

Ler duas matrizes 3× 3 e calcular a soma delas.

1 inteiro: i, j, mC[3][3], mA[3][3],2 mB[3][3];

3 para i ← 0 ate 2 faca4 para j ← 0 ate 2 faca5 leia mA[i][j];6 fim7 fim8 para i ← 0 ate 2 faca9 para j ← 0 ate 2 faca

10 leia mB[i][j];11 fim12 fim

13 // Calcular a soma:14 para i ← 0 ate 2 faca15 para j ← 0 ate 2 faca16 mC[i][j] ← mA[i][j] + mB[i][j];17 fim18 fim19 escreva “Matriz resultante da soma:”;20 para i ← 0 ate 2 faca21 para j ← 0 ate 2 faca22 escreva mC[i][j];23 fim24 fim

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 44 / 50

Page 47: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 13

Ler uma matriz 3× 3 e encontrar o maior valor nela. Imprimir o valor e sua posicao.

1 inteiro: i, j, i maior, j maior;2 real: maior, m[3][3];

3 para i ← 0 ate 2 faca4 para j ← 0 ate 2 faca5 leia mA[i][j];6 fim7 fim8 i maior ← 0;9 j maior ← 0;

10 maior ← m[0][0];

11 para i ← 0 ate 2 faca12 para j ← 0 ate 2 faca13 se maior < m[i][j] entao14 i maior ← i;15 j maior ← j;16 maior ← m[i][j];17 fim18 fim19 fim20 escreva maior, i maior, j maior;

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 45 / 50

Page 48: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Leitura de Matriz M × N em Pseudocodigo

Pode ocorrer a necessidade de ler matrizes de tamanho indefinido.I Tamanho sera definido com entrada.

Neste caso, assim como em vetores, o tamanho declarado ser superestimado.I Mesma ideia: “melhor sobrar que faltar!”I Usam-se tamanhos de m e n como 100 ou 1000, por exemplo.I Ou ainda, tamanhos maiores, se for a necessidade.

Quando os valores de m e n forem definidos no pseudocodigo, apenas as dimensoesespecificadas serao usadas na pratica.I Geralmente, tais valores sao definidos em comandos de leitura.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 46 / 50

Page 49: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 14Ler uma matriz m × n e, depois, imprimir seus elementos.

1 inıcio2 inteiro: i, j, n, m, matriz[1000][1000];

3 leia m, n;4 para i ← 0 ate m-1 faca5 para j ← 0 ate n-1 faca6 leia matriz[i][j];7 fim8 fim9 para i ← 0 ate m-1 faca

10 para j ← 0 ate n-1 faca11 escreva matriz[i][j];12 fim13 fim14 fim

Para a matriz:(4 3 1-1 2 5

)Entrada:

431-125

Saıda:

431-125

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 47 / 50

Page 50: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 15

Ler uma matriz A m × ` e uma matriz B `× n e calcular C = A× B.

c0,0 c0,1 . . . c0,n−1c1,0 c1,1 . . . c1,n−1

......

. . ....

cm−1,0 cm−1,1 . . . cm−1,n−1

=

a0,0 a0,1 . . . a0,`−1a1,0 a1,1 . . . a1,`−1

......

. . ....

am−1,0 am−1,1 . . . am−1,`−1

×

b0,0 b0,1 . . . b0,n−1b1,0 b1,1 . . . b1,n−1

......

. . ....

b`−1,0 b`−1,1 . . . b`−1,n−1

c1,0 = a1,0 × b0,0 + a1,1 × b1,0 + a1,2 × b2,0 + . . . + a1,`−1 × b`−1,0

`−1∑k=0

ci ,j = ai ,k × bk,j

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 48 / 50

Page 51: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 15

Ler uma matriz A m × ` e uma matriz B `× n e calcular C = A× B.c0,0 c0,1 . . . c0,n−1c1,0 c1,1 . . . c1,n−1

......

. . ....

cm−1,0 cm−1,1 . . . cm−1,n−1

=

a0,0 a0,1 . . . a0,`−1a1,0 a1,1 . . . a1,`−1

......

. . ....

am−1,0 am−1,1 . . . am−1,`−1

×

b0,0 b0,1 . . . b0,n−1b1,0 b1,1 . . . b1,n−1

......

. . ....

b`−1,0 b`−1,1 . . . b`−1,n−1

c1,0 = a1,0 × b0,0 + a1,1 × b1,0 + a1,2 × b2,0 + . . . + a1,`−1 × b`−1,0

`−1∑k=0

ci ,j = ai ,k × bk,j

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 48 / 50

Page 52: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 15 (cont.)

1 inteiro: i, j, k, m, `, `B, n;2 real: mC[100][100], mA[100][100],

mB[100][100], soma;

3 leia m, `;4 para i ← 0 ate m-1 faca5 para j ← 0 ate `-1 faca6 leia mA[i][j];7 fim8 fim9 leia `B, n;

10 para i ← 0 ate `B-1 faca11 para j ← 0 ate n faca12 leia mB[i][j];13 fim

14 fim15 para i ← 0 ate m-1 faca16 para j ← 0 ate n-1 faca17 soma ← 0;18 para k ← 0 ate `-1 faca19 soma ← soma + mA[i][k] *

mB[k][j];20 fim21 mC[i][j] ← soma;22 fim23 fim24 // Escrever resultado...

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 49 / 50

Page 53: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Pseudocodigo usando Matrizes: Exemplo 15 (cont.)

1 inteiro: i, j, k, m, `, `B, n;2 real: mC[100][100], mA[100][100],

mB[100][100], soma;

3 leia m, `;4 para i ← 0 ate m-1 faca5 para j ← 0 ate `-1 faca6 leia mA[i][j];7 fim8 fim9 leia `B, n;

10 para i ← 0 ate `B-1 faca11 para j ← 0 ate n faca12 leia mB[i][j];13 fim14 fim

15 se ` = `B entao16 para i ← 0 ate m-1 faca17 para j ← 0 ate n-1 faca18 soma ← 0;19 para k ← 0 ate `-1 faca20 soma ← soma + mA[i][k]

* mB[k][j];21 fim22 mC[i][j] ← soma;23 fim24 fim25 senao26 escreva “Dimensoes erradas.”27 fim28 // Escrever resultado...

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 49 / 50

Page 54: Aula 10: Introdução a Vetores e Matrizesfernanda/2016-1/progIV/aulas/aula10.pdfAula 10: Introduc¸˜ao a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programac¸˜ao

Exercıcios de Fixacao

Vetores:1 Escreva um algoritmo em pseudocodigo que leia um conjunto de numeros inteiros (positivos e

negativos) e indique quais valores estao no intervalo entre o primeiro e o ultimo numero.Matrizes:

1 Escreva um algoritmo que leia uma matriz N × N (leia N previamente) e calcule a soma dosvalores da diagonal secundaria.

Fernanda Passos (UFF) Vetores e Matrizes Programacao de Computadores IV 50 / 50