Agenda
■Estruturas de Controle
• Estruturas de Decisão if-else switch comando ternário • Estruturas de Repetição for while do-while • Comandos de Desvio break continue returnLaboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
if - else
• Utilizado quando for necessário escolher entre dois caminhos. • Sintaxe: if (expressão) { bloco_de_comandos1; } else { bloco_de_comandos2; }
• Comando if: expressão verdadeira (≠ 0). • Comando else: expressão falsa (= 0).
Estruturas de Decisão
■
if - else
• Decisão de um bloco (if . . .) Sintaxe
if (expressão) {
bloco_de_comandos1; }
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
if - else
• Decisão de um bloco (if . . .) Fluxograma
Estruturas de Decisão
■
if - else
• Decisão de dois blocos (if . . . else) Sintaxe if (expressão) { bloco_de_comandos1; } else { bloco_de_comandos2; }
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
if - else
• Decisão de dois blocos (if . . . else) Fluxograma
■
if - else
• Decisão de múltiplos blocos (if . . . else if . . .) Sintaxe if (expressão) { bloco_de_comandos1; . . . } else if (expressão N) { bloco_de_comandosN; } else { bloco_de_comandosP; }
Estruturas de Decisão
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
if - else
• Decisão de múltiplos blocos (if . . . else if . . .) Fluxograma
Estruturas de Decisão
■
if - else
Exemploif ((num1 >= num2) && (num1 >= num3)){ printf("Maior numero: %d", num1);
}else {
if (num2 >= num3){
printf("Maior numero: %d", num2); }else {
printf("Maior numero: %d", num3); }
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
switch
• Utilizado para facilitar a escrita de trechos de
programas em que a seleção deve ser feita entre várias alternativas.
Estruturas de Decisão
■switch
• Sintaxe: switch (expressão) { case const1: bloco_de_comandos1; break; case const2: bloco_de_comandos2; break; . . . default: bloco_de_comandosP; }Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
switch
Estruturas de Decisão
■
switch
• Passos da execução do comando switch: 1. A expressão é avaliada;
2. O resultado da expressão é comparado com os valores das constantes que aparecem nos case; 3. Caso o resultado seja igual a uma das
constantes, a execução se inicia a partir do
comando associado a ela e continua até o fim do comando switch, ou até encontrar um break;
4. Caso contrário, os comandos associados ao comando default são executados. Se o default não aparecer, nenhum comando será executado.
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
switch
• Observações importantes:
O resultado da expressão deve ser um tipo enumerável: int ou char.
Caso não apareça um comando de desvio, todas as instruções seguintes ao teste case que teve sucesso serão executadas, mesmo as
relacionadas com outros testes case.
O comando switch só pode testar igualdade.
Não podem aparecer duas constantes iguais em um case.
Estruturas de Decisão
■
switch
Exemploswitch (oper) {
case '+':
printf ("%f + %f = %f", num1, num2, num1+num2);
break;
case '-':
printf ("%f - %f = %f", num1, num2, num1-num2);
break;
case '*':
printf ("%f * %f = %f", num1, num2, num1*num2);
break;
default:
printf ("Operacao invalida !"); }
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
Comando ternário
• Necessita de três operadores para ser avaliado. • Sintaxe:
expressão1 ? expressão2 : expressão3; • A execução desse comando ocorre da seguinte
forma:
A expressão1 é avaliada.
Caso seja verdadeira (≠ 0), o resultado do
comando será igual ao resultado da expressão2. Caso contrário (= 0), o resultado do comando
Estruturas de Decisão
■
Comando ternário
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Decisão
■
Comando ternário
Exemplo
Estruturas de Repetição
■
for
• Permite que trechos de programa sejam repetidos um certo número de vezes controlado pelo
programa. • Sintaxe:
for (expressão1; expressão2; expressão3) bloco_de_comandos;
• Expressão1: inicialização da variável de controle. • Expressão2: teste que controla o fim do laço ou
repetição.
• Expressão3: incremento ou decremento da variável de controle.
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Repetição
■
for
• Funcionamento:
Passo1: Uma variável de controle, geralmente um contador, recebe um valor inicial.
Passo2: O trecho de programa que pertence ao laço é executado.
Passo3: A variável de controle é incrementada ou decrementada.
Passo4: O valor da variável de controle é comparada com o valor final que ela deve
alcançar. Caso a condição de término tenha sido atingida (expressão2 = 0), o laço é interrompido. Caso contrário (expressão2 ≠ 0), volta ao passo2.
Estruturas de Repetição
■
for
Exemplo
fatorial = 1;
for (i = numero; i > 1; i--) { fatorial = fatorial * i;
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Repetição
■
for
• Variações:
Com mais de uma variável:
for (x = 0, y = 0; x + y < 10; x++, y++) Sem uma expressão:
for (i = 0; i != -1; ) for ( ; i < 100; i++) Laço Infinito:
for ( ; ; )
Obs: No laço infinito, o programa pára quando o comando break é executado.
Estruturas de Repetição
■
while
• Permite que trechos de programa sejam repetidos um certo número de vezes controlado pelo
programa. • Sintaxe:
while (expressão)
bloco_de_comandos; • Funcionamento:
Passo1: A expressão é avalidada.
Passo2: Caso o resultado seja verdadeiro (≠ 0), o bloco de comandos é executado e volta ao passo 1. Caso contrário (= 0), o laço é terminado.
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Repetição
■while
Exemplo fatorial = 1; i = numero; while (i > 1) { fatorial = fatorial * i; i--; }Estruturas de Repetição
■
do-while
• Permite que trechos de programa sejam repetidos um certo número de vezes controlado pelo
programa, porém, neste caso, o bloco de comandos é executado pelo menos uma vez, já que a
expressão de teste fica após a execução dos comandos.
• Sintaxe: do
bloco_de_comandos; while (expressão);
Laboratório de Programação I Prof. Frederico Viana
Estruturas de Repetição
■
do-while
• Funcionamento:
Passo1: Executa o bloco de comandos. Passo2: Avalia a expressão.
Passo3: Caso o resultado da expressão seja
verdadeiro (≠ 0), volta ao passo 1. Caso contrário (= 0), interrompe o do-while.
Estruturas de Repetição
■
do-while
Exemplo i = 1;
do {
printf (“Numero %d\n”, i); i++;
Laboratório de Programação I Prof. Frederico Viana
Comandos de Desvio
■
break
• Pode ser usado tanto para terminar um teste case dentro de um comando switch quanto interromper a execução de um laço.
• Quando o comando é utilizado dentro de um
comando for, por exemplo, o laço é imediatamente interrompido e o programa continua a execução no comando seguinte ao comando for.
Comandos de Desvio
■break
Exemplo i = 1; for (i = 0; i < 100; i++) { scanf (“%d”, &num); if (num < 0) break; vetor[i] = num; }Laboratório de Programação I Prof. Frederico Viana
Comandos de Desvio
■
continue
• O comando continue é parecido com o comando break. A diferença é que o comando continue
simplesmente interrompe a execução da iteração corrente passando para a próxima iteração do laço, se houver uma.
Comandos de Desvio
■continue
Exemplo i = 1; for (i = 0; i < 100; i++) { scanf (“%d”, &num); if (num < 0) continue; vetor[i] = num; }Laboratório de Programação I Prof. Frederico Viana
Comandos de Desvio
■
return
• Usado para interromper a execução de uma função e retornar um valor ao programa que chamou esta
função.
• Caso haja algum valor associado ao comando return este é devolvido para a função, caso contrário um valor qualquer é retornado.
• Uma função declarada como do tipo void não pode ter um comando return.
• Sintaxe:
return expressão;