Buscar

Matrizes: Conceitos e Exercícios

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 11 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 11 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 11 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

Prévia do material em texto

matrizes
Matrizes são arranjos de duas ou mais dimensões. Assim como nos vetores, todos os elementos de uma matriz são do mesmo tipo, armazenando informações semanticamente semelhantes.
Matrizes bidimensionais são arranjos de duas dimensões. São necessários dois índices para acessar cada um de seus elementos, um para cada uma das dimensões
Em pseudolinguagem, uma matriz bidimensional é declarada com o seguinte tipo:
arranjo [<índice menor da dimensão 1>..<índice maior da dimensão 1>, <índice menor da dimensão 2>..<índice maior da dimensão 2> ]de <tipo da matriz>)onde <índice menor da dimensão n> e <índice maior da dimensão n> são os valores limites que definem o intervalo de índices válidos para cada uma das dimensões, e <tipo da matriz> é o tipo dos dados passíveis de serem armazenados nessa matriz.
A seguir, alguns exemplos de acesso a um elemento de uma matriz, considerando a matriz bidimensional notas antes declarada:
■ primeira nota do primeiro aluno: notas[1,1]
■ primeira nota do aluno 3, considerando i = 3 e j = 1 (sendo i e j variáveis inteiras): notas[i, j]
■ quinta nota do segundo aluno, considerando i = 4: notas[2, i+1]
ler (notas[1,1])
notas[1,2] ← notas[1,1]
se notas [1,1] = 10
então escrever (notas[1,1])
a Preenchimento da matriz por leitura, percorrendo linha por linha:
 para i de 1 incr 1 até MAX faça
 para j de 1 incr 1 até MAX faça
 ler(tabela[i,j])
b Escrita da matriz completa, percorrendo linha por linha:
 para i de 1 incr 1 até MAX faça
 para j de 1 incr 1 até MAX faça
 escrever(tabela[i,j])
c Somatório dos elementos da última coluna:
 soma ← 0
 para i de 1 incr 1 até MAX faça
 soma ← soma + tabela[i,MAX]
 escrever('Somatório dos elementos da última coluna = ', soma)
d Somatório dos elementos da diagonal principal. Observe que neste caso, teoricamente, dois índices deveriam ser usados para acesso à matriz tabela, já que ela é bidimensional. No entanto, como os elementos da diagonal principal têm índices com valores iguais para linha e coluna (0,0 – 1,1 – 2,2 – etc.), uma única variável pode ser usada como índice para as duas dimensões:
 soma ← 0
 para i de 1 incr 1 até MAX faça
 soma ← soma + tabela[i,i]
 escrever('Somatório dos elementos da diagonal principal = ', soma)
e Somatório dos elementos da diagonal secundária. Observar que, a partir do índice da linha, é possível calcular o índice da coluna, o que, mais uma vez, permite resolver o problema usando apenas uma variável como índice:
 soma ← 0
 para i de 1 incr 1 até MAX faça
 soma ← soma + tabela[i,((MAX – i) + 1)]
 escrever('Somatório elementos da diagonal secundária = ', soma)
f Somatório de todos os elementos à esquerda da diagonal secundária:
 soma ← 0
 para i de 1 incr 1 até MAX faça
 para j de 1 incr 1 até MAX faça
 se j < (MAX – i)
 então soma ← soma + tabela[i,j]
 escrever
 ('Somatório dos elementos à esquerda da diagonal secundária = ',
 soma)
g Geração de dois vetores, um com o somatório das linhas (som_lin[MAX]) e o outro com o das colunas (som_col[MAX]): para i de 1 incr 1 até MAX faça {INICIALIZA VETORES EM ZERO}
 início
 som_lin[i] ← 0
 som_col[i] ← 0
 fim
 para i de 1 incr 1 até MAX faça
 para j de 1 incr 1 até MAX faça
 início
 som_lin[i] ← som_lin[i] + tabela[i,j]
 som_col[j] ← som_col[j] + tabela[i,j]
 fim
matrizes com mais de duas dimensões
Supondo que há 2 turmas, cada turma com 7 alunos, com 6 notas por aluno, a declaração da
matriz para armazenar os dados correspondentes seria a seguinte:
notas_turma (arranjo [1..2, 1..7, 1..6] de real)
Exercícios
1. Considere as operações básicas que podem ser realizadas com uma matriz e assinale a alternativa que NÃO se refere a uma operação básica de manipulação de matrizes.
D. Verificar quais números da matriz são números pares:
 para i de 1 ate linhas passo 1 faca
 para j de 1 ate colunas passo 1 faca
 se (valores[i,j] mod 2 = 0)
 escreval("Par: ",valores[i,j])
 fimpara
 fimpara
2. Analise o seguinte programa em pseudocódigo:
algoritmo "matrizes"
var
 valores: vetor[1..3,1..4] de real
 calcula: real
 i,j: inteiro
procedimento X
inicio
 para i de 1 ate 3 passo 1 faca
 para j de 1 ate 4 passo 1 faca
 escreva("Digite valor: ")
 leia(valores[i,j])
 fimpara
 fimpara
fimprocedimento
procedimento Y
inicio
 para i de 1 ate 3 passo 1 faca
 escreval("")
 para j de 1 ate 4 passo 1 faca
 escreva(" ",valores[i,j])
 fimpara
 fimpara
fimprocedimento
funcao Z:real
var
 s : real
inicio
 s <- 0
 para i de 1 ate 3 passo 1 faca
 para j de 1 ate 4 passo 1 faca
 s <- s + valores[i,j]
 fimpara
 fimpara
 retorne s
fimfuncao
inicio
//conjunto de comandos
fimalgoritmo
Analise as alternativas a seguir e selecione a que apresenta corretamente o "//conjunto de comandos" para realizar a seguinte lista de operações:
- ler a matriz;
- calcular o somatório dos elementos da matriz;
- escrever a matriz;
- mostrar o somatório dos elementos da matriz.
C. inicio
//conjunto de comandos
 X() 
 calcula <- Z() 
Y() 
 escreval ( "Somatorio: ", calcula )
fimalgoritmo
Inicio
//conjunto de comandos
 X() //le a matriz
 calcula <- Z() //calcula o somatorio
 Y() //escreve a matriz
 escreval( "Somatorio: ", calcula ) //mostra o valor do somatório
fimalgoritmo
3. Deseja-se construir um algoritmo que leia uma matriz bidimensional quadrada, ou seja, que a quantidade de linhas seja igual à quantidade de colunas. Esse algoritmo deve ter uma função responsável por calcular o somatório dos elementos da diagonal secundária.
Analise as alternativas a seguir e selecione a que apresenta a mais correta implementação da função que calcula o somatório dos elementos da diagonal secundária da matriz.
C. funcao secundaria:real
var
 s : real
inicio
 s <- 0
 para i de 1 ate linhas passo 1 faca
 para j de 1 ate colunas passo 1 faca
 se ((i+j) = (linhas+1)) entao
 s <- s + valores[i,j]
 fimse
 fimpara
 fimpara
 retorne s
fimfuncao
Função que calcula e retorna o somatório dos elementos da diagonal secundária da matriz.
4. Considere o seguinte algoritmo em pseudocódigo:
algoritmo "matrizes"
var
 valores: vetor[1..4,1..4] de real
 soma: vetor[1..4] de real
 i,j: inteiro
procedimento ler
inicio
 para i de 1 ate 4 passo 1 faca
 para j de 1 ate 4 passo 1 faca
 escreva("Digite valor: ")
 leia(valores[i,j])
 fimpara
 fimpara
fimprocedimento
procedimento escrever
inicio
 para i de 1 ate 4 passo 1 faca
 escreval("")
 para j de 1 ate 4 passo 1 faca
 escreva(" ",valores[i,j]:
 fimpara
 fimpara
fimprocedimento
inicio
 ler()
 escrever()
fimalgoritmo
Analise as alternativas a seguir e selecione a que apresenta a correta implementação de uma função que calcula o somatório dos elementos de cada linha e armazene esse somatório em um vetor.
A. procedimento somatorio
inicio
 para i de 1 ate 4 passo 1 faca
 soma[i] <- 0
 para j de 1 ate 4 passo 1 faca
 soma[i] <- soma[i] + valores[i,j]
 fimpara
 fimpara
fimprocedimento
Essa função calcula corretamente o somatório dos elementos de cada linha e armazena o somatório em um vetor.
5. Considere a estrutura, as características e o funcionamento das matrizes. Analise as alternativas a seguir e determine qual é a falsa.
C. As variáveis utilizadas para indexar elementos de uma matriz podem ser do tipo real.
As variáveis utilizadas para indexar elementos de uma matriz devem ser do tipo inteiro.
Desafio!
Seu desafio é construir um algoritmo em pseudocódigo que leia uma matriz bidimensional (5 x 5) , calcule e mostre o seu MINMAX. O MINMAX de uma matriz é o maior valor/elemento da linha onde está o menor valor/elemento da matriz considerada. Portanto, para construir um algoritmo que defina o MINMAX de uma matriz, é preciso:
- ler a matriz;
- encontrar as coordenadas do MENOR elemento da matriz (linha e coluna);
- encontrar o maior elemento da linha do MENOR elemento (esse é o MINMAX);
- escrever a matriz lida;
- escrever o valor do elemento MINMAX.
Acompanhe uma implementação do algoritmo MINMAX.
algoritmo "minmax"
var
valores: vetor[1..5,1..5] de realprocedimento lerValores
var
L, K : inteiro
inicio
para L de 1 ate 5 passo 1 faca
para K de 1 ate 5 passo 1 faca
escreva("Valor: ")
leia(valores[L,K])
fimpara
fimpara
fimprocedimento
procedimento escreverValores
var
L, K : inteiro
inicio
para L de 1 ate 5 passo 1 faca
escreval(" ")
para K de 1 ate 5 passo 1 faca
escreva(" ", valores[L,K])
fimpara
fimpara
fimprocedimento
funcao minmax: real
var
L, K, LM, KM : inteiro
maximo : real
inicio
//encontrar coordenadas no menor elemento da matriz
LM <- 1
KM <- 1
para L de 2 ate 5 passo 1 faca
para K de 1 ate 5 passo 1 faca
se (valores[L,K] < valores[LM,KM]) entao
LM <- L
KM <- K
fimse
fimpara
fimpara
escreval(" ")
escreval("Menor[",LM,",",KM,"]= ",valores[LM,KM])
//encontrar o maior elemento na linha do menor elemento
maximo <- valores[LM,1]
para K de 2 ate 5 passo 1 faca
se (valores[LM,K] > maximo) entao
maximo <- valores[LM,K]
fimse
fimpara
retorne(maximo)
fimfuncao
inicio
lerValores()
escreverValores()
escreval("MINMAX: ",minmax())
fimalgoritmo

Continue navegando