Capítulo 14: Vetores II: Manipulação e Buscas

🎯 Objetivo da Aula

Ter os dados guardados em um vetor é apenas o começo. Nesta aula, você aprenderá a Processar esses dados. O objetivo é dominar algoritmos de Busca Linear (procurar um valor específico) e extrair informações úteis, como descobrir qual é o maior ou o menor valor dentro de uma lista.


🏢 O Cenário Prático (Seu Desafio)

Situação: O sistema de segurança da FastLog registrou os números de série das últimas 5 cargas que saíram do galpão. O Problema: O supervisor quer saber se a carga de código 999 está entre essas 5, sem precisar ler a lista inteira manualmente.

Missão: Criar um programa que “escaneie” o vetor e avise se o código foi encontrado ou não.


🧠 Fundamentos: A Teoria Traduzida

1. O Algoritmo de Busca Linear

Para achar algo em um vetor, o computador olha posição por posição.

🔑 Exemplo 1: Cotidiano (Chaves)

Procurar a chave da porta no meio de um molho de 10 chaves.

📦 Exemplo 2: Técnico (Rastreio de Carga)

Procurar se o código SKU “LOG-99” está na lista de 100 itens do manifesto.

graph TD
    A[Início da Busca] --> B[Posição 0]
    B --> C{É o SKU correto?}
    C -- "Sim" --> D[Status: LOCALIZADO]
    C -- "Não" --> E[Próxima Posição]
    E --> B
    
    style D fill:#2ecc71,stroke:#fff,color:#fff

📖 Exemplo Guiado: Scanner de Carga

Para achar algo em um vetor, o computador olha posição por posição (Busca Linear). Observe como usamos uma variável lógica para marcar se encontramos o item:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
programa {
	funcao inicio() {
		inteiro codigos[5] = {101, 202, 303, 999, 505}
		inteiro pesquisa
		logico encontrado = falso
		
		escreva("Qual código de carga pesquisar? ") leia(pesquisa)
		
		para (inteiro i = 0; i < 5; i++) {
			se (codigos[i] == pesquisa) {
				encontrado = verdadeiro
				pare
			}
		}
		
		se (encontrado) { escreva("Carga localizada!") }
		senao { escreva("Carga não encontrada.") }
	}
}

🛠️ Prática Obrigatória 1: O Maior da Lista

Crie um programa que peça 5 números inteiros ao usuário e guarde-os em um vetor. Em seguida, crie um algoritmo que percorra o vetor para descobrir e exibir qual foi o Maior Número digitado.

✅ Resultado Esperado

1
2
3
4
5
6
Número 1: 10
Número 2: 45
Número 3: 12
Número 4: 33
Número 5: 8
O MAIOR VALOR FOI: 45

🛠️ Prática Obrigatória 2: Filtro de Preços FastLog

Crie um vetor com 5 preços de frete fixos. Peça ao usuário um “Orçamento Máximo” e exiba na tela todos os valores da lista que estão abaixo desse orçamento.

✅ Resultado Esperado

1
2
3
4
5
Orçamento Máximo: 100.0
Fretes disponíveis:
- R$ 85.0
- R$ 92.0
- R$ 45.0

🔥 Desafio de Fixação (Opcional): Contador de Ocorrências

Crie um vetor com 10 números (pode inicializar direto). Peça um número ao usuário e conte quantas vezes esse número aparece dentro do vetor.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Use o comando pare dentro do loop de busca para economizar processamento.
  2. Salve os arquivos com a extensão .por (Ex: Atividade_14_SeuNome.por).
  3. Envie no Microsoft Teams na tarefa “Capítulo 14 - Busca em Vetores”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
programa {
	funcao inicio() {
		inteiro lista[5], maior
		para (inteiro i = 0; i < 5; i++) {
			escreva("Número ", i+1, ": ") leia(lista[i])
		}
		maior = lista[0]
		para (inteiro i = 1; i < 5; i++) {
			se (lista[i] > maior) { maior = lista[i] }
		}
		escreva("O MAIOR VALOR FOI: ", maior)
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
programa {
	funcao inicio() {
		inteiro v[10] = {1, 2, 3, 2, 5, 2, 7, 8, 2, 10}, n, cont = 0
		escreva("Número: ") leia(n)
		para (inteiro i = 0; i < 10; i++) {
			se (v[i] == n) { cont++ }
		}
		escreva("O número ", n, " aparece ", cont, " vezes.")
	}
}