Um sistema controla o acesso de usuários com base em idade e nível de autorização.
O algoritmo deve ler:
  • a idade do usuário
  • o nível de autorização (1, 2 ou 3 )
Regras
  • Se a idade for menor que 18, escrever “Acesso negado”
  • Caso contrário:
  • Se (nível = 1 ou nível = 2), escrever “Acesso básico”
  • Se (nível =3 e idade \geq 21 ), escrever “Acesso completo”

Passo 1

O enunciado pede que o algoritmo leia duas entradas e escreva uma das mensagens conforme regras dadas.
Entradas (pegue esses nomes como dados de entrada):
  • idade: a idade do usuário (um número inteiro não negativo).
  • nivel: o nível de autorização (um dos valores 1, 2 ou 3).
Saídas esperadas (mensagens a escrever, exatamente como enunciado):
  • “Acesso negado”
  • “Acesso básico”
  • “Acesso completo”
Regras fornecidas (copiadas literalmente para evitar confusão):
  • Se idade < 18, escrever “Acesso negado”.
  • Caso contrário:
    • Se (nivel = 1 ou nivel = 2), escrever “Acesso básico”.
    • Se (nivel = 3 e idade \geq 21), escrever “Acesso completo”.
Observação importante: o enunciado não menciona explicitamente o que fazer quando nivel = 3 e 18 \leq idade < 21. Vou apontar essa lacuna e, na resolução, mostrar como seguir estritamente as regras e também sugerir uma alternativa prática.

Passo 2

Fundamentos que vamos usar — explicando passo a passo (sem assumir que já conhece).
O que é uma decisão (if) em um algoritmo?
  • Uma instrução condicional permite executar ações diferentes dependendo de uma condição booleana (verdadeira/falsa).
  • Uma condição é uma expressão que resulta em verdadeiro ou falso, por exemplo (idade < 18) é verdadeira se idade for menor que 18.
Operadores lógicos que aparecem aqui:
  • “ou” lógico: na forma matemática escrevemos A \lor B. Em palavras: verdadeiro se A ou B (ou ambos) forem verdadeiros. Ex.: (nivel = 1) \lor (nivel = 2).
  • “e” lógico: escrevemos A \land B. Verdadeiro apenas se ambos forem verdadeiros. Ex.: (nivel = 3) \land (idade \geq 21).
Boas práticas para ordenar as condições:
  • Coloca-se primeiro a condição mais restritiva ou que elimina rapidamente casos óbvios. Aqui, verificar idade < 18 primeiro é natural porque, se for verdade, não interessa o nivel.

Passo 3

Por que checar idade < 18 primeiro?
Raciocínio:
  • A regra diz explicitamente: se idade < 18 escrever “Acesso negado” — isso vale independentemente do nivel. Então essa verificação deve vir antes de qualquer outra, para evitar dar acesso a menores.
  • Em termos de execução: se a condição idade < 18 for verdadeira, o algoritmo termina com “Acesso negado” e não verifica mais nada (economiza tempo e evita erros).

Passo 4

Construindo o algoritmo passo a passo (pseudocódigo claro e aplicável na prova).
Ideia geral em linguagem natural:
  1. Ler idade e nivel.
  2. Se idade < 18 então escrever “Acesso negado”.
  3. Senão (ou seja, idade \ge 18):
    a. Se nivel = 1 ou nivel = 2 então escrever “Acesso básico”.
    b. Senão se nivel = 3 e idade \ge 21 então escrever “Acesso completo”.
    c. (fim das regras dadas — caso restante não especificado pelo enunciado)
Agora o mesmo em pseudocódigo linha a linha (use este formato na prova; é direto de entender):
Ler idade
Ler nivel
Se idade < 18 então
\quad Escrever “Acesso negado”
Senão
\quad Se (nivel = 1) \lor (nivel = 2) então
\quad\quad Escrever “Acesso básico”
\quad Senão se (nivel = 3) \land (idade \ge 21) então
\quad\quad Escrever “Acesso completo”
\quad FimSe
FimSe
Observações sobre igualdade e comparação:
  • Use = para testar igualdade (por ex. nivel = 3).
  • Use <, \ge para comparar idades.
  • Escreva as condições compostas com \lor (ou) e \land (e) para ficar claro.

Passo 5

Traçando execuções de exemplo (testes que você pode mostrar na prova para demonstrar que entendeu):
Exemplo 1:
  • Entrada: idade = 16, nivel = 3.
  • Verificação: idade < 18 é verdadeira.
  • Saída: “Acesso negado”.
Exemplo 2:
  • Entrada: idade = 18, nivel = 1.
  • Verificação: idade < 18 é falsa; entrar no caso “senão”.
  • Verificação seguinte: (nivel = 1) \lor (nivel = 2) é verdadeira.
  • Saída: “Acesso básico”.
Exemplo 3:
  • Entrada: idade = 22, nivel = 3.
  • Verificação: idade < 18 é falsa; (nivel = 1) \lor (nivel = 2) é falsa; (nivel = 3) \land (idade \ge 21) é verdadeira.
  • Saída: “Acesso completo”.
Exemplo 4 (caso não totalmente especificado pelo enunciado):
  • Entrada: idade = 19, nivel = 3.
  • Verificações: idade < 18 é falsa; (nivel = 1) \lor (nivel = 2) é falsa; (nivel = 3) \land (idade \ge 21) é falsa (pois idade \ge 21 é falsa).
  • Resultado segundo as regras literais: nenhuma das ações especificadas ocorre — o enunciado não definiu saída aqui. Portanto, seguindo estritamente as regras, o algoritmo não escreve nenhuma das três mensagens (ou escreve nada). É importante notar isso e, em uma prova ou num sistema real, pedir esclarecimento ao enunciador ou definir um comportamento padrão.

Passo 6

Sugestão prática (o que fazer numa prova ou implementação real diante da ambiguidade):
  • Na prova: se o enunciado não pede para tratar o caso nivel = 3 com 18 \le idade < 21, explique brevemente que esse caso não está especificado e mostre o comportamento do seu algoritmo (como fiz nos exemplos). Isso demonstra que você notou a lacuna.
  • Em um sistema real: escolha uma política clara (por exemplo, negar o acesso ou tratar como “Acesso básico”) e documente a escolha. Aqui não estou impondo — apenas sugerindo boas práticas.

Passo 7

Dicas rápidas para implementar sem erro durante a prova:
  • Use a verificação de idade como a primeira condição.
  • Para a condição “nível = 1 ou nível = 2” use um operador “ou” ou teste duas igualdades: (nivel = 1) \lor (nivel = 2).
  • Para evitar confusão com precedência lógica, escreva parênteses em condições compostas.
  • Cuidado ao falar de = (igualdade) versus = em pseudocódigo: deixe claro que é teste de igualdade, não atribuição.
  • Sempre trate os exemplos extremos: idade = 17, 18, 20, 21 e nivel = 1,2,3.

Resposta

Se idade < 18 então escrever “Acesso negado”
Senão, se (nivel = 1) \lor (nivel = 2) então escrever “Acesso básico”
Senão, se (nivel = 3) \land (idade \ge 21) então escrever “Acesso completo”

Exercícios relacionados