Buscar

Aula 10 - Matrizes e vetores


Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 1/12
Algoritmos
Aula 10 - Matrizes e vetores
INTRODUÇÃO
As estruturas de dados servem principalmente para abstrair estruturas da vida real em formas computacionais que
sejam viáveis de serem implementadas.
Nesta aula, vamos estudar as estruturas de dados mais fundamentais que existem e que vão nos ajudar a continuar a
resolver muitos problemas: os vetores e as matrizes.
Vamos lá!
Boa aula!
OBJETIVOS
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 2/12
Aplicar os conhecimentos adquiridos para criar programas em C++ usando vetores e matrizes.
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 3/12
ESTRUTURA DE DADOS
Na ciência da computação, existe uma área de estudo chamada Estrutura de Dados. Para quem é da área de
programação de computadores, esta é uma disciplina obrigatória e fundamental.
As estruturas de dados servem principalmente, e de uma maneira resumida, para abstrair estruturas da vida real em
formas computacionais que sejam viáveis de serem implementadas.
Exemplo
, Você já deve ter visto uma planilha eletrônica. Como você faria se fosse uma das pessoas da equipe de desenvolvimento do
Excel para poder implementar uma planilha? Usando uma tabela, não é? Logo, a tabela é uma estrutura de dados e serve para
abstrair uma planilha.
Existem muitos exemplos semelhantes, e nesta aula, vamos estudar as estruturas de dados mais fundamentais que existem e
que vão nos ajudar a continuar a resolver muitos problemas. Apresentaremos a você os vetores e as matrizes.
PROBLEMA: NUCLEOTÍDEOS DE UMA CADEIA DE DNA
Já vamos começar a nossa aula lançando um problema para você: vamos supor que você acabou de ser contratado
por um laboratório de bioinformática, e o primeiro problema que caiu no seu colo foi contar o número de nucleotídeos
de uma cadeia de DNA.
Antes que você ache que estamos falando em outra língua, vamos explicar um pouco de biologia molecular.
Lembra-se das suas aulas do colégio, em que você aprendeu que o DNA (ácido desoxirribonucleico) é uma molécula
enrolada que contém o nosso código genético?
Resumidamente falando, o DNA é um conjunto de nucleotídeos (existem quatro: adenina [A], citosina [C], guanina [G] e
tiamina [T]), que se combinam. As combinações formam nosso genoma ou de qualquer ser vivo que possua um código
genético.
Para nós, que somos da programação, o DNA será “apenas” uma sequência combinada dessas quatro letras, como por
exemplo:
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
Essa sequência de letras, por incrível que pareça, pode representar um pedaço do nosso genoma, que determina, por
exemplo, a cor dos nossos olhos.
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
Seu chefe no laboratório passa a seguinte tarefa:
Quantos nucleotídeos de cada tipo existem nesta sequência de DNA?Qual o tamanho desta cadeia?
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 4/12
Normalmente, ele vai acrescentar: “preciso disso para ontem”.
E agora, como resolvemos essa?
VETORES
A primeira estrutura de dados que vamos estudar é chamada de vetor ou array. Se você quiser um nome mais
acadêmico, pode escolher o nome “variável composta unidimensional”. São sinônimos.
Um vetor, array ou variável composta unidimensional é uma estrutura de dados contendo um conjunto de dados, todos
do mesmo tipo, indexados por um valor. Gra�camente, podemos representá-lo assim:
A �gura mostra um array com tamanho 9, chamado de x, cujo conteúdo é de variáveis do tipo char. Temos algumas
informações importantes na �gura:
Como declaramos este array em C++?
O array precisa ter um nome. No array da �gura, o nome é x;
O array tem um tamanho. No array da �gura, o tamanho é 9;
O array possui um tipo. Todos os componentes do array obrigatoriamente são do mesmo tipo. No array da �gura, o tipo
é char;
O array é dividido em índices, um para cada elemento do array, começando obrigatoriamente pelo número 0;
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 5/12
O array é �nito. Não é possível trabalhar com índices maiores que o tamanho do array, nem com índices negativos. No
nosso caso, não é possível colocar um valor na posição 9; isso vai gerar um erro chamado de index out of bounds;
Os índices sempre são números inteiros.
Como declaramos este array em C++?
Usamos a seguinte sintaxe:
TIPO nome_do_array[tamanho];
No nosso caso, o array da �gura 1 pode ser declarado assim em C++:
char x[9];
Certo, mas e o nosso problema de bioinformática, como �ca?
Clique aqui (glossário) e veja mais detalhes.
MANIPULAÇÕES COM VETORES
Podemos fazer várias operações com vetores. Veja atentamente os exemplos:
Vamos supor que o seu professor de Algoritmos peça que você faça algumas operações com as notas das provas. São
15 alunos na sala e as notas podem ter uma casa decimal.
Qual é o tipo de dados mais apropriado para guardar as notas?
Pode ser o �oat, não é?
Vamos usar um array para esta tarefa.
Em primeiro lugar, vamos criar um array em C++:�oat notas[15];
Após essa declaração, teremos o vetor criado na memória do computador.
Vetor criado na memória do computador:
Como podemos perceber, ele está pronto para receber valores; temos que preenchê-lo.
Em C++, fazemos assim para atribuir um valor a uma posição do array:
notas[0] = 7.5;
Após essa linha, teremos o seguinte vetor na memória:
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t04.pdf
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 6/12
Vamos continuar atribuindo valores para cada posição. Na prática, cada posição será a nota de um aluno.
Após essas atribuições, teremos o seguinte vetor na memória:
Não é obrigatório que a atribuição dos valores seja feita sequencialmente e é possível termos um vetor com posições
em branco, sem problema algum.
Podemos manipular os índices e valores dos vetores de várias maneiras. Analise aqui (glossário) o código em C++.
Para �car mais interessante, falta apresentar a você uma tarefa muito importante: atravessar o vetor (o que também
chamamos de percorrer o vetor ou iterar sobre o vetor).
TRAVESSIA DO VETOR
Atravessar o vetor, ou iterar sobre ele, ou percorrê-lo consiste em fazer uma repetição e veri�car índice por índice o
valor de cada posição, até chegar ao �nal do vetor, seja ele do tamanho que for.
No nosso exemplo de bioinformática, diminuímos o tamanho da string de entrada para simpli�car, mas como já vimos,
um genoma tem terabytes de tamanho.
Já pensou você declarar um vetor com um bilhão de posições? É por isso que máquinas que trabalham com esta área
precisam ser rápidas, para poder processar os dados dentro de um tempo razoável.
Vamos veri�car aqui (glossário) a solução para o nosso problema bioinformático e conferir aqui (glossário) a execução
Pronto, agora podemos entregar o trabalho para o nosso chefe, e que venham mais sequências de DNA!
Aprendemos o básico sobre os vetores. Existem mais detalhes que vamos reservar para você usar sua curiosidade e
habilidade para aprender novas funções da linguagem C++ que podem ser feitas com as strings e também que podem
ser usadas exclusivamente com vetores.
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t05.pdf
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t05.pdf
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t06.mp4
26/08/2019Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 7/12
MATRIZES
A outra estrutura de dados que vamos estudar nesta aula são as matrizes, ou variáveis compostas multidimensionais.
O que é uma matriz? Pense numa tabela. Pronto, aprendeu!
Quando falamos sobre vetores na primeira parte da aula, você viu que as �guras representativas da estrutura de dados
estão desenhadas horizontalmente? Mas e se empilhássemos vários vetores, desta forma?
Veja que temos 7 (de 0 a 6) vetores empilhados de 13 (0 a 12) posições, certo? Observe que é a mesma representação
de uma tabela ou uma planilha.
Também temos aqui índices para a dimensão horizontal e para a dimensão vertical. Podemos até chamar de x e y, mas
normalmente chamamos de linhas e colunas. Cada uma tem a sua numeração correspondente.
Da mesma forma que o vetor, uma matriz também tem um nome, é uma variável e, por de�nição, seu conteúdo só pode
ser preenchido por valores do mesmo tipo.
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 8/12
Veja a �gura a seguir:
Essa �gura mostra uma matriz chamada “a”, com n colunas e m linhas. Cada par linha x coluna é denotado por aij ou
também a[i,j].Em C++, declaramos uma matriz de duas dimensões assim:
tipo nome_da_matriz [linhas] [ colunas]; sendo linhas o total de linhas e colunas o total de colunas
Atenção
, Repare que essa é a declaração de uma matriz de duas dimensões. Quer dizer que podemos ter mais dimensões. Existem
também várias aplicações para matrizes com três dimensões (os cubos), quatro dimensões, cinco etc. Porém, este conhecimento
não faz parte do nosso contexto.
As regras que foram apresentadas para os vetores (índices negativos ou maiores que o tamanho da estrutura, nome da
estrutura etc.) também são aplicáveis para as matrizes.
Vamos apresentar um programa e incluir nele a forma de declaração de uma matriz em C++, e sua forma de travessia.
É muito parecido com o vetor, porém agora, temos que trabalhar com dois índices para cada valor.
Este exemplo é bem simples. Ele vai pedir para o usuário preencher uma matriz de 3x3 e depois vamos imprimir a
matriz na tela.
Clique aqui (glossário) para analisá-lo e veja aqui (glossário) a execução do programa.
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t07a.pdf
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t07a.mp4
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=S… 9/12
VÍDEO
Temos um exemplo mais detalhado.
Suponha que temos uma classe com 10 alunos e duas provas por aluno. Precisamos calcular e imprimir a média de
cada aluno. 
Veja aqui (glossário) como podemos organizar a solução.
Veja a execução do programa.
As linhas 10 a 15 fazem a leitura das provas de cada aluno. Para �car mais atraente, somamos 1 às variáveis i e j, para
não apresentar o índice 0 para o usuário. Isto foi feito tanto para cada aluno quanto na prova. Assim aparece prova1 e
prova2, para �car mais realista.
Após a leitura das notas, as linhas 17 a 23 calculam a média para cada aluno e atribuem o resultado para o vetor
“médias” no índice correspondente.
En�m, as linhas 24 a 26 percorrem o vetor de médias mostrando os valores para o usuário.
ATIVIDADES
1. Agora, vamos exercitar tudo o que aprendemos!
O nosso chefe do laboratório de informática nos passou outra tarefa: dada uma sequência de DNA, ele precisa da
transcrição desta sequência em mRNA.
O que é isso? O RNA é outro nucleotídeo presente nas nossas células.
Vamos lá, dada então uma sequência de DNA, como a seguir:
GATGGAACTTGACTACGTAAATT
Devemos transformá-la em RNA. Para isso, temos que percorrer a string do DNA e substituir todas as ocorrências do
caractere “T” pelo “U”. Neste caso, o resultado é:
GAUGGAACUUGACUACGUAAAUU
Como você faria isso?
Resposta Correta
http://estacio.webaula.com.br/cursos/gra007/galeria/aula10/docs/a10_t07b.pdf
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=… 10/12
2. (Ano: 2012 - Banca: FUNIVERSA - Órgão: PC-DF - Prova: Perito Criminal – Informática) A estrutura de dados formada
por vários elementos do mesmo tipo que podem ser acessados por meio do uso de um índice é o(a):
Pilha
Fila
Inteiro
Array
Lista encadeada
Justi�cativa
3. (Ano: 2009 - Banca: CESPE - Órgão: ANAC - Prova: Analista Administrativo - Tecnologia da Informação)
Um array é um agregado, possivelmente heterogêneo, de elementos de dados. Nele, um elemento individual é
identi�cado por sua posição em relação ao primeiro.
Certo
Errado
Justi�cativa
4. Em qual jogo abaixo não podemos usar matrizes para abstrair a estrutura de dados de implementação?
Jogo da velha
Batalha naval
Loteria esportiva
Adivinhação de um número
Jogo da forca
Justi�cativa
5. (Ano: 2010 - Banca: CESPE - Órgão: Banco da Amazônia - Prova: Técnico Cientí�co - Tecnologia da Informação)
Os dados armazenados em uma estrutura do tipo matriz não podem ser acessados de maneira aleatória. Portanto,
usa-se normalmente uma matriz quando o volume de inserção e remoção de dados é maior que o volume de leitura
dos elementos armazenados.
Certo
Errado
Justi�cativa
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=… 11/12
6. Ano: 2010 - Banca: AOCP - Órgão: Colégio Pedro II - Prova: Técnico de Tecnologia da Informação)
Em algoritmos e estruturas de dados, existe um tipo de estrutura chamada de vetor. Sobre vetores, assinale a
alternativa INCORRETA:
Trata-se de variáveis do mesmo tipo, que possuem um mesmo identi�cador (nome), e são alocadas aleatoriamente na
memória.
Como as variáveis têm o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura.
Na seguinte declaração:
tipo nome [tamanho];
“nome” é o nome da variável, “tamanho” é a quantidade de variáveis que vão compor o vetor e “tipo” é o tipo básico dos dados
que serão armazenados no vetor.
Em pseudocódigo, uma sintaxe válida de atribuição em um vetor pode ser: X[1] ← 45.
Vetor também é conhecido como variável composta homogênea unidimensional.
Justi�cativa
Finalizando
Chegamos ao �nal de nossa disciplina.
Existem vários programas que podem ser usados com as matrizes e
vetores. Tentamos resumir aqui os principais tópicos envolvendo essas
estruturas de dados.
Para saber mais sobre os tópicos estudados, pesquise na internet sites,
vídeos e artigos relacionados ao conteúdo visto. Se ainda tiver alguma
dúvida, fale com seu professor online utilizando os recursos
disponíveis no ambiente de aprendizagem.
26/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2653843&courseId=13042&classId=1185234&topicId=0&enableForum=S&enableMessage=… 12/12
Glossário