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
Download

Introdução Introdução Estruturas de Repetição