sexta-feira, 24 de outubro de 2008

[Unit-1 | Lição-10] Estruturas de Repetição

Apesar de na aula passada eu ter citado que iria começar sobre Classes nesta lição, falarei sobre estruturas de repetição, que é um assunto que ainda não foi visto, e na próxima lição falarei sobre as Classes.

As estruturas de repetição são estruturas que irão executar os comandos determinados repetidamente um determinado número de vezes, ou até você determinar o seu término. Existem vários tipos de estruturas de repetição, cada uma é trabalhada de uma forma diferente, existindo assim uma estrutura diferente para ser usada em cada tipo de situação.

Loop
O comando Loop serve para repetir determinados comandos infinitas veses até que seja executado o comando o comando de quebra de loop. Basicamente, funciona igual ao comando Loop dos eventos do RPGMaker. Para iniciar um loop utilize a palavra 'loop' seguido de 'do' e logo depois os comandos do loop e para feichar o loop utilize um 'end', exatamente como no exemplo a seguir:
Exemplo:
loop do
Graphics.update
Input.update
update
break if $scene != self
end

OBS: O exemplo citado acima é um exemplo de loop bem comum encontrado em todas as classes Scene da programação padrão do RMXP e na Scene_Base do RMVX.
Note que o comando 'break' serve para quebrar o loop, caso não exista um 'break', o loop será executado infinitamente e nunca haverá um fim, logo, pode ocasionar um erro ao jogo.

While
A estrutura de repetição While é muito parecida com Loop, basicamente a única diferença é a forma de trabalhar. No caso de Loop você deve utilizar o comando 'break' para quebrar o loop, no caso de while você deve colcoar uma condição logo após a palavra 'while', utilizada para criar a estrutura, caso esta condição retorne true, o loop será executado, caso seja false, a estrutura será quebrada.
Exemplo de While:
while variavel > 0
variavel -= 1
end

No exemplo acima, o comando 'variavel -= 1' será executado repetidamente até que 'variavel' deiche de ter o valor maior que 0. Note que, se variável já for menor ou igual à 0, o comando não será executado nenhuma vez. Note também que o exemplo acima também poderia ser espressado da seguinte forma:
loop do
break if variavel <= 0
variavel -= 1
end

Apesar das duas formas apresentarem um mesmo resultado, a primeira forma(usando while) é bem mais simples de se usar.

Until
Until é utilizada da mesma forma que while, a única diferença é que enquanto while executa o comando quando a condição retorna true, Until só irá executar o comando enquanto a condição retornar false.
Exemplo:
until variavel <=0
variavel -= 1
end

O exemplo acima tem a mesma função que a dos últimos dois exemplos citados.

For
Como você pôde observar, todas as estruturas esplicadas acima têm, basicamente, uma mesma mesma função em comum; isto não ocorre com For. For irá repetir os comandos de sua estrutura para cada valor em uma determinada range ou array.
Exemplo:
for i in [0, 1, 2, 3]
print i
end

O código acima fará com que apareca quatro janelinhas do windows abram uma após a outra mostrando os valores 0, 1, 2 e 3; já que o comando 'print i' será executado quatro veses, para cada uma destas veses o valor da variável 'i' irá mudar de acordo com os valores da array. É obrigatório declarar uma variável logo após o 'for' e antes do 'in', para que esta variável possa ter seu valor alterado a cada repetição da estrutura de acordo com a Array ou Range depois do 'in'.
Exemplo de For com Range:
for variavel in 0...5
print variavel
end

Neste caso os valores exibidos serão: 0, 1, 2, 3 e 4 já que ranges com tres pontos(...) não cosideram o último(veja a lição 5, "Os possíveis valores das variáveis", para mais detalhes sobre Range)

Break
Eu falei brevemente sobre Break quando espliquei sobre Loop nesta aula, não há muito o que diser sobre este comando. Basicamente, 'break' serve para quebrar as estruturas de repetição, após este comando, o programa pula direto para a linha onde está o fim da estrutura(onde está o 'end') e continua a executar os comandos das próximas linhas normalmente. Break pode ser utilizado normalmente em qualquer uma das quatro tipos de estruturas condicionais esplicadas acima.
Exemplo:
for i in 0...5
break if i == 3
print i
end

No exemplo acima, serão mostrados somente os valores 0, 1 e 2; pois quando i for 3, a estrutura será quebrada e o comando 'print i' não será executado.


Next
Ao contrário do comando 'break', Next irá parar com a execução dos comandos da estrutura e irá recomeçar a executar os comandos a partir do começo da estrutura. Next também pode ser utilizado normalmente em qualquer tipo de estrutura de repetição.
Exemplo:
for i in 0...5
next if i == 3
print i
end

No exemplo acima serão mostrados os valores 0, 1, 2, 4 e 5; porque quando i for 3, next será executado e assim o comando 'print i' não será executado quando i for 3.

Nenhum comentário: