Você está na página 1de 44

Aula 7 – Oficina de Programação

Estruturas de Repetição no C

Profa. Elaine Faria


UFU - 2017
Aula de Hoje
• Estruturas de repetição:
• do…while
• while
• for
Introdução
• Apresentar as estruturas de repetição
do…while, while e for... as quais nos
permitem executar um trecho de algoritmo
zero ou mais vezes.

• Apresentar os comandos de desvio de


fluxo incondicional: break, continue.
Exemplo: A Lâmpada não funciona
• Desligue o interruptor
• Retire e coloque a lâmpada que funciona
• Acione o interruptor
• Se a lâmpada não acender
• Obtenha uma lâmpada nova
• Retire a lâmpada queimada
Repetição de
• Coloque a lâmpada nova
tarefas
• Se a lâmpada não acender
• Obtenha uma lâmpada nova
• Retire a lâmpada queimada
• Coloque a lâmpada nova
• Se a lâmpada não acender
1- ?
Exemplo: A Lâmpada não funciona

• Desligue o interruptor
• Retire e coloque a lâmpada que funciona
• Acione o interruptor
• Enquanto a lâmpada não acender
• Obtenha uma lâmpada nova
• Retire a lâmpada queimada
• Coloque a lâmpada nova
Estruturas de repetição (laço)

Em C existem 3 estruturas principais de laço:


1) Laço do-while
2) Laço while
3) Laço for
Estruturas de repetição (laço)
• Estrutura de repetição para número indefinido
de repetições:
- Repetição com pós-condição (condição no final)
ü Estrutura do-while
- Repetição com pré-condição (condição no início)
ü Estrutura while

• Estrutura de repetição para número definido de


repetições:
ü Estrutura for
Terminologia
• O código repetido em um laço (loop) é chamado
corpo do laço.
• O corpo do laço é constituído de um ou mais
comandos.
• Cada repetição do corpo do laço é chamada de
uma iteração do laço.
• A iteração é controla por um teste de condição.
• A condição de controle é uma expressão
booleana (verdadeira ou falsa).
Estrutura de repetição
(Para número indefinido de repetições)
• Essa estrutura de repetição é utilizada quando
não se sabe o número de vezes que um trecho
de código deve ser repetido.

• Embora, também possa ser utilizada quando


se sabe esse número.

• C, implementa dois comandos para esta situação:


à Comando do... while
à Comando while
Estrutura de repetição
(Para número indefinido de repetições)
• Uma diferença importante entre os laços while e
do-while envolve o momento em que a condição
é verificada.
• No do-while,
• o corpo do laço é executado primeiro, e a
condição verificada depois
• No while,
• a expressão de controle é verificada antes que
o corpo do laço seja executado.
Estrutura de repetição
• Repetição com pós-condição (teste no final):
à Algoritmo
repita
corpo do laço
ate(condição)

à Linguagem C
do
{
corpo do laço;
}while(condição);
Laço do-while
Formato:
do
{
comandos;
alteração;
}while(condição);

• O corpo do laço é executado


uma ou mais vezes.
Exemplo
#include <stdio.h>
int main()
{
int x;
do
{
printf(“Digite um inteiro positivo”);
scanf(“%d”, &x); // alteração
}while(x <= 0);
return 0;
}
Estrutura de repetição
• Repetição com pré-condição (teste no início):
à Algoritmo
enquanto (condição) faca
corpo do laço
fimenquanto

à Linguagem C
while (condição)
{
corpo do laço;
}
Laço while
Formato:
inicialização;
while(condição)
{
comandos;
alteração;
}

• O corpo do laço é executado zero ou mais vezes


Laço while
• A inicialização é uma
expressão que atribui um
valor inicial ao contador.
• A condição verifica se a
contagem chegou ao fim.
• A alteração modifica o
valor do contador.
• Enquanto a contagem não
termina, o corpo do laço
associado ao while é
repetidamente executado.
Exemplo
#include <stdio.h>
int main()
{
int x = 0; // inicialização
while (x < 5) // condição
{
printf(“Valor de x: %d”, x);
x = x + 1; // alteração
}
return 0;
}
while e do-while
do-while
int x = -1;
do
{
printf(“Valor de x: %d”, x);
x=x+1;
} while (x > 0);

while
int x = -1;
while (x > 0)
{
printf(“Valor de x: %d”, x);
x = x+1;
}
Revisão
• No laço while a expressão de teste é avaliada
antes do corpo do laço ser executado;
• No laço do-while a expressão de teste é
avaliada depois do corpo do laço ser executado;
• Um laço do-while é sempre encerrado por ponto-
e-vírgula;
• O corpo do laço while pode ser nunca executado.
Por outro lado o corpo do laço do-while é
sempre executado pelo menos uma vez.
Operadores
- Operadores aritméticos +, -, *, /, %

- Operadores relacionais >, <, >=, <=, !=, ==

- Operadores lógicos: &&, ||, !

- Operador de Atribuição =

- Operador de Incremento e Decremento


++ e --
Operador de incremento e
decremento
• Operador de incremento: ++
Exemplo:
n = 5;
n++; // ++n
• Operador de decremento: --
Exemplo:
n = 5;
n--; // --n
Exemplo
#include <stdio.h>
int main()
{
int x = 0; // inicialização
while (x < 5) // condição
{
printf(“Valor de x: %d”, x);
x++; // Igual a x = x + 1
}
return 0;
}
Desafio de Programação

• Um número natural triangular é igual à


soma dos n primeiros números naturais
consecutivos, a partir de 1. Por exemplo, 1,
3, 6, 10, 15, ... são triangulares.

• Dado um natural n>=1, informe se ele é


triangular.
Exercício
• à Explique porque é errado fazer

while (num=10)
{
...
}
Estruturas de repetição (laço)
• Estrutura de repetição para número indefinido de
repetições:
- Repetição com pré-condição (condição no início)
ü Estrutura while

- Repetição com pós-condição (condição no final)


ü Estrutura do-while

• Estrutura de repetição para número definido de


repetições:
ü Estrutura for
Estrutura de repetição
(Para número definido de repetições)

• Tem seu funcionamento controlado por uma


variável que conta o número de vezes que o
comando é executado.
• Em C, essa estrutura é implementada pelo
comando for, cuja forma básica é a seguinte:

for (inicialização; condição; alteração)


comandos;
Estrutura de repetição
à Algoritmo
para vc de vi ate vf passo inc faca
corpo do laço
fimpara

à Linguagem C
for (inicialização; condição; alteração)
{
corpo do laço;
}
Exemplo 1
#include <stdio.h>
int main()
{
int i, n;
n = 10;
for (i = 0; i < n; i++)
{
printf(“\nExibe esta mensagem 10 vezes!”);
}
return 0;
}
Exemplo 2
#include <stdio.h>
int main()
{
int up, down;

for (up = 0, down=10; up < down; up++, down--)


{
printf("up = %d, down= %d\n",up,down);
}

return 0;
}
Desafio de Programação
• O quadrado de um número natural n é dado pela
soma dos n primeiros números ímpares
consecutivos. Por exemplo:
à 12=1
à 22=1+3
à 32=1+3+5
à 42=1+3+5+7
• Dado um número n, calcule seu quadrado
usando a soma de ímpares ao invés de produto.
Comandos de desvio condicional
• As vezes é preciso alterar o fluxo de controle de
uma estrutura de laço.
• As duas formas para se alterar o fluxo de controle
são: break ou continue

• Comando break:
• Encerra o laço
• Comando continue:
• Encerra a iteração atual do corpo do laço
Comandos de desvio condicional
• Comando break:
• Pode ser usado no corpo de qualquer estrutura
de laço C
• Causa a saída imediata do laço e o controle é
passado para o próximo estágio do programa
Comandos de desvio condicional
• Comando break (Exemplo 1)
int main()
{
int x = 0;
while (x < 5)
{
printf(“\nValor de x: %d”, x);
if(x == 3)
{
printf(“\nx igual a 3”);
break;
}
x = x + 1;
}
printf(“\nFora do laço while”);
return 0;
}
Comandos de desvio condicional
• Comando break (Exemplo 2)
int main()
{
int x = 0;
while (x < 5)
{
printf(“\nValor de x: %d”, x);
x = x + 1;
break;
printf(“\nDepois do incremento.”);
}
printf(“\nFora do laço while”);
return 0;
}
Comandos de desvio condicional
• Comando continue:
– O comando continue força a próxima iteração
do laço e pula o código que estiver abaixo.
– Nos laços while e do-while ele faz com que o
controle do programa vá diretamente para o
teste condicional e depois continua o processo
do laço.
Comandos de desvio condicional
• Comando continue:
– No for, o computador primeiro executa o
incremento do laço e, depois, o teste
condicional, e finalmente faz com que o laço
continue.

– O comando continue deve ser evitado, pois


pode causar dificuldades de leitura e confusão
ao se manter o programa.
Comandos de desvio condicional
• Comando continue (Exemplo)
int main()
{
int x = 0;
while (x < 5)
{
printf(“\nValor de x: %d”, x);
x = x + 1;
continue;
printf(“\nDepois do incremento.”);
}
printf(“\nFora do laço while”);
return 0;
}
Laço aninhados

• É perfeitamente legal aninhar um laço


dentro do outro.

• Quando fizer isto, lembre-se de que


qualquer comando break ou continue se
aplicam ao laço mais interno que o
contenha.
Laço aninhados
Exemplo 1:
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf(“%d “,j);

printf(“\n”);
}
Laços Aninhados
Exemplo 2:
int x = 0;
int y = 5;
while (x < 5)
{
printf(“Valor de x: %d”, x);
while (y > 0)
{
printf(“Valor de y: %d”, y);
y = y - 1;
}
x = x + 1;
}
Exercícios
1- Faça um programa em C que apresente os
quadrados dos números inteiros de 15 a 200.

2- Faça um programa em C que determine e mostre


os cinco primeiros múltiplos de 3, considerando
números maiores do que 0

3- Faça um programa em C que calcule e mostre a


soma dos 50 primeiros números pares
Exercícios
4- Faça um programa em C que mostre todos
os números ímpares entre 1 e 50.

5- Faça um programa em C que leia um


número N, some todos os números inteiros
de 1 a N, e mostre o resultado
Exercícios
6- Crie um programa em C que receba vários
números inteiros e positivos e imprima o produto
dos números ímpares digitados e a soma dos
pares. O algoritmo encerra quando o zero ou um
número negativo é digitado.

7- Escreva um programa em C que calcule a


média dos números reais digitados pelo usuário.
Termine a leitura se o usuário digitar zero.
Exercícios
8- Escreva um programa em C que repita 10 vezes
os seguintes passos: recebe quatro números
inteiros, calcula e mostra a soma desses números.
à Implemente uma solução usando a estrutura de
repetição while.
à Implemente uma solução usando a estrutura de
repetição do-while.
à Implemente uma solução usando a estrutura de
repetição for.

Você também pode gostar