Interação, Ramificação e controle de fluxo 2(Estruturas de repetição)

Produzido por Gustavo Barbosa
Ver Todos os Exercícios

Teoria

O que é essas estruturas de repetição?

Opa, eae tudo bem?

Hoje vamos conversar sobre as estruturas de repetição, mas o que é isso né?

Vamos supor que você foi ao supermercado comprar umas 10 frutas. A gente tá tão acostumado a fazer isso sempre que já nem pensa mais no processo, mas se olharmos direitinho, existe uma sequência de passos que seguimos para selecionar as frutas, que pode ser escrita como um algoritmo:

Analisando o algoritmo, você começa sempre selecionando uma fruta e executa “a função” para verificar se a fruta está apropriada para consumo ou não através do seu cheiro. Depois, dependendo do resultado, você devolve a fruta e pega outra ou coloca a fruta no carrinho pra levar.

Depois de encontrar uma fruta boa, você verifica quantas frutas já tem no carrinho, se tiver menos do que você deseja, você refaz o passo a passo novamente do começo até completar as 10 frutas no carrinho.

Em programação, esse processo que você está fazendo ao comprar uma fruta de ficar pegando fruta após fruta até completar seu carrinho recebe um nome específico, é uma estrutura ou laço de repetição.

A ideia aqui é você pegar seu algoritmo ou um trecho do seu algoritmo, e fazer ele se repetir infinitamente até que um certo critério seja completado, no caso do exemplo seria colocar as 10 frutas no carrinho. Esse critério recebe um nome específico na programação também que é chamado de critério de parada.

No Matlab existem duas funções para montar essas estruturas de repetição: uma delas é chamada de função for e a segunda função é chamada de while.

A diferença fundamental entre elas é que o for é utilizado apenas quando os critérios de paradas são finitos, enquanto o while pode ser utilizado com critérios de parada infinitos e finitos.

Por exemplo: no nosso exemplo você vai no mercado comprar 10 frutas, sendo assim seu laço irá se romper quando você completar as 10 frutas, logo o critério de parada é finito, podendo utilizar tanto o for quanto o while para montar um laço desse tipo.

Agora que já falamos da ideia, vamos praticar um pouco no Matlab?

Função For

Bem, mesmo com a limitação do for de apenas ser utilizado em casos com critérios de paradas finitos ele é mais utilizado que o while, muitas vezes por sua simplicidade e também porque é muito incomum em sistemas de engenharia cair problemas na qual precise de um critério de parada infinito.

Para entendermos a sintaxe vamos fazer um exemplo simples, vamos somar todos os 10 primeiros números que existem de 1 a 10 .

O algoritmo é algo assim:

  1. Partimos de um valor inicial que é o 0
  2. Vamos somar o valor anterior mais o valor seguinte
  3. O critério de parada é somar o número 10

Agora vamos escrever no Matlab:

Pra começar, vamos indicar o valor inicial da soma criando uma variável:

s o m a = 0

Depois, vamos chamar a função for:

f o r   i = 0 : 1 : 10

Aqui chamamos a função f o r . Para isso, criamos uma nova variável i que vai definir o critério de parada, seu valor inicial será 0 e vamos incrementar de um em um até que chegue ao 10 , quando o laço vai encerrar.

Depois disso vamos colocar o código, que será repetido. Já definimos que a soma irá começar do 0 , então a cada ciclo de repetição vamos somar a essa variável o valor de i , que vai iniciar em 0 e ir até 10 , completando a tarefa que queremos. Então a função ficará algo mais ou menos assim:

s o m a = s o m a + i

E finalizaremos com end, e após isso podemos colocar a saída de dados.

O código vai fazer o seguinte:

  • Quando o i = 0
  • s o m a = 0 + 0 = 0

  • Quando o i   =   1 , temos
  • s o m a = 0 + 1 = 1

  • Quando i = 2 , temos
  •                             s o m a = 1 + 2 = 3

    E assim sucessivamente. Inserindo o código no Matlab e rodando temos:

    Se executarmos o código, o Matlab agora irá calcular o valor da soma dos 10 primeiros números:

    Então de uma forma geral a sintaxe do for pode ser vista da seguinte forma:

    Onde

  • V é a variável de controle do laço (também conhecida como índice do laço);
  • E x p r é a expressão de controle do laço, que irá executar o bloco de códigos igual ao número máximo de vezes que se pedir, que no exemplo anterior foi 10 .

A ideia aqui é que o E x p r será um vetor que conta quantas vezes o laço irá se repetir. A expressão de controle começa de um valor inicial e vai até a um valor final, executando o b l o c o de código e somando um incremento definido pelo programador.

A sintaxe é a seguinte:

V a l o r   i n i c i a l : i n c r e m e n t o : V a l o r   F i n a l .

Função While

Diferente do for que repete o laço uma quantidade definida de vezes imposta pelo programador, o while repete a estrutura até uma condição ser satisfeita, independente de quantas vezes seja necessário rodar o código até que isso aconteça.

Essa condição pode ser colocada no while de duas formas, vamos utilizar o exemplo anterior para explicitar a primeira forma.

Começamos o código no Matlab com as seguintes linhas, declarando as variáveis:

s o m a = 0

i = 0

Aqui usamos as mesmas variáveis do caso anterior, incluindo o valor inicial da expressão de controle, uma vez que o while também vai precisar dela.

Na segunda linha colocamos:

w h i l e   i <   = 10

Aqui começamos a linha do código com a expressão while, porém a expressão de controle é trocada por um teste lógico, e sempre que esse teste não for respeitado o laço se repete.

Então, vamos ao objetivo do nosso programa, que é somar os números de 1 a 10 :

s o m a = s o m a + i

No bloco de comando temos que adicionar uma informação a mais, que é como a expressão de controle se atualiza conforme o laço se repita:

i = i + 1

Esse passo é muito importante na função while, sem ele nosso programa não atualizará o valor de i , então iremos somar sempre o valor inicial e o laço nunca terminaria, já que a condição i < = 10 nunca seria atendida.

Finalizamos com o end para fechar o laço e depois com uma saída de dados.

O código em Matlab fica assim:

Existe uma segunda forma de encerrar o laço de repetição, por exemplo se queremos somar números até a soma ser igual a 80 .

Para isso, precisaremos da função break, que serve para cancelar o laço antes do critério de parada ser atendido. Então dentro do código anterior aumentaremos o número de termos de 10 para 100 e colocaremos o seguinte teste lógico:

i f   s o m a = > 80

b r e a k

e n d

Ou seja, se a soma for igual ou maior que 80 , o laço se encerra. Seu código deve ficar mais ou menos assim:

Onde o código ao se executar irá mostrar o valor da soma e também quantas vezes o laço somou através da nova saída de dados colocada no código.

Bem, sei que na teoria parece até complicadooo, porém com a prática essas coisas vão ficando mais claras na cabeça. Então não esqueça de ir olhar os exercícios que selecionamos para você, belezinha? Então até maissssss!

Função For

Função While