• Nenhum resultado encontrado

Ilustrando estruturas de repetição com RoboMind

No documento Livro BasesComputacionais (páginas 176-179)

Vamos ilustrar a ideia usando RoboMind. No programa que desenha um quadrado no Capítulo 5, as instruções andarFrente(n) e virarEsquerda() são repetidas quatro vezes seguidas. A linguagem utilizada para criar programas para o RoboMind fornece uma estrutura de controle que pode ser usada para situações desse tipo, de maneira que você não precisa repetir as instruções para executar ações repetidas que seguem um padrão. Essa estrutura de controle é o repetir(n) {comandos} e é usada para repetir os comandos entre parênteses n vezes, no qual n é um parâmetro que controla o número de vezes que a sequência de comandos deve ser repetida. Por exemplo, para percorrer o quadrado, você poderia usar o programa da Listagem 7.1.

listagem 7.1: programa para percorrer um quadrado, com um comando de repetição.

Ao executar esse programa, os comandos que estão entre chaves serão executados quatro vezes, o que é equivalente aos programas para se percorrer um quadrado que fizemos anteriormente nos Capítulos 5 e 6. Você pode colocar qualquer sequência de comandos entre as chaves, incluindo uma outra estrutura de repetição. O programa da Listagem 7.2 percorre o quadrado duas vezes, usando duas estruturas de repetição, uma dentro da outra.

listagem 7.2: programa para percorrer um quadrado, com dois comandos de

repetição.

1 repetir (4){ 2 andarFrente (1) 3 virarEsquerda () 4 } 1 repetir (2){ 2 repetir (4){ 3 andarFrente (1) 4 virarEsquerda () 5 } 6 }

A primeira estrutura de repetição controla o número de vezes que o percurso do quadrado será feito, e a segunda estrutura controla a repetição de comandos ne- cessária para percorrer o quadrado. Observe que a sequência andarFrente(1) e virarEsquerda() será executada oito vezes. Se você quiser deixar o robô per- correndo esse quadrado indefinidamente, você pode usar o comando repetir() sem argumentos. O programa da Listagem 7.3, por exemplo, faz com que o robô fique percorrendo o quadrado até que a execução do programa seja abortado.

listagem 7.3: programa para fazer um quadrado, com o comando repetir() sem

argumento.

O RoboMind também tem uma estrutura condicional que envolve a re- petição dos comandos enquanto a condição for verdadeira. Essa estrutura é repetirEnquanto(condição) {comandos}. Observe a diferença entre as estruturas repetirEnquanto e repetir. Na estrutura repetir, a sequência de comandos é repetida um número de vezes n pré-definido, independentemente do estado do ambiente. Na estrutura repetirEnquanto, o robô executa a ação enquanto sua percepção do ambiente, avaliada pela condição, for verdadeira. O programa da Listagem 7.4 faz com que o robô siga uma linha em branco pintada no chão.

listagem 7.4: programa para seguir uma linha em branco, usando o comando

repetir().

7.3 criando proGramas complexos

Computadores são usados para resolver diferentes problemas, muitos deles extre- mamente complexos como manter atualizado o saldo bancário de centenas de mi- lhares de correntistas de grandes bancos, que envolve o processamento de milhões de transações diárias; controlar equipamentos complexos como os diversos compo- nentes eletrônicos de um avião, que contêm centenas de sensores e atuadores para que o avião funcione corretamente; e realizar simulações computacionais de modelos matemáticos do universo, que pode gerar quantidades enormes de dados a respeito dessas simulações, dentre muitos outros.

Apesar da complexidade, na grande maioria dos casos, esses sistemas são criados usando sequências de comandos, repetições e desvios de fluxo devido à tomada de

1 repetir (){ 2 repetir (4){ 3 andarFrente (1) 4 virarEsquerda () 5 } 6 } 1 repetirEnquanto ( brancoFrente ()){ 2 andarFrente (1) 3 }

7.4 atividades em aula

1. Acesse o RoboMind e teste os programas vistos na Seção 7.2;

2. Faça um programa para que o robô, no ambiente dado pelo mapa default. map, se desloque, a partir da posição inicial, indo para leste, até encontrar a primeira posição pintada de branco. A partir daí o robô deverá rastrear a linha branca pintada no chão, isto é, segui-la até encontrar o muro ao norte;

3. Faça um programa para que o robô, no ambiente dado pelo mapa default. map, a partir da posição inicial faça: escolha uma direção aleatória, siga na direção escolhida e pare somente quando encontrar algum obstáculo;

4. Faça um programa para que o robô, no ambiente dado pelo mapa passBeacons.map, saia da posição inicial (salão à esquerda) e vá para o ponto marcado em branco no salão à direita.

7.5 ilustrando os conceitos aprendidos usando scilab

Retomando o problema exemplificado em Scilab nos Capítulos 5 e 6, que consiste em calcular a área A, o perímetro P e a diagonal D de um quadrado de lado x unidades de medida (u.m.), onde x é um valor de entrada fornecido pelo usuário. Suponha, agora, que queiramos realizar várias vezes os cálculos de diferentes quadrados. Para isto, utilizamos a estrutura de repetição while, conforme o código da Listagem 7.5.

listagem 7.5: programa utilizando o comando while.

No código da Listagem 7.5 as linhas 3–12 são executadas repetidas vezes, enquanto (while) o valor de x (variável que representa o lado do quadrado) é diferente (∼=) de -1. Podemos observar que o comportamento do comando while no Scilab é idêntico ao comando repetirEnquanto no RoboMind.

Vamos apresentar um outro exemplo de uso de instrução de repetição. Provavelmente você já ouviu falar do cálculo do Máximo Divisor Comum (MDC) de dois números

1 x = 0;

2 while x ~= -1

3 x=input ("Entre com o comprimento do lado do quadrado:") 4 if x > 0

5 A = x*x; 6 P = 4*x;

7 D = sqrt (2)*x;

8 printf ("A área é %f\nO perímetro é %f\nA diagonal é %f",A,P,D);

9 else

10 printf (" Entrada inválida \n");

11 printf ("Não foi possível realizar os cálculos \n"); 12 end

13 end

inteiros pelo algoritmo de Euclides. Na Figura 7.1 apresentamos um exemplo do cálculo do MDC dos números 320 e 250. Os passos para realizar o cálculo do MDC são:

1. Insira os dois números (em ordem crescente) nas duas primeiras colunas da segunda linha;

2. Divida o primeiro número (320) pelo segundo (250); 3. Coloque a parte inteira da divisão sobre o número 250; 4. Coloque o resto da divisão (70) abaixo do número 320;

5. Copie o resto da divisão para a terceira coluna da segunda linha;

6. Repita o processo a partir de 2, considerando o resto como segundo número e o primeiro como o antigo segundo número;

7. O processo para quando o resto da divisão for igual a zero e, neste caso, o MDC é dado pelo número da última coluna na segunda linha.

figura 7.1: algoritmo de euclides do máximo divisor comum de dois números inteiros

No documento Livro BasesComputacionais (páginas 176-179)