Professor Muniz Educação & Programação

Trilha: Portugol Studio

Voltar aos conteúdos
Apostila de Apoio Didático

Vetores (Arrays Unidimensionais)

Aprenda a estruturar, armazenar e manipular dados em coleções sequenciais homogêneas no Portugol Studio.

MÓDULO 1

A Motivação: O Problema das Variáveis Isoladas

Imagine que você precise desenvolver um programa para registrar e analisar a idade de todos os 40 alunos de uma turma escolar. Utilizando apenas os conceitos básicos de variáveis comuns, a única solução seria declarar 40 variáveis diferentes de forma isolada na memória:

programa {
  funcao inicio() {
    inteiro idade1, idade2, idade3, idade4, idade5, idade6 // ... até idade40
    
    // Entrada de dados totalmente repetitiva
    leia(idade1)
    leia(idade2)
    leia(idade3)
    // ...
  }
}
Inviabilidade Prática: Gerenciar, ler ou calcular operações matemáticas (como médias acadêmicas ou buscas) em cima de dezenas de variáveis avulsas é extremamente ineficiente, gera códigos gigantescos e propensos a falhas.
MÓDULO 2

O que é um Vetor?

Para solucionar esse cenário, utilizamos uma estrutura de dados fundamental chamada Vetor (ou Array).

O vetor é uma estrutura de dados unidimensional, homogênea e estática que armazena vários dados sob um único identificador.

"O vetor pode ser visto como uma variável que possui diversas posições na memória e com isso pode armazenar diversos valores (do mesmo tipo)."

Ao invés de criarmos 40 espaços independentes na memória, reservamos um bloco contíguo de posições e o dividimos em pequenos compartimentos ("colunas") para armazenar nossos dados de forma uniforme.

MÓDULO 3

Declaração e Sintaxe no Portugol Studio

Os vetores no Portugol Studio são estruturas estáticas: o seu tamanho deve ser obrigatoriamente definido antes de ser utilizado e não poderá ser alterado dinamicamente durante a execução do programa.

Sintaxe Geral:

tipo_do_vetor nome_do_vetor[quantidade_de_elementos]

Exemplos de Declaração:

cadeia nomeAluno[40]     // Armazena até 40 nomes de alunos (cadeias de caracteres)
inteiro idade[10]        // Armazena 10 idades de forma sequencial (inteiros)
real mediaFinal[18]      // Armazena 18 notas de média de alunos (números reais)
MÓDULO 4

Mapeamento por Índices e Memória

Para identificar e manipular individualmente cada valor de um vetor, utilizamos um número sequencial denominado Índice.

A regra de ouro dos índices é:

  • O primeiro elemento do vetor sempre reside no índice 0.
  • O último elemento do vetor estará no índice TamanhoTotal - 1.

Se declararmos um vetor com 5 elementos do tipo real para notas (real notaQ[5]), a estrutura do vetor na memória será mapeada desta maneira:

notaQ[0]
Índice 0
(1ª posição)
notaQ[1]
Índice 1
(2ª posição)
notaQ[2]
Índice 2
(3ª posição)
notaQ[3]
Índice 3
(4ª posição)
notaQ[4]
Índice 4
(Última posição)
MÓDULO 5

Escrita e Leitura: Manual vs. Automatizada

Método Manual (Evitar!):

Acessar as posições individualmente e manualmente anula as vantagens de usar vetores no seu projeto:

inteiro idade[10]
leia(idade[0])
leia(idade[1])
// ... processo cansativo e repetitivo até chegar em leia(idade[9])
leia(idade[9])

Método Automatizado (Recomendado!):

A melhor abordagem é utilizar uma estrutura de repetição para. O contador interno do laço serve dinamicamente como o índice do próprio vetor, reduzindo dezenas de linhas de código para apenas poucas instruções:

programa {
  funcao inicio() {
    inteiro idade[10]

    // Entrada de dados automatizada por varredura de índice
    para(inteiro i = 0; i < 10; i++) {
      escreva("Digite a idade da posição ", i, ": ")
      leia(idade[i])
    }

    // Saída de dados automatizada na tela
    escreva("\nValores digitados no vetor: ")
    para(inteiro i = 0; i < 10; i++) {
      escreva(idade[i], " ")
    }
  }
}
MÓDULO 6

Prática e Exercícios do Material

Exercício 72

Impressão de Ordem Direta

Crie um algoritmo que leia 10 números inteiros e armazene em um vetor. Ao final, mostre todos os números digitados na ordem em que foram inseridos.

programa {
  funcao inicio() {
    inteiro numeros[10]

    para(inteiro i = 0; i < 10; i++) {
      escreva("Digite o valor ", i + 1, ": ")
      leia(numeros[i])
    }

    escreva("\nOrdem de inserção: ")
    para(inteiro i = 0; i < 10; i++) {
      escreva(numeros[i], " ")
    }
  }
}
Exercício 73

Múltiplos de 3 e Pesquisa

Altere o exercício anterior para que o vetor só aceite valores múltiplos de 3. Depois de preencher todo o vetor, leia mais um valor do teclado e busque no vetor indicando se o número está presente ou não.

programa {
  funcao inicio() {
    inteiro vetor[10]
    inteiro temp, busca
    logico encontrado = falso

    // Entrada com validação (somente múltiplos de 3)
    para(inteiro i = 0; i < 10; ) {
      escreva("Digite o múltiplo de 3 para o índice ", i, ": ")
      leia(temp)
      
      se(temp % 3 == 0) {
        vetor[i] = temp
        i++ // Só avança o loop se o dado for válido
      } senao {
        escreva("Erro: O valor não é múltiplo de 3!\n")
      }
    }

    // Realizando a busca sequencial
    escreva("\nDigite um número para pesquisar no vetor: ")
    leia(busca)

    para(inteiro i = 0; i < 10; i++) {
      se(vetor[i] == busca) {
        encontrado = verdadeiro
      }
    }

    se(encontrado) {
      escreva("O valor ", busca, " está PRESENTE no vetor!")
    } senao {
      escreva("O valor ", busca, " NÃO está no vetor.")
    }
  }
}
Exercício 74

Análise de Dados e Inversão

Faça um programa para ler 10 números do teclado. Após a leitura de todos os números apresente: o maior número, o menor número, a média dos números e imprima os números na ordem inversa do cadastro.

Exercício 75

Interseção de Vetores

Faça um algoritmo que leia dois vetores de 10 posições cada. Crie um terceiro vetor que contenha somente os valores que aparecem nos dois vetores (interseção). Mostre o vetor resultante sem valores repetidos.

Materiais Complementares de Apoio

Slides: Arquitetura de Vetores

Acesse o slide de apoio técnico para fixar os conceitos visuais e o mapeamento de posições de memória para vetores.

Baixar Slides
Videoaula: Dominando Vetores

Assista à explicação detalhada com exemplos práticos, execução passo a passo e resoluções no Portugol Studio.

Assistir Vídeo
Repositório de Código Fonte

Explore, acesse e faça o download de todos os códigos-fonte de exemplo e exercícios estruturados nesta trilha.

Abrir Repositório
Voltar aos conteúdos