48
Aula 14: Estruturas de Selec¸˜ ao e Controle em C Fernanda Passos Universidade Federal Fluminense Programac¸˜ ao de Computadores IV Fernanda Passos (UFF) Estruturas de Sele¸ ao e Controle Programa¸ ao de Computadores IV 1 / 47

Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Aula 14: Estruturas de Selecao e Controle em C

Fernanda Passos

Universidade Federal Fluminense

Programacao de Computadores IV

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 1 / 47

Page 2: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Agenda

1 Revisao e Contexto

2 Estrutura de Selecao

3 Estruturas de Controle

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 2 / 47

Page 3: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Agenda

1 Revisao e Contexto

2 Estrutura de Selecao

3 Estruturas de Controle

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 3 / 47

Page 4: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Aula Anterior:

Forma de um programa em C:I E formado por um conjunto de funcoes incluindo a main.I Vimos seu conjunto de 32 palavras reservadas.

Expressoes em C:I como sao definidas variaveis e constantes,I operadores da linguagem C,I expressoes aritmeticas, logicas.

Comandos de entrada e saıda padrao:I leitura do teclado: scanfI escrita na tela: printf

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 4 / 47

Page 5: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Foco da Aula de Hoje

Estruturas de ControleSelecao,Repeticao definida,Repeticao indefinida com teste no inıcio,Repeticao indefinida com teste no fim,Comandos de desvio,Comandos de rotulo.

Objetivos:Conhecer a forma das estruturas.Entender o funcionamento de cada uma delas.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 5 / 47

Page 6: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Agenda

1 Revisao e Contexto

2 Estrutura de Selecao

3 Estruturas de Controle

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 6 / 47

Page 7: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Estrutura de Selecao

C suporta dois tipos de comandos de selecao:I ifI switch

Alem disso, o operador ? junto ao : e uma alternativa ao if em algumas circunstancia.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 7 / 47

Page 8: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de um ramo

Sintaxe do comando if:if(expressao) comando;

if e palavra reservada.expressao deve estar entre parenteses.comando pode ser um unico comando ou um bloco de comandos.I Um bloco sempre deve ser delimitado por { e }.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 8 / 47

Page 9: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de um ramo

Verifica expressão

Executa comandoou bloco

Executa comandosapós condição

verdadeira

falsa

Ser verdadeiro, agora, significa ser qualquer valor diferente de 0.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 9 / 47

Page 10: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de um ramo: Exemplo 1

Gerar um numero magico (aleatorio) e pedir para o usuario adivinhar esse numero. Escrever“Acertou!” se ele acertar.I Para gerar um numero aleatorio, usar a funcao rand() definida em stdlib.h.

#include <stdio.h>#include <stdlib.h>

int main(int argc, char ** argv){int palpite, magico;

magico = rand() % 10 + 1; /* Numero de 1 a 10 */printf("Advinhe o numero magico:\n");scanf(" %d", &palpite);if(palpite == magico){

printf("Acertou!\n");}return(0);

}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 10 / 47

Page 11: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de dois ramos

Sintaxe do comando if-else:if(expressao) comando;else comando;

if e else sao palavras reservadas.expressao deve estar entre parenteses.comando pode ser um unico comando ou um bloco de comandos.I Um bloco sempre deve ser delimitado por { e }.

O primeiro comando (corpo do if) e executado se a expressao e verdadeira.Caso contrario, executa-se o segundo comando (corpo do else).

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 11 / 47

Page 12: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de dois ramos

Verifica expressão

Executa passosapós o if-else

verdadeira falsa

Executa comandono corpo do else

Executa comandono corpo do if

Ser verdadeiro, agora, significa ser qualquer valor diferente de 0.Ser falso indica ser igual a 0.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 12 / 47

Page 13: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de dois ramos: Exemplo 2

Gerar um numero magico (aleatorio) e pedir para o usuario adivinhar esse numero. Escrever“Acertou!” se ele acertar e “Errou!”, caso contrario.

#include <stdio.h>#include <stdlib.h>

int main(int argc, char ** argv){int palpite, magico;

magico = rand() % 10 + 1; /* Numero de 1 a 10 */printf("Advinhe o numero magico:\n");scanf(" %d", &palpite);if(palpite == magico)

printf("Acertou!\n");else

printf("Errou!\n");return(0);

}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 13 / 47

Page 14: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

ifs aninhados

Podemos ter ifs aninhados.I if dentro de outro ou if dentro de else.

Exemplo de trecho:if(i == 0){

if(j == 0) comando1;if(k == 0) comando2;else comando3; /* else associado ao if(k == 0) */

}else comando4; /* else associado ao if(i == 0) */

Em C, um comando else sempre se refere ao comando if mais proximo acima, dentro domesmo bloco.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 14 / 47

Page 15: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando if de dois ramos: Exemplo 3Gerar um numero magico (aleatorio) e pedir para o usuario adivinhar esse numero. Escrever“Acertou!” se ele acertar e “Errou!”, caso contrario. Dar dica se numero for maior oumenor.

#include <stdio.h>#include <stdlib.h>

int main(int argc, char ** argv){int palpite, magico;

magico = rand() % 10 + 1; /* Numero de 1 a 10 */printf("Advinhe o numero magico:\n");scanf(" %d", &palpite);if(palpite == magico)

printf("Acertou!\n");else{

printf("Errou!\n");if(palpite < magico)

printf("Numero magico eh maior!\n");else

printf("Numero magico eh menor!\n");}return(0);

}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 15 / 47

Page 16: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

A escada if-else-ifE muito comum aninhar if’s dentro de else’s.

if(expressao1){bloco1;

}else

if(expressao2){bloco2;

}else

if(expressao3){bloco3;

}else

if(expressao4){bloco4;

}else{

bloco5;}

Uma forma melhor para escreve-los e:

if(expressao1){bloco1;

}else if(expressao2){

bloco2;}else if(expressao3){

bloco3;}else if(expressao4){

bloco4;}else{

bloco5;}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 16 / 47

Page 17: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

A escada if-else-ifE muito comum aninhar if’s dentro de else’s.

if(expressao1){bloco1;

}else

if(expressao2){bloco2;

}else

if(expressao3){bloco3;

}else

if(expressao4){bloco4;

}else{

bloco5;}

Uma forma melhor para escreve-los e:

if(expressao1){bloco1;

}else if(expressao2){

bloco2;}else if(expressao3){

bloco3;}else if(expressao4){

bloco4;}else{

bloco5;}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 16 / 47

Page 18: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

ifs aninhados: Exemplo 4Ler um numero real e indicar se ele esta no intervalo 1 (menor ou igual a 25), intervalo 2(entre 25 e 50 (inclusive)), intervalo 3 (entre 50 e 75 (inclusive)) ou intervalo 4 (maior que75).

#include <stdio.h>

int main(int argc, char ** argv){float num;

printf("Digite um numero:\n");scanf(" %f", &num);

if(num <= 25)printf("%.2f esta no intervalo 1\n", num);

else if(num <= 50)printf("%.2f esta no intervalo 2\n", num);

else if(num <= 75)printf("%.2f esta no intervalo 3\n", num);

elseprintf("%.2f esta no intervalo 4\n", num);

return(0);}

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 17 / 47

Page 19: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Selecao Multipla: Switch

Em C, existe um comando para selecao multipla, o switch.Ele permite, dada uma variavel, selecionar o trecho de codigo a ser executado de acordocom um valor especıfico.I O valor deve ser uma constante.

Alem da palavra reservada switch, outras 3 sao usadas nesta estrutura:I case: especifica a constante.I break: comando de desvio que termina o switch.I default: caso padrao.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 18 / 47

Page 20: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Selecao Multipla: Switch (II)

Forma geral do switch:switch(expressao){

case constante1 :sequencia de comandosbreak;

case constante2 :sequencia de comandosbreak;

...default:

sequencia de comandos}

O valor da expressao e testado contra cadaconstante na ordem.I Primeiro testa a constante1, depois a

constante2 . . .Se nao for igual a nenhum, executa-se oscomandos do default.O break e usado para parar a verificacao.I Se o valor da expressao casar com a

constanteX, sera executado a sequenciade comandos para ele e havera um break.

I Se ele nao for colocado no fim de cadacase, o switch ira testar o proximo.F Neste caso, podera executar sequencias

de comandos de outros case’s.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 19 / 47

Page 21: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Switch: Exemplo 5Ler dois numeros, ler uma opcao para realizar as operacoes de soma, subtracao,multiplicacao e divisao e imprimir o resultado.

1 #include <stdio.h>2

3 int main(int argc, char ** argv){4

5 char opcao;6 float a, b;7

8 printf("Digite os dois operandos:\n");9 scanf("%f %f", &a, &b);

10 printf("\nDigite a operacao:\n");11 printf("\t(+) para adicionar\n");12 printf("\t(-) para subtrair\n");13 printf("\t(*) para multiplicar\n");14 printf("\t(/) para dividir\n");15 scanf(" %c", &opcao); /* Usa-se um espaco antes para ler16 um caractere apos outra leitura.*/

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 20 / 47

Page 22: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Switch: Exemplo 5 (cont.)17 switch(opcao){18 case ’+’:19 printf("%.2f + %.2f = %.2f\n", a, b, a+b);20 break;21 case ’-’:22 printf("%.2f - %.2f = %.2f\n", a, b, a-b);23 break;24 case ’*’:25 printf("%.2f * %.2f = %.2f\n", a, b, a*b);26 break;27 case ’/’:28 if(b != 0){29 printf("%.2f / %.2f = %.2f\n", a, b, a/b);30 }31 break;32 default:33 printf("saindo...\n");34 } /* fim switch */35 return(0);36 } /* fim main */Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 21 / 47

Page 23: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Switch: Exemplo 5 (cont.)

Para entrada:I 3 4I *

A saıda e:

Digite os dois operandos:3 4

Digite a operacao:(+) para adicionar(-) para subtrair(*) para multiplicar(/) para dividir

*3.00 * 4.00 = 12.00

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 22 / 47

Page 24: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Agenda

1 Revisao e Contexto

2 Estrutura de Selecao

3 Estruturas de Controle

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 23 / 47

Page 25: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Repeticao Definida: Comando for

Sintaxe do comando for:for(inicializacao; condicao; incremento) comando;

for e uma palavra reservada.inicializacao: comando de inicializacao.condicao: indica quando o laco termina.incremento: comando de incremento (ou decremento).comando: pode ser um unico comando ou um bloco de comandos.I Um bloco sempre deve ser delimitado por { e }.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 24 / 47

Page 26: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando for

Etapa 1: executa o comando de inicializacao.I Geralmente uma atribuicao.

Etapa 2: realiza a verificacao da condicao.I Etapa 2.1: Se for igual a zero (falsa), termina.I Etapa 2.2: Caso contrario, executa comando ou

bloco de comandos.I Etapa 2.3: Executa o comando de incremento ou

decremento.I Volta a Etapa 2.

falsa

verdadeira

inicialização

Verifica condição

Executa comandoou bloco

realiza incremento

Executa comandosapós for

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 25 / 47

Page 27: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando for: Exemplo 6

Faca um programa em C que leia 15 vezes numeros inteiros e calcule o somatorio dosvalores lidos.

1 #include <stdio.h>2

3 int main(int argc, char ** argv){4 int i, num, soma;5

6 soma = 0;7 for(i=0; i<15; ++i){8 scanf("%d", &num);9 soma = soma + num;

10 }11 printf("Somatorio: %d\n", soma);12

13 return(0);14 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 26 / 47

Page 28: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando for: Exemplo 7

Faca um programa em C que leia um numero inteiro e calcule seu fatorial.1 #include <stdio.h>2

3 int main(int argc, char ** argv){4 unsigned int i, num, fat;5

6 printf("***** Calculo de Fatorial *****\n");7 printf("Digite um numero inteiro positivo: ");8 scanf("%d", &num);9 fat = 1;

10 for(i=2; i<=num; i++){11 fat = fat * i;12 }13 printf("%d! = %d\n", num, fat);14

15 return(0);16 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 27 / 47

Page 29: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Repeticao Indefinida: Comando while

Sintaxe do comando while:while(condicao) comando;

while e uma palavra reservada.condicao: indica quando o laco termina.comando: pode ser um unico comando ou um bloco de comandos.I Um bloco sempre deve ser delimitado por { e }.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 28 / 47

Page 30: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while

verdadeira

falsa Verifica a condição

Executa comandoou bloco

Executa comandoapós while

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 29 / 47

Page 31: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Exemplo 8Imprimir uma sequencia de numeros, comecando de x (inteiro) e incrementando de 10,menores que 100.I Isto e, temos que imprimir um numero x e incrementa-lo de 10 enquanto ele for menor que 100.

1 #include <stdio.h>2

3 int main(int argc, char ** argv){4 int x;5

6 printf("Digite o numero inicial: ");7 scanf("%d", &x);8 while(x < 100){9 printf("%d ", x);

10 x = x + 10;11 }12 printf("\n");13 return(0);14 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 30 / 47

Page 32: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Exemplo 9Imprimir uma sequencia de numeros positivos e nao nulos que sejam potencia de 2 emenores ou iguais a um dado n.I Por exemplo, para n = 11, imprimir: 2, 4 e 8.

1 #include <stdio.h>2

3 int main(int argc, char ** argv){4 int x, n;5

6 printf("Digite o n: ");7 scanf("%d", &n);8 x = 1;9 while(x <= n){

10 printf("%d ", x);11 x = x * 2;12 }13 printf("\n");14

15 return(0);16 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 31 / 47

Page 33: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Implementacao

Etapas para implementacao do trecho de um while:1 criar ao menos uma variavel de controle;2 inicializar a(s) variavel(eis) que controla(m) o loop antes de inicia-lo;3 escrever a condicao de parada da repeticao de acordo com ao menos uma das variaveis de

controle;4 modificar a(s) variavel(eis) que controla(m) o loop dentro dele.

Deste modo, evita-se loop infinito.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 32 / 47

Page 34: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Implementacao (II)

Veja para o Exemplo 8:

#include <stdio.h>

int main(int argc, char ** argv){ int x;

scanf("%d", &x); while (x < 100){ printf("%d ", x); x = x + 10; } printf("\n"); return(0);}

Inicialização da variável de controle x.

Verificação usando avariável de controle.

Modificação da variávelde controle dentro do loop.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 33 / 47

Page 35: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Implementacao (III)Veja para o Exemplo 9:

#include <stdio.h>

int main(int argc, char ** argv){ int x, n;

printf("Digite o n: "); scanf("%d", &n); x = 1; while(x <= n){ printf("%d ", x); x = x * 2; } printf("\n"); return(0);}

Inicialização da variável de controle x.

Verificação usando avariável de controle.

Modificação da variávelde controle dentro do loop.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 34 / 47

Page 36: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando while: Exemplo 10Escreva um programa em C que calcule a media dos numeros digitados pelo usuario.I O programa deve pedir para o usuario digitar os numeros ate que ele digite 9999.

1 #include <stdio.h>23 int main(int argc, char ** argv){4 int n, soma, contador;56 printf("Digite um numero: ");7 scanf("%d", &n);8 soma = 0;9 contador = 0;

10 while(n != 9999){11 soma = soma + n;12 contador++;13 printf("Digite um numero: ");14 scanf("%d", &n);15 }16 if(contador > 0)17 printf("A media dos numeros e’: %.2f\n", soma/contador);18 else19 printf("Nenhum numero digitado!\n");2021 return(0);22 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 35 / 47

Page 37: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Repeticao Indefinida: Comando do-while

Sintaxe do comando do-while:do{

comando;}while(condicao);

while e do sao palavras reservadas.condicao: indica quando o laco termina.comando: pode ser um unico comando ou um bloco de comandos.I Um bloco sempre deve ser delimitado por { e }.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 36 / 47

Page 38: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Repeticao Indefinida: Comando do-while

E o nosso comando faca-enquanto.Diferentemente do for e do while, eleverifica a condicao ao final do laco.Novamente, verdadeiro significa qualquervalor diferente de 0. verdadeira

falsa

Verifica a condição

Executa comandoou bloco

Executa comandosapós o do-while

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 37 / 47

Page 39: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando do-while: Exemplo 11Ler numeros do teclado ate que o usuario digite um numero inteiro positivo menor que 100.I Objetivo de obrigar o usuario a digitar um numero no intervalo esperado.

1 #include <stdio.h>2

3 int main(int argc, char ** argv){4 int num;5

6 do{7 printf("Digite um numero positivo menor que 100: ");8 scanf("%d", &num);9 }while(num<0 || num>=100);

10 //}while(!(num>=0 && num<100));11

12 return(0);13 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 38 / 47

Page 40: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando do-while: Exemplo 12Uso de menus:I Pedir que o usuario digite uma opcao valida do menu.

1 #include <stdio.h>2 #include <math.h> /* Por causa do sqrt) */3

4 int main(int argc, char ** argv){5 double num;6 short int opcao;7

8 do{9 system("clear");

10 printf("Menu: ");11 printf("\t(1) Raiz Quadrada\n");12 printf("\t(2) Potencia de 2\n");13 printf("\t(0) Sair\n");14 scanf("%hd", &opcao);15 switch(opcao){16 case 1:17 printf("Digite um numero: ");

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 39 / 47

Page 41: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando do-while: Exemplo 12 (cont.)18 scanf("%lf", &num);19 printf("Raiz quadrada de %.2f = %.2f\n", num, sqrt(num));20 break;21 case 2:22 printf("Digite um numero: ");23 scanf("%lf", &num);24 printf("Potencia de 2 de %.2f = %.2f\n", num, num*num);25 break;26 case 0:27 printf("saindo...\n");28 break;29 default:30 printf("Opcao invalida\n");31 break;32 }33 getchar(); // Dois getchar para esperar digitar algo...34 getchar();35 }while(opcao != 0);36 return(0);37 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 40 / 47

Page 42: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comando do-while: Exemplo 12

Ainda sobre o exemplo do menu:I Compilar este programa usando:

gcc ex12.c -o ex12 -lm

F Porque usa a funcao sqrt da biblioteca math.h.

I O comando system chama uma funcao do sistema: no caso, clear para limpar a tela.F Funcao pertencente a biblioteca stdio.h.

I Dois getchar sao chamados para consumir caractere e esperar para imprimir menu novamente.F Funcao pertencente a biblioteca stdio.h.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 41 / 47

Page 43: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comandos de Desvio Incondicionais

Vimos, ate aqui, comandos de desvio condicional:I if, for, while, do-while.I Vamos (possivelmente) para uma linha diferente da proxima atraves de uma condicao.

F Se condicao nao e satisfeita, pulamos para um linha de codigo diferente da proxima.

Em C, existem comandos de desvio incondicional: saltamos arbitrariamente para umalinha (possivelmente) diferente da proxima.Sao elas:I return,I goto,I break,I continue.

Todas sao palavras reservadas.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 42 / 47

Page 44: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comandos de Desvio Incondicionais: return

O return, ja vimos para a funcao main:I faz uma funcao retornar um valor.

Outra coisa que ele faz e retornar para a linha de codigo ao qual foi chamado.

Sintaxe do comando return:return expressao;

Uma expressao pode ser uma constante, uma variavel, uma expressao aritmetica ou logica,uma funcao ou uma mistura destes.O return pode ser colocado em qualquer lugar dentro do bloco da funcao.I Mas lembre-se, ele ira retornar para a funcao que o chamou a partir de onde estiver.I O que vier depois sera ignorado.

Veremos mais detalhes quando falarmos de funcao em C.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 43 / 47

Page 45: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comandos de Desvio Incondicionais: goto

Realiza um desvio para um rotulo (label).Um rotulo e um identificador valido em C seguido por dois pontos (:).I E o ponto para onde desejamos saltar.

Sintaxe do comando return:goto rotulo;...rotulo:

Nao e recomendado o seu uso.Desestrutura o codigo.

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 44 / 47

Page 46: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comandos de Desvio Incondicionais: breakJa vimos o break no switch.I Ele indica a saıda imediata do bloco switch.

Mas ele tambem serve para terminar imediatamente um laco, sem o teste condicional.I Quando o break e encontrado dentro de um laco, ocorre um salto para o final do laco, sem

testar a condicao.Exemplo:

1 #include <stdio.h>2 int main(int argc, char ** argv){3 int t;4

5 for(t=0; t<100; t++){6 printf(" %d ", t);7 if(t == 10) break;8 }9 printf("Termina com t = %d\n", t);

10 return(0);11 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 45 / 47

Page 47: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Comandos de Desvio Incondicionais: continueO continue e parecido com o break, mas ao inves de terminar, ele forca a proximaiteracao.I Para o for, o continue pula para o teste condicional e incrementa (ou decrementa) o laco.I Para o while ou do-while, ele pula para o teste condicional.

Exemplo (contar numeros 0 lidos):

1 #include <stdio.h>2 int main(int argc, char ** argv){3 int num, t, cont;4

5 cont = 0;6 for(t=0; t<10; t++){7 scanf(" %d", &num);8 if(num != 0) continue;9 cont++; // esse comando nao eh executado se num difere de 0.

10 }11 printf("Foram lidos %d numeros 0\n", cont);12 return(0);13 }

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 46 / 47

Page 48: Aula 14: Estruturas de Seleção e Controle em Cfernanda/2016-1/progIV/aulas/aula14.pdf · Aula Anterior: Forma de um programa em C: I E formado por um conjunto de func¸´ ˜oes

Material de Estudo

Leitura do capıtulo 3 do livro ”C Completo e Total”.Lista 9 (a ser disponibilizada no site).

Fernanda Passos (UFF) Estruturas de Selecao e Controle Programacao de Computadores IV 47 / 47