10/12/2015 1 2 Introdução Bases Computacionais da Ciência (BC-0005) Em diversas situações, desejamos realizar uma determinada sequência de ações, um número repetido de vezes Por exemplo: Você pode querer usar o despertador para acordar todo o dia no mesmo horário. Se você usa o despertador do celular, já deve ter notado que ele tem a opção de tocar uma única vez ou repetir o toque diariamente. A opção de repetir o toque diariamente foi adicionada para que você não precise ficar programando todo dia o despertador do celular Lógica de Programação: Estruturas de Repetição Maria das Graças Bruno Marietto [email protected] Centro de Matemática, Computação e Cognição (CMCC) Universidade Federal do ABC (UFABC) Assim como celulares tem a opção de repetir o toque diariamente, linguagens de programação fornecem mecanismos para facilitar a execução de tarefas repetidas 3 Introdução Suponha que desejamos calcular a expressão 210. Sabemos que: 210 = 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 1024 A expressão contém NOVE vezes a instrução de multiplicação Usando uma calculadora, você teria que repetir a multiplicação por NOVE vezes 4 Estruturas de Repetição Quando uma sequência de comandos deve ser executada repetidas vezes, tem-se uma estrutura de repetição A estrutura de repetição, assim como a de decisão, envolve sempre a avaliação de uma condição (um teste, uma pergunta) Se quisermos calcular 2100 ? 1 10/12/2015 5 6 Estruturas de Repetição: repetir() No RoboMind, o comando repetir(n) executa o bloco de instruções um número pré-determinado de vezes Quando usar o comando repetir(n): o Quando o programador sabe quantas vezes o grupo de comandos deve ser repetido RoboMind o Quando o programador quer repetir “infinitas” vezes o grupo de comandos 7 8 Ilustrando Estruturas de Repetição Ilustrando Estruturas de Repetição No programa que desenha um quadrado, apresentado na aula de “Estruturas Sequenciais” As instruções andarFrente(n) e virarEsquerda() são: Repetidas QUATRO vezes seguidas O RoboMind oferece 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 repetir(n) { comandos } É usada para REPETIR os comandos entre parênteses n vezes. Aqui, n é um parâmetro que CONTROLA o número de vezes que a SEQUÊNCIA de comandos deve ser REPETIDA Para percorrer o quadrado, podese usar o seguinte programa: repetir(n) { comandos } 2 10/12/2015 9 10 Ilustrando Estruturas de Repetição Se você quiser deixar o robô percorrendo esse quadrado indefinidamente, você pode usar o comando repetir() sem argumentos: Exercícios O que faz o programa? O robô fica percorrendo o QUADRADO até que a execução do programa seja interrompida 11 Exercício Voltas na Linha Branca VoltasNaLinhaBranca.irobo 12 Exercício Voltas na Linha Branca VoltasNaLinhaBranca.irobo Abra no RoboMind o mapa linhaBranca.map. Este mapa tem uma linha branca em 7 células Faça um programa para que o robô se movimente dando: Uma volta em torno da linha, e depois pare Duas voltas, e depois pare Quatro voltas, e depois pare Infinitamente linhaBranca.map 3 10/12/2015 13 Exercício Seguir Linha – Somente Ida 14 Exercício Seguir Linha – Somente Ida SeguirLinha_Ida.irobo 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 Encontrando o muro, o robô deve parar (o programa deve parar) default.map 15 16 SeguirLinha_IdaVolta.irobobo Exercício Seguir Linha – Ida e Volta No programa anterior “Seguir Linha Somente Ida” o robô seguia a linha branca e se direcionava até o muro do lado norte Agora, faça um programa onde o robô continue indo até o muro do lado norte, e retorne para a sua posição inicial 4 10/12/2015 17 Exercício Seguir Linha e Pegar Baliza 18 Exercício Seguir Linha e Pegar Baliza AndarCaminho.irobobo Faça um programa para que o mapaCaminho.map mapaCaminho.map robô ande no ambiente dado pelo mapa mapaCaminho.map O robô deve andar nas linhas em branco Quando encontrar uma baliza, deve pegá-la Com a baliza em sua posse, o robô deve voltar para seu ponto de partida O robô deve deixar a baliza no seu ponto de partida do robô 19 20 Ilustrando Estruturas de Repetição O RoboMind tem uma estrutura condicional que envolve a repetição dos comandos, enquanto a condição for verdadeira: Repita Enquanto repetirEnquanto(condição) { comandos } Qual 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 5 10/12/2015 21 22 Exercício Seguir Linha – Andar Linhas Paralelas Exercício Seguir Linha – Andar Linhas Paralelas Faça um programa para verticalLines1.map SeguirLinha_Paralelas.irobo verticalLines1.map que o robô ande no ambiente dado pelo mapa verticalLines1.map O robô deve andar nas linhas em branco, e parar quando encontrar o ponto preto. Use o comando repetirEnquanto() 6