Controlar o fluxo de execução de um programa é tarefa extremamente complexa, pois, além de compreender
a lógica de funcionamento do programa, é preciso saber o que uma linguagem de programação oferece em
termos de controle da sua execução de desvios, laços e blocos de instruções. As chamadas instruções de
seleção ou decisão servem para que instruções sejam executadas ou não de acordo com condições a serem
satisfeitas em tempo de execução. Essas instruções de decisão podem ser aninhadas em geral nas
linguagens de programação, permitindo que o fluxo de execução de um programa possa contemplar mais de
um desvio, como indicado na Figura 11 (TOKUMOTO, 2016, p.67).
Figura 11 - Exemplo de instrução de decisão baseada em condições
se (condição) então
instrução
senão se (condição) então
instrução
senão
instrução
Fonte: Tokumoto (2016)
Partindo da ideia de estruturas utilizadas na elaboração de algoritmos e códigos em linguagens de
programação, observe o exemplo de trechos de códigos a seguir a analise-os.
a)
if ( a >= b ) {
comando ("O valor de A é maior ou igual a B")
} else {
comando ("O valor de A é maior ou igual a B")
}
b)
if ( a > b ) {
comando ("O valor de A é maior que B")
} else if ( a = b ) {
comando ("O valor de A e B são iguais")
} else {
comando ("O valor de B é maior que A")
}
Partindo da análise dos trechos de código genéricos acima, elabore um trecho seguindo a mesma sintaxe
para resolver o seguinte problema, utilizando seu número de RA (registro acadêmico) como base para a
elaboração do resultado seguindo a regra de uso dos dígitos como indicado na tabela a seguir que iguala as
possibilidades de números de RA diferentes de alunos e indica que
IGNORAR IGNORAR IGNORAR USAR USAR USAR USAR USAR IGNORAR IGNORAR
1 9 1 2 3 4 5 - 5
2 0 0 1 2 3 4 5 - 5
Todos os dígitos das colunas USAR indicados com números de 1 a 5 poderão ser utilizados na resolução do
problema de acordo com o que for solicitado no enunciado.
1) Imagine que se deseja elaborar uma estrutura de decisão que avalie sequencialmente 5 valores simulando
a liberação de uma tranca estilo cofre, onde é preciso acertar sequencialmente todos sem errar para que seja
exibida uma mensagem de "Porta Aberta" ao usuário, ou seja, qualquer um dos números que não seja
corretamente informado pelo usuário na ordem correta, acarreta no cancelamento da abertura, podendo ser
informado ao mesmo uma mensagem de "Sequência Incorreta".
Os dígitos indicados nas posições de 1 a 5 do seu RA são os números que servem como números secretos
para abertura da tranca e que devem ser informados corretamente e sequencialmente.
Para esta atividade, é preciso então informar a estrutura para resolver este problema com base na sintaxe
mostrada no contexto da questão.
2) Complementarmente, se esta solução fosse implementada em programação estruturada ou em
programação orientada a objetos, o que mudaria na estrutura de um possível código implementado? Cite duas
diferenças ou semelhanças (não duas de cada).
Soluções para a tarefa
Resposta:
void abrirCofre(void){
int senhaCorreta[5]={2,3,3,5,4};
int senhaDigitada[5];
int cofreAberto=0;
cabecalho();
printf("\nDigite a senha: (um numero por vez, seguido de ENTER): \n");
scanf("%d",&senhaDigitada[0]);
scanf("%d",&senhaDigitada[1]);
scanf("%d",&senhaDigitada[2]);
scanf("%d",&senhaDigitada[3]);
scanf("%d",&senhaDigitada[4]);
if (senhaDigitada[0] == senhaCorreta[0])
if (senhaDigitada[1] == senhaCorreta[1])
if (senhaDigitada[2] == senhaCorreta[2])
if (senhaDigitada[3] == senhaCorreta[3])
if (senhaDigitada[4] == senhaCorreta[4])
cofreAberto=1;
if (cofreAberto==1)
printf("\nCofre foi aberto!\n");
else
printf("\nSenha incorreta\n");
}
Explicação:
Esta questão depende do seu RA, vou fazer para um RA hipotético, substitua senhaCorreta[5]={2,3,3,5,4} pelas letras corretas do seu RA. No exemplo estou usando o RA: 27923354-9, e o MAPA pede para você pegar os 5 ultimos digitos do RA antes do -. Ou seja se se RA for por exemplo 12344321-4, voce deve substituir senhaCorreta[5]={2,3,3,5,4} por senhaCorreta[5]={4,4,3,2,1}