Ir ao conteúdo

Posts recomendados

Postado

bom gente to com uma duvida , eu fiz uma tabuada porém que ela funcionou de um jeito e de outro não , queria saber o porque isso aconteceu

meu primeiro exemplo que deu certo

algoritmo "tabuada"

var
   valor, cont : inteiro
inicio
    escreva (" deseja a tabuada para qual valor ? ")
    leia(valor)

    cont <- 1
    para cont <- 1 ate 10 faca
      escreval ( valor , "x" , cont, "=", valor*cont )
      cont <- cont + 1
    fimpara
fimalgoritmo

 

e o outro com a variavel resp que fiz

algoritmo "tabuada"

var
   valor, cont ,resp: inteiro
inicio
    escreva (" deseja a tabuada para qual valor ? ")
    leia(valor)

    cont <- 1
    para cont <- 1 ate 10 faca
      escreval ( valor , "x" , cont, "=", resp )
      resp <- valor * cont
      cont <- cont + 1
    fimpara
fimalgoritmo

 minha duvida so é mesmo porque não funcionou  

  • Obrigado 1
Postado

@kalline @kalline      no Loop da multiplicação você incrementou a variável   "cont"  de controle do Loop ,

cont <- cont + 1

e assim  vai pulando de dois em dois 

cont <- 1          // não precisa inicializar essa variavel
                   // ela já foi inicializada la no inicio 
                   // com o valor zero , no momento em Que foi criada
para cont <- 1 ate 10 faca
  escreval ( valor , "x" , cont, "=", resp )
  resp <- valor * cont
  cont <- cont + 1 // aqui incrementa a variavel cont
                   // Que será incrementada novamente 
                   // pelo loop  "para"
fimpara

e poderia ser assim  :

para cont <- 1 ate 10 faca       
  escreval ( valor , "x" , cont, "=", resp )
  resp <- valor * cont
fimpara

 

  • Obrigado 1
  • Membro VIP
Postado

É bem por ai mesmo @devair1010, mas com algumas ressalvas.

 

Só vou entrar um pouco nos detalhes... O VisualG é cheio que pormenores.. não utiliza uma "linguagem" muito bem organizada, assim por dizer..

 

Vamos lá:

 

1 Sobre a causa raiz do problema:

Em 05/02/2022 às 14:15, kalline disse:

minha duvida so é mesmo porque não funcionou  

 

Não funcionou, basicamente porque colocou para exibir o produto ANTES de calcular... percebes? Vide:

 

image.png


Veem?

 

 

 

2 Sobre o cont está funcionando mesmo sendo alterado dentro do para.

Em 06/02/2022 às 07:00, devair1010 disse:
cont <- cont + 1

e assim  vai pulando de dois em dois 

 

Como demonstrado na imagem acima, o para não se importa que cont foi alterado no caminho... Mas por que? Como diria Chicó: "não sei, só sei que é assim". :D

 

Deixo para vocês!!!! kkkkkk

 

 

Adendo:

Em 06/02/2022 às 07:00, devair1010 disse:
cont <- 1          // não precisa inicializar essa variavel
                   // ela já foi inicializada la no inicio 
                   // com o valor zero , no momento em Que foi criada


Essa questão do "inicializado automaticamente" é bem interessante... aqui tem 3 questões:

1. essa "inicialização automática" só ocorre para variáveis globais!!! Dentro de funções a coisa muda. O mesmo ocorre no Pascal.

2. de certo modo não tem problema inicializar (re-inicializar) manualmente. É até bom que pega o costume do que ocorre na maioria das linguagens do mercado (que não inicializa sozinho);

3. entretanto, não precisaria inicializar de qualquer forma, pois será inicializado (definido um novo valor) lá no para. Veja, você pensou em inicializar a variável valor? Não precisou, né? Mas são análogos.

 

  • Curtir 2
  • Amei 1
Postado

@Simon Viegas     não testei ,  e eu ainda não sabia sobre esse detalhe desse compilador a respeito da variável de controle do loop ,  obrigado , 

algoritmo "tabuada"
var
  valor, cont ,resp: inteiro
inicio
  escreva (" deseja a tabuada para qual valor ? ")
  leia(valor)
  para cont de 1 ate 10 faca
    resp <- valor * cont
    escreval ( valor:2 , " x " , cont:2, " = ", resp:2 )
  fimpara
fimalgoritmo

 

  • Curtir 1
  • Membro VIP
Postado
2 horas atrás, devair1010 disse:

@Simon Viegas     não testei ,  e eu ainda não sabia sobre esse detalhe desse compilador a respeito da variável de controle do loop ,  obrigado , 


Pois é... eu achava que aconteceria a mesma coisa que disse:

Em 06/02/2022 às 07:00, devair1010 disse:

vai pulando de dois em dois 


Só que ao rodar o código não ocorreu isso, aí "debuguei" e vi que a variável é atualizada dentro do laço, mas ao entrar num novo loop, volta para o valor de origem... Testei no VisualG 3.6.0.5 e 2.x e se comportaram da mesma forma... Esse comportamento VisualG é meio que contraintuitivo (ou não, sei lá)... vai entender!!! 😐

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!