5
2010
Aprenda a Programar #12 | Algoritmos – Vetores
Olá Algoritmizeiros, estamos chegando nos últimos posts da série, Aprenda a Programar, e hoje, iremos falar de vetores.
Até então, aprendemos o que é uma variável e como declarar variáveis em portugol, e fizemos isso inúmeras vezes em nossos algoritmos.
O nosso problema começa, quando temos que declarar inúmeras variáveis para atender a um fim.
Imagine que você tem que receber o nome e a nota de 50 alunos de uma escola, e depois listar o nome de cada um e a média final de cada aluno e a média da turma.
Agora imagine você na declaração de variáveis, declarando uma a uma, as 50 variáveis para o nome, depois as 50 variáveis para as notas…
var aluno1, aluno2, aluno3, ........., aluno50: caractere nota1, nota2, nota3, ............, nota50: real
Cansativo não? Acho que se fosse realmente assim, não haveria tantos programadores quanto há hoje em dia…
É em casos como esse que entra o assunto desse post. Vetores.
Vamos imaginar um vetor como sendo uma “caixa” com vários lugares separados para guardar seus documentos, ou seja, uma variável onde se pode armazenar mais de um dado.

Vetor de 8 posições
No exemplo abaixo, temos um vetor com dados armazenados nas 5 primeiras posições.

Para poder acessar o conteúdo desse vetor, vamos utilizar a sintaxe: nome[posição].
Ex: meuvetor[2]
- O retorno será a letra B.
Interessante, mas como eu posso usar vetores nos algoritmos?
Para usar os vetores, primeiro temos que declará-lo na seção de variáveis. Sim, vetor também é uma variável!
A sintaxe para declaração do vetor é a seguinte:
var nome-do-vetor: vetor[<posições>] de <tipo>
Exemplo:
var MeuVetor: vetor[1..5] de caractere
Primeiro vem o nome do vetor, então onde antes colocávamos apenas o tipo, que era caractere, real, inteiro, etc., agora vamos especificar que é um vetor, colocar quantas posições ele terá, e finalmente o tipo.
E não se confundam, no campo das posições, são apenas 2 (dois) pontos mesmo. Se colocar mais que isso seu vetor não irá funcionar. E as lendas urbanas dizem que se seu vetor estiver errado seu visualg trava. Não fiz todos os testes para confirmar isso.
Agora, um exemplo simples para facilitar a vida de vocês:
algoritmo "vetores by algoritmizando"
var
x: vetor[1..2] de inteiro
inicio
escreval("Digite um número: ")
leia(x[1])
escreval("Digite mais um número =D ")
leia(x[2])
escreval("Seus números digitados foram: ",x[1]," e ",x[2])
fimalgoritmo
E que tal, utilizar vetores junto com tudo o que aprendemos até aqui?
Atendendo ao pedido da leitora Fernanda no último post, dei início a um algoritmo que recebe 10 números, indica quais são os números ímpares maiores que 1 e menor que 726, qual a maior diferença entre dois números consecutivos informados pelo usuário e quais são múltiplos de 3.
algoritmo "Aprenda a Programar 12"
var
numeros, impar, multiplo3: vetor[0..10] de inteiro
maiordif: vetor[1..3] de inteiro
x, y: inteiro
inicio
escreval("============ APRENDA A PROGRAMAR #12 BY ALGORITMIZANDO ============")
// Variável para calcular maior diferença entre dois números consecutivos. Serão usados mais tarde
maiordif[3] <- 0
para x de 1 ate 10 faca
// Instrução para digitar o numero e guardá-lo numa variável
escreval("Digite o ",x,"º número: ")
leia(numeros[x])
// Verificação se o número é ímpar maior que 2 e menor que 726
se ((numeros[x] mod 2) <> 0) entao
se numeros[x] > 1 entao
se numeros[x] < 726 entao
impar[x] <- numeros[x]
fimse
fimse
fimse
// Verificação se o número é múltiplo de 3
se ((numeros[x] mod 3) = 0) entao
multiplo3[x] <- numeros[x]
fimse
// Maior diferença entre dois números consecutivos.
y <- x - 1
se ((numeros[x] - numeros[y]) > maiordif[3]) entao
maiordif[3] <- numeros[x] - numeros[y]
maiordif[1] <- numeros[x]
maiordif[2] <- numeros[y]
fimse
limpatela
escreval("============ APRENDA A PROGRAMAR #12 BY ALGORITMIZANDO ============")
fimpara
limpatela
escreval("============ APRENDA A PROGRAMAR #12 BY ALGORITMIZANDO ============")
escreval("")
escreval("==== NÚMEROS ÍMPARES MAIOR QUE 2 E MENOR QUE 726 ====")
para x de 1 ate 10 faca
escreval(x,"º Número ímpar: ",impar[x])
fimpara
escreval("")
escreval("==== NÚMEROS MÚLTIPLOS DE 3 ====")
para x de 1 ate 10 faca
escreval(x,"º Número múltiplo de 3: ",multiplo3[x])
fimpara
escreval("")
escreval("==== MAIOR DIFERENÇA ENTRE NÚMEROS CONSECUTIVOS ====")
escreval("A maior diferença está entre os números: ",maiordif[2]," e",maiordif[1])
escreval("Diferença de: ",maiordif[3])
fimalgoritmo
Agora é com vocês… aproveitem o exemplo acima e façam seus testes, crie novas funções e nos diga sobre suas experiências com vetores nos comentários.

Artigo criado por














Muito bom o post. Eitahh, mas a série Aprenda a Programar já está no finalzinho.
Vai deixar saudades. É legal aprender algoritmos antes de iniciar uma linguagem de programação.
Mas, o que fazer quando a série terminar? Que tal aprender uma linguagem de programação? Que tal uma básica? Pascal. rsrsrs..
[Reply]
Bruno Barbosa Reply:
July 6th, 2010 at 09:33
Pode deixar que vou fazer referência sim a série Olá Pascal =)
Já estava nos planos =)
abraços.
[Reply]
Gosteii *-*
[Reply]
Bruno Barbosa Reply:
August 5th, 2010 at 08:38
Opa, muito obrigado pelo Feedback Ramon,
Ainda nessa semana deve sair mais um post da série Aprenda a Programar, na qual vamos falar sobre ‘Matriz’
Abraços, e continue acompanhando o blog.
Bruno Barbosa
[Reply]
Oi Bruno
Abraço grande aqui do outro lado do atlântico
Estou esperando você falar um pouco de matrizes e apontadores aqui no portugol.
Poderia dar uma sugestão? Acho que uma série semelhante relativa ao Python seria bastante agradável para muitos Algoritmizeiros, eu incluso
[Reply]
Bruno Barbosa Reply:
September 18th, 2010 at 00:22
Olá,
que bom saber que o pessoal está gostando. Me animou para escrever mais um post da série, sobre matrizes.
E irei aderir a sua idéia. Sou entusiasta da linguagem Python. Com certeza será a próxima série aqui no blog.
Obrigado.
Um forte abraço.
Bruno Barbosa
[Reply]
prof-2004 Reply:
September 19th, 2010 at 09:56
Bruno, gostaria que você me esclarecesse uma dúvida.
É possível utilizar o visualg/portugol como linguagem orientada a objectos aka criar pequenos programas point-and-click com ele (à semelhança do visual c++)?
Abraço.
[Reply]
Bruno Barbosa Reply:
September 19th, 2010 at 12:45
Infelizmente não amigo.
O portugol é uma linguagem de finalidade apenas didática, utilizada para ensinar a lógica de programação para quem nunca teve contato com desenvolvimento antes.
Por isso o portugol é apenas estrutural e não orientada a objetos.
Mas na próxima série, sobre Python, vamos chegar a estudar orientação a objetos. Será muito interessante.
abraços.
GOSTARIA QUE ME AJUDASSE EM UM ALGORITMO TIPO VETOR
ELE LÊ 25 VALORES E MOSTRA EM ORDEM CONTRARIA Á QUE FOI DIGITADO
E OUTRO QUE NÃO CONSIGO É
LÊ 10 NUMERO INTEIROS E MOSTRA SÓ OS POSITIVOS
MAS SÓ SEI CONTA OS POSITIVOS NÃO SEI MOSTRA-LOS
HELP
PLIS
[Reply]
Bruno Barbosa Reply:
May 18th, 2011 at 23:28
Olá Poliana,
Para ler os valores em ordem inversa, recomendo você usar a estrutura de repetição “para” com passo -1
Quanto aos números positivos, basta você fazer um condicional, se numero > 0 entao.
E os números que forem maiores que zero, você os coloca em um vetor e depois faz um laço “para” para mostrar todos os valores daquele vetor.
Abraços.
[Reply]
Olá.!!
O meu professor quer que a gente faça um algoritmo que leia o nome de uma turma que tenha no máximo de 100 alunos, desenvolva uma função que leia com a sequencia de nomes, e armazene em um vetor, quando o nome fim for informado para a leitura e retorne a quantidade de nomes lidos.
Poderia me ajudar??
Eu comecei assim:
var
nomes: vetor[1...100] de inteiro
procedimento leiaNomes (n:inteiro)
var
i: inteiro
inicio
para i de 1 ate n faca
escreva(“Digite o”, i, ” nome”)
leia(nomes[1]) //armazenando um vetor
fimpara
fimprocedimento
inicio
leiaNomes(7)
//empaquei aqui =(
fimalgoritmo
[Reply]
Juliano Masiero Favretto Reply:
March 15th, 2012 at 21:20
Não prestei atenção na continuidade do teu algoritmo mas já vi que as variáveis estão como INT (inteiro) servindo este apenas para números inteiros. Se quiser inserir valores de texto e uma variável (nome dos alunos por exemlo), deves usar CHAR (caracter) como tipo de variável.
dá uma revisada AE… abraço.
[Reply]
Juliano Masiero Favretto Reply:
March 15th, 2012 at 21:20
Não prestei atenção na continuidade do teu algoritmo mas já vi que as variáveis estão como INT (inteiro) servindo este apenas para números inteiros. Se quiser inserir valores de texto e uma variável (nome dos alunos por exemlo), deves usar CHAR (caracter) como tipo de variável.
dá uma revisada AE… abraço.
[Reply]
olá, tenho q fazer um algoritmo com vetores mas realmente não estou conseguindo, tem como você me ajudar???
O enunciado é o seguinte:
Faça um algoritmo que leia nome, idade e sexo de 50 pessoas. Após a leitura faça:
* Imprima nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa;
* Imprima o nome e a idade de todas as mulheres;
* Imprima o nome dos homens menores de 21 anos;
Todos os dados devem ser armazenados em vetores.
se puder me ajudar, preciso desse algoritmo pronto pra mim levar na aula de amanhã à note (24/06). Desde já, agradeço.
[Reply]
Bruno Barbosa Reply:
June 24th, 2011 at 12:38
Olá Michy,
Infelizmente não posso te ajudar, pois não farei fazer seu “dever de casa”.
Se você postasse aqui o que você já fez e onde está com dúvida, tenho certeza que não só eu, como muitos leitores poderiam te ajudar…
Um forte abraço.
[Reply]
vetor já complica o meio de campo…. pqp…
[Reply]
Boa tarde, estou com dúvidas em um exercício:
Uma pesquisa com 1000 estrangeiros, como faço para achar a maior e menor idade do grupo?
Obrigadaa
[Reply]
Muito bom o Post me ajudou muito pra prova de amanhã de programação estruturada.
Seria uma boa falar de pascal também e quem sabe C.Faço mecatrônica e vou começar a estudar C no próximo semestre.
abraço.
[Reply]
Boas,
Será que me pode esclarecer uma coisa?
Tendo dois vectores, como é que reorganizo os valores de um dos vectores de forma crescente e do outro de forma decrescente.
Obrigado pela atenção.
[Reply]
Bruno Barbosa Reply:
December 14th, 2011 at 14:27
John, no post dos exercícios de algoritmos, tem uma questão respondida desse tipo. Da uma olhada lá!
Abraços.
[Reply]
Olá. Gosto muito do algoritmizando. Parabéns pelo ótimo trabalho.
Estou montando um algoritmo para fazer anagramas, mas travei pq não sei quais comandos devo dar após a formação da primeira palavra. Alguém me ajuda?
Segue o algoritmo como está até agora:
algoritmo “Anagrama ROMA”
// Função : Solucionar anagramas
// Autor : Estela Costa
// Data : 29/12/2011
// Seção de Declarações
var
palavra: vetor[1..4] de literal
inicio
// Seção de Comandos
escreva (“Digite a primeira letra: “)
leia(palavra[1])
escreva (“Digite a segunda letra: “)
leia(palavra[2])
escreva (“Digite a terceira letra: “)
leia(palavra[3])
escreva (“Digite a quarta letra: “)
leia(palavra[4])
escreva (“A palavra digitada é: “, palavra[1], palavra[2], palavra[3], palavra[4])
fimalgoritmo
Obrigada!
[Reply]
Alessandro Reply:
January 4th, 2012 at 15:48
Boa tarde!!!
o algoritimo esta correto, o que falta é mudar a ordem em que as posições do vetor são mostradas!!!
Abçs.
[Reply]
Olá,estou com duvidas em exercícios que envolvem vetores, acima de tudo preciso entender alguns comandos e como usa-lós,tenho uma lista de exercícios de logica que preciso desenvolver,mas não estou conseguindo,consigo desenvolver mas com muitas duvidas e erros,na programação do algoritmo
[Reply]
TRABALHO DE ALGORITMO
FAZER UM PROGRAMA EM PORTUGUES ESTRUTURADO OU EM LIGUAGEM C QUE LEIA 40 NUMEROS INTEIROS E EXIBA A
(A) TODOS OS NUMEROS NA ORDEM INVERSA E DA ENTRADA
(B) TODOS OS NUMREOS QUE SAO MAIORES QUE 3
(C) TODOS OS NUMEROS QUE SAO MENORES QUE 1
(D) TODOS OS NUMEROS EM ORDEM CRESCENTE
(E) TODOS OS NUMEROS EM ORDEM DECRESCENTE
PODEM USAR VETOR E PODEM SUPOR QUE OS NUMEROS DISTINTOS 2 A 2
[Reply]
oi preciso de uma ajuda meu professor quer um algoritimo com vetor que administre nomes e idades das pessoas ,mas não consegui fazer,pode me dar uma força ? agradeço desde já”!”"!!!
[Reply]