Você está na página 1de 35

Introdução à Lógica de

Programação

Vetores e Matrizes

professor.tiago.dos.santos@gmail.com
Agenda
• Vetor
• Revisão
• Motivação
• Conceitualização
• Exercício
• Matriz
• Motivação
• Conceitualização
• Exercício

professor.tiago.dos.santos@gmail.com
Vetores
Revisão

professor.tiago.dos.santos@gmail.com
Revisão
• Vamos nos lembrar do conceito de média:
𝑛
1
𝑥ҧ = ෍ 𝑥𝑖
𝑛
𝑖=1
• Para as valores 7, 8 e 6:
• 𝑛=3
• 𝑥1 = 7, 𝑥2 = 8 e 𝑥3 = 6
1 1 21
• 𝑥ҧ = 𝑥1 + 𝑥2 + 𝑥3 = 7+8+6 = =7
𝑛 3 3

professor.tiago.dos.santos@gmail.com
Revisão
• Faça um algoritmo que algoritmo "Média"
var
num1, num2, num3: real
calcule a média de três media, soma: real
inicio
números. // Entrada
escreva("1º número: ")
• Existe uma vantagem leia(num1)

em usar esse algoritmo: escreva("2º número: ")


leia(num2)
• Temos acesso aos escreva("3º número: ")
valores de entrada leia(num3)
durante toda a // Processamento
soma <- num1 + num2 + num3
execução. media <- soma / 3.0
// Saída
escreval("Média:", media)
fimalgoritmo

professor.tiago.dos.santos@gmail.com
Revisão
• A solução anterior só foi algoritmo "Média"
var
contador: inteiro
feita desta forma media, soma, numero: real
inicio
porque a quantidade de soma <- 0
para contador de 1 ate 3 faca
valores é pequena. // Entrada
escreva(contador, "º número: ")
• Refaça o algoritmo leia(numero)

utilizando estruturas // Processamento


soma <- soma + numero
que facilitem o cálculo fimpara

da média para grandes // Processamento


media <- soma / 3.0
quantidades de // Saída
números. escreval("Média:", media)
fimalgoritmo

professor.tiago.dos.santos@gmail.com
Vetores
Motivação

professor.tiago.dos.santos@gmail.com
Motivação
• Vamos nos lembrar do conceito variância
populacional: 𝑛
1
𝑣𝑎𝑟 = ෍ 𝑥𝑖 − 𝑥ҧ 2
𝑛
𝑖=1
• Para os valores 7, 8 e 6:
• 𝑛 = 3; 𝑥1 = 7, 𝑥2 = 8 e 𝑥3 = 6; 𝑥ҧ = 7
1 2 2 2
• 𝑣𝑎𝑟 = 𝑥1 − 𝑥ҧ + 𝑥2 − 𝑥ҧ + 𝑥3 − 𝑥ҧ
𝑛
1 2 2 2
• 𝑣𝑎𝑟 = 7−7 + 8−7 + 6−7
3
1 1 2
• 𝑣𝑎𝑟 = 02 + 12 + −1 2
= 0 + 1 + 1 = ≅ 0,67
3 3 3

professor.tiago.dos.santos@gmail.com
Motivação
• Utilizando a mesma lógica algoritmo "Variância"
var
de uso de estrutura de contador: inteiro
media, soma, numero: real
repetição, faça um inicio
soma <- 0
algoritmo que calcule a para contador de 1 ate 3 faca
// Entrada
variância populacional de escreva(contador, "º número: ")
leia(numero)
três números.
// Processamento
• Mas como calcularemos soma <- soma + numero
fimpara
a variância se não // Processamento
sabemos mais o valor dos media <- soma / 3.0
números lidos? Só temos // Calculo da variância
o valor da soma deles. // Saída
escreval("Média:", media)
fimalgoritmo
professor.tiago.dos.santos@gmail.com
Motivação
Uso de variáveis para cada Uso de uma estrutura de uma
número de entrada repetição para calcular a soma
• Código mais simples • Código mais complexo
• Acesso aos valores de • Não possui acesso aos
todos os números de valores de cada número
entrada, mesmo depois de entrada
do cálculo da soma • Melhor abordagem
• Abordagem ruim para para grandes
grandes quantidades quantidades de
de números números

professor.tiago.dos.santos@gmail.com
Motivação
• E se houvesse uma forma de combinar as duas
abordagens?
• Ter acesso aos valores dos números de entrada durante
toda a execução do algoritmo
• Não ter a necessidade de criar a mesma quantidade de
variáveis para cada número de entrada
• A ferramenta utilizada para resolver esse problema
existe e se chama:

Vetor
professor.tiago.dos.santos@gmail.com
Vetores
Conceitualização

professor.tiago.dos.santos@gmail.com
Conceitualização
• Como seria o algoritmo algoritmo "Média"
var
contador: inteiro
de média utilizando numeros: vetor[1..3] de real
media, soma: real
vetor, ainda utilizando inicio
soma <- 0
estrutura de repetição? para contador de 1 ate 3 faca
// Entrada
• Perceba que agora escreva(contador, "º número: ")
leia(numeros[contador])
temos acesso aos // Processamento
valores dos números de soma <- soma + numeros[contador]
fimpara
entrada durante toda a // Processamento
execução do algoritmo media <- soma / 3.0
// Saída
escreval("Média:", media)
fimalgoritmo

professor.tiago.dos.santos@gmail.com
Conceitualização
• É um conjunto de variáveis, de um determinado
tipo, aglutinadas em apenas um identificador
• Pode ser declarado para qualquer tipo primitivo:
• inteiro
• real
• logico
• caractere
• Estrutura:
var <identificador>: vetor[1..<número>] de <tipo>

professor.tiago.dos.santos@gmail.com
Conceitualização
• Declaração
• var numeros: vetor[1..3] de real
• Acesso
• numeros[2]
• Atribuição
• numeros[2] <- 3.0
• Leitura
• leia(numeros[2])
• Escrita
• escreva(numeros[2])

professor.tiago.dos.santos@gmail.com
Conceitualização
• var contador: inteiro
contador
• var variavel: vetor[1..3] de inteiro
1 2 3

variavel
• variavel[2]
1 2 3

variavel[2]
professor.tiago.dos.santos@gmail.com
Conceitualização
• Uma variável do tipo inteiro
• var contador: inteiro
contador
• contador <- 2
contador 2

• Uma variável do tipo vetor de inteiro


• var variavel: vetor[1..3] de inteiro
variavel
• variavel[contador] <- 3
variavel 3

professor.tiago.dos.santos@gmail.com
Conceitualização
• Para manipulação de algoritmo "Manipulação"
todo um vetor (leitura e var
escrita) é necessário o i: inteiro
uso de uma estrutura
de repetição valor: vetor[1..3] de real
inicio
para i de 1 ate 3 faca
leia(valor[i])
fimpara
fimalgoritmo
professor.tiago.dos.santos@gmail.com
Vetores
Exercício

professor.tiago.dos.santos@gmail.com
Exercício
• Agora temos ferramentas suficientes para
podermos fazer o algoritmo que calcule a variância
populacional. Pois bem, faça o algoritmo
considerando três números de entrada.

professor.tiago.dos.santos@gmail.com
Exercício
algoritmo "Variância"
var
contador: inteiro
numeros: vetor[1..3] de real
variancia, media, soma: real
inicio
soma <- 0
para contador de 1 ate 3 faca
// Entrada
escreva(contador, "º número: ")
leia(numeros[contador])
// Processamento
soma <- soma + numeros[contador]
fimpara
// Processamento
media <- soma / 3.0
soma <- 0
para contador de 1 ate 3 faca
soma <- soma + (numeros[contador] - media)^2
fimpara
variancia <- soma / 3.0
// Saída
escreval("Média:", media)
escreval("Variância:", variancia)
fimalgoritmo
professor.tiago.dos.santos@gmail.com
Matrizes
Motivação

professor.tiago.dos.santos@gmail.com
Motivação
• Jogo da velha
X X
X O
X O

• Como representar o tabuleiro?


• var
posicao11, posicao12, posicao13: caractere
posicao21, posicao22, posicao23: caractere
posicao31, posicao32, posicao33: caractere
• var
linha1: vetor [1..3] de caractere
linha2: vetor [1..3] de caractere
linha3: vetor [1..3] de caractere

professor.tiago.dos.santos@gmail.com
Motivação
• Existe alguma ferramenta que permita representar
de maneira mais apropriada um tabuleiro de jogo
da velha?
• A ferramenta utilizada para resolver esse problema
existe e se chama:

Matriz
professor.tiago.dos.santos@gmail.com
Matrizes
Conceitualização

professor.tiago.dos.santos@gmail.com
Conceitualização
• Como seria a representação de um tabuleiro de jogo da
velha?

algoritmo "Jogo da Velha"


var
tabuleiro: vetor[1..3, 1..3] de caractere
inicio
// Lógica do jogo
tabuleiro[2, 1] <- "X" X
fimalgoritmo
professor.tiago.dos.santos@gmail.com
Conceitualização
• São vetores bidimensionais
• Pode ser declarado para qualquer tipo primitivo:
• inteiro
• real 𝑎1,1 𝑎1,2 𝑎1,3
• logico 𝑎2,1 𝑎2,2 𝑎2,3
• caractere 𝑎3,1 𝑎3,2 𝑎2,3
• Estrutura:
var <identificador>: vetor[1..<número 1>, 1..<número 2>] de <tipo>

professor.tiago.dos.santos@gmail.com
Conceitualização
• Declaração
• var numeros: vetor[1..3, 1..3] de real
• Acesso
• numeros[2, 1]
• Atribuição
• numeros[2, 1] <- 3.0
• Leitura
• leia(numeros[2, 1])
• Escrita
• escreva(numeros[2, 1])

professor.tiago.dos.santos@gmail.com
Conceitualização
1 2 3

variavel 2

1 2 3

variavel[2, 1] 2

professor.tiago.dos.santos@gmail.com
Conceitualização
• Para manipulação de algoritmo "Manipulação"
toda uma matriz (leitura var
i, j: inteiro
e escrita) é necessário o
valor: vetor[1..3, 1..3] de real
uso de duas estruturas
inicio
de repetição para i de 1 ate 3 faca
para j de 1 ate 3 faca
leia(valor[i, j])
fimpara
fimpara
fimalgoritmo

professor.tiago.dos.santos@gmail.com
Matrizes
Exercício

professor.tiago.dos.santos@gmail.com
Exercício
• Crie um algoritmo em pseudocódigo que faça a
leitura de uma matriz de números inteiros de
tamanho 3 x 3 e depois imprima toda a matriz de
maneira estruturada:
• Exemplo de uma impressão estruturada com uma matriz
de tamanho 3 x 3:
|1 5 4|
|3 7 5|
|9 1 0|

professor.tiago.dos.santos@gmail.com
Exercício
algoritmo "Imprimir"
var
i, j: inteiro
valor: vetor[1..3, 1..3] de real
inicio
para i de 1 ate 3 faca
para j de 1 ate 3 faca
leia(valor[i, j])
fimpara
fimpara
para i de 1 ate 3 faca
escreva("|")
para j de 1 ate 3 faca
escreva(valor[i, j])
fimpara
escreval(" |")
fimpara
fimalgoritmo
professor.tiago.dos.santos@gmail.com
Resumo
• Vetor
• Matriz

professor.tiago.dos.santos@gmail.com
Introdução à Lógica de
Programação

Vetores e Matrizes

professor.tiago.dos.santos@gmail.com

Você também pode gostar