Capítulo 13: Vetores Unidimensionais (Estruturas de Dados e Listas em Memória)
🎯 Objetivo da Aula
Até este momento, cada variável declarada na seção var guardava apenas um único valor por vez. Se precisássemos registrar as placas de 50 caminhões no pátio, teríamos que declarar 50 variáveis diferentes (placa1, placa2, …, placa50), tornando o código inviável e impossível de automatizar com laços de repetição.
Nesta aula, você aprenderá a:
- Compreender o conceito de Estrutura de Dados Homogênea Unidimensional (Vetor / Array).
- Dominar a sintaxe de declaração:
nomeVetor : vetor [1..N] de tipo. - Acessar e modificar elementos individuais através do seu Índice Numérico de Posição (
vetor[i]). - Integrar Vetores com Laços
parapara preenchimento e listagem automatizada de dados em massa.
📥 Material de Apoio e Código-Fonte da Aula:
- 📄 Arquivo Pronto (.alg): Baixar Capitulo_13.alg (abra diretamente no VisuAlg 3.0)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_13.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: O pátio de triagem da FastLog possui 5 Vagas de Espera numeradas de 1 a 5. Conforme os caminhões chegam da estrada, o conferente precisa registrar a placa de cada um na respectiva vaga e, em seguida, emitir o Relatório Geral de Ocupação de Pátio para a torre de controle.
Missão: Você deve construir o Gerenciador de Vagas de Pátio, criando um vetor de caracteres de 5 posições, preenchendo as placas via teclado e imprimindo o mapa de ocupação formatado.
🧠 Fundamentos: A Anatomia de um Vetor
1. O que é um Vetor?
Um Vetor (Array) é uma sequência contígua de posições de memória que compartilham o mesmo nome e o mesmo tipo de dado, onde cada elemento é identificado por um Índice (Número de Posição):
graph LR
subgraph Vetor_Vagas ["Vetor: vagas (de 1 ate 5)"]
P1["vagas[1]<br/>'ABC-1234'"]
P2["vagas[2]<br/>'BRA-2E19'"]
P3["vagas[3]<br/>'XYZ-9000'"]
P4["vagas[4]<br/>'KML-4433'"]
P5["vagas[5]<br/>'JHG-7711'"]
end
style P1 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style P2 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style P3 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style P4 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style P5 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff2. A Sintaxe de Declaração no VisuAlg
Na seção var:
Indexação Base 1 no VisuAlg:
No VisuAlg e em Pascal, os vetores começam tradicionalmente no índice 1 (e vão até N). Em linguagens como C, Java, Python e JavaScript, os vetores começam no índice 0 (0 a N-1).
3. A Simbiose Perfeita: Vetores + Laço para
Nunca acesse posições de vetor de forma repetitiva manual. Use sempre a variável i do laço para:
📖 Exemplo Guiado: Controle de Vagas do Pátio
Código do Algoritmo:
✅ Exemplo de Execução no Console (F9):
🛠️ Prática Obrigatória 1: Faturamento Anual por Trimestre
Passo 1: O Desafio
Crie um algoritmo "Faturamento_Trimestral" que utilize um vetor de real com 4 posições (vetor [1..4] de real) para armazenar o faturamento dos 4 trimestres do ano:
- Receba os 4 valores pelo teclado.
- Em um segundo laço
para, calcule a Soma Total Anual e a Média Trimestral de Vendas.
✅ Resultado Esperado (Prática 1):
🛠️ Prática Obrigatória 2: Cadastro de SKUs de Inventário
Crie um algoritmo "Catalogo_SKU" que utilize um vetor de 6 posições de caractere para armazenar os códigos de produtos do almoxarifado (ex: "LOG-01", "LOG-02"…).
Após cadastrar todos os 6 códigos, exiba a lista de inventário completa numerada de 1 a 6.
✅ Resultado Esperado (Prática 2):
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_SeuNome_SeuSobrenome.alg. - Certifique-se de que declarou o vetor com a sintaxe correta
vetor [1..N] de tipo. - No Microsoft Teams, envie na tarefa “VisuAlg Cap 13 - Vetores Unidimensionais”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de aprender sobre Estruturas de Dados Lineares e Alocação de Memória Contígua. Em baixo nível, os elementos de um vetor são armazenados lado a lado na memória RAM física, permitindo que a CPU acerte o endereço de qualquer elemento com acesso instantâneo em tempo constante ($O(1)$) através da fórmula: $\text{Endereço}(i) = \text{Base} + ((i - 1) \times \text{Tamanho})$. (O -1 existe porque, no VisuAlg, o primeiro índice é 1, não 0 — o primeiro elemento fica exatamente no endereço Base, sem deslocamento.)
🔥 Desafio de Fixação: Inversão de Ordem de Vetor
Crie um algoritmo que leia 5 números inteiros em um vetor e, em seguida, utilize um laço para ... passo -1 para exibir os elementos na ordem inversa daquela em que foram digitados.
🔑 Gabarito de Código Completo
Prática 1:
Prática 2:
Desafio:
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- O que é um Vetor (Array), segundo a definição apresentada nos Fundamentos deste capítulo?
- Escreva a sintaxe de declaração de um vetor na seção
var, usando como exemplo um vetor de 5 posições do tipocaracterechamadovagas. - Segundo o aviso importante do capítulo, a partir de qual índice os vetores começam no VisuAlg/Pascal, e a partir de qual índice eles começam em linguagens como C, Java, Python e JavaScript?
- Por que o capítulo recomenda usar a variável
ido laçoparapara acessar as posições do vetor, em vez de digitar cada posição manualmente? - No Cenário Prático, quantas vagas de espera tem o pátio de triagem da FastLog, e o que deve ser registrado em cada vaga?
- No algoritmo
Controle_Vagas_Patio, quantos laçosparasão utilizados ao todo, e qual é a finalidade de cada um deles? - Na Prática Obrigatória 1, além da soma total anual, qual outro cálculo deve ser feito a partir dos 4 valores armazenados no vetor de trimestres?
- Na Prática Obrigatória 2, quantas posições tem o vetor de SKUs do algoritmo
Catalogo_SKU, e de que tipo de dado ele é declarado? - Segundo o Checkpoint de Lógica, qual fórmula é usada para calcular o endereço de memória de um elemento
iem um vetor, e em que complexidade de tempo esse acesso ocorre? - Segundo os Fundamentos, qual problema prático teríamos ao tentar registrar as placas de 50 caminhões sem usar um vetor, apenas com variáveis isoladas?