O que há de Novo?
Fórum Outer Space - O maior fórum de games do Brasil

Registre uma conta gratuita hoje para se tornar um membro! Uma vez conectado, você poderá participar neste site adicionando seus próprios tópicos e postagens, além de se conectar com outros membros por meio de sua própria caixa de entrada privada!

  • Anunciando os planos GOLD no Fórum Outer Space
    Visitante, agora você pode ajudar o Fórum Outer Space e receber alguns recursos exclusivos, incluindo navegação sem anúncios e dois temas exclusivos. Veja os detalhes aqui.


[Ajuda} algoritmo - Não estou entendo a condição da variável lógica...

SagaOPC

Mil pontos, LOL!
Mensagens
29.396
Reações
42.203
Pontos
1.074
Estou estudando aqui sozinho, o que é uma m****, só leitura, estou com duvida com relação a um algoritmo.

é basico, digitar o numero do mes e escrever por extenso. e se não for um numero válido, mostrar numero não é valido. Ok, até aí eu entendi, o problema é quando colocaram a variável lógica para tratar o erro, e evitar que apareça a mensagem: O numero X equivale ao mes Y

aqui tá o algoritmo:

Código:
programa

{

  funcao inicio()

  {

    inteiro numMes

    cadeia mesExtenso=""

    logico invalido=falso

    escreva("Informe o número do mês: ")

    leia(numMes)

    se (numMes==1)

    {

      mesExtenso="janeiro"

    }

    senao se (numMes==2)

    {

      mesExtenso="fevereiro"

    }

    senao se (numMes==3)

    {

      mesExtenso="março"

    }

    senao se (numMes==4)

    {

      mesExtenso="abril"

    }

    senao se (numMes==5)

    {

      mesExtenso="maio"

    }

    senao se (numMes==6)

    {

      mesExtenso="junho"

    }

    senao se (numMes==7)

    {

      mesExtenso="julho"

    }

    senao se (numMes==8)

    {

      mesExtenso="agosto"

    }

    senao se (numMes==9)

    {

      mesExtenso="setembro"

    }

    senao se (numMes==10)

    {

      mesExtenso="outubro"

    }

    senao se (numMes==11)

    {

      mesExtenso="novembro"

    }

    senao se (numMes==12)

    {

      mesExtenso="dezembro"

    }

    senao

    {

      escreva("Mês inválido!!!")
      invalido=verdadeiro

    }

    se (nao invalido)


    escreva("O número ", numMes, " equivale ao mês de ", mesExtenso)

  }

}

alguém pode me ajudar? me expliquem o que caralhos foi feito nessa variável...

eu preferiria copiar o texto " escreva("O número ", numMes, " equivale ao mês de ", mesExtenso) " e colocar debaixo de cada variável senão e f**a-se, na base da gambiarra, como bom programador faria :coolface
 

surfista_capixaba

Ei mãe, 500 pontos!
Mensagens
421
Reações
513
Pontos
519
Estou estudando aqui sozinho, o que é uma m****, só leitura, estou com duvida com relação a um algoritmo.

é basico, digitar o numero do mes e escrever por extenso. e se não for um numero válido, mostrar numero não é valido. Ok, até aí eu entendi, o problema é quando colocaram a variável lógica para tratar o erro, e evitar que apareça a mensagem: O numero X equivale ao mes Y

aqui tá o algoritmo:

Código:
programa

{

  funcao inicio()

  {

    inteiro numMes

    cadeia mesExtenso=""

    logico invalido=falso

    escreva("Informe o número do mês: ")

    leia(numMes)

    se (numMes==1)

    {

      mesExtenso="janeiro"

    }

    senao se (numMes==2)

    {

      mesExtenso="fevereiro"

    }

    senao se (numMes==3)

    {

      mesExtenso="março"

    }

    senao se (numMes==4)

    {

      mesExtenso="abril"

    }

    senao se (numMes==5)

    {

      mesExtenso="maio"

    }

    senao se (numMes==6)

    {

      mesExtenso="junho"

    }

    senao se (numMes==7)

    {

      mesExtenso="julho"

    }

    senao se (numMes==8)

    {

      mesExtenso="agosto"

    }

    senao se (numMes==9)

    {

      mesExtenso="setembro"

    }

    senao se (numMes==10)

    {

      mesExtenso="outubro"

    }

    senao se (numMes==11)

    {

      mesExtenso="novembro"

    }

    senao se (numMes==12)

    {

      mesExtenso="dezembro"

    }

    senao

    {

      escreva("Mês inválido!!!")
      invalido=verdadeiro

    }

    se (nao invalido)


    escreva("O número ", numMes, " equivale ao mês de ", mesExtenso)

  }

}

alguém pode me ajudar? me expliquem o que caralhos foi feito nessa variável...

eu preferiria copiar o texto " escreva("O número ", numMes, " equivale ao mês de ", mesExtenso) " e colocar debaixo de cada variável senão e f**a-se, na base da gambiarra, como bom programador faria :coolface

Bem, vou tentar:
no começo escolhe o numero para o mês, faz uma "put*" verificação(ssds switch) e caso não exista ele entra no ultimo if("senao"), ate ai tudo blz.
Ele escreve que o mes é invalido e atribui o valor como verdadeiro para a variavel. Ta bom.
No final ele verifica se essa variavel e verdadeira ou falsa, caso verdadeira ele não escreve, caso contrario ele escreve
 

AriltonJA

O Arauto da Luz
VIP
Mensagens
3.171
Reações
3.457
Pontos
704
Você tem uma serie de ifs aninhados. Francamente, bem idiota esse codigo até para ensinar algo para alguem acho, não no sentido de falta de complexidade mas que é elaborado de forma ruim.

Na parte 1
todos os seus "senao se" são executados um após o outro desde que a condição do "senao se" anterior não tenha sido atendida, correto?
  • Se nenhum "senao se" em for atendido, ele vai chegar ao ultimo "senao" e marcar que invalido é verdadeiro.
  • Se algum "senao se" for atendido, ele vai parar antes do fim e invalido vai continuar falso (como foi definido no inicio da função).
No final de tudo, na parte 2, ele verifica se invalido é verdadeiro ou falso e imprime algo a partir do resultado.

Parte 1
Código:
    se (numMes==1)
    {
      mesExtenso="janeiro"
    }
    senao se (numMes==2)
    {
      mesExtenso="fevereiro"
    }
    senao se (numMes==3)
    {
      mesExtenso="março"
    }
    senao se (numMes==4)
    {
      mesExtenso="abril"
    }
    senao se (numMes==5)
    {
      mesExtenso="maio"
    }
    senao se (numMes==6)
    {
      mesExtenso="junho"
    }
    senao se (numMes==7)
    {
      mesExtenso="julho"
    }
    senao se (numMes==8)
    {
      mesExtenso="agosto"
    }
    senao se (numMes==9)
    {
      mesExtenso="setembro"
    }
    senao se (numMes==10)
    {
      mesExtenso="outubro"
    }
    senao se (numMes==11)
    {
      mesExtenso="novembro"
    }
    senao se (numMes==12)
    {
      mesExtenso="dezembro"
    }
    senao
    {
      escreva("Mês inválido!!!")
      invalido=verdadeiro
    }

Parte 2
Código:
  se (nao invalido) < ou seja, se invalido for falso
    escreva("O número ", numMes, " equivale ao mês de ", mesExtenso)

PS: Bem idiota a ferramenta de codigos não exibir a numeração das linhas. Po @brunoos , melhora isso ai pra gente <3
 
Ultima Edição:

carlos222

Ei mãe, 500 pontos!
Mensagens
6.506
Reações
19.433
Pontos
744
Deixa eu vê se entendi a duvida.

vc não entendeu essa parte aqui?

{

escreva("Mês inválido!!!")
invalido=verdadeiro

}

se (nao invalido)


escreva("O número ", numMes, " equivale ao mês de ", mesExtenso)

}

Se não for igual a jan até dez ele entra nessas chaves.
Vai aparecer na tela: mês inválido. E vai colocar o variável "invalido" como verdadeiro e o programa terminará aí.

Se for for igual a algum mês, o programa vai para o último SE.
Dentro do SE, ele fez uma negação (se for verdadeiro vai ser falso, o contrário também é valido).
Se o resultante for verdadeira, ele printa o mês.
 

Ero_Seenin

Spaaaaaace Geek
Mensagens
24.042
Reações
25.722
Pontos
1.484
Não sou programador profissional, sou da área da saúde, mas até eu achei essa caralhada se IF amontoado um em cima do outro deselegante :kpensa
 

Ero_Seenin

Spaaaaaace Geek
Mensagens
24.042
Reações
25.722
Pontos
1.484
Eu faria isso:

Dim meses(12) as string
Mes(1)="janeiro"
Mes(2)="fevereiro"
.
.
.

X=input("Digite o número do mes")
X=int(x)
IF x<1 or x>12 then mensagem de erro

Msgbox(mes(x))
 


SagaOPC

Mil pontos, LOL!
Mensagens
29.396
Reações
42.203
Pontos
1.074
Você tem uma serie de ifs aninhados. Francamente, bem idiota esse codigo até para ensinar algo para alguem acho, não no sentido de falta de complexidade mas que é elaborado de forma ruim.

Na parte 1
todos os seus "senao se" são executados um após o outro desde que a condição do "senao se" anterior não tenha sido atendida, correto?
  • Se nenhum "senao se" em for atendido, ele vai chegar ao ultimo "senao" e marcar que invalido é verdadeiro.
  • Se algum "senao se" for atendido, ele vai parar antes do fim e invalido vai continuar falso (como foi definido no inicio da função).
No final de tudo, na parte 2, ele verifica se invalido é verdadeiro ou falso e imprime algo a partir do resultado.

Parte 1
Código:
    se (numMes==1)
    {
      mesExtenso="janeiro"
    }
    senao se (numMes==2)
    {
      mesExtenso="fevereiro"
    }
    senao se (numMes==3)
    {
      mesExtenso="março"
    }
    senao se (numMes==4)
    {
      mesExtenso="abril"
    }
    senao se (numMes==5)
    {
      mesExtenso="maio"
    }
    senao se (numMes==6)
    {
      mesExtenso="junho"
    }
    senao se (numMes==7)
    {
      mesExtenso="julho"
    }
    senao se (numMes==8)
    {
      mesExtenso="agosto"
    }
    senao se (numMes==9)
    {
      mesExtenso="setembro"
    }
    senao se (numMes==10)
    {
      mesExtenso="outubro"
    }
    senao se (numMes==11)
    {
      mesExtenso="novembro"
    }
    senao se (numMes==12)
    {
      mesExtenso="dezembro"
    }
    senao
    {
      escreva("Mês inválido!!!")
      invalido=verdadeiro
    }

Parte 2
Código:
  se (nao invalido) < ou seja, se invalido for falso
    escreva("O número ", numMes, " equivale ao mês de ", mesExtenso)

PS: Bem idiota a ferramenta de codigos não exibir a numeração das linhas. Po @brunoos , melhora isso ai pra gente <3
então ele cria a variavel invalido falso e define ela como verdadeiro se o mês for diferente dos anteriores, usando a variável nao. ou seja, tudo que não for valido vai ser verdadeiro, e no final ele verifica, se invalido for falso, ele imprime o texto, se for verdadeiro, não imprime... meio confuso KKKKKK
 

AriltonJA

O Arauto da Luz
VIP
Mensagens
3.171
Reações
3.457
Pontos
704
então ele cria a variavel invalido falso e define ela como verdadeiro se o mês for diferente dos anteriores, usando a variável nao. ou seja, tudo que não for valido vai ser verdadeiro, e no final ele verifica, se invalido for falso, ele imprime o texto, se for verdadeiro, não imprime... meio confuso KKKKKK
Exatamente isso. Nesse caso do pseudocodigo, o "nao invalido" quer dizer a negação do valor .
Uma variavel booleana pode assumir somente duas variáveis em computação não quântica. Ou ela é zero, ou ela é um. Ou ela é true ou é false.
O nao é uma negação disso. Logo:

invalid = true;
se você imprimir not invalid, a resposta vai ser false.

Uma recomendação que eu te dou é começar a escrever tudo em ingles no codigo, e trabalhar com pseudocodigo pra algo desse nível ai eu já acho bobeira. Não sei qual linguagem você quer aprender mas pode ficar brincando com os interpretadores online. Esse abaixo é para python mas se prefere algo da familia do C ou java ou o que for, você acha tambem.

joga isso abaixo nesse site por exemplo pra você ver o que acontece

invalid = False
print(invalid)
print(not invalid)
 

SagaOPC

Mil pontos, LOL!
Mensagens
29.396
Reações
42.203
Pontos
1.074
Exatamente isso. Nesse caso do pseudocodigo, o "nao invalido" quer dizer a negação do valor .
Uma variavel booleana pode assumir somente duas variáveis em computação não quântica. Ou ela é zero, ou ela é um. Ou ela é true ou é false.
O nao é uma negação disso. Logo:

invalid = true;
se você imprimir not invalid, a resposta vai ser false.

Uma recomendação que eu te dou é começar a escrever tudo em ingles no codigo, e trabalhar com pseudocodigo pra algo desse nível ai eu já acho bobeira. Não sei qual linguagem você quer aprender mas pode ficar brincando com os interpretadores online. Esse abaixo é para python mas se prefere algo da familia do C ou java ou o que for, você acha tambem.

joga isso abaixo nesse site por exemplo pra você ver o que acontece

invalid = False
print(invalid)
print(not invalid)
então, eu to fazendo redes de computação, e tô tendo a materia algoritmo. a materia vai ensinando passo a passo, ou seja, cada coisa de uma vez. estava aprendendo sobre se, depois aprendi sobre senão, depois foi sobre Estrutura seletiva aninhada, e agora estou aprendendo sobre seleção de caso.

o curso trabalha com portugol estudio e C++, então tem exemplos dos dois, mas eu tava usando mais o portugol...
 

AriltonJA

O Arauto da Luz
VIP
Mensagens
3.171
Reações
3.457
Pontos
704
Eu faria isso:

Dim meses(12) as string
Mes(1)="janeiro"
Mes(2)="fevereiro"
.
.
.

X=input("Digite o número do mes")
X=int(x)
IF x<1 or x>12 then mensagem de erro

Msgbox(mes(x))
então, eu to fazendo redes de computação, e tô tendo a materia algoritmo. a materia vai ensinando passo a passo, ou seja, cada coisa de uma vez. estava aprendendo sobre se, depois aprendi sobre senão, depois foi sobre Estrutura seletiva aninhada, e agora estou aprendendo sobre seleção de caso.

o curso trabalha com portugol estudio e C++, então tem exemplos dos dois, mas eu tava usando mais o portugol...
Saquei. Nossa, cara, eu pessoalmente não sou fã de portugol. Quer dizer, é uma boa forma de ensinar programação para quem não sabe inglês. Porém se a pessoa já sabe inglês, eu já obtive resultados muito mais rápidos ensinando direto em c++. Até chegar em ponteiros, a linguagem é muito direta nesse sentido e fica bem melhor para o aluno experimentar.

Portugol é útil quando a pessoa não sabe nada e está fazendo curso de Java, que não é nem um pouco direta
 

ryuzoRX

Ei mãe, 500 pontos!
Mensagens
3.293
Reações
6.889
Pontos
754
Estou aprendendo na marra também, fiz um curso de algoritmo e lógica de programação pela Udemy, depois empolguei e comecei Java

Tava muito bem até começar orientação a objeto, aí me deu um nó na cabeça

No lugar desses tantos condicionais aninhados aí eu usaria o switch case, acho que o código fica mais organizado e fácil de interpretar
 

AriltonJA

O Arauto da Luz
VIP
Mensagens
3.171
Reações
3.457
Pontos
704
Estou aprendendo na marra também, fiz um curso de algoritmo e lógica de programação pela Udemy, depois empolguei e comecei Java

Tava muito bem até começar orientação a objeto, aí me deu um nó na cabeça

No lugar desses tantos condicionais aninhados aí eu usaria o switch case, acho que o código fica mais organizado e fácil de interpretar
Na Alura eu já vi um curso com uma explicação muito boa do tópico de orientação a objetos. No YouTube tem umas explicações bem legais também onde os caras usam paralelos com objetos reais mesmo para descrever e explicar o paradigma.

Possivelmente o professor dele passou essa b*sta de ifs pra depois mostrar como poderia ser feito um switch ou até só criar um array com os meses, visto que a indexação é o próprio número do mês.

meses = [jan..dez]
entrada = valor digitado
Imprimir( meses[valor digitado])
 

SagaOPC

Mil pontos, LOL!
Mensagens
29.396
Reações
42.203
Pontos
1.074
Saquei. Nossa, cara, eu pessoalmente não sou fã de portugol. Quer dizer, é uma boa forma de ensinar programação para quem não sabe inglês. Porém se a pessoa já sabe inglês, eu já obtive resultados muito mais rápidos ensinando direto em c++. Até chegar em ponteiros, a linguagem é muito direta nesse sentido e fica bem melhor para o aluno experimentar.

Portugol é útil quando a pessoa não sabe nada e está fazendo curso de Java, que não é nem um pouco direta
então, to usando o portugol porque eu to olhando pro código e entendendo, já no C++ eu fico: que porra significa essa variável aqui mesmo??? ou: qual é a variável que representa o escreva mesmo??? KKKKKKKKKKK
 

AriltonJA

O Arauto da Luz
VIP
Mensagens
3.171
Reações
3.457
Pontos
704
então, to usando o portugol porque eu to olhando pro código e entendendo, já no C++ eu fico: que porra significa essa variável aqui mesmo??? ou: qual é a variável que representa o escreva mesmo??? KKKKKKKKKKK
Hahahahaha tem algumas coisas que demoram a pegar mesmo. Ao menos não é Java.
 
Topo Fundo