Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas de Controle Introdução a Programação Pitágoras • Seleção • Iteração • Desvio Roteiro Laboratório de Programação I - Glaudiney Mendonça 2 • Realizam seleção de código ▫ if-else ▫ switch • Lembrando Seleção Laboratório de Programação I - Glaudiney Mendonça 3 0 Falso 0 Verdadeiro Seleção if Laboratório de Programação I - Glaudiney Mendonça 4 if( expressao ) comando; else comando; expressao Que resulte em um valor escalar (número) Inteiro, caractere ou ponto flutuante (não recomendado por ser mais lento) comando Único comando, bloco ou nada if expressao verdadeira else expressao falsa else Opcional Exemplo #include <stdio.h> #include <stdlib.h> int main() { int magic, guess; magic = rand(); printf("Advinhe o número: "); scanf("%d",&guess); if (guess == magic) printf("Certo!"); else printf("Errado!"); } Seleção if Laboratório de Programação I - Glaudiney Mendonça 5 • Quando um if é objeto de outro if ou else ▫ O padrão C99 permite 15 níveis de aninhamento ▫ Na prática, os compiladores suportam mais • else sempre se refere ao if mais próximo ▫ Que está no mesmo bloco ▫ Que já não possua um if associado Seleção ifs Aninhados Laboratório de Programação I - Glaudiney Mendonça 6 Seleção ifs Aninhados Laboratório de Programação I - Glaudiney Mendonça 7 Exemplo if(i) { if(j) comando; if(k) comando; else comando; } else comando; Seleção if – Construção alternativa Laboratório de Programação I - Glaudiney Mendonça 8 expressao ? expressao: expressao ; expressao Deve ser simples Nunca outro comando de C Exemplo int x = 10; int y = x>9 ? 100 : 200; • O valor testado pelo if não se restringe a um valor booleano ▫ Basta que o valor analisado seja um número Seleção if Laboratório de Programação I - Glaudiney Mendonça 9 0 Falso 0 Verdadeiro Seleção if Laboratório de Programação I - Glaudiney Mendonça 10 Exemplo int main() { int a, b; printf("Digite 2 números: "); scanf("%d%d", &a, &b); if (b) printf("%d\n", a/b); else printf("Divisão por 0!"); } • Comando de seleção múltipla ▫ Testa o valor de uma expressão contra uma lista de constantes inteiras ou de caracteres ▫ Quando coincidem, os comandos associados à constante são executados Seleção switch Laboratório de Programação I - Glaudiney Mendonça 11 Seleção switch Laboratório de Programação I - Glaudiney Mendonça 12 switch( expressao ){ case constante1: comandos break; case constante2: comandos break; ... default: comandos } expressao Que resulte em um valor inteiro ou caractere constante Valores que serão comparados ao resultado de expressao default Opcional break Finaliza a execução de um case • Valor da expressão testado, na ordem, contra as constantes • Os comandos de um valor coincidente serão executados até ▫ Encontrar um break ou ▫ Fim do switch ( } ) • C99 permite até 257 cases ▫ Na prática é bom utilizar menos, para melhor eficiência Seleção switch Laboratório de Programação I - Glaudiney Mendonça 13 Seleção switch Laboratório de Programação I - Glaudiney Mendonça 14 Exemplo int a, b; char op; scanf("%d %c%d", &a, &op, &b) switch(op){ case '+': printf("Soma = %d", a+b); break; case '-': printf("Subtracao = %d", a-b); break; default: printf("Operacao Invalida"); } • Também chamados de laços • Realizam repetição de comandos enquanto ocorra uma certa condição ▫ for ▫ while ▫ do-while Iteração Laboratório de Programação I - Glaudiney Mendonça 15 Iteração for Laboratório de Programação I - Glaudiney Mendonça 16 for( inicializacao ; condicao ; incremento ) comando; inicializacao Geralmente é um comando de atribuição da variável de controle do laço condicao Expressão relacional que determina quando o laço acaba Enquanto for verdadeira, o laço não acaba Testada a cada iteração do laço incremento Define como a variável de controle varia cada vez que o laço é repetido comando Único comando, bloco ou nada Iteração for Laboratório de Programação I - Glaudiney Mendonça 17 Exemplo int main() { for(int x=1; x <= 100; x++) printf("%d ",x); } Iteração for Laboratório de Programação I - Glaudiney Mendonça 18 Exemplo int main() { for(int x=100; x != 65; x-=5) { int z = x*x; printf("Quadrado de %d = %d",x,z); } } Iteração for Laboratório de Programação I - Glaudiney Mendonça 19 Variações Mais de uma variável for(x=0,y=0 ; x+y<10 ; ++x,++y) Sem incremento for(x=0 ; x != 123 ; ) Sem inicialização for( ;x<10; ) Eterno for(;;) Iteração for Laboratório de Programação I - Glaudiney Mendonça 20 Exemplo int main() { char ch = '\0'; for(;;) { scanf("%c", &ch); if (ch == 'A') break; } } • Pode não possuir corpo Iteração for Laboratório de Programação I - Glaudiney Mendonça 21 Exemplos Percorrer estruturas for(int i=0 ; vetor[i] != 4 ; i++); Perder tempo for(int i=0 ; i<=40000 ; i++ ); Iteração while Laboratório de Programação I - Glaudiney Mendonça 22 while( condicao ) comando; condicao Expressão relacional que determina quando o laço acaba Enquanto for verdadeira, o laço não acaba Testada a cada iteração do laço comando Único comando, bloco ou nada Iteração while Laboratório de Programação I - Glaudiney Mendonça 23 Exemplo int main() { int x=1; while(x <= 100) { printf("%d ", x++); } } Iteração while Laboratório de Programação I - Glaudiney Mendonça 24 Exemplo int main() { float z; int x=100; while(x != 65) { z = x*x; printf("Quadrado de %d = %f",x, z); x-=5; } } Iteração while Laboratório de Programação I - Glaudiney Mendonça 25 Exemplo int main() { char ch = '\0'; while(1) { scanf("%c", &ch); if (ch == 'A') break; } } Iteração do-while Laboratório de Programação I - Glaudiney Mendonça 26 do{ comando; }while( condicao ); condicao Expressão relacional que determina quando o laço acaba Enquanto for verdadeira, o laço não acaba Testada no final de cada iteração do laço comando Único comando, bloco ou nada Executado pelo menos uma vez Iteração do-while Laboratório de Programação I - Glaudiney Mendonça 27 Exemplo int main() { int x=1; do { printf("%d ", x++); } while (x <= 100); } Iteração do-while Laboratório de Programação I - Glaudiney Mendonça 28 Exemplo int main() { float z; int x=100; do { z = x*x; printf("Quadrado de %d = %f",x, z); x-=5; } while (x != 65); } Iteração do-while Laboratório de Programação I - Glaudiney Mendonça 29 Exemplo int main() { char ch = '\0'; do { scanf("%c", &ch); if (ch == 'A') break; } while(1); } • Realiza desvio incondicional: ▫ return ▫ break ▫ continue Desvio Laboratório de Programação I - Glaudiney Mendonça 30 • Retornar de uma função • Se tiver um valor associado a ele, esse valor é o retorno da função • } é o mesmo que um return sem valor Desvio return Laboratório de Programação I - Glaudiney Mendonça 31 return expressao expressao Valor do tipo de retorno da função Opcional • Pode ser utilizado para finalizar ▫ Um case,ou ▫ Um laço qualquer, sem testar a condição • Afeta o laço, ou switch, mais interno • Para finaliza a aplicação como um todo Desvio break Laboratório deProgramação I - Glaudiney Mendonça 32 exit( codigo ); codigo É retornado ao SO 0 Saída normal • Obriga que ocorra a próxima iteração do laço, pulando qualquer código intermediário Desvio continue Laboratório de Programação I - Glaudiney Mendonça 33 Exemplo void contaEspacos(char* str) { for(int space=0; *str; str++) { if (*str != ' ') continue; space++; } }
Compartilhar