Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de...
Transcript of Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de...
![Page 1: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/1.jpg)
Introdução à Programação
Estruturas de Repetição
![Page 2: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/2.jpg)
Repetição de Comandos…
int somatorio(int n) {
int soma = 0;
int i = 0;
soma = soma + i;
i++;
soma = soma + i;
i++;
soma = soma + i;
...
}
Faz esta seqüência de comandos n vezes
n
i
i0
E haja copy&paste!
2
![Page 3: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/3.jpg)
3 3
Tópicos da Aula
Hoje, aprenderemos a usar estruturas de repetição para programas mais complexos
Necessidade de estruturas de repetição
Apresentação do conceito de laço (loop)
O comando for
O comando while
O comando do-while
Diferenças entre os comandos de repetição
Veremos também, como podemos alterar o
fluxo de laços
Comandos break e continue
![Page 4: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/4.jpg)
4 4
Necessidade de Estruturas de
Repetição
Na resolução de problemas em programação,
freqüentemente, precisamos repetir uma mesma
seqüência de comandos várias vezes
Na maioria dos casos, não sabemos de antemão
quantas vezes a seqüência de comandos será repetida
A linguagem de programação deve fornecer uma
estrutura (comando) que permita a execução repetida
de mesma seqüência de comandos
Evita esforço do programador
Permite que o programador não tenha que saber quantas
vezes o comando será executado
![Page 5: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/5.jpg)
5 5
Estruturas de Repetição
Permite repetir diversas vezes um comando ou
seqüência de comandos
Cada repetição de um comando ou seqüência de comandos é
denominada de iteração
São geralmente conhecidos como loops(laços)
Da mesma forma que comandos condicionais, são
controladas por expressões booleanas
C oferece 3 tipos de estruturas(comandos) de
repetição: O laço for
O laço while
O laço do-while
![Page 6: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/6.jpg)
O Comando for
for (i = 0; i < valor; i = i+1)
corpo
Executa corpo um número específico de vezes:
valor vezes
Neste exemplo, na primeira execução de corpo, o
valor de i é 0
O valor de i é incrementado após cada execução de
corpo
Variável i deve ser declarada antes de se utilizar o
comando for
Variável de controle
6
![Page 7: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/7.jpg)
A Forma Geral do Comando for
inicialização e incremento podem ser
praticamente quaisquer comandos
condição pode ser qualquer expressão booleana
inicialização geralmente inicializa a variável
de controle do for
incremento geralmente incrementa a variável for
for(inicialização;condição;incremento)
corpo
7
![Page 8: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/8.jpg)
Fluxo de Controle do Laço for
comando
true
condição avaliada
incremento
inicialização
false
8
![Page 9: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/9.jpg)
for ( inicialização ; condição ; incremento )
comando;
Examinando o Comando for
A inicialização
é executada uma só vez
antes do laço começar
O comando é
executado enquanto condição for verdadeira
O incremento é executado ao fim de
cada iteração
9
Cabeçalho do for
![Page 10: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/10.jpg)
Entendendo o Comando for
int somatorio(int n) {
int valor;
int soma = 0;
for (valor = 0; valor <= n; valor++)
soma = soma + valor;
return soma;
}
Variável valor é inicializada com 0
A cada iteração, valor é incrementado em 1
10
Comando será realizado enquanto valor for menor ou igual a n
![Page 11: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/11.jpg)
int somatorio(int n) {
int valor;
int soma = 0;
for (valor = 0; valor <= n; valor++)
soma = soma + valor;
return soma;
}
Entendendo o Comando for
Se n for menor do que
0, não se executa o corpo do for
11
É executado depois do for
![Page 12: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/12.jpg)
Entendendo o Comando for
int somatorio(int n) {
int soma = 0;
int valor;
for (valor = 0; valor <= n; valor++){
soma = soma + valor;
printf(“Soma Parcial:%d\n”,soma);
}
printf(“Soma Total:%d”,soma);
return soma;
}
Corpo do for
pode ser composto por bloco de comandos
12
![Page 13: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/13.jpg)
Modificando o Incremento do for
int somatorio(int n) {
int soma = 0;
int valor;
for (valor = n; valor>= 0; valor--){
soma = soma + valor;
printf(“Soma Parcial:%d\n”,soma);
}
printf(“Soma Total:%d”,soma);
return soma;
}
13
valor agora é decrementado
![Page 14: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/14.jpg)
Modificando o Incremento do for
int somatorioPares(int n) {
int soma = 0;
int valor;
for (valor = 0; valor <= n; valor = valor + 2){
soma = soma + valor;
printf(“Soma Parcial:%d\n”,soma);
}
printf(“Soma Total:%d”,soma)
return soma;
}
14
valor agora é incrementado em 2
Pode-se colocar qualquer tipo de expressão na
parte de incremento do comando for
![Page 15: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/15.jpg)
Variações do Comando for
Cada expressão no cabeçalho de um laço for loop
é opcional
Se a inicialização é omitida, nenhuma inicialização é
feita
Se a condição é omitida, a condição é considerada
sempre verdadeira e o laço continua para sempre
(laço infinito)
Se o incremento é omitido, nenhuma operação é
realizada ao final da iteração do laço
15
![Page 16: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/16.jpg)
O Comando for sem Condição, etc.
for(;;valor++)
corpo
16
for(;valor < n; valor++)
corpo
for(;;)
corpo
Repetição infinita: cuidado!
![Page 17: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/17.jpg)
17
Mais Variações do Comando for
Teste condicional não precisa ser baseado na variável
de controle
#include <stdio.h>
#include <conio.h>
int main ( ) {
int i ;
/* atribui um valor inicial a ch*/
char ch = ‘a’ ;
for(i = 0; ch != ‘q’;i++){
printf (“\nPasso:%d”,i) ;
ch = getche() ;
}
}
condição não é
baseada na
variável de
controle
![Page 18: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/18.jpg)
18
Mais Variações do Comando for
Parte de incremento não precisa incrementar variável
de controle
Comando for pode vir sem corpo
#include <stdio.h>
#include <conio.h>
int main ( ) {
char ch;
for(ch = getche(); ch!=‘q’;ch = getche());
printf (“\nValor q encontrado”) ;
} Incremento
pode ser outro
tipo de
expressão
Não tem corpo
![Page 19: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/19.jpg)
O comando while
Executa corpo várias vezes até que a
avaliação da expressão retorne falso
A condição é avaliada de novo após cada execução de corpo
Não executa corpo nenhuma vez, se de
início a avaliação da condição retorna falso
while (condição)
corpo
19
![Page 20: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/20.jpg)
Fluxo de Controle do Laço while
comando
true
condição avaliada
false
20
![Page 21: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/21.jpg)
int somatorio(int n) {
int soma = 0;
int valor = 0;
while ( valor <= n ){
soma = soma + valor;
valor++;
}
return soma;
}
Entendendo o comando while
Se n for negativo, não se executa o corpo do while
21
É executado quando o while termina, quando a condição for falsa
![Page 22: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/22.jpg)
int somatorio(int n) {
int soma = 0;
int valor = 0;
while ( valor <= n ){
soma = soma + valor;
valor++;
}
return soma;
}
Entendendo o comando while
Inicialização da variável de controle é feita fora do laço while
22
Incremento da variável de controle é feita no corpo do laço while
![Page 23: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/23.jpg)
int somatorio(int n) {
int soma = 0;
int valor = 0;
while ( valor <= n ){
soma = soma + valor;
}
return soma;
}
Laço Infinito com o Comando while
23
Se valor não é incrementado, este comando será executado infinitas vezes
![Page 24: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/24.jpg)
O Comando for e o
Comando while
for(inicialização;condição;incremento)
corpo
inicialização;
while(condição) {
corpo;
incremento;
}
equivale a ...
24
![Page 25: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/25.jpg)
O Comando for e o
Comando while
for(;;)
corpo
while(1) {
corpo;
}
equivale a ...
25
![Page 26: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/26.jpg)
do {
corpo
} while(condição)
O Comando do-while
Executa corpo, pelo menos uma vez, até
que a avaliação da condição retorne falso
A condição é avaliada de novo após cada execução de corpo
26
![Page 27: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/27.jpg)
true
condição
avaliada
comando
false
Fluxo de Controle do Laço do-while
27
![Page 28: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/28.jpg)
int somatorio(int n) {
int soma = 0;
int valor = n;
do {
soma = soma + valor;
valor--;
} while ( valor >= 0 )
return soma;
}
Entendendo o comando do-while
Se n for negativo, o corpo do do-while é executado pelo menos uma vez
28
É executado quando o do-while termina, quando a condição for falsa
Comportamento alterado: cuidado!
![Page 29: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/29.jpg)
do {
corpo
} while(condição)
Os Comandos do-while e while
corpo;
while(condição)
corpo;
Equivalente a ...
29
![Page 30: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/30.jpg)
30 30
Laços Aninhados
Laços podem ser aninhados da mesma forma
que comandos condicionais
O corpo de um laço pode conter outro laço
Para cada iteração do laço externo, o laço
interno é completamente executado
![Page 31: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/31.jpg)
31 31
Laços Aninhados
int somatorioDoSomatorio(int n, int vezes) {
int soma, somatorio =0;
int valExt;
int valInt;
for (valExt = 0; valExt < vezes; valExt++ ){
valInt = 0; soma = 0;
while (valInt <= n) {
soma = soma + valInt;
valInt++;
}
somatorio = somatorio + soma;
}
return somatorio;
}
A cada iteração do for, o laço while é executado
![Page 32: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/32.jpg)
32 32
Considerações sobre Laços
Os 3 tipos de laços são funcionalmente
equivalentes
Portanto podem ser usados indiscriminadamente
Os laços for e while são executados 0 ou
muitas vezes
O laço do-while é executado 1 ou muitas
vezes
![Page 33: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/33.jpg)
33
Exemplo de Laços
Escreva um programa em C que leia um número
inteiro n maior do que 1 e informe se o número é
primo ou não. Caso o usuário digite um valor
menor do que 2, o programa deve pedir novamente
para o usuário digitar um valor maior do que 1.
![Page 34: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/34.jpg)
34
Resolvendo o Problema de
Números Primos
1º Problema: Como forçar o usuário a digitar um
valor maior do que 1?
Ler n
Sim
Laço !
n < 2 ?
Não
![Page 35: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/35.jpg)
int main() {
int cont = 0, i = 2, n;
do {
printf(“\nDigite numero > 1\n”);
scanf (“%d”,&n);
} while ( n < 2 )
....
}
Programa para Numeros Primos
35
Ler n
Sim
n < 2 ?
Não
![Page 36: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/36.jpg)
36
Resolvendo o Problema de
Números Primos
2º Problema: Como saber que um número é
primo?
Ver se n é divisível por mais de um número entre
2 e n
![Page 37: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/37.jpg)
37
Resolvendo o Problema de
Números Primos
cont = 0, i = 2
cont ++
cont < 2
&& i < = n ?
n % i == 0 ?
i ++
Não Sim
Sim
Laço !
Sai do Laço
Não
i representa o
divisor
![Page 38: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/38.jpg)
int main() {
int cont = 0, i = 2, n;
do {
printf(“\nDigite numero > 1\n”);
scanf (“%d”,&n);
} while ( n < 2 )
while (cont < 2 && i <= n) {
if ( n % i == 0) {
cont++;
}
i++;
}
if (cont > 1) {
printf(“\n %d nao eh primo\n”,n);
} else {
printf(“\n %d eh primo\n”,n);
}
}
Programa para Numeros Primos
38
![Page 39: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/39.jpg)
39
O Comando break
Forma Geral do comando break
Tem dois usos distintos
Para forçar o término de um laço de repetição (do-while, for
ou while)
Para terminar um case do comando switch
Quando o comando break é encontrado dentro de
um laço de repetição:
instrução é imediatamente finalizada
próxima instrução após a estrutura de repetição é executada
Deve ser usado com cautela
Reduz legibilidade
Pode levar a erros de lógica
break;
![Page 40: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/40.jpg)
O Comando break
int somatorio(int n) {
int soma = 0;
int valor;
for (valor = 0; ; valor++){
soma = soma + valor;
if (valor == n)
break;
printf(“Soma Parcial:%d\n”,soma);
}
printf(“Soma Total:%d”,soma)
return soma;
}
Este comando não será executado quando valor = = n
40
![Page 41: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/41.jpg)
O Comando continue
Termina a execução da iteração atual de um loop (for,while,do-while) e volta ao
começo deste loop
Todos os comandos que seriam executados após o continue são descartados
continue
Forma Geral do comando continue
41
![Page 42: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/42.jpg)
42
Comando de Desvio - continue
Para os comandos while e do-while, o continue causa:
a realização imediata do teste da condição
correspondente
continuidade do processo de repetição dependendo
do resultado do teste
Para o comando for , o continue causa:
incremento da variável de controle do laço de
repetição
execução do teste para verificação da condição
continuidade do processo de repetição dependendo
do resultado do teste
![Page 43: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/43.jpg)
O Comando continue
void imprimeNumerosAteCinco() {
int valor;
for (valor = 0; valor <= 5; valor++){
if (valor == 4)
continue;
printf(“%d “,valor);
}
}
Controle pula para o incremento e este comando não será executado quando valor = = 4
43
A saída desta função será: 0 1 2 3 5
![Page 44: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/44.jpg)
O Comando continue
void imprimeNumerosAteCinco() {
int valor = 0;
while (valor <= 5){
if (valor == 4)
continue;
printf(“%d”,valor);
valor++;
}
}
Controle pula para o teste e função tem execução infinita quando valor = = 4
44
A saída desta função será: 0 1 2 3 ... laço infinito
![Page 45: Estruturas de Repetição - cin.ufpe.brcz/if165/NotasAulas/06aulaIP-Lacos.pdf · seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes](https://reader034.fdocument.pub/reader034/viewer/2022052610/5bed40c109d3f2351f8bf6cb/html5/thumbnails/45.jpg)
45 45
Resumindo ...
Estruturas de Repetição Necessidade de estruturas de repetição
Conceito de laço (loop)
Tipos de laço em C
O comando for
O comando while
O comando do-while
Laços Aninhados
Diferenças entre os comandos de repetição
Comandos para alterar o fluxo de laços
break e continue