LA – Ling C – Aula 05A – Estruturas de Repetição

 

Estruturas de Repetição

Imagine que precisássemos calcular a temperatura média de um mês. Com o conhecimento atual precisaríamos ler a temperatura de cada dia (seriam 30 dias), somar todos os valores e dividir por 30. A construção do diagrama seria bastante trabalhosa!

Para os casos (e outros também!), onde necessitamos repetir um determinado conjunto de instruções, usaremos comandos apropriados para isso.

Contamos com 3 tipos de estrutura de repetição: Controle Inferior, Controle Superior e Para.

Em resumo, estruturas de repetição permitem que o programa execute determinadas instruções diversas vezes, sendo que a quantidade de vezes que isso ocorre é controlada por uma operação condicional.

Em C, temos os comandos do-while, while e for.

Contador

Muitas vezes, precisamos contar alguma coisa em nossos programas. Quando necessitamos deste tipo de construção, usamos as variáveis contadoras.

Para isso, precisamos criar uma variável, iniciá-la com o valor 0 (zero) e “contar” toda a vez que precisarmos.

laco01

Acumulador

Além de contar, ás vezes precisamos realizar a somatória de uma lista de valores. Quando necessitamos deste tipo de construção, usamos as variáveis acumuladoras.

Uma variável acumuladora é muito parecida com uma variável contadora. A diferença é que ao invés de somarmos um valor fixo, somamos o valor de uma variável, obtida de uma fonte externa.

laco02

Controle na parte inferior do laço: Do-While

A estrutura de repetição com controle na parte inferior do laço é usada quando queremos executar um conjunto de instruções ao menos uma vez e depois avaliar se a execução continuará a ser executada.

Para esta estrutura, ao final do laço, usaremos uma decisão para avaliar se a execução continuará. Por convenção, sempre que a condição for VERDADEIRA o conjunto de instruções do laço será executado novamente. Quando a condição for FALSA, o programa continuará a execução a partir da instrução seguinte da condição.

laco03

Comando do-while

É iniciado pela palavra-chave do, seguida da instrução que poderá ser executada várias vezes e termina com a palavra-chave while em conjunto com a condição de controle da repetição entre parênteses. Enquanto a condição de controle for verdadeira, a instrução será executada.

O do-while pode conter uma única instrução terminada por ponto-e-vírgula, ou várias instruções entre chaves (bloco).

Sintaxe

laco04

Exemplo: do-while

Escreva um programa que calcule o novo salário um funcionário segundo as regras: se o salário for menor que R$1.000,00, aumento de %7, caso contrário, aumento de 5%. No final, o programa deve questionar se o usuário deseja realizar o cálculo para outro salário.

laco05

Link no Github para exemplo: exemplo_dowhile01.c

Controle na parte superior do laço

Na estrutura de repetição com controle na parte superior do laço a decisão sobre a repetição vem antes do conjunto de instruções. Desta forma, diferentemente do que acontece com a estrutura com controle na parte inferior, o conjunto pode nem ser executado.

Por convenção, sempre que a condição for VERDADEIRA o conjunto de instruções do laço será executado. Quando a condição for FALSA, o programa continuará a execução a partir da instrução seguinte, fora do laço. Esta estrutura é a mais versátil de todas. Com ela podemos representar o comportamento das outras duas estruturas.

laco06

Comando while

Iniciada pela palavra-chave while acompanhada da condição de controle, seguida da instrução que poderá ser executada várias vezes. Enquanto a condição de controle for verdadeira, a instrução será executada.

O while pode conter uma única instrução terminada por ponto-e-vírgula, ou várias instruções entre chaves (bloco).

Sintaxe

laco07

Exemplo: while

Escreva um programa que leia a temperatura dos 7 dias de uma semana e no final exiba a média de temperatura da semana.

laco08

Link no Github para exemplo: exemplo_while01.c

Novos Operadores Aritméticos

Existem alguns outros operadores que ajudam a deixar o código menor e mais elegante quando trabalhamos com contadores e acumuladores.

laco09

Exemplo: Novos Operadores

Reescreva o exemplo anterior, utilizando, onde for possível, os novos operadores  aritméticos apresentados.

laco10

Link no Github para exemplo: exemplo_novosoperadores.c

Estrutura de repetição Para – for

A forma mais comum de repetição é quando temos uma quantidade fixa de vezes para executar algo. Calcular a temperatura média de uma semana, achar o maior aluno de uma classe de 50 alunos, etc. Para este tipo de problema, temos a estrutura de repetição FOR.

Com ela, podemos sintetizar esta tarefa, definindo um número determinado de repetições que nosso laço terá.

laco11

Comando for

Iniciada pela palavra-chave for acompanha de três expressões separadas por ponto-e-vírgula entre parênteses. Na primeira temos a inicialização, na segunda o teste para controle e por último o incremento ou passo. Enquanto o teste for verdadeiro, a instrução será executada.

O for pode conter uma única instrução terminada por ponto-e-vírgula, ou várias instruções entre chaves (bloco).

Sintaxe

laco12

Exemplo: for

Reescreva o exemplo anterior, trocando o comando while pelo comando for.

laco13

Link no Github para exemplo: exemplo_for01.c

Comandos break e continue

O comando break causa a saída imediata de uma estrutura de repetição, após a saída, o controle passa para a próxima instrução após a estrutura de repetição. Este funcionamento é parecido com o break visto na estrutura de decisão switch.

O comando continue, transfere o controle da execução para o início da estrutura de repetição, desta forma, força uma nova iteração.

Estes dois comandos, quando usados, devem estar dentro do corpo da estrutura de repetição.

Observação: Conteúdo do material desenvolvido pelo Professor César Tofanini, adaptado pelo Professor Rodrigo Saito

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s