Olá, caro(a) aluno(a), na aula passada, começamos a explorar os laços de repetição. Ao construir algoritmos, utilizamos estruturas de repetição para enviar e escrever porções repetidas de códigos, de forma que, com o laço, é possível determinar quantas vezes um bloco de código deve ser executado.
Até agora, você aprendeu como funcionam os laços condicionais Enquanto e Repita, que são utilizados quando não temos definido o número de repetição que será necessário, de modo que precisamos definir um teste lógico (condição) que define quando o laço deve ser finalizado. Nesta lição, você conhecerá o laço de repetição PARA, um tipo de laço contado, isso é, utilizamos quando sabemos quantas vezes precisamos executar uma porção de código. Este tipo de laço também é conhecido como estrutura de repetição com variável de controle, pois utilizamos uma variável que será responsável por contar quantas vezes o laço foi executado (LOPES; GARCIA, 2002).
Para resolver um problema, às vezes, repetimos determinada instrução de código várias vezes até que uma condição específica seja satisfeita. Este processo de repetição é conhecido como iteração, assim, algoritmos que entregam uma solução utilizando laços são chamados de algoritmos iterativos.
Todas as estruturas de repetição que utilizamos têm em comum o fato de existir uma condição de controle, seja por meio de expressões lógicas seja por contagem, que é testada em cada ciclo de execução para determinar se a repetição prossegue, ou não (ASCENCIO; CAMPOS, 2008). Laços de repetição são muito utilizados em jogos, por exemplo. Quando estamos programando uma rotina de ataque de um NPC em um jogo, utilizamos os laços de repetição para definir quantas vezes ele deve atacar antes de se movimentar.
A estrutura de laço contado que veremos nesta lição é a mais utilizada e pode ser aplicada no desenvolvimento de qualquer tipo de sistema, como: sistemas web, nativos como também em jogos.
Imagine a seguinte situação: queremos escrever um algoritmo que recebe um número qualquer do usuário e retorna a tabuada dele. Como você escreveria este código? Uma solução possível seria realizar todos os cálculos de forma manual, como apresenta o algoritmo a seguir:
VAR
inteiro num
INÍCIO
ESCREVA(“Digite o número que você deseja saber a tabuada”)
LEIA(num)
ESCREVA(“ 1 X ”, num “=”, num * 1)
ESCREVA(“ 2X ”, num “=”, num * 2)
ESCREVA(“ 3 X ”, num “=”, num * 3)
ESCREVA(“ 4 X ”, num “=”, num * 4)
ESCREVA(“ 5 X ”, num “=”, num * 5)
ESCREVA(“ 6 X ”, num “=”, num * 6)
ESCREVA(“ 7 X ”, num “=”, num * 7)
ESCREVA(“ 8 X ”, num “=”, num * 8)
ESCREVA(“ 9 X ”, num “=”, num * 9)
ESCREVA(“ 10 X ”, num “=”, num * 10)
FIM
Vamos analisar linha a linha:
Linhas 1 e 2: temos a abertura do bloco de declaração de variáveis, onde instanciamos 1 variável num do tipo inteiro que receberá o valor digitado pelo usuário.
Linha 3: abertura do bloco do algoritmo.
Linha 4: solicitamos um valor para o usuário.
Linha 5: lemos o valor digitado e armazenamos na variável num.
Linhas 6 até 15: exibimos, na tela, a tabuada do número informado pelo usuário. Observe que, dentro do ESCREVA, fazemos a concatenação da mensagem com o cálculo da tabuada, onde primeiro colocamos entre aspas o início da mensagem, por exemplo “1 x”, em seguida, fora das aspas, chamamos a variável que contém o valor digitado, seguido pelo “ = ”. Ao executar esse comando, a variável num será substituída pelo valor armazenado nela. E, por fim, concatenamos com o cálculo de num * 1. Imagine que o usuário digitou o número 5, então, a saída do algoritmo seria:
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
O algoritmo que você acabou de analisar apresenta uma solução válida para o problema apresentando, entretanto esta não é a melhor solução possível, pois temos dez linhas que, basicamente, repetem o mesmo código. E como você já sabe, neste caso, podemos utilizar os laços de repetição para criar um código mais eficiente e legível. Vamos descobrir como resolver esse problema utilizando o laço PARA?
Utilizamos o laço PARA quando sabemos quantas vezes o laço será executado. Dentro do laço PARA, usamos uma variável contadora para controlar a execução do loop, onde o valor inicial da variável define o ponto de partida. Então, começamos inicializando a variável do laço com algum valor e verificando se a condição de parada é verdadeira, ou não. Se a condição for verdadeira, o código dentro do corpo do loop será executado.
SINTAXE DO LAÇO PARA
PARA <tipo> <variável> DE <inicio> ATE <fim> PASSO <incremento> FACA
<INSTRUÇÃO>
FIM_PARA
Iniciamos o comando com a palavra chave PARA seguida da <variável>, neste campo, adicionamos a nossa variável contadora que será responsável por controlar a estrutura e definir quantas vezes o laço será executado. Em seguida, declaramos o <início> e <fim>, que é o intervalo para a execução do laço. Por fim, definimos o <incremento>, que é de quanto em quanto a contagem será realizada, por exemplo, se será de 1 em 1, ou 2 em 2.
Agora que você já conhece a teoria, já é capaz de colocar em prática. Vamos analisar como fica o algoritmo de calcular a tabuada de um número, que foi apresentado no case, porém, agora, utilizando laço de repetição PARA.
VAR
inteiro num
INÍCIO
ESCREVA(“Digite o número que você deseja saber a tabuada”)
LEIA(num)
PARA inteiro i DE 0 ATE 10 PASSO 1 FAÇA
ESCREVA( num, “ X ”, i “=”, num * i)
FIM_PARA
FIM
Vamos analisar linha a linha:
Linhas 1 e 2: temos a abertura do bloco de declaração de variáveis, onde instanciamos 1 variável num do tipo inteiro que receberá o valor digitado pelo usuário.
Linha 3: abertura do bloco do algoritmo.
Linha 4: solicitamos um valor para o usuário.
Linha 5: lemos o valor digitado e armazenamos na variável num.
Linha 6: inicialização do bloco do laço de repetição PARA. Instanciamos uma variável i do tipo inteiro que será responsável por contar as iterações do laço. Declaramos que a variável i inicia-se com 1 e será incrementado até 10, onde o incremento se dará de 1 em 1.
Linha 7: dentro do bloco do laço de repetição temos o comando escreva que será responsável por imprimir na tela o valor da variável. O comando é estruturado da seguinte forma:
num: é o valor de entrada do algoritmo.
“X”: representação da operação de multiplicação.
i: valor que está sendo calculado no momento, note, em cada iteração, o i estará representando um número da tabuada.
“=”: representação do símbolo de igual.
num * i: Realização do cálculo da multiplicação.
Linha 8: fim do bloco do laço PARA.
Linha 9: fim do algoritmo.
Observe que, no laço PARA, utilizamos uma variável contadora que realiza a contagem de iterações, de forma que, quando chegar no valor determinado de repetições estabelecido, o laço deve ser interrompido. A variável contadora pode ser inicializada com qualquer valor, porém, normalmente, inicializamos com o valor zero e incrementamos em 1 a cada ocorrência.
Variáveis contadoras não são exclusivas do laço de repetição PARA e pode ser utilizada com qualquer outro laço de repetição. Por exemplo, vamos escrever o mesmo algoritmo de tabuada apresentado anteriormente utilizando o laço de repetição ENQUANTO.
VAR
inteiro num, i
INÍCIO
i <- 0
ESCREVA("Digite o número que você deseja saber a tabuada")
LEIA(num)
ENQUANTOB(i <= 10) FAÇA
ESCREVA( num, “ X ”, i “=”, num * i)
i <- i + 1
FIM_ENQUANTO
FIM
Vamos analisar linha a linha:
Linhas 1 e 2: abertura do bloco de declaração de variáveis, onde instanciamos 1 variável num do tipo inteiro que receberá o valor digitado pelo usuário e outra variável i do tipo inteiro, esta variável será responsável por fazer as contagens do laço de repetição.
Linha 3: abertura do bloco do algoritmo.
Linha 4: atribuição do valor 0 na variável i.
Linha 5: solicitamos um valor para o usuário.
Linha 6: lemos o valor digitado e armazenamos na variável num.
Linha 7: início do bloco do laço de repetição ENQUANTO. A condição do bloco é que enquanto o valor de i for menor ou igual a 10, ele repita o bloco, isto porque queremos que o laço seja repetido de 0 até 10.
Linha 8: impressão do cálculo na tela.
Linha 9: incremento da variável i em 1. A variável i inicia o algoritmo com o valor 0, e em cada iteração do laço somamos 1 na variável, de modo que ela será incrementada até 10 que será quando a condição do laço será avaliada como falsa.
Linha 10: fim do laço enquanto.
Linha 11: fim do algoritmo.
Note que, no laço de repetição ENQUANTO, precisamos declarar antes a variável contadora (i), isso, pois, diferentemente do laço PARA no ENQUANTO, não podemos definir uma variável dentro da estrutura (sintaxe) do comando. Do mesmo modo, precisamos incrementar “manualmente” a variável contadora (i <- i + 1).
Agora, você pode estar se perguntando qual é o melhor laço de repetição. E a resposta é simples, não existe um laço de repetição melhor que o outro, cada laço deve ser utilizado de acordo com a ocasião. Normalmente, utilizamos o laço PARA quando sabemos a quantidade exata de iterações que devem ser feitas. Por outro lado, utilizamos o laço ENQUANTO e REPITA quando não é possível determinar o número de iterações. Muitas vezes, o uso de diferentes laços pode apresentar os mesmos resultados, conforme vimos no exemplo descrito nesta lição. Deste modo, você tem a liberdade de utilizar o laço com que tiver mais confiança e facilidade. O mais importante é você conhecer e praticar a utilização de cada um dos laços apresentados durante as lições, assim, você criará intimidade com as estruturas, de modo que será intuitiva a identificação de qual é a melhor estrutura para determinado problema.
ASCENCIO, F. G.; CAMPOS, E. A. V. de. Fundamentos da programação de computadores. São Paulo: Pearson Education, 2008.
LOPES, A.; GARCIA, G. Introdução à programação. Rio de Janeiro: Elsevier, 2002.