comandos condicionais e de repetição em c · comandos de repetição for while do-while comandos...
TRANSCRIPT
![Page 1: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/1.jpg)
Métodos Computacionais
Comandos Condicionais e de Repetição em C
![Page 2: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/2.jpg)
Tópicos da Aula
22
Hoje vamos acrescentar comportamentos mais complexos a programas em C
Comandos Condicionais if-else
switch
Comandos de Repetiçãofor
while
do-while
Comandos de Desviobreak
continue
![Page 3: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/3.jpg)
Comandos Condicionais
Um comando condicional nos permite escolher qual deve ser a próxima instrução executada em um programa A execução de uma determinada instrução depende de uma condição (expressão booleana) A linguagem C oferece 3 tipos de comandos condicionais:
if – elseswitchcomando ternário (operador condicional)
3
![Page 4: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/4.jpg)
O comando if-else
if (expressaoBooleana) {comandos
} else {outros comandos
}
Se a avaliação de expressaoBooleanaretornar verdadeiro, comandos são
executados , caso contrário, executa-se outros comandos
4
![Page 5: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/5.jpg)
5
Exemplo do if-else#include <stdio.h>int main ( )
{ float n1, n2, n3, m;printf (“\nEntre com 3 notas ” ) ;scanf (“%f %f %f”, &n1, &n2, &n3);m = (n1 + n2 + n3 ) / 3 ; if (m >= 7.0) {
printf (“\n Aluno aprovado. ”) ;printf (“ Média igual a %f “ , m) ;
}else {printf (“\n Aluno reprovado. ”);printf (“ Média igual a %f “ , m) ;
} return 0;
}
![Page 6: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/6.jpg)
Variações do comandoif-else
if (expressaoBooleana) {comandos
}
if (expressaoBooleana)comando;
Se a avaliação daexpressãoretornar falso,não executa-se nada
if (expressaoBooleana) comando;
else outroComando;
O uso do bloco sóé necessário casoqueira-se executarmais de um comando
6
![Page 7: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/7.jpg)
Exemplo – if sem else
#include <stdio.h>int main ( ){ int resposta ;
printf (“\n Qual o valor de 10 + 14? ”);scanf (“%d”, &resposta);if (resposta == 10 + 14)
printf (“\n Resposta correta ! ”);return 0;
}else não é obrigatório
7
![Page 8: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/8.jpg)
Exemplo – if-else com único comando
#include <stdio.h>int main ( ){ int num ;
printf (“\nDigite um número: ”);scanf (“%d”, &num);if (num < 0)
printf (“\n Número é negativo ! ”);else
printf (“\n Número é positivo ! ”);return 0;
}
8
![Page 9: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/9.jpg)
Aninhandoif-else
if (expressaoBooleana) if (expressaoBooleana)
comando;else outroComando;
O comando dentro do if ou elsepode ser outro if
if-else aninhado
Num aninhamento, o else é associado ao maisrecente if sem else
9
![Page 10: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/10.jpg)
Exemplo if-else AninhadoExercício: O que está errado neste programa?
#include <stdio.h >int main ()
{ int temp ;printf (“\n Digite a temperatura: ” ) ;scanf (“%d”, &temp) ;if (temp < 30)
if (temp > 20) printf (“\n Temperatura agradável ” ) ;
else printf (“\n Temperatura muito quente ” ) ; return 0 ;
}
10
![Page 11: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/11.jpg)
11
Exemplo if-else AninhadoExercício: Corrigindo o programa
#include <stdio.h >int main ()
{ int temp ;printf (“\n Digite a temperatura: ” ) ;scanf (“%d”, &temp) ;if (temp < 30)
if (temp > 20) printf (“\n Temperatura agradável ” ) ;
else printf (“\n Temperatura muito quente ” ) ; return 0 ;
}
{
else associado ao if certo
}
![Page 12: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/12.jpg)
Encadeando comandosif-else
if (expressaoBooleana) { comandos
} else if (expressaoBooleana’) { comandos’
} else {comandos’’
}
12
![Page 13: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/13.jpg)
Tomando Múltiplas Decisões
O comando if-else é útil para a escolha de uma entre duas alternativasQuando mais de duas alternativas são necessárias, pode ficar deselegante utilizar vários if-else encadeados
Para estes casos o comando switch pode ser a melhor opção
13
![Page 14: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/14.jpg)
switch(expressao) {case rotulo1:Comandos1break;
case rotulo2:Comandos2break;
...default:
Comandos}
O Comando switch
Para executar um switchAvalia-se expressaoExecuta-se os comandos do case cujo rótulo éigual ao valor resultante da expressãoExecuta-se os comandos de default caso o valor resultante não seja igual a nenhum rótulo
![Page 15: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/15.jpg)
Restrições do Comando switch
O tipo de expressaosó pode ser :
Inteiro ou caractereOs rótulos são constantes diferentesExiste no máximo uma cláusula default (éopcional)Os tipos dos rótulos têm que ser o mesmo de expressao
switch(expressao) {case rotulo1:Comandos1break;
case rotulo2:Comandos2break;
...default:
Comandos}
![Page 16: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/16.jpg)
Variações do Comando switch
switch(expressao) {case rotulo1:Comandos1break;
case rotulo2: Comandos2break;
...default:
Comandos}
Vários rótulos podem estar associados ao mesmo comandoOs comandos break são opcionais:
Sem o break a execução dos comandos de um rótulo continua nos comandos do próximo, até chegar ao final ou a um break
![Page 17: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/17.jpg)
Exemplo de switchCalcular a diferença, o produto, o quociente ou a soma de dois números, dependendo da operação escolhida e imprimir o resultado.
# include “stdio.h“int main (void ) { char x; int a, b ;float result = 0.0;printf (“\n Informe os 2 números e a operação ”);scanf (“%d %d %c”, &a, &b, &x);
17
![Page 18: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/18.jpg)
Exemplo de switch (cont..)
18
switch (x) { case ‘+’: result = a + b;
break;case ‘-’: result = a - b;
break;case ‘*’: result = a * b;
break;case ‘/’: result = a / b;
break;default : printf(“\nOperador invalido”);
}printf (“\nResultado igual a %f ”, result);return 0 ;}
![Page 19: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/19.jpg)
Operador Condicional - ?
Forma Geral do ?
condição ? expressão1 : expressão2
Substitui construções do tipo:
if ( a > b ) {maximo = a;
} else {maximo = b;
}
maximo = a > b ? a :b ;
19
![Page 20: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/20.jpg)
Comando Ternário de Decisão - ?
Exercício: Considere as seguintes declaraçõeschar a = ‘a’, b = ‘b’; /*b tem valor 98*/int i = 1, j = 2 ;double x = 7.07 ;
Expressão Valor
i == j ? a-1: b + 1
j % 3 == 0 ? i + 4 : x
j > 1 ? j - 1 : j + 1
j % 3 != 0 ? i + 4: x
‘c’
7.07
15
20
![Page 21: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/21.jpg)
Estruturas de Repetição
2121
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 booleanasC oferece 3 tipos de estruturas(comandos) de repetição:
O laço forO laço while O laço do-while
![Page 22: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/22.jpg)
O Comando for
for (i = 0; i < valor; i = i+1)corpo
Executa corpo um número específico de vezes: valor vezesNeste exemplo, na primeira execução de corpo, o valor de i é 0O valor de i é incrementado após cada execução de corpoVariável i deve ser declarada antes de se utilizar o comando for
Variável de controle
22
![Page 23: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/23.jpg)
A Forma Geral do Comando for
for(inicialização;condição;incremento)corpo
inicialização e incremento podemser praticamente quaisquer comandoscondição pode ser qualquer expressãobooleanaInicialização geralmente inicializa a variável de controle do forincremento geralmente incrementa a variável for
23
![Page 24: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/24.jpg)
Fluxo de Controle do Laço for
comando
true
condiçãoavaliada
incremento
inicialização
false
24
![Page 25: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/25.jpg)
Examinando o Comando for
A inicializaçãoé executada uma só vezantes do laço começar
O comando éexecutado até que
condição se tornar falsa
for ( inicialização ; condição ; incremento )comando;
O incremento é executado ao fimde cada iteração
Cabeçalho do for
25
![Page 26: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/26.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
Comando serárealizado enquanto valor for menor ou igual a n 26
![Page 27: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/27.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;
}
Se n for menor do que0, nãose executa o corpo do for
É executado depois do for
27
![Page 28: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/28.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
28
![Page 29: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/29.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;
}
valor agora édecrementado
29
![Page 30: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/30.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;
}valor agora éincrementado em 2
Pode-se colocar qualquer tipo de expressão na parte de incremento do comando for
30
![Page 31: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/31.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
31
![Page 32: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/32.jpg)
O Comando for sem Condição, etc.
for(;valor < n; valor++)corpo
for(;;valor++)corpo Repetição infinita:
cuidado!
for(;;)corpo
32
![Page 33: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/33.jpg)
33
Mais Variações do Comando forTeste 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 34: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/34.jpg)
Mais Variações do Comando forParte de incremento não precisa incrementar variável de controleComando for pode vir sem corpo
34
#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 35: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/35.jpg)
O comando while
while (condição)corpo
Executa corpo várias vezes até que a avaliação da expressão retorne falsoA condição é avaliada de novo após cada execução de corpoNão executa corpo nenhuma vez, se de início a avaliação da condição retorna falso
35
![Page 36: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/36.jpg)
Fluxo de Controle do Laço while
comando
true
condiçãoavaliada
false
36
![Page 37: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/37.jpg)
Entendendo o comando while
int somatorio(int n) {int soma = 0;int valor = 0; while ( valor <= n ){
soma = soma + valor;valor++;
}return soma;
}
Se n for negativo, não seexecuta o corpo do while
É executado quando o while termina, quando a condição for falsa
37
![Page 38: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/38.jpg)
Entendendo o comando while
int somatorio(int n) {int soma = 0;int valor = 0; while ( valor <= n ){
soma = soma + valor;valor++;
}return soma;
}
Inicialização da variável de controle é feita fora do laço while
Incremento da variável de controle é feita no corpo do laço while
38
![Page 39: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/39.jpg)
Laço Infinito com o Comando while
int somatorio(int n) {int soma = 0;int valor = 0; while ( valor <= n ){
soma = soma + valor;}return soma;
}Se valor não éincrementado, este comando será executado infinitas vezes
39
![Page 40: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/40.jpg)
O Comando for e o Comando while
for(inicialização;condição;incremento)corpo
inicialização;while(condição) {corpo;incremento;
}equivale a ...
40
![Page 41: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/41.jpg)
O Comando for e o Comando while
for(;;)corpo
while(1) {corpo;
}
equivale a ...
41
![Page 42: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/42.jpg)
O Comando do-while
do {corpo
} while(condição)
Executa corpo, pelo menos uma vez, atéque a avaliação da condição retorne falsoA condição é avaliada de novo após cada execução de corpo
42
![Page 43: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/43.jpg)
Fluxo de Controle do Laço do-while
true
condiçãoavaliada
comando
false
43
![Page 44: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/44.jpg)
Entendendo o comando do-while
int somatorio(int n) {int soma = 0;int valor = 0; do {
soma = soma + valor;valor++;
} while ( valor <= n )
return soma; }
Se n for negativo, o corpodo do-while éexecutado pelo menos uma vez
44
É executado quando o do-while termina, quando a condição for falsa
Comportamento alterado: cuidado!
![Page 45: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/45.jpg)
do {corpo
} while(condição)
Os Comandos do-while e while
corpo;while(condição)corpo;
Equivalente a ...
45
![Page 46: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/46.jpg)
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
4646
![Page 47: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/47.jpg)
Laços Aninhadosint somatorioDoSomatorio(int n, int vezes) {
int soma = 0, somatorio =0;int valExt;for (valExt = 0; valExt < vezes; valExt++ ){
int valInt = 0;while (valInt <= n) {
soma = soma + valInt;valInt++;
}somatorio = somatorio + soma;
}return somatorio;
} A cada iteração do for,o laço while éexecutado
4747
![Page 48: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/48.jpg)
Considerações sobre Laços
Os 3 tipos de laços são funcionalmente equivalentes
Portanto podem ser usados indiscriminadamenteOs laços for e while são executados 0 ou muitas vezesO laço do-while é executado 1 ou muitas vezes
4848
![Page 49: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/49.jpg)
O Comando break
49
Forma Geral do comando break
Tem dois usos distintosPara forçar o término de um laço de repetição (do-while, forou while)Para terminar um case do comando switch
Quando o comando break é encontrado dentro de um laço de repetição:
instrução é imediatamente finalizadapróxima instrução após a estrutura de repetição é executada
Deve ser usado com cautelaReduz legibilidadePode levar a erros de lógica
break;
![Page 50: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/50.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
50
![Page 51: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/51.jpg)
O Comando continue
continue
Forma Geral do comando continue
Termina a execução da iteração atual de um loop (for,while,do-while) e volta aocomeço deste loopTodos os comandos que seriam executadosapós o continue são descartados
51
![Page 52: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/52.jpg)
Comando de Desvio - continue
Para os comandos while e do-while, o continue causa:
a realização imediata do teste da condição correspondentecontinuidade 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çãoexecução do teste para verificação da condiçãocontinuidade do processo de repetição dependendo do resultado do teste
52
![Page 53: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/53.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
53A saída desta função será: 0 1 2 3 5
![Page 54: Comandos Condicionais e de Repetição em C · Comandos de Repetição for while do-while Comandos de Desvio break ... Os 3 tipos de laços são funcionalmente equivalentes Portanto](https://reader031.vdocuments.net/reader031/viewer/2022021710/5c16f69b09d3f27a578b50cd/html5/thumbnails/54.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
54A saída desta função será: 0 1 2 3 ...
laço infinito