MSXInício
Capítulo 7Disponível

Repetições: FOR / WHILE

A grande vantagem dos computadores: fazer a mesma coisa milhares de vezes sem reclamar.

FOR — quando você sabe quantas vezes

O laço FOR repete um bloco um número conhecido de vezes.

1 FOR variavel = inicio TO fim
2   ' comandos repetidos
3 NEXT variavel

DIGITE E VEJA

Programa 7.1 — Contagem de 1 a 10

USES SCREEN 1
SCREEN 1
CLS

DIM i AS BYTE
FOR i = 1 TO 10
  PRINT "CONTANDO: ", i
NEXT i

PRINT "TERMINOU!"

Pulando de quantos em quantos: STEP

Por padrão, FOR aumenta a variável de 1 em 1. Para mudar isso, use STEP:

DIM i AS BYTE
FOR i = 0 TO 100 STEP 10
  PRINT i         ' 0, 10, 20, ..., 100
NEXT i

' Para contar de trás pra frente, use STEP negativo:
FOR i = 10 TO 1 STEP -1
  PRINT i         ' 10, 9, 8, ..., 1
NEXT i

ATENÇÃO

STEP negativo precisa de início > fim

FOR i = 1 TO 10 STEP -1 não roda nem uma vez — o compilador entende que você quer ir de 1 para 10 voltando, o que nunca acontece. Use 10 TO 1 STEP -1.

WHILE — enquanto a condição for verdadeira

Quando você não sabe quantas vezes precisa repetir, use WHILE:

WHILE condicao
  ' comandos
WEND

DIGITE E VEJA

Programa 7.2 — Dividindo até zerar

Quantas vezes 1000 pode ser dividido por 2 antes de virar zero?

USES SCREEN 1
SCREEN 1
CLS

DIM n AS WORD = 1000
DIM divisoes AS BYTE = 0

WHILE n > 0
  n = n / 2
  divisoes = divisoes + 1
WEND

PRINT "DIVIDIU ", divisoes, " VEZES"

ATENÇÃO

Cuidado com o laço infinito

Se a condição do WHILE nunca virar falsa, seu programa trava. Sempre inclua algo que caminhe em direção a tornar a condição falsa.

Quando usar cada um

  • Use FOR quando: Sabe o número exato de iterações; vai percorrer um intervalo numérico; vai indexar um array.
  • Use WHILE quando: O critério de parada é uma condição; espera um evento (tecla, colisão); está procurando algo até encontrar.

Laços aninhados

Você pode colocar um laço dentro de outro:

DIM linha AS BYTE
DIM coluna AS BYTE

FOR linha = 0 TO 4
  FOR coluna = 0 TO 4
    PRINT "*"
  NEXT coluna
  PRINT ""          ' pula para a próxima linha
NEXT linha

DICA

Use nomes diferentes em cada nível

Sempre use variáveis distintas no FOR externo e no interno (ex: linha/coluna ou i/j). Nunca reuse a mesma variável em laços aninhados.

Exercícios

  • 7.1 — Programa que mostra a tabuada do 7 (de 7×1 a 7×10).
  • 7.2 — Use WHILE para somar todos os números de 1 a 100. Mostre o total (Dica: 5050).
  • 7.3 — Mostre na tela um quadrado 8×8 de asteriscos usando dois FORs aninhados.

Resumo do capítulo

  • FOR repete um número conhecido de vezes; aceita STEP.
  • WHILE repete enquanto uma condição for verdadeira.
  • Sempre garanta que o WHILE pode terminar — evite laços infinitos.
  • Laços aninhados varrem matrizes; use variáveis diferentes em cada nível.

Contando para trás: FOR ... DOWNTO

Para uma contagem regressiva, troque TO por DOWNTO. A variável diminui a cada volta, sem precisar de STEP -1:

DIM i AS BYTE
FOR i = 10 DOWNTO 1
  PRINT i
NEXT i
PRINT "FOGO!"

DICA

Forma em bloco

O laço também pode ser escrito no estilo Pascal: FOR i = 1 TO 8 DO ... END. As duas formas geram o mesmo código; use a que achar mais legível.

ATENÇÃO

LOOP e UNTIL

As palavras LOOP e UNTIL estão reservadas para uma versão futura e ainda não formam um laço. Por enquanto use WHILE ... WEND (testa antes) ou FOR.

Comunidade

Discussão · Repetições: FOR / WHILE

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…