Informática, perguntado por gomesjossgomesoxz80l, 1 ano atrás

Dado o ALGORITMO abaixo, utilizando a notação em PSEUDOCÓDIGO analise:

ALGORITMO
DECLARE decimal, binario NUMÉRICO
ESCREVA "CONVERSÃO DE DECIMAL PARA BINÁRIO"
decimal <- 10
ENQUANTO decimal > 0 FAÇA
INÍCIO
SE (decimal mod 2) = 0
ENTÃO binario <- binario + "0"
SENÃO binario <- binario + "1"
decimal <- decimal div 2
FIM
ESCREVA "VALOR BINARIO: ", binario
FIM_ALGORITMO

De acordo com o algoritmo é possível afirmar que:
I) O DIV retorna o quociente da divisão
II) O MOD retorna o resto da divisão
III) O ENQUANTO irá repetir até encontrar um valor binário
IV) A variável binario irá ser impressa na tela enquanto decimal > 0
V) O valor final da variável binario impressa na tela será '0101'

Marque somente a alternativa correta:

Soluções para a tarefa

Respondido por bokomoko
2
Esse algoritmo está errado. Ele não converte de decimal para binário

O problema está aqui 
DECLARE decimal, binario NUMÉRICO

Como a variável "binário" é numérica a operação 
binario <- binario + "0"
vai dar inválida pois  ela está somando ao valor da variável NUMËRICA um valor caracter
Mesmo que o operador + fizesse a conversão automática e transformasse a varia'vel binario de numérica para string, ainda estaria errado pois a concatenação deveria ser "0" + binario

Além disso, o algoritmo tem um SE desnecessário aqui
SE (decimal mod 2) = 0

a operação (decimal mod 2) ou dá 0 ou dá 1 Portanto, bastaria concatenar, e não somar, independente do resultado do SE

Eu faria assim

ALGORITMO
DECLARE decimal NUMÉRICO
DECLARE binario CARACTER

ESCREVA "CONVERSÃO DE DECIMAL PARA BINÁRIO"
decimal <- 10
ENQUANTO decimal > 0 FAÇA
INÍCIO
    binario <- string( decimal mod 2) + binario
   decimal <- decimal div 2
FIM
ESCREVA "VALOR BINARIO: ", binario
FIM_ALGORITMO


Observe que estou assumindo que a função string() converte um valor numérico em caracter e que o operador + quando usado com operandos string executa a concatenação.

Eu faria assim em repl.it python assim

wdecimal = 1
while (wdecimal !=0):
    wdecimal = int(input("Digite um número decimal ou 0 para terminar"))
    binario = ""
    decimal = wdecimal
    while (decimal >0 ):
        binario = str(decimal % 2) + binario
        decimal = int( decimal / 2 )
    if (wdecimal):
       print( "O número binário é",binario)

print( "o programa terminou porque o usuário digitou 0")



bokomoko: Eis o fonte aqui -> https://repl.it/No6h/13
Perguntas interessantes