Olá pessoal, neste post irei falar sobre as funções de repetição da linguagem AutoLisp. A partir dos comandos de repetição podemos fazer com que um determinado trecho de código possa ser repetido. Neste post, eu irei falar dos comandos de repetição WHILE e REPEAT.
- while
O comando de repetição while do AutoLisp permite que um trecho de código seja repetido (loop), enquanto uma expressão lógica for verdadeira. Se esta expressão nunca se tornar falsa, o programa entra no que chamamos em programação de "Loop Infinito", ou seja, um trecho de código será repetido infinitamente. Assim o programador deve estabelecer dentro do trecho a ser repetido, algum mecanismo que torne em algum momento, falso o resultado da expressão avaliada pelo while.
A sintaxe do comando while é a seguinte:
(while (EXPRESSÃO BOOLEANA)
(COMANDO 1)
(COMANDO 2)
(COMANDO 3)
...
(COMANDO N)
)
Exemplos:
- O exemplo abaixo, mostra um loop que nunca será feito, pois a expressão booleana avaliada pelo while, possui sempre o valor nil (falso). Assim, o comando (princ "loop"), nunca será executado.
(while nil
(princ "loop")
)
- No exemplo abaixo, é declarado uma variável chamada contador com o valor 0. Em seguida a função while avalia a expressão booleana (< contador 5). Assim, enquanto o valor da variável contador for menor do que 5, o comando que incrementa uma unidade na variável contador é executado: (setq contador (+ contador 1)).
Quando a variável atingir o valor 5, a expressão booleana irá retornar falso, e o fluxo de execução do programa, sairá do loop.
(setq contador 0)
(while (< contador 5)
(setq contador (+ contador 1))
)
O loop acima, será executado cinco vezes, parando quando a variável contador atingir o valor 5 e for avaliado pela expressão booleana.
- No exemplo abaixo, é declarado uma variável chamada repetir com o valor T. Em seguida a função while avalia a expressão booleana, que no caso, é verdadeiro (contéudo da variável repetir), assim a função executa os três comandos declarados dentro do while.
O terceiro comando executado de dentro do while, declara a variável repetir como nil, assim, logo em seguida, quando o comando while avalia a expressão boolena novamente, esta retornará falso, o que faz com que o fluxo de execução do programa saia do while.
(setq repetir T)
(while repetir
(print "linha1")
(print "linha2")
(setq repetir nil)
)
O loop acima, será executado apena uma vez, pois após a primeira iteração do loop, a variável repetir assume o valor falso (nil).
- repeat
O comando repeat é bem simples, com ele é possível executar um trecho de código por uma quantidade estabelecida de vezes. A sintaxe do comando repeat é a seguinte:
(repeat INTEIRO
(COMANDO 1)
(COMANDO 2)
(COMANDO 3)
...
(COMANDO N)
)
Na sintaxe acima, o campo INTEIRO deve ser um número inteiro positivo e diferente de zero para que a função repeat execute a sua sequencia de comandos.
Exemplos:
- O código abaixo, repete por duas vezes o comando print, com isto é impresso por duas vezes a palavra "oi" na linha de comando do autocad:
(repeat 2
(print "oi")
)
- O código abaixo, estabelece inicialmente algumas variáveis, e em seguida é repetido o código contido na função repeat, por dez vezes, o que faz com que as variáveis valor1 e valor2 tenham seus valores modicados a cada passada.
(setq valor1 0)
(setq valor2 0)
(setq quantidade 10)
(repeat quantidade
(setq valor1 (+ valor1 1))
(setq valor2 (- valor2 1))
)
Pessoal, isto é tudo! No próximo post, irei falar sobre como declarar funções em AutoLisp, e como criar funções que podem ser usadas para criar comandos no AutoCAD. Funções são usadas para criar os programas em AutoLisp e podem ser salvas e executadas posteriormente pelo usuário.