Capitulo 11 - Matrizes e Arrays Bidimensionais
[1]Copyright © 2026 Alyce Suza.
Estruturas tabulares e processamento multidimensional
11.1 A Expansão para Duas Dimensões
Enquanto os vetores resolvem o problema do armazenamento linear na memória RAM, diversas situações inerentes ao processamento de dados exigem representações tabulares mais complexas. Uma folha de cálculo financeira, a grelha de um tabuleiro de xadrez ou o registo consolidado das classificações letivas de múltiplos alunos distribuídas por várias disciplinas não se acomodam de forma eficiente numa estrutura unidimensional simples. As matrizes operam como a extensão matemática e arquitetural direta dos vetores, organizando a informação em eixos bidimensionais compostos por linhas horizontais e colunas transversais. Este modelo de armazenamento reserva blocos densos de memória no sistema e exige o uso simultâneo de duas coordenadas numéricas para localizar ou gravar qualquer elemento, proporcionando um mapeamento lógico altamente escalável para o motor de processamento.
11.2 Declaração e Alocação Estrutural
A declaração formal de uma matriz no ambiente do Portugol exige a especificação do tipo primitivo de dado, a nomenclatura técnica da variável e as duas capacidades espaciais delimitadas por pares de colchetes sucessivos. O primeiro colchete define invariavelmente o limite vertical das linhas, enquanto o segundo colchete estabelece a extensão horizontal das colunas. A base teórica da programação estruturada mantém o rigor aplicado aos vetores, ordenando que a contagem posicional de ambos os eixos inicie estritamente no índice zero. Consequentemente, uma matriz instanciada com três linhas e quatro colunas confinará os seus índices de linha ao intervalo de zero a dois, e os índices de coluna ao intervalo restrito de zero a três. A tentativa de invadir índices além desta fronteira provoca a interrupção imediata da execução por falha de alocação de memória.
programa
{
funcao inicio()
{
// Declaracao de uma matriz contendo 3 linhas e 4 colunas
inteiro grelha[3][4]
// Atribuicao cruzando as duas coordenadas exatas
grelha[0][0] = 15
grelha[0][3] = 42
grelha[2][1] = 99
// Leitura de um dado inserido pelo utilizador
escreva("Insira um valor para o canto inferior direito: ")
leia(grelha[2][3])
escreva("O valor fixado no canto superior esquerdo e: ", grelha[0][0], "\n")
}
}
11.3 Navegação com Laços Aninhados
A manipulação em larga escala de grelhas matriciais impõe a utilização obrigatória do aninhamento de laços de repetição. O comando para destaca-se como a ferramenta mais segura para este cenário algorítmico, visto que confina as variáveis de controlo numa estrutura compacta. A arquitetura clássica exige a definição de um laço externo encarregue de controlar o avanço progressivo das linhas, o qual é sobreposto a um laço interno desenhado para deslizar transversalmente por todas as colunas de cada linha individual. Quando o motor de execução tranca a primeira linha no índice zero, o processador executa o ciclo interno exaustivamente preenchendo as colunas daquela secção específica, e apenas liberta o fluxo direcional para a linha seguinte quando a travessia horizontal atinge o seu limite estrutural.
programa
{
funcao inicio()
{
real boletim[3][2]
// Laco externo assumindo o controlo absoluto das linhas
para (inteiro linha = 0; linha < 3; linha++)
{
// Laco interno operando a travessia veloz das colunas
para (inteiro coluna = 0; coluna < 2; coluna++)
{
escreva("Registe a classificacao da linha ", linha, " e coluna ", coluna, ": ")
leia(boletim[linha][coluna])
}
}
escreva("\nImpressao visual do mapa letivo consolidado:\n")
para (inteiro linha = 0; linha < 3; linha++)
{
para (inteiro coluna = 0; coluna < 2; coluna++)
{
escreva("[ ", boletim[linha][coluna], " ] ")
}
// A quebra de linha ocorre unicamente no final de cada percurso horizontal
escreva("\n")
}
}
}
11.4 Exercícios do Capítulo 11
Preencha os dados de forma que os elementos pertencentes à diagonal principal recebam o valor unitário um, enquanto todos os restantes espaços adjacentes da grelha sejam preenchidos rigorosamente com o valor nulo zero. Exiba a estrutura final formatada no terminal simulando uma folha de cálculo. A técnica correta exige a avaliação relacional comparando o índice da linha com o índice da coluna diretamente dentro do núcleo dos laços aninhados.
Após a inserção de todos os dados no sistema, processe matematicamente a soma absoluta de todos os valores presentes na grelha consolidando o valor num acumulador principal. Adicionalmente, calcule de forma isolada e paralela a soma dos valores numéricos que residem exclusivamente na segunda linha da matriz, o que corresponde formalmente à coordenada de índice um.
Gabarito do Capítulo 11
programa
{
funcao inicio()
{
inteiro matriz[4][4]
para (inteiro l = 0; l < 4; l++)
{
para (inteiro c = 0; c < 4; c++)
{
se (l == c)
{
matriz[l][c] = 1
}
senao
{
matriz[l][c] = 0
}
}
}
escreva("Exibicao visual da Matriz Identidade configurada:\n")
para (inteiro l = 0; l < 4; l++)
{
para (inteiro c = 0; c < 4; c++)
{
escreva(matriz[l][c], " ")
}
escreva("\n")
}
}
}
programa
{
funcao inicio()
{
real grelha[3][3], somaTotal = 0.0, somaLinhaUm = 0.0
para (inteiro l = 0; l < 3; l++)
{
para (inteiro c = 0; c < 3; c++)
{
escreva("Forneca o dado monetario da posicao [", l, "][", c, "]: ")
leia(grelha[l][c])
somaTotal = somaTotal + grelha[l][c]
se (l == 1)
{
somaLinhaUm = somaLinhaUm + grelha[l][c]
}
}
}
escreva("\nProcessamento da Soma Global absoluta: ", somaTotal, "\n")
escreva("Processamento da Soma especifica da segunda linha: ", somaLinhaUm, "\n")
}
}
Copyright © 2026 Alyce Suza. Todos os direitos reservados nos termos da Lei 9.610/98. O conteúdo publicado no site https://wiki.suzacybersecurity.com/ é protegido pelas diretrizes brasileiras de propriedade intelectual e a sua autoria é reconhecida desde o momento da criação técnica. O compartilhamento, a reprodução e a distribuição deste material são permitidos e incentivados apenas para finalidades educacionais, acadêmicas ou de consulta técnica, sendo estritamente vedado qualquer tipo de uso comercial. Para que a replicação seja validada e legal, você deve obrigatoriamente atribuir os devidos créditos a Alyce Suza e fornecer um link direto e acessível para a publicação original. A utilização deste material para obter lucro, monetização, venda de materiais ou qualquer vantagem financeira constitui violação de direitos autorais e está sujeita às sanções legais cabíveis, assim como alterações que modifiquem o sentido original das explicações sobre segurança da informação. Para eventuais dúvidas sobre permissões de uso, parcerias ou para reportar replicações indevidas, envie um e-mail para alycesuza@gmail.com. ↩︎