5
2010
Aprenda a Programar #13 – Matriz
Olá algoritmizeiros…
Depois de algum tempo sem post da série Aprenda a Programar – Algoritmos, voltamos hoje com o décimo terceiro artigo e último da série.
Finalizando nosso estudo de algoritmos, iremos aprender hoje sobre variáveis compostas homogenias, ou seja… Matriz.
Antes de dar continuidade na leitura, recomendo que já estejam familiarizados com o assunto do post anterior, Vetores.
Afinal, o que é uma matriz?
Uma matriz, é nada mais, do que Vetores bi-dimensionais. Onde podemos acessar os dados ali contidos através de dois valores. As “linhas” e as “colunas”. Vocês entenderão logo!
Sintaxe…
nome: vetor[<linhas>,<colunas>] de <tipo>
Exemplo:
minhavar: vetor[1..3,1..3] de caractere
Onde o primeiro valor refere-se as linhas e o segundo as colunas. O exemplo acima, refere-se a criação de uma matriz com 3 linhas e 3 colunas, conforme imagem abaixo:
Como eu posso atribuir ou visualizar dados de minha matriz?
Para atribuir dados a uma determinada posição em uma Matriz, manteremos o mesmo padrão para variáveis comuns ou vetores.
* Para atribuir um determinado valor:
melhorblog[1,2] <- "Algoritmizando"
Atribui a palavra Algoritmizando na posição (1,2) da matriz melhorblog.
* Para ler determinado valor:
...
escreva("O melhor blog é: ",melhorblog[1,2])
...
Lê o valor que se encontra na posição (1,2) da matriz melhorblog.
E agora, um “pequeno” algoritmo, utilizando praticamente tudo o que vimos durante todos esses posts de algoritmos, inclusive o assunto desse post de hoje, Matriz:
Sistema de cadastro de alunos:
- Fazer um programa de cadastro de alunos;
- O programa deverá receber o nome, blog favorito e email de cada um dos alunos;
- Após o cadastro, fornecer as seguintes opções:
- Consultar alunos cadastrados
- Consultar blogs favoritos por aluno
- Lista de emails cadastrados
- Lista completa, com todos os dados dos alunos cadastrados
- Finalizar o programa
Observação: O Programa só poderá ser finalizado quando escolhida a opção nº 5
algoritmo "Aprenda a Programar #13 - Matriz"
// Autor : Algoritmizando
// Seção de Declarações
var
alunos: vetor[1..2,1..3] de caractere
x, opcao, programa: inteiro
inicio
// Seção de Comandos
para x de 1 ate 2 faca
escreval("============================")
escreval("==== CADASTRO DE ALUNOS ====")
escreval("============================")
escreval("")
escreva("Digite um Nome: ")
leia(alunos[x,1])
escreva("")
escreva("Digite o blog favorito: ")
leia(alunos[x,2]) // http://algoritmizando.com
escreva("Informe o email: ")
leia(alunos[x,3])
limpatela
fimpara
limpatela
// Seta a variável 'programa' = 1 para manter o mesmo em execução
// Nosso programa só irá terminar quando esta variável for igual a zero
programa <- 1
enquanto programa = 1 faca
escreval("")
escreval("============================")
escreval("==== CADASTRO DE ALUNOS ====")
escreval("============================")
escreval("")
escreval("Digite a opção desejada: ")
escreval("1 - Consulta Alunos Cadastrados")
escreval("2 - Consulta Blogs Favoritos por aluno")
escreval("3 - Lista de emails cadastrados")
escreval("4 - Lista completa de alunos cadastrados")
escreval("5 - Sair do Programa")
escreval("")
// Escolhendo a opção desejada...
leia(opcao)
limpatela
escolha(opcao)
caso 1
escreval("---- Alunos Cadastrados: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1])
fimpara
caso 2
escreval("---- Blogs favoritos por aluno: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1]," ",alunos[x,2])
fimpara
caso 3
escreval("---- Lista de emails cadastrados: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,3])
fimpara
caso 4
escreval("---- Lista completa de alunos cadastrados: ")
para x de 1 ate 2 faca
escreval("---- ",alunos[x,1]," ", alunos[x,2]," ", alunos[x,3])
fimpara
caso 5
escreval("==== OBRIGADO POR ACESSAR O BLOG! ====")
programa <- 0
outrocaso
escreval("Opção Inválida...")
fimescolha
fimenquanto
fimalgoritmo
Não entendeu? veja abaixo onde foi explicado cada trecho de nosso programa…
- Nas linhas 4 a 6, temos nossa declaração de variáveis, explicada no Aprenda a Programar 3 – Variáveis e Aprenda a Programar 4 – Estrutura do Portugol;
- Nas linhas 10 a 23 temos a estrutura de repetição para .. faça e a utilização em massa dos comandos: escreva e leia;
- Na linha 31 demos início ao uso da estrutura de repetição enquanto .. faça;
- Nas linhas 47 a 73 foi utilizada a função escolha .. caso, explicada no Aprenda a Programar 8.
- E por fim, nossa matriz alunos, assunto desse post e do anterior sobre vetores. Esta que foi a base de todo o nosso programa.
Caso prefira, você pode fazer o download de nosso algoritmo e testar no VisualG:
Cadastro de Alunos - Aprenda a Programar #13 (87)Que tal praticar agora tudo o que você aprendeu?
Disponibilizamos para vocês 40 exercícios de Algoritmos e suas respectivas soluções. Mais de 2 mil pessoas já baixaram, está esperando o que para baixar e começar a praticar?
E aqui termina o último post da série ‘Aprenda a Programar’!
Continue Estudando!!!
Quer continuar estudando e se tornar um excelente programador? Recomendo a leitura do livro: Algoritmos e Programação – Teoria e Prática da editora Novatec. Vale a pena dar uma olhada.
Aprenda PHP no Algoritmizando!
PHP é uma das linguagens de programação mais utilizadas nos dias atuais, com ela é possível desenvolver desde simples páginas web até mesmo poderosos sistemas que rodam em qualquer navegador.
E o Algoritmizando agora ensina vocês a aprender a programar em PHP partindo do zero!
Está esperando o que para começar??? Enjoy!!!

Artigo criado por















O post ficou maneirissímo!!! Curti muito o “indíce” ali no final, parabéns manolo!!
Aprenda a programar é Sucesso! =)
[Reply]
Bruno Barbosa Reply:
October 5th, 2010 at 13:58
Valeu brother…
Agora poderei concentrar na próxima série de posts… =)
Até mais.
[Reply]
Seria legal lançar um pdf com todos os capitulos inclusos o/ iria ser show.
[Reply]
o que é uma matriz?
Não entendi a parte de “linhas” e “colunas”.
nome: vetor[,] de
Exemplo:
minhavar: vetor[1..3,1..3] de caractere “aqui o n° 1 e´a linha e o 3 é a coluna?”
Onde é o primeiro valor? “é o n° 1 ou 1..3?” porque temos duas vezes “1..3,1..3″
se puder me ajudar obrigado.
[Reply]
Bruno Barbosa Reply:
January 3rd, 2011 at 19:18
Olá Fabio,
Para entender matriz, primeiro você tem que ver se não tem mais nenhuma dúvida em vetores.
>> minhavar: vetor[1..3,1..3] de caractere “aqui o n° 1 e´a linha e o 3 é a coluna?”
A sua dúvida vou explicar de acordo com a sintaxe da matriz:
Sintaxe: nome: vetor[,
] de
o primeiro [1..3,1..3] significa que teremos 3 linhas em nossa matriz, e o segundo 1..3, o que está após a vírgula ([1..3,1..3] significa que teremos 3 colunas.
Se ainda restarem dúvidas, pode deixar seu comentário. E seria interessante também você dar uma revisada em nosso post onde ensinamos o que é um vetor. Ele é um pré-requisito para entender matriz, que nada mais é do que vetores bi-dimensionais.
Abraços.
[Reply]
Muito obrigado pela ajuda!!! Vou iniciar meu curso técnico em informática em fevereiro e ele é voltado para programação. Por isso já estou dando uma estudada no português estruturado. Parabéns pelo seu blog, continue com seu trabalho porque tenho certeza que além de me ajudar, ajuda também muitas pessoas que querem um dia programar e é claro que também já estão no caminho. Afinal algoritmos é a base.
[Reply]
Algoritmo Agenda
?
Contactos:
Nome: texto
NomeEmpresa: Texto
DataNascimento: Data
Telefone: Int
Telemovel: Int
Email: Texto
Morada: Texto
TipoRelacionamento: Texto
Var:
Contactos [500]: contacto
N: Int
?
algoritmo: MenuAgenda
var: op: int
op ? 0
repetir
escrever (1: Adicionar contactos)
escrever (2: Remover contactos)
escrever (3: Editar contactos)
escrever (4: Consultar contactos)
escrever (5: Sair)
escrever (Escolha uma opção)
ler (op)
caso op
1: AdicionarContacto()
2: RemoverContacto()
3: EditarContacto()
4: ConsultarContacto()
senão escrever(“Digite um número entre 1 e 5!!!”)
ate op = 5
fim_caso
fim
?
algoritmo: AdicionarContacto()
var: TotalContactos: int
TotalContactos ? 0
repetir
TotalContactos ? TotalContactos + 1
escrever(“Nome: ”)
ler (Contactos[N].Nome)
escrever(“Nome da Empresa: ”)
ler (Contactos[N].NomeEmpresa)
escrever(“Data de Nascimento: “)
ler (Contactos[N].DataNascimento)
escrever(“Telefone: ”)
ler (Contactos[N].Telefone)
escrever(“Telemóvel: “)
ler (Contactos[N].Telemovel)
escrever(“E-mail: “)
ler (Contactos[N].Email)
escrever(“Morada: “)
ler (Contactos[N].Morada)
escrever(“Tipo de Relacionamento: ”)
ler (Contactos[N].TipoRelacionamento)
escrever(“0 para sair!!!”)
ate Contactos[TotalContactos].Nome = 0 ou TotalContactos > 500
fim
?
(? é a seta para a esquerda de atribuição)
Boas
Estou a fazer um algoritmo para uma agenda que tem que estar sempre ordenada alfabeticamente pelo nome da pessoa inserido, só que não sei como ordenar, até agora tenho o pseudocódigo acima transcrito, falta-me a ordenação e o resto dos menus, se alguém poder dar umas dicas agradeço muito.
Cumprimentos,
Paulo Martins
[Reply]
muito obrigado
[Reply]
Olá Bruno, eu curso Análise de Sistemas na UFPR, estou no 1º período, comecei este ano, e estou vendo vetores agora…fiquei com dúvidas em Pesquisa Binária e Pesquisa Sequencial Básica…mais você não comentou aqui…infelizmente.
Mais enfim gostei muito dos seus posts…você sabe como explicar direitinho, entendi muito bem vetores no geral. Parabéns pelo blog.
BJo (.^^)
[Reply]
Parabéns Bruno muito bom esses seus posts do “Aprenda a programar”.
abs.
[Reply]
Olá, gostaria de perguntar como posso fazer um sistema tipo de senha, onde os caracteres escritos em um campo “leia” sejam substituídos por asteriscos… Alguém pode me ajudar?
OBS: Gostaria que os caracteres seja apenas camuflados, para eu poder utiliza-lo depois!
OBS2.: Gostaria de fazer isto utilizando o VisuAlg!
Abraços, aguardo respostas!
[Reply]
Bruno Barbosa Reply:
October 17th, 2011 at 09:13
Olá Fabio,
O VisualG e sua linguagem (Portugol) tem objetivos apenas didáticos, e não é possível fazer esse tipo de operação.
Mas são tarefas absolutamente triviais em outra linguagem de programação.
Agora que você terminou de ler todos os posts da série ‘Aprenda a Programar’, por que não tentar aprender uma nova linguagem de programação? Já conhece Python?
Abraços.
[Reply]
Ótimo trabalho!
Mais eu gostaria de saber como programo o virtualG para fazer calculos
exmplo
2+2
4.6
5/6
ou até
x^2+4x+6
coisas assim
tem como vc me encinar
por favor
[Reply]
Oiie Bruno, muitoo muito agradecida peloos posts, foram de grande ajuda para miim, curso 1 semestre do Tecnico em Informatica pela Federal, e estava com algumas dificuldades para entender algoritmos, depois de ler seus posts minha consegui entender melhoor, tenhoo prova de algoritmo amanaha, espero que saiia bem *-* … Obrigada …
[Reply]