Você está na página 1de 26

Técnicas de

Programação
Material Teórico
Conceitos de Vetores e Matrizes

Responsável pelo Conteúdo:


Prof. Esp. Margarete Eliane da Silva Almendro
a

Revisão Técnica:
Prof. Me. Douglas Almendro

Revisão Textual:
Prof. Me. Selma Aparecida Cesarin
a
Conceitos de Vetores e Matrizes

• Estruturas de Dados
• Vetor e Matriz

·· Nesta Unidade, o aluno terá uma visão do que vem a ser vetores e matrizes, suas
formas de acesso e manipulação, bem como irá entender também o pensamento
de programação computacional.

Hoje, veremos alguns assuntos introdutórios na nossa Disciplina e aproveito para apresentar
alguns conceitos que utilizaremos na estrutura de todas as nossas Unidades.
Para obter um bom aproveitamento, vamos conferir a estrutura desta Unidade:
··Conteúdo Teórico: neste link, você encontrará o material principal de estudos na forma
de texto escrito;
··Atividade de Sistematização: os exercícios disponibilizados são de autocorreção e visam
a que você pratique o que aprendeu na Disciplina e que identifique os pontos em que
precisa prestar mais atenção, ou pedir esclarecimentos a seu tutor. Além disso, as notas
atribuídas aos exercícios serão parte de sua média final na Disciplina;
··Atividade de Aprofundamento: é uma atividade dissertativa ou de pesquisa;
··Material Complementar e Referências Bibliográficas: nestes links, você poderá ampliar
seus conhecimentos;
··Videoaula: nestes links serão apresentadas algumas ferramentas na prática e também a
resolução de alguns exercícios de forma prática.
Lembramos a você da importância de realizar todas as atividades propostas dentro do prazo
estabelecido para cada Unidade, dessa forma, você evitará que o conteúdo se acumule e que
você tenha problemas ao final do semestre.
Uma última recomendação, caso tenha problemas para acessar algum item da Disciplina,
ou dúvidas com relação ao conteúdo, não deixe de entrar em contato com seu professor tutor
pelo botão mensagens ou fóruns.
Bom estudo!

5
Unidade: Conceitos de Vetores e Matrizes

Contextualização

A variável é capaz de armazenar apenas um valor de cada vez. Existem situações em que há
necessidade de armazenar uma grande quantidade de valores e para isso não iremos declarar
várias variáveis, mas não se preocupem; isso é normal. Para solucionarmos esses problemas,
utilizaremos recursos da lógica de programação chamados de malhas ou repetições aplicados
a vetores e matrizes.
Com os vetores e matrizes podemos utilizar a mesma variável apenas informando a posição
que iremos armazenar.
Em nosso material estaremos explorando os conceitos iniciais tanto de estruturas de
dados quanto de vetores, matrizes e principalmente a grande influência que temos em usar
estruturas de repetição, nos algoritmos, tanto para as inserções nos vetores quanto nas
remoções e alocações.

6
Estruturas de Dados

A variável é capaz de armazenar apenas um valor de cada vez. Existem situações em que
há necessidade de armazenar uma grande quantidade de valores, mas para isso não iremos
declarar várias variáveis.
Para resolver esse problema, construímos novos tipos que têm um formato denominado
estrutura de dados, que define como os tipos primitivos estão organizados.

Vetor e Matriz

Um arranjo é um grupo de elementos ou itens que respondem a um mesmo nome e que


podem ser acessados segundo a posição (índice) que ocupam dentro do vetor ou matriz.
Cada elemento ou item de um arranjo está em determinada posição e armazena um valor.
Este valor poderá ser real, inteiro, lógico, caracter (float, int, boolean, char, String etc. no caso
da linguagem Java).
É importante saber a diferença entre posição e valor do elemento de um arranjo.
Considere o vetor c:

Posição do elemento no vetor Nome do vetor

c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8]


-20 6 0 722 1543 -9 0 62 3

Conteúdo de uma posição (um elemento) do vetor

Um arranjo poderá ter várias dimensões:


· Vetores são arranjos unidimensionais (um índice);
· Matrizes são arranjos bidimensionais (dois índices).

7
Unidade: Conceitos de Vetores e Matrizes

Podemos usar arranjos de três ou mais dimensões:

Vetor (de n elementos):


a0 a1 a2 ... an–1
Matriz (de m linhas e n colunas):
a00 a01 a02 ... a0n–1
a10 a11 a12 ... a1n–1
.....
a(m–1)0a(m–1)1 a(m–1)2 ... am–1 n–1

Arranjo tridimensional aijk

Quando devemos usar vetores e/ou matrizes?


Quando desejamos processar uma grande quantidade de informações, fica extremamente
complicado, ou praticamente impossível, criar e manter um conjunto grande de variáveis.

Vetor – Declaração
• Pseudocódigo

tipo nome [quantidade]

• Java

tipo[] nome; ou tipo nome [];

Inicialização de um vetor:

nome = new tipo[quantidade];

Pode-se criar diretamente:

tipo[] nome = new tipo[quantidade];

Vetor já com conteúdo:

tipo[] nome= {valor1,valor2,..,valorn}

8
Exemplo 1
Declaração de um vetor com 4 elementos inteiros.

• Pseudocódigo

inteiro c [4]

• Java

int [] c = new int[4];

Reforçando que:

c[0]
Conteúdo
c[1]

c[2]

c[3]

Vetores – Características
· Tamanho fixo: vetores não podem ser redimensionados após sua construção;
· Verificados em tempo de execução: armazenar ou acessar um elemento em um local que
não foi declarado;
· Tipo definido: restringimos o tipo dos elementos que podem ser armazenados.
· Cada elemento do vetor é inicializado com um valor padrão, dependendo do
tipo de dados:
· null para Objetos (como String etc.)
· 0 para números (int, float, double, byte etc.)
· false para booleanos (boolean).

9
Unidade: Conceitos de Vetores e Matrizes

Vetor – Atribuição de Valores

E se fosse um vetor com 1000 elementos?

• Pseudocódigo

inteiro c[1000]
para (i=0; i<1000; i++ )
escreva (“Digite um número”)
leia c[i]
fim para

• Java

A utilização de um vetor está associada a uma estrutura de repetição. Com isso, podemos
facilmente percorrer um vetor para consultas ou atualizações.

inteiro i
para (i=0; i<4; i++ )
processar o elemento a[i]
fim para

10
Exemplo 2
Acessar, armazenar e mostrar valores do vetor.

• Pseudocódigo

real salario[5]
//Preenchimento do vetor
para (i=0; i<5; i++ )
escreva (“Entre com salario”)
leia salario[i]
fim para
//mostrando valores armazenados
para (i=0; i<5; i++ )
escreva (“Funcionário: ”+
(i+1)+ “ Salário: “ + salario[i])
fim para

• Java

11
Unidade: Conceitos de Vetores e Matrizes

Exemplo 3
Obter 8 números e armazená-los em um vetor. Somar os valores do vetor, calcular e
mostrar a média.
• Pseudocódigo

Algoritmo soma
real soma, media, a[8]
início
soma = 0
para (i=0; i<8; i++ )
escreva (“Digite um número”)
leia a[i]
fim para
para (i=0; i<8; i++ )
soma += a[i]
fim para
media = soma / 8
escreva (“A Média é: “ + media)
fim

Observe que, como os valores ficaram armazenados no vetor, não necessitamos e não
devemos efetuar a leitura novamente; apenas processar os valores do vetor.
• Java

Neste exemplo, estamos utilizando a classe Scanner para facilitar a digitação, mas poderíamos
utilizar o JOptionPane.showInputDialog para inserir os valores.

12
Exemplo 4
Elabore um algoritmo que leia os salários de 10 trabalhadores de uma empresa e os
armazene dentro de um vetor. Depois, em ciclos independentes:
– Calcule a média desses salários;
– Determine o maior dos salários desta empresa;
– Conte os salários menores de R$850,00.

• Pseudocódigo

Algoritmo Empresa
real sal[10], soma=0, media, maior
inteiro i,quant = 0
início
//Preenchimento do vetor
para (i=0; i<10 ; i++)
escreva (“Digite o salário do trabalhador ” + (i+1) + “:”)
leia sal[i]
fim para
//Somando valores armazenados no vetor
para (i=0; i<10 ; i++)
soma += sal[i]
fim para
//Cálculo da média
media = soma / 10
escreva (“A média dos salários é R$” + media)
//Encontrando o maior valor
maior=sal[0]
para (i=0; i<10 ; i++)
se (sal[i] > maior)
= sal[i]
fim se
fim para
escreva (“O maior salário é R$” + maior)
//Quantidade de salários menores que R$850,00
para (i=0; i<10 ; i++)
se (sal[i] < 850)
quant++
fim se
fim para
escreva (“Quant. de salários < R$850: ” + quant)
fim

13
Unidade: Conceitos de Vetores e Matrizes

• Java

Exemplo 5
Faça um algoritmo que receba a quantidade de peças vendidas por vendedor e armazene
essas quantidades em um vetor.
Receba também o preço da peça vendida de cada vendedor e armazene esses preços em
outro vetor.
Existem apenas dez vendedores e cada vendedor pode vender apenas um tipo de peça, isto
é, para cada vendedor existe apenas um preço.
Calcule e mostre a quantidade total de peças vendidas por todos os vendedores e para cada
vendedor calcule e mostre o valor total da venda, isto é, a quantidade de peças e o preço da peça.

14
• Pseudocódigo

Algoritmo vendedor
inteiro qtde[10], i
real preco[10], tot_geral, tot_vend
inicio
tot_geral = 0
para (i=0;i<10;i++)
escreva (“Entre com a quantidade vendida pelo vendedor” + (i+1))
leia qtde[i]
escreva (“Digite o preço do produto”)
leia preco[i]
fim para
para (i=0;i<10;i++)
tot_vend = qtde[i]*preco[i]
escreva (“O total vendido pelo vendedor” + (i+1) + “ é ” + tot_vend)
fim para
para (i=0;i<10;i++)
tot_geral = tot_geral + qtde[i]
fim para
escreva (“O total vendido por todos os vendedores é” + tot_geral)
fim

• Java

15
Unidade: Conceitos de Vetores e Matrizes

Processamento em Vetor

Exemplo 7
Exemplo de processamento de uma matriz em ordem de colunas.

inicialização geral

para ( j = 0; j < n; j++ )


para ( i = 0; i < m; i++ )
processamento do elemento a[i][j]
fim para
fim para

Exemplo 8
Exemplo de processamento de uma única linha k.

inicialização necessária para a linha k

para ( j = 0; j < n; j++ )


processamento do elemento a[k][j]
fim para

resumo necessário para a linha k

16
Exemplo 9
Exemplo de processamento de uma única coluna k

inicialização necessária para a coluna k

para ( i = 0; i < m; i++ )


processamento do elemento a[i][k]
fim para

resumo necessário para a coluna k

Exemplo 10
Exemplo da utilização de uma matriz.
Vamos supor que a matriz A contenha:

real soma
para ( i = 0; i < 3; i++ )
soma=0
para ( j = 0; j < 3; j++ )
soma += a[i][j]
fim para
escreva “Média do aluno “ + (i+1) + “ é ” + soma/3
fim para

Esta lógica calcula e visualiza a média das notas de cada aluno (cada linha é um aluno).

17
Unidade: Conceitos de Vetores e Matrizes

real soma
para ( j = 0; j < 3; j++ )
soma = 0
para ( i = 0; i < 3; i++ )
soma += a[i][j]
fim para
escreva “Média da disc. “ + (j+1) + “ é ” + soma/3
fim para

Esta lógica calcula e visualiza a média das notas de cada Disciplina.

Exemplo 11
Vamos agora para um exemplo completo.
Leia uma matriz 5 x 4. Leia também um valor x. O programa deverá fazer uma busca
desse valor na matriz e, ao final, escrever a localização (linha e coluna) ou uma mensagem
de “não encontrado”.
• Pseudocódigo

Algoritmo Matriz5x4
inteiro matriz[5][4]
inteiro busca, i, j, i1, j1
logico achou
início
para(i=0; i<5; i++)
para(j=0; j<4; j++)
escreva(“Posição [“ + i + “][“ + j + “]”)
leia(matriz[i][j])
fim para
fim para
achou = falso
i1=0
j1=0
escreva(“Qual o valor a buscar?”)
leia(busca)
para(i=0; i<5; i++)
para(j=0; j<4; j++)
se(matriz[i][j] == busca)
achou=verdadeiro
i1 = i
j1 = j
fim se
fim para
fim para
se(achou == falso)
escreva(“Elemento não encontrado”)
senão
escreva(“Encontrado na posição “ + i1 + “,” + j1)
fim se
fim

18
• Java

import javax.swing.JOptionPane;
public Class Matriz01{
public static void main(String args[]){
int[][] matriz = new int[5][4];
int busca, i, j, i1=0, j=0;
boolean achou = false;
for(i=0; i<5;i++){
for(j=0; j<4;j++){
matriz[i][j]= Integer.parseInt(JOptionPane.
showInputDialog (“Posição [“+i+ “][“+j+”]”));
}
}
Busca= Integer.parseInt(JOptionPane.
showInputDialog(“Qual o valor a buscar?”));
for(i=0; i<5;i++){
for(j=0; j<4;j++){
if(matriz[i][j]==busca){
achou= true;
i1=i;
j1=j;
}
}
}
if (achou==false){
JOptionPane.showMessageDialog(null, “Elemento
não encontrado”);
}
else{
JOptionPane.showMessageDialog(null, “Elemento
encontrado na posição ”+i1+”, “+j1);
}
}
}

19
Unidade: Conceitos de Vetores e Matrizes

Exemplo 12
Faça um programa que leia uma matriz 5x5 de números inteiros e em seguida calcule e
imprima a soma de sua diagonal principal.

a11 a12 a13 ... a1n


a21 a22 a23 ... a21
A= a31 a32 a33 ... a11
. . . ...
an1 an2 an3 ... ann

diagonal principal i = j
diagonal secundária i + j = n + 1

• Pseudocódigo

Algoritmo Matriz5x5
inteiro matriz[5][5]
inteiro i, j, soma
início
para(i=0; i<5; i++)
para(j=0; j<5; j++)
escreva(“Posição [“ + i + “][“ + j + “]”)
leia(matriz[i][j])
fim para
fim para
soma = 0
para(i=0; i<5; i++)
soma += matriz[i][i]
fim para
escreva(“A soma deu ” + soma)
fim

20
Exemplo 13
Ler uma matriz de Strings de 5 x 10 e em seguida imprima a matriz na tela.

• Pseudocódigo

Algoritmo Matriz 5x10


caracter matriz[5][10]
caracter total
inteiro i, j
início
para(i=0; i<5; i++)
para(j=0; j<10; j++)
escreva(“Posição [“ + i + “][“ + j + “]”)
leia(matriz[i][j])
fim para
fim para
total = “”
para(i=0; i<5; i++)
para(j=0; j<10; j++)
total +=matriz[i][j] + “ “
fim para
total += “\n”
fim para
escreva(total);
fim

21
Unidade: Conceitos de Vetores e Matrizes

Material Complementar

Para aprofundar seus conhecimentos, consulte:

Livros:
WIRTH, N. Algoritmos e Estruturas de Dados. Rio de Janeiro: Ltc-Livros Técnicos
e Científicos, 1999.

OLIVEIRA, J. F.; MANZANO, J. A. N. G. Estudo Dirigido de Algoritmos. Editora


Érica, 2010.

22
Referências

DEITEL, H. M. Java: Como Programar. 6.ed. Porto Alegre: Bookman, 2003. (e-book)

FURGERI, S. Java 6: Ensino Didático: Desenvolvendo e Implementando Aplicações. 2.ed.


São Paulo: Erica, 2009.

FARRER, H. Algoritmos Estruturados. 3.ed. Rio de Janeiro: Ltc-Livros Técnicos e


Científicos, 1999.

FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação: A Construção


de Algoritmos e Estrutura de Dados. 3.ed. São Paulo: Pearson Prentice Hall, 2008.

MANZANO, J. A. N. G. Algoritmos: Lógica Para Desenvolvimento de Programação.


24.ed. São Paulo: Erica, 2010.

OLIVEIRA, J. F.; MANZANO, J. A. N. G. Algoritmos – Lógica para desenvolvimento de


programação de computadores. Ver o conteúdo de Parte II – Técnicas Básica de Programação
– Capítulo 3 – Tipo de Dados e Instruções Primitivas.

23
Unidade: Conceitos de Vetores e Matrizes

Anotações

24

Você também pode gostar