Até agora, nossos programas eram executados de cima para baixo, linha por linha. Nesta aula, vamos aprender a controlar o fluxo de execução, permitindo que o programa tome decisões e realize repetições.

Existem dois grandes grupos de estruturas de controle: Condicionais (Decisão) e Repetição (Laços/Loops).

1. Estruturas Condicionais (Decisão)

As estruturas condicionais permitem que o programa execute diferentes blocos de código com base no resultado de uma condição (logico).

A. Condição Simples e Composta: se / se-senao

Esta é a estrutura básica de decisão. Se a condição for verdadeira, o bloco se é executado. Caso contrário (opcional), o bloco senao é executado.

Estrutura Uso
se Executa um bloco de código apenas se a condição for verdadeira.
se-senao Executa o primeiro bloco se verdadeiro e um segundo bloco se falso.

Exemplo de Código: Verificando a Maioridade

programa {
	funcao inicio() {
		inteiro idade
		escreva("Digite sua idade: ")
		leia(idade)
	
		// Verifica a condição
		se (idade >= 18) {
			escreva("Você é maior de idade e pode prosseguir.")
		} senao // Se a condição acima for falsa {
			escreva("Você é menor de idade. Acesso negado.")
		}
	}
}

B. Múltiplas Escolhas: escolha (switch)

A estrutura escolha é ideal para lidar com situações onde uma única variável pode ter muitos valores possíveis, como a seleção de uma opção em um menu.

Exemplo de Código: Menu de Opções

programa {
	funcao inicio() {
		inteiro opcao
	
		escreva("--- MENU ---\\n")
		escreva("1 - Sacar\\n")
		escreva("2 - Depositar\\n")
		escreva("3 - Sair\\n")
		escreva("Escolha uma opção: ")
		leia(opcao)
	
		escolha (opcao) {
			caso 1:
				escreva("Você escolheu Sacar.\\n")
				pare // Encerra a execução deste 'caso'
			caso 2:
				escreva("Você escolheu Depositar.\\n")
				pare
			caso 3:
				escreva("Obrigado, saindo do sistema.\\n")
				pare
			caso contrario: // Se o valor não corresponder a nenhum 'caso'
				escreva("Opção inválida! Tente novamente.\\n")
		}
	}
}

2. Estruturas de Repetição (Laços/Loops)

As estruturas de repetição permitem que um bloco de código seja executado múltiplas vezes sem a necessidade de reescrevê-lo.

A. Repetição com Condição: enquanto (while)

O laço enquanto repete um bloco de código enquanto uma determinada condição permanecer verdadeira. É ideal quando você não sabe de antemão quantas vezes a repetição ocorrerá (por exemplo, um loop de jogo ou validação de senha).

Exemplo de Código: Validação de Senha Simples

funcao inicio() {
	cadeia senha_correta = "1234"
	cadeia senha_digitada = ""

	enquanto (senha_digitada != senha_correta) // Repete enquanto a senha for diferente {
		escreva("Digite a senha (4 dígitos): ")
		leia(senha_digitada)

		se (senha_digitada != senha_correta) {
			escreva("Senha incorreta. Tente novamente.\\n")
		}
	}
	escreva("Senha correta! Acesso liberado.\\n")
}

B. Repetição com Contador: para (for)