Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Kaio Lukas

VisualG Contador Inteligente de números

Recommended Posts

Olá. Tenho um algoritmo que pede dois valores, um inicial e um final, eu preciso fazer ele contar do menor pro maior, e do maior pro menor, independente do valor digitado.

 

algoritmo "ContagemInteligente"
var
   I, F: Inteiro
inicio
   I <- 0
   F <- 0
//Bloco do pedido das variáveis
   Escreval ("CONTAGEM INTELIGENTE")
   Escreval ("--------------------")
   Escreva ("Início: ")
      Leia(I)
   Escreva ("Fim: ")
      Leia(F)
//Blocos dos contadores
   Se (I > F) então
      Enquanto (I > F) faca
         I <- I - 1
         Escreva (I)
      FimEnquanto
   SeNao
      Se (I < F) então
         Enquanto (I < F) faca
         F <- F + 1
         Escreva (F)
         FimEnquanto
      FimSe
   FimSe
   
fimalgoritmo

Mas sempre que eu rodo o código, acontece o seguinte:
Se o Início é MENOR que o final: ele conta infinitamente 

Se o Início é MAIOR que o final: ele faz tudo certo.

 

 

Eu não tô conseguindo entender meu erro: Se o I < F então ele soma mais um até o I não ser < que o F. Mas ele conta pra sempre :(

      Se (I < F) então
         Enquanto (I < F) faca
         F <- F + 1
         Escreva (F)
         FimEnquanto
      FimSe
   FimSe

 

adicionado 6 minutos depois

Eu dei uma mudada no código: 

algoritmo "ContagemInteligente"
var
   I, F: Inteiro
inicio
   I <- 0
   F <- 0
//Bloco do pedido das variáveis
   Escreval ("CONTAGEM INTELIGENTE")
   Escreval ("--------------------")
   Escreva ("Início: ")
      Leia(I)
   Escreva ("Fim: ")
      Leia(F)
//Blocos dos contadores
   Se (I < F) então
      Enquanto (I < F) faca
         I <- I + 1
         Escreva (I)
      FimEnquanto
   SeNao
      Se (I > F) então
         Enquanto (I > F) faca
         I <- I - 1
         Escreva (F)
         FimEnquanto
      FimSe
   FimSe
   
fimalgoritmo

 

Mas agora quando eu digito um número maior no Início, ele repete o número final algumas vezes

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Kaio Lukas    seu segundo código está funcionando bem, apenas essa linha do segundo se do segundo código está errada :

Escreva (F)

coloque assim :

Escreva (i)

 

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Kaio Lukas.

 

Sobre a indentação:

11 horas atrás, Kaio Lukas disse:

//Blocos dos contadores
   Se (I < F) então
      Enquanto (I < F) faca
         I <- I + 1
         Escreva (I)
      FimEnquanto
   SeNao
      Se (I > F) então
         Enquanto (I > F) faca
         I <- I - 1
         Escreva (F)
         FimEnquanto
      FimSe
   FimSe

 

O trecho do segundo enquanto deve ser indentado, assim como foi o trecho do primeiro, ex.:

       //Blocos dos contadores
       Se (I < F) então
          Enquanto (I < F) faca
             I <- I + 1
             Escreva (I)
          FimEnquanto
       SeNao
          Se (I > F) então
             Enquanto (I > F) faca
                I <- I - 1
                Escreva (F)
             FimEnquanto
          FimSe
       FimSe

Obs.: não incluir a sugestão proposta por @devair1010.

 

 

Outro ponto é que o comando leia() não tem vínculo com o comando escreva(), ou seja, tecnicamente deveria ficar na mesma linha, ex.:
 

Em vez de:

11 horas atrás, Kaio Lukas disse:

   Escreva ("Início: ")
      Leia(I)

 

Ficar:

   Escreva ("Início: ")
   Leia(I)

obs. 2:  as "regras" de indentação são variadas, mas é necessário que siga um lógica. Particularmente acho que a forma que você fez fica legal, mas tem que ter a consciência que poderia fazer porque 'você quis", não porque você veio achar que uma coisa está vinculada outra.

 

 

ADENDO:

11 horas atrás, Kaio Lukas disse:

SeNao

Pela forma que escreveu, entendo que você está se referindo a expressão "se não", mas (tenho quase certeza) que o correto seria "senão". São coisas diferentes.

 

Senão = Caso contrário, de outro modo;

Se não = Caso não, quando não.

 

 

Então seria:

   Senao
      Se (I > F) então

 

 

 

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @devair1010 Puts, era isso mesmo.

     

     

    @Simon Viegas Entendi, obrigado pelas dicas!

     

    Eu ainda tenho um pouco de dificuldade na "lógica" do negócio, mas treinando eu pego o jeito. xD

    Teria algum site onde tem exercícios sobre esse tema? Eu dei uma procurada por cima e não achei nada muito útil.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×