Introdução aos laços de repetição

Ver Todos os Exercícios

Teoria

Introdução

Fala aí, aqui é Guga do Responde Aí! Tudo bem com você?

Nesse tópico nós iremos introduzir um conceito muito importante para a programação, que é a capacidade de um programa repetir instruções.

Você já imaginou como seria o mundo se os computadores e seus programas não fossem capazes de repetir inúmeras instruções com precisão em velocidades cada vez menores?

É impressionante como um conceito tão simples é capaz de causar tanto impacto!

Variável contadora

Antes de conversarmos de fato sobre os laços de repetição, nós temos que entender o conceito de variável contadora.

Uma variável contadora nada mais é do que uma variável que é incrementada toda vez que um bloco de instruções é executado, sua função assim como o nome sugere, é contar quantas vezes determinado trecho de código foi executado.

Guarde esse conceito, pois ele será muito útil quando formos programar!

Laço de repetição

De forma simples, um laço de repetição é um bloco de instruções que será executado diversas vezes durante a execução de um programa.

Porém, para que isso seja possível todo laço de repetição deve ter uma condição de parada, ou seja, uma quantidade máxima de vezes que determinado trecho de código será executado.

Vale lembrar que em um laço de repetição as palavras loop ou iteração representam cada execução de um bloco que está em repetição.

Vamos para um exemplo!

Exemplo: suponha que você queira fazer um programa que imprima na tela todos os números no intervalo de 1 a 100.

Lembre-se que independente da situação, sempre será inviável codificar 100 comandos printf() com todos os números presentes no intervalo, por isso utilizaremos os laços de repetição.

Mas antes devemos nos atentar a algumas coisas, como por exemplo o momento em que as repetições devem se encerrar, por só queremos ir até o número 100, as repetições devem continuar apenas enquanto a variável contadora for menor ou igual a 100.

Com a condição de parada definida podemos codificar o bloco de instruções, que nesse caso será apenas uma função printf() que imprimirá o valor da variável contadora.

Para nós termos uma visualização ainda mais fácil, observe esse algoritmo que representa o programa que acabamos de idealizar:

  • Inicie a variável contadora em 1
  • Enquanto a variável contadora for menor ou igual a 100
    • Imprima a variável contadora
    • Incremente a variável contadora

Nós acabamos de criar nosso primeiro laço de repetição!

Cuidados que devemos ter

Como nós não temos controle sobre as repetições realizadas, é muito importante que a condição de parada seja definida criteriosamente, pois caso ela seja falha o programa pode entrar em estado que chamamos de loops infinitos.

Ele executará determinada instrução para sempre com direção ao infinito, pois não possui uma condição de parada consistente.

E para ser bem sincero... Programas indo com rumo AO INFITO E ALÉM são muito comuns!

Nesse momento nós já temos uma boa introdução sobre os laços de repetição, por isso não se esqueça de fazer os exercícios de fixação, te espero ali na página do lado!

Variável contadora

Laço de repetição

Cuidados que devemos ter

Exercícios Resolvidos

Exercício Resolvido #1

Explique o que é e qual a finalidade de um laço de repetição em um programa.

Passo 1

Um laço de repetição é uma estrutura que contém instruções que serão repetidas enquanto determinada condição for verdadeira. Cada repetição das instruções presentes na estrutura é denominada loop e o objetivo de tal comando é tornar a codificação mais eficiente automatizando instruções iguais que seriam codificadas de forma sequencial.

Resposta

Portanto, um laço de repetição nada mais é do que uma estrutura que tem a finalidade de automatizar a execução de instruções em um programa.

Exercício Resolvido #2

O que é e qual a finalidade da variável contadora nos laços de repetição?

Passo 1

Uma variável contadora tem o papel de contar as repetições executadas por um laço, sendo ela a responsável pela parada do mesmo na maioria das vezes, uma vez que a mesma é incrementada a cada loop até o momento que torna a condição de execução do laço falsa.

Vale lembrar que a codificação ruim das instruções envolvendo a variável contadora podem ocasionar o que chamamos de loop infinito, que é quando a condição de execução do laço de repetição nunca se torna falsa.

Resposta

Portanto, a variável contadora nada mais é do que uma variável com regras de atualização do seu valor que tem a finalidade de administrar uma estrutura de repetição.

Exercício Resolvido #3

Dada uma variável i iniciada com o valor 0 que é incrementada ao final de cada loop de um laço de repetição.

Qual é a condição de execução desse laço de repetição quando o mesmo tem o objetivo de imprimir todos os números inteiros no intervalo de 0 a 100?

Passo 1

Para imprimirmos todos os número inteiros entre 0 e 100 (dado que i é iniciada em o), basta incrementarmos a variável contadora e imprimirmos o seu valor a cada loop da estrutura de repetição até que ela seja igual a 100.

Resposta

Portanto, a condição de execução das instruções desse laço de repetição é: “Enquanto i for menor ou igual a 100”.

Exercício Resolvido #4

Dada uma variável i iniciada com o valor 0 que é incrementada ao final de cada loop de um laço de repetição.

Qual é a condição de execução do laço de repetição quando o mesmo tem o objetivo de preencher um vetor?

Para esse exercício use o seguinte conhecimento sobre vetores:

  • Um vetor nada mais é do que um conjunto de posições capaz de armazenar dados.

Passo 1

Como ainda não sabemos o que é um vetor, vamos utilizar o conhecimento dado no enunciado.

Sendo assim, para preenchermos um vetor nós precisamos preencher cada uma das posições desse vetor, ou seja, percorreremos cada uma dessas posições requisitando dados ao usuário.

Passo 2

Com isso, sabemos que um vetor só estará completamente preenchido quando a variável contadora da estrutura de repetição for igual ao número da última posição presente no vetor. Já que a última posição do vetor é a última a ser preenchida com o dado do usuário.

Resposta

Portanto, a condição de execução das instruções desse laço de repetição é: “Enquanto i for menor ou igual ao número da última posição do vetor”.

Exercício Resolvido #5

O algoritmo a seguir visa representar um laço de repetição:

  • Iniciar i com o valor 0
    • Enquanto i for menor que 100
      • Imprimir i

Qual é a falha que irá ocorrer no programa quando o mesmo for executado e qual é o motivo dessa falha?

Passo 1

O programa passará a executar um loop infinito, pois a variável contadora i não está sendo incrementada, logo permanecerá infinitamente com o valor 0 e fará com que a condição de execução nunca seja falsa.

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #6

Dada uma variável contadora j iniciada com o valor 10 e decrementada a cada loop de um determinado laço de repetição.

Qual será a condição de execução desse laço de repetição dado que o programa em que o mesmo executa tem o objetivo de imprimir todos os números primos no intervalo de 0 a 10?

Passo 1

Como j é iniciada com o valor 10, podemos afirmar que todos os números do intervalor de 0 a 10 devem ser verificados. Sendo assim, o laço de repetição deve ser executado até j ser igual a 0.

Resposta

Portanto, a condição de execução das instruções desse laço de repetição deve ser: “Enquanto j for menor ou igual a 0”.

Exercício Resolvido #7

Suponha que você tenha que desenvolver um programa que realiza operações matemáticas de potenciação, ou seja, tem como entrada uma base seguida de seu expoente e como saída o resultado dessa potência.

Tendo em vista que a potenciação é uma operação matemática que representa a multiplicação de fatores iguais, como um laço de repetição poderia te auxiliar no desenvolvimento desse programa?

Passo 1

Por se tratar de uma potenciação temos a garantia que uma instrução será repetida, mais especificamente a instrução de multiplicação pela base se repetirá n vezes, considerando n o expoente dessa operação.

Dessa forma, um laço de repetição pode ser utilizado para executar as instruções de multiplicação e atualização de uma variável resultado (inicializada com o valor 1) diversas vezes. Para isso, basta que o mesmo tenha como condição de execução uma variável contadora i (inicializada com o valor 0) que é incrementada ao final de cada loop menor ou igual ao expoente da potenciação.

Resposta

Com base na análise feita no primeiro passo, podemos criar o seguinte algoritmo para o cálculo de potências:

Sendo que a primeira instrução do algoritmo se trata de um comando de repetição.

Exercício Resolvido #8

Suponha que você esteja desenvolvendo um programa que realiza a multiplicação entre dois números inteiros.

Esse programa deve permanecer em execução até que o usuário digite a opção sair, são opções desse programa:

  1. Multiplicar
  2. Sair

Como um laço de repetição poderá ser útil nesse programa e que outra estrutura será utilizada para o desenvolvimento do mesmo?

Passo 1

Primeiro temos que definir a estrutura que será utilizada para a seleção das opções, onde para esse exemplo é possível perceber que o comando switch se encaixa muito bem.

Com isso, podemos utilizar um laço de repetição que executará a estrutura switch enquanto uma variável marcador for diferente de 0, essa por sua vez só possuirá valor 0 quando o usuário selecionar a opção “Sair” e uma atribuição de 0 a marcador for realizada.

Resposta

Para facilitar o entendimento do programa, dá uma olhada nesse pseudocódigo:

Portanto, enquanto o usuário não selecionar a opção 2, o programa irá requisitar a leitura de uma opção. Esse tipo de comportamento pode ser interessante quando queremos realizar diversas operações dentro de um programa sem que o mesmo finalize ao término de cada uma.