Capítulo 10: Loop FAÇA-ENQUANTO

🎯 Objetivo da Aula

Às vezes, você precisa que o computador faça algo antes de perguntar se deve repetir. Nesta aula, você aprenderá o laço FACA-ENQUANTO (do-while). O objetivo é entender a diferença crucial entre ele e o enquanto: o faca-enquanto garante que o código dentro dele seja executado pelo menos uma vez.


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

Situação: O sistema de rastreamento da FastLog exige uma senha numérica de segurança. O Problema: Você precisa pedir a senha. Se ela estiver errada, você pede de novo. Você não pode verificar se a senha está certa antes mesmo do usuário digitar nada.

Missão: Criar um validador de senha que insiste na pergunta até que a resposta correta seja fornecida.


🧠 Fundamentos: A Teoria Traduzida

1. Execute Primeiro, Pergunte Depois

No laço faca-enquanto, o computador executa o bloco primeiro e só testa a condição no final.

🍜 Exemplo 1: Cotidiano (Sopa)

faca { comer_colherada } enquanto (ainda_tem_sopa)

🔐 Exemplo 2: Técnico (Login de Sistema)

faca { pedir_senha } enquanto (senha_esta_errada)

graph TD
    A[Início] --> B[Pedir Token de Acesso]
    B --> C{Token Inválido?}
    C -- "Sim" --> B
    C -- "Não" --> D[Sistema WMS Liberado]
    D --> E[Fim]
    
    style C fill:#f39c12,stroke:#fff,color:#fff

3. A Sintaxe no Portugol

1
2
3
faca {
    // Código que será executado pelo menos uma vez
} enquanto (condicao)

📖 Exemplo Guiado: Validador de Senha

No laço faca-enquanto, o código é executado pelo menos uma vez antes da condição ser testada:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
programa {
	funcao inicio() {
		inteiro senha
		
		faca {
			escreva("Digite a senha secreta: ")
			leia(senha)
			
			se (senha != 1234) {
				escreva("SENHA INCORRETA! Tente novamente.\n")
			}
			
		} enquanto (senha != 1234)
		
		escreva("ACESSO CONCEDIDO.")
	}
}

🛠️ Prática Obrigatória 1: Somador com Opção

Crie um programa que peça para o usuário digitar números e vá somando-os. Após cada número, pergunte: “Deseja somar outro? (S/N)”. O programa deve continuar enquanto o usuário responder ‘S’.

✅ Resultado Esperado

1
2
3
4
5
Digite um número: 10
Deseja somar outro? (S/N): S
Digite um número: 5
Deseja somar outro? (S/N): N
A SOMA TOTAL FOI: 15

🛠️ Prática Obrigatória 2: Menu de Sistema FastLog

Crie um menu usando faca-enquanto que exiba: 1. Iniciar Entrega | 2. Ver Saldo | 3. Sair. O programa deve repetir o menu até que a opção 3 seja escolhida.

✅ Resultado Esperado

1
2
3
4
5
6
1. Iniciar Entrega | 2. Ver Saldo | 3. Sair
Opção: 2
Saldo: R$ 5000.0
1. Iniciar Entrega | 2. Ver Saldo | 3. Sair
Opção: 3
Encerrando sistema...

🔥 Desafio de Fixação (Opcional): Validador de Entrada Positiva

Peça um número ao usuário usando faca-enquanto. O programa só deve aceitar o número e encerrar quando o usuário digitar um valor positivo (maior que zero). Se for negativo, peça novamente.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. O faca-enquanto é perfeito para menus interativos que precisam rodar pelo menos uma vez.
  2. Salve os arquivos com a extensão .por (Ex: Atividade_10_SeuNome.por).
  3. Envie no Microsoft Teams na tarefa “Capítulo 10 - Faca Enquanto”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
programa {
	funcao inicio() {
		real num, soma = 0.0
		caractere opcao
		faca {
			escreva("Digite um número: ") leia(num)
			soma = soma + num
			escreva("Deseja somar outro? (S/N): ") leia(opcao)
		} enquanto (opcao == 'S' ou opcao == 's')
		escreva("A soma total foi: ", soma)
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
programa {
	funcao inicio() {
		inteiro num
		faca {
			escreva("Digite um número positivo: ")
			leia(num)
		} enquanto (num <= 0)
		escreva("Número aceito: ", num)
	}
}