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
e idade
), escrever “Acesso completo”
O algoritmo deve ler:
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):
-
: a idade do usuário (um número inteiro não negativo). -
: o nível de autorização (um dos valores , ou ).
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
, escrever “Acesso negado”. - Caso contrário:
- Se
ou , escrever “Acesso básico”. - Se
e , escrever “Acesso completo”.
- Se
Observação importante: o enunciado não menciona explicitamente o que fazer quando
e
. 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
é verdadeira se for menor que .
Operadores lógicos que aparecem aqui:
- “ou” lógico: na forma matemática escrevemos
. Em palavras: verdadeiro se ou (ou ambos) forem verdadeiros. Ex.: . - “e” lógico: escrevemos
. Verdadeiro apenas se ambos forem verdadeiros. Ex.: .
Boas práticas para ordenar as condições:
- Coloca-se primeiro a condição mais restritiva ou que elimina rapidamente casos óbvios. Aqui, verificar
primeiro é natural porque, se for verdade, não interessa o .
Passo 3
Por que checar
primeiro?
Raciocínio:
- A regra diz explicitamente: se
escrever “Acesso negado” — isso vale independentemente do . 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
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:
- Ler
e . - Se
então escrever “Acesso negado”. - Senão (ou seja,
):
a. Seou então escrever “Acesso básico”.
b. Senão see 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
Ler
Se então
\quad Escrever “Acesso negado”
Senão
\quad Se então
\quad\quad Escrever “Acesso básico”
\quad Senão se então
\quad\quad Escrever “Acesso completo”
\quad FimSe
FimSe
Ler
Se
\quad Escrever “Acesso negado”
Senão
\quad Se
\quad\quad Escrever “Acesso básico”
\quad Senão se
\quad\quad Escrever “Acesso completo”
\quad FimSe
FimSe
Observações sobre igualdade e comparação:
- Use
para testar igualdade (por ex. ). - Use
, para comparar idades. - Escreva as condições compostas com
(ou) e (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:
, . - Verificação:
é verdadeira. - Saída: “Acesso negado”.
Exemplo 2:
- Entrada:
, . - Verificação:
é falsa; entrar no caso “senão”. - Verificação seguinte:
é verdadeira. - Saída: “Acesso básico”.
Exemplo 3:
- Entrada:
, . - Verificação:
é falsa; é falsa; é verdadeira. - Saída: “Acesso completo”.
Exemplo 4 (caso não totalmente especificado pelo enunciado):
- Entrada:
, . - Verificações:
é falsa; é falsa; é falsa (pois é 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
com , 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:
. - 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:
, , , e .
Resposta
Se
então escrever “Acesso negado”
Senão, se então escrever “Acesso básico”
Senão, se então escrever “Acesso completo”
Senão, se
Senão, se