Problema do else pendurado. Determine a saída

para cada um dos seguintes códigos quando x for 9 e y

for 11, e quando x for 11 e y for 9. O compilador ignora o

recuo em um programa em C. Além disso, o compilador

sempre associa um else com o if anterior, a menos

que seja informado de que deve proceder de outra for-

ma pela colocação das chaves { }. Visto que, à primeira

vista, você pode não saber ao certo a que if um else

corresponde, isso é conhecido como o problema do ‘else

pendurado’. Eliminamos o recuo do código a seguir para

tornar o problema mais desafiador. [Dica: aplique as

convenções de recuo que você aprendeu.]

b) if ( x

if ( y > 10 )

printf( “*****\n” );

}

else {

printf( “#####\n” );

printf( “$$$$$\n” );

}

Passo 1

Olá, tudo bem? Ficou com dúvida nesse exercício? Vem que eu te ajudo!

O exercício pergunta o que o programa exibe em duas situações diferentes. Na primeira x = 9   e   y = 11 , e na segunda x = 11   e   y = 9 . Tem duas formas de descobrir o que isso, a primeira é a mais óbvia, usando o copilador. A segunda é entendendo a função de cada linha no programa.

Passo 2

Vamos começar pela primeira forma, você pode ter copiado e colado o programa no copilador e não deu em nada... Perceba que falta alguns recursos no programa.

“ Aff, mas eu colequei aquelas coisas que tem em todo programa, #include...”

Acredito que sim, mas não estou me referindo a isso, note que x   e   y estão sem um valor definido para p programa saber o que deve fazer. Dessa forma é necessário colocar a instrução de printf solicitando que o usuário defina um valor, e um scanf para que ele tenha espaço para colocar. E agora sim, você já pode fazer os testes.

Passo 3

Resolvendo pela segunda forma precisamos entender o que essa estrutura do programa significa. O programa é formado por uma estrutura que eu chamo de condição, perceba que o programa usa dois comandos chave, “if” e “else”. O que eles significam?

O “if” seria o “se”, o que seria isso no programa..

Se o número que o usuário me der for menor que 10, eu preciso imprimir tal coisa... e aí vem o “else”, ele seria o “se não” eu faço isso. Certo?

Passo 4

Outro ponto importante nesse programa é o uso das chaves, perceba que ela delimita o “If” necessário para que o comando aconteça como planejado. Nesse caso ela fala que quando meu y > 10 ele já pode exibir o printf, independente do valor de x .

Agora que você aprendeu esses conceitos, é só colocar a mão na massa!

Resposta

Dessa forma se x = 9   e   y = 11 , o programa exibe:

Insira o valor de x:

9

Insira o valor de y:

11

*****

Se x = 11   e   y = 9 , o programa exibe:

Insira o valor de x:

11

Insira o valor de y:

9

#####

$$$$$

Espero ter ajudado!