Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto de Matemática Departamento de Matemática Pura e Aplicada MAT01343 – Computador na Matemática Elementar I Professora: Márcia Rodrigues Notare Meneghetti Loop - Continuação Procedimentos Iterativos Existem outros comandos podem ser utilizados para executar um loop no SLogo. Os comandos iterativos ATÉQUE e ENQUANTO são exemplos que permitem a execução de loop. O comando ATÉQUE lista1 lista2 executa repetidamente as instruções da lista2 enquanto o resultado da lista1 for falso. O comando ENQUANTO lista1 lista2 executa repetidamente as instruções da lista2 enquanto o resultado da lista1 for verdadeiro. Vamos compreendê-los com um exemplo: aprenda surpresa1 :l :n :i atéque [:i=:n][pf :l pd 90 atr "l :l+10 atr "i :i+1] fim Execute o procedimento surpresa1 para diferentes valores de l, n e i. Note que, para que o procedimento execute uma “espiral” com n segmentos, devemos ter i=0 (a variável i atua como um contador no procedimento). Quando uma entrada deve ser inicializada sempre com o mesmo valor, não precisamos coloca-la na “chamada” do procedimento. Ou seja, no exemplo acima, podemos reescrever o procedimento da seguinte forma: aprenda surpresa2 :n :l atr "i 0 atéque [:i=:n][pf :l pd 90 atr "l :l+10 atr "i :i+1] fim No exemplo acima, a variável i é chamada de contador. Ela é uma variável cuja única função é estabelecer um critério de parada do loop. No comando repita, o contador está implícito e aumenta sempre de um em um. Nos comandos iterativos, podemos controlar o contador. Veja o exemplo a seguir, em que o contador aumenta de dois em dois: aprenda surpresa3 :n :l atr "i 0 enquanto [:i<:n][pf :l pd 90 atr "l :l+10 atr "i :i+2] fim Além disso, não precisamos de um contador para estabelecer uma condição de parada do loop. Veja o exemplo: aprenda surpresa4 :l enquanto [:l<200][pf :l pd 90 atr "l :l+10] fim Observe que controle do número de segmentos se dá exclusivamente pelo valor que for dado à entrada l ao executar o procedimento. Procedimentos Recursivos Existe, ainda, outra forma de executar um loop no SLogo. Para isso, não precisamos de nenhum comando especial, mas sim de procedimentos recursivos. Um procedimento recursivo é um procedimento que chama a ele mesmo (possui auto-chamada) na sua linha de comandos. Vamos entender com um exemplo: aprenda surpresa5 :n :l :i se :i=:n [pare] pf :l pd 90 surpresa5 :n :l+10 :i+1 fim Execute o procedimento surpresa5 para diferentes valores de n, l e i. Note que, para a utilização de procedimentos recursivos, precisamos de uma condição para a parada do procedimento. Essa condição é estabelecida pelo comando condicional SE, cuja sintaxe é SE condição lista, que significa SE a condição for verdadeira ENTÃO se executa a lista. Em procedimentos recursivos, assim como em procedimentos iterativos, não precisamos necessariamente de um contador para estabelecer uma condição de parada. Veja o procedimento a seguir: aprenda surpresa6 :l se :l>200 [pare] pf :l pd 90 surpresa6 :l+10 fim Para compreender melhor o funcionamento de um procedimento recursivo, podemos fazer um fluxograma de execução. Observe o fluxograma de execução de surpresa5 20 3 0: surpresa5 20 3 0 se 0=3 [pare] pf 20 pd 90 surpresa5 30 3 1 surpresa5 30 3 1 fim se 1=3 [pare] pf 30 pd 90 surpresa5 40 3 2 surpresa5 40 3 2 fim se 2=3 [pare] pf 40 pd 90 surpresa5 50 3 3 surpresa5 50 3 3 fim se 3=3 [pare] pf 50 pd 90 surpresa5 60 3 4 fim Atividade: Vamos reescrever os procedimentos elaborados anteriormente utilizando procedimentos iterativos e recursivos! 1. Obtenha um procedimento iterativo cuja resolução gráfica seja uma sequência de circunferências, para um número qualquer de circunferências. 2. Obtenha um procedimento recursivo cuja resolução gráfica seja uma sequência de circunferências, para um número qualquer de circunferências. 3. Obtenha um procedimento iterativo cuja resolução gráfica seja uma sequência de circunferências, onde o raio delas não pode ser maior que 200. 4. Obtenha um procedimento recursivo cuja resolução gráfica seja uma sequência de circunferências, onde o raio delas não pode ser maior que 200.
Compartilhar