Pascal exercicio (Lógica de Programação) - Dúvida.
Olá estou estudando lógica de programção juntamente com Pascal e hoje ao ver uma video aula em inglês sobre laço FOR acabei ficando com uma grande dúvida. Vendo o video é possível entender um pouco, mas, como não sou muito bom no inglês, acaba complicando na hora da explicação, enfim, caso possam me ajudar, ficarei grato.
-
CÓDIGO: Var x : integer; Begin for x := 0 to 10 do begin writeln('X = ',x); x := x + 1; end; End.
-
RESULTADO DO CÓDGIO: X = 0 X = 2 X = 4 X = 6 X = 8 X = 10
Eu quero entender porque ele tá resultando de 2 em 2. Na minha cabeça, assim que o laço recomeçar na segunda vez, x vai valer 1, então antes de imprimir na tela o 2, era para aparecer 1 e quando cair na equação x:=x+1 ele iria dar 2 e assim por diante. É isso, quem poder ajudar, obrigado!
- https://www.youtube.com/watch?v=lRC30YYlXJU&t=502s link do video, caso queiramm ver o video (10:13 - minuto).
Opa, não conheço pascal mas imagino que não seja muito diferente entre outras linguagens, especialmente com os fundamentos.
Em estruturas de repetição for, normalmente, precisa de 3 coisa para executá-lo: 1 - valor inicial, 2 - valor final, 3 - iterador;
Pelo que vi no vídeo, no Pascal tem por padrão o iterador(ou contador) já embutido. Como sua variável é adicionada após cada vez que se escreve uma linha, quando entra no loop novamente, sua váriável já entra no loop com o valor adicionado ao valor padrão estipulado pela linguagem.
Espero ter ajudado. :)
Olá amigo, tudo bem?
Eu costumo brincar que eu ando "Na contramão do sucesso", uma vez que, embora já antiga, o pascal é a minha linguagem favorita!
Conforme já andei falando por aqui, trabalho até hoje com ele, por conta de um projeto de acessibilidade, que ainda o usa.
Vamos lá para o código, vou tentar descrever o que acontece:
Irei comentando abaixo da linha, explicando o fluxo.
Var x : integer; //Variável x do tipo inteiro declarada Begin for x := 0 to 10 do { Início do loop for. X começa em 0 e termina em 10. O que essa linha diz é: para x começando em 0 até 10, faça essas coisas } begin writeln('X = ',x); //escreve valor de x; inicialmente, vai escrever 0. x := x + 1; // somou 1 ao valor de x. //se x valia 0, agora vale 1. end; end.
Fim do for e fim do programa. Como x ainda não chegou em 10, ele irá mais uma vez verificar a declaração do for. Lembra? X valia 1. Quando ele for no início do for de novo, vai ser testado: x vale 10? Não. Então soma mais 1. X que era 1, agora passou a ser 2. Ao entrar no bloco do for e exibir x, vai escrever 2. Vai somar mais 1, fica 3. O bloco termina, ele verifica novamente e tudo vai acontecer de novo.
Você tem duas atividades dentro do seu bloco for, que serão repetidas até que x atinja o valor 10: Uma é escrever o valor dessa variável x, a outra é somar 1 ao valor de x.
Vou te dar uma ideia:
Existem duas formas de você fazer aparecer os valores de 1 em 1. Uma é você isolando a segunda instrução, a que soma 1 em x dentro do próprio bloco for. A outra, vou deixar você pensar, risos.
Mas a melhor forma de você aprender é ir fazendo pequenas modificações nos exercícios.
Nesse caso, o x que está atrelado ao loop(que tambem assume uma condicional while) até x == 10, por padrao vai fazer a soma de 1 em 1, caso apenas imprimir x ele vai retornar: 0,1,2,3,4..10
Porém nesse caso ele esta imprimindo o x do loop e somando ou pulando 1 posição ou valor do loop
O que talvez seja a chave para tirar essa dúvida é que x representa o "passo" do loop, na lógica pura é: mostra um passo, pula um passo... (pois de 1 em 1 ele já faria obrigatóriamente)
Espero ter ajudado! 😁