44
Aula 7 – Oficina de Programação Estruturas de Repetição no C Profa. Elaine Faria UFU - 2017

Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

  • Upload
    ngohanh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Aula 7 – Oficina de Programação Estruturas de Repetição no C

Profa. Elaine Faria UFU - 2017

Page 2: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Aula de Hoje

• Estruturas de repetição:• do…while• while• for

Page 3: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e 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.

Page 4: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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• Coloque a lâmpada nova• 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- ?

Repetição detarefas

Page 5: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 6: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Estruturas de repetição (laço)

Em C existem 3 estruturas principais de laço:

1) Laço do-while2) Laço while3) Laço for

Page 7: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e 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

Page 8: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e 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).

Page 9: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 10: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 11: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Estrutura de repetição

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

repita corpo do laçoate(condição)

do{ corpo do laço;}while(condição);

à Algoritmo

à Linguagem C

Page 12: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Laço do-while

Formato:do{

comandos; alteração;}while(condição);

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

Page 13: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Exemplo#include <stdio.h>int main(){ int x; do { printf(“Digite um inteiro positivo”); scanf(“%d”, &x); // alteração }while(x <= 0);

return 0;}

Page 14: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Estrutura de repetição

• Repetição com pré-condição (teste no início):

enquanto (condição) faca corpo do laçofimenquanto

while (condição){ corpo do laço;}

à Algoritmo

à Linguagem C

Page 15: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Laço while

Formato:inicialização;while(condição){

comandos; alteração;}

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

Page 16: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 17: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 18: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

while e do-while

int x = -1;do{ printf(“Valor de x: %d”, x); x=x+1;} while (x > 0);

int x = -1;while (x > 0){ printf(“Valor de x: %d”, x); x = x+1;}

do-while

while

Page 19: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 20: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Operadores

- Operadores aritméticos +, -, *, /, %

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

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

- Operador de Atribuição =

- Operador de Incremento e Decremento ++ e --

Page 21: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Operador de incremento edecremento

• Operador de incremento: ++ Exemplo: n = 5; n++; // ++n

• Operador de decremento: -- Exemplo:

n = 5; n--; // --n

Page 22: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 23: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 24: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Exercício• à Explique porque é errado fazer

while (num=10) { ... }

Page 25: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 26: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e 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;

Page 27: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Estrutura de repetição

para vc de vi ate vf passo inc faca corpo do laçofimpara

for (inicialização; condição; alteração){ corpo do laço;}

à Algoritmo

à Linguagem C

Page 28: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 29: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 30: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 31: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 32: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 33: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 34: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 35: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 36: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 37: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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;}

Page 38: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 39: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Laço aninhadosExemplo 1:for(i=0;i<10;i++){ for(j=0;j<10;j++) printf(“%d “,j);

printf(“\n”);}

Page 40: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Laços Aninhados

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; }

Exemplo 2:

Page 41: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Exercícios1- 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

Page 42: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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

Page 43: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

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.

Page 44: Estruturas de Repetição no C - facom.ufu.brelaine/disc/OP/Aula7-EstruturasRepeticao-C.pdf · Introdução • Apresentar as estruturas de repetição do…while, while e for

Exercícios8- 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.