Já tem cadastro?
Você viu 1 do total de 9 páginas deste material
Prévia do material em texto
20/08/2011 1 Comandos Condicionais e de Repetição Prof. André Backes Fluxogramas � Condição ou Decisão � Representado por losangos � Normalmente contém uma pergunta do tipo Sim/Não ou um teste de Verdadeiro/Falso. � Mudança no fluxo A > B? Sim Não Comando if � Em linguagem C, o comando if é utilizado quando for necessário escolher entre dois caminhos, ou quando se deseja executar um comando sujeito ao resultado de um teste. Comando if � A forma geral de um comando if é: if (condição) { seqüência de comandos; } � A expressão, na condição, será avaliada: � Se ela for zero (falsa), a declaração não será executada; � Se a condição for diferente de zero (verdadeira) a declaração será executada. Exemplo if #include <stdio.h> #include <stdlib.h> int main (){ int num; printf ("Digite um numero: "); scanf ("%d",&num); if(num > 10) printf ("\n\n O numero e maior que 10"); system(“pause”); return 0; } Exemplo if int num; printf ("Digite um numero: "); scanf ("%d",&num); if(num > 10) printf ("\n\n O numero e maior que 10"); system(“pause”); return 0; Início Fim SIM NÃO 20/08/2011 2 Condição do if � A condição pode ser uma expressão usando operadores matemáticos, lógicos e relacionais � +,-, *, /, % � &&, || � >, <, >=, <=, ==, != � Ex: � (!(5==6)&&(5!=6)&&((2>1)||(5<=4))) Condição do if � Tabela verdade Comando if � Usa-se chaves {} para delimitar o bloco de instruções que pertence ao if if(num > 10){ printf ("\n\n O numero e maior que 10"); } � As chaves podem ser ignoradas se a instrução for única. if(num > 10) printf ("\n\n O numero e maior que 10"); Comando else � O comando else pode ser entendido como sendo um complemento do comando if. � Se o if diz o que fazer quando a condição é verdadeiro, o else tratá da condição falsa. A > B? if else Comando else � O comando if-else tem a seguinte forma geral: if(condição) { seqüência de comandos 1; } else{ seqüência de comandos 2; } Comando else � A expressão da condição será avaliada: � Se ela for diferente de zero (verdadeiro), a seqüência de comandos 1 será executada. � Se for zero (falso) a seqüência de comandos 2 será executada. � Note que quando usamos a estrutura if- else, uma das duas declarações será executada. 20/08/2011 3 Exemplo if-else #include <stdio.h> #include <stdlib.h> int main ( ) { int num; printf ("Digite um numero: "); scanf ("%d", &num); if(num == 10){ printf ("O numero e igual a 10.\n"); } else{ printf ("O numero e diferente de 10.\n"); } system(“pause”); return 0; } Exemplo if-else printf ("Digite um numero: "); scanf ("%d", &num); if(num == 10){ printf ("O numero e igual a 10.\n"); } else{ printf ("O numero e diferente de 10.\n"); } system(“pause”); SIMNÃO Comando if-else � Como no caso do comando if, as chaves podem ser ignoradas se a instrução contida no else for única. else printf ("O numero e diferente de 10.\n"); Aninhamento de if � O if aninhado é simplesmente um if dentro da declaração de um outro if externo. � A estrutura if-else-if é apenas uma extensão da estrutura if-else. � O único cuidado que devemos ter é o de saber exatamente a qual if um determinado else está ligado. Aninhamento de if if(condição 1) { seqüência de comandos 1; } else if(condição 2) { seqüência de comandos 2; } . . . else if(condição_n) { seqüência de comandos n; } else{ seqüência de comandos default; } Exemplo aninhamento #include <stdio.h> #include <stdlib.h> int main (){ int num; printf ("Digite um numero: "); scanf ("%d", &num); if (num == 10){ printf ("O numero e igual a 10.\n"); } else{ if (num > 10) printf ("O numero e maior que 10."); else printf ("O numero e menor que 10."); } system(“pause”); return 0; } 20/08/2011 4 Exemplo aninhamento scanf ("%d", &num); if (num == 10){ printf ("O numero e igual a 10.\n"); } else{ if (num > 10) printf ("O numero e maior que 10."); else printf ("O numero e menor que 10.");} system(“pause”); SIM NÃO SIM NÃO Aninhamento de if � Observe sempre a correspondência entre if’s e else’s if (cond1) if (cond2) comando if2; else comando if1; if (cond1) { if (cond2) comando if2; } else comando if1; Errado Correto Expressão Condicional � Quando o compilador avalia uma condição, ele quer um valor de retorno para poder tomar a decisão. � Esta expressão não necessita ser uma expressão no sentido convencional. � Uma variável sozinha pode ser uma "expressão" e esta retornar o seu próprio valor. Expressão Condicional � Isto quer dizer que teremos as seguintes expressões: � int num; � if (num!=0) � if (num==0) � equivalem a � int num; � if (num) � if (!num) O Operador ? � Também conhecido como operador ternário � A expressão condicional “? :” é uma simplificação do if-else utilizada tipicamente para atribuições condicionais O Operador ? � Uma expressão como if (a > 0) b = -150; else b = 150; � pode ser simplificada usando-se o operador ? da seguinte maneira: b = a > 0 ? -150 : 150; 20/08/2011 5 O comando switch � O comando switch é próprio para se testar uma variável em relação a diversos valores pré-estabelecidos. � Parecido com if-else-if, porém não aceitas expressões, apenas constantes. � O switch testa a variável e executa a declaração cujo “case” corresponda ao valor atual da variável. O comando switch switch (var) { case valor 1: comandos 1; break; case valor k: comandos k; break; default: comandos default; break; } O comando switch � O comando switch � Avalia o valor de var com os valores associados às cláusulas case em seqüência; � Quando o valor associado a uma cláusula é igual ao valor do switch os respectivos comandos são executados até encontrar um break. � A declaração default é opcional e será executada apenas se a variável que está sendo testada não for igual a nenhuma das constantes. O comando switch switch( char_in ) { case '.': printf(“Ponto.\n" ); break; case ',': printf( ”Virgula.\n" ); break; case ’:': printf( ”Dois pontos.\n" ); break; case ’;': printf( ”Ponto e virgula.\n"); break; default : printf( ”Nao eh pontuacao.\n" ); } O comando switch � O comando break � Faz com que o switch seja interrompido assim que uma das seqüência de comandos seja executada. � Não é essencial. Se após a execução da declaração não houver um break, o programa continuará executando. � Isto pode ser útil em algumas situações, mas tenha cuidado. O comando switch switch( num ) { case ’0’: printf(“0"); /* 0123456789 */ case ‘1’: printf(“1"); /* 123456789 */ case ’2’: printf(“2"); /* 23456789 */ case ’3’: printf(“3"); /* 3456789 */ case ‘4’: printf(“4"); /* 456789 */ case ‘5’: printf(“5"); /* 56789 */ case ’6’: printf(“6"); /* 6789 */ case ’7’: printf(“7"); /* 789 */ case ‘8’: printf(“8"); /* 89 */ case ‘9’: printf(“9"); /* 9 */ break; } 20/08/2011 6 Repetição por Condição � Relembrando em fluxogramas � Um processo pode ser repetido até atender ou não uma condição. Fim Leia A e B Some +1 em A A < B? Sim Não Imprima A Comando while � Repete uma seqüência de comandos enquanto sua condição for verdadeira. � Esse comando possui a seguinte forma geral: while (condição) { seqüência de comandos; } Exemplo while int a,b; scanf("%d",&a); scanf("%d",&b); while (a < b){ a = a + 1; printf("%d \n",a); } Exemplo while scanf("%d",&a); scanf("%d",&b); while (a < b){ a = a + 1; printf("%d \n",a); } Continuação do programa SIM NÃO Comando for � O loop ou laço for é usado para repetir um comando, ou bloco de comandos, diversas vezes � Maior controle sobre o loop. � Sua forma geral é for (inicialização; condição; incremento) { Seqüência de comandos; } Comando for 1. inicialização: iniciar variáveis (contador). 2. condição: avalia a condição. Se verdadeiro, executa comandos do bloco, senão encerra laço. 3. incremento: ao término do bloco de comandos, incrementa o valor do contador 4. repete o processo até que a condição seja falsa. 20/08/2011 7 Comando for � Comando while:repete uma seqüência de comandos enquanto uma condição for verdadeira. � Comando for: repete uma seqüência de comandos “N vezes”. Exemplo for int a,b,c; scanf("%d",&a); scanf("%d",&b); for (c = a; c <= b; c++){ printf("%d \n",c); } Exemplo for int a,b,c; scanf("%d",&a); scanf("%d",&b); for (c = a; c <= b; c++){ printf("%d \n",c);} Continuação do programa SIM NÃO Comando for � Podemos omitir qualquer de seus elementos � inicialização, condição ou incremento. � Ex.: int a,b; scanf("%d",&a); scanf("%d",&b); for (; a <= b; a++){ printf("%d \n",a); } Comando for � Cuidado: ao omitir a condição, criamos um laço infinito. � não existindo a condição, ela será considerada sempre verdadeira. for (inicialização; ;incremento) { seqüência de comandos; } Comando for � Loop sem conteúdo: uma das aplicações desta estrutura é gerar tempos de espera. � for (inicialização;condição;incremento); � Ex.: � for (i=0; i < 10000000; i++); � /* Espera 10.000.000 de iterações antes de ir para o próximo comando */ 20/08/2011 8 Comando do-while � Comando while: é utilizado para repetir um conjunto de comandos zero ou mais vezes. � Comando do-while: é utilizado sempre que o bloco de comandos deve ser executado ao menos uma vez. Comando do-while � executa comandos � avalia condição: � se verdadeiro, reexecuta comandos do bloco � senão encerra laço � Sua forma geral é do { comandos; } while (condição); Comando do-while int i; do { printf ("Escolha uma opção:\n"); printf ("(1) Opção 1\n"); printf ("(2) Opção 2\n"); printf ("(3) Opção 3\n"); scanf("%d", &i); } while ((i < 1) || (i > 3)); printf ("Você escolheu a Opção %d.\n“,i); Comando do-while do { printf ("Escolha uma opção:\n"); printf ("(1) Opção 1\n"); printf ("(2) Opção 2\n"); printf ("(3) Opção 3\n"); scanf("%d", &i); } while ((i < 1) || (i > 3)); printf ("Você escolheu a Opção %d.\n“,i); SIM NÃO Comando do-while int i; do { printf ("Escolha uma opção:\n"); printf ("(1) Opção 1\n"); printf ("(2) Opção 2\n"); printf ("(3) Opção 3\n"); scanf("%d", &i); } while ((i < 1) || (i > 3)); printf ("Você escolheu a Opção %d.\n“,i); Comando break � Nós já vimos dois usos para o comando break: interrompendo os comandos switch. � Ex.: switch( num ) { case ’0’: printf(“Zero"); break; case ‘1’: printf(“Um"); break; } 20/08/2011 9 Comando break � Na verdade, o comando break serve para quebrar a execução de um comando (como no caso do switch) ou interromper a execução de qualquer loop (for, while ou do-while). � O break faz com que a execução do programa continue na primeira linha seguinte ao loop ou bloco que está sendo interrompido. Comando break int a,b; scanf("%d",&a); scanf("%d",&b); while (a <= b){ if (a == b) break; a = a + 1; printf("%d \n",a); } Comando break while (a <= b){ if (a == b) break; a = a + 1; printf("%d \n",a); } SIM NÃO Continuação do programa SIM NÃO Comando continue � Comando continue � Diferente do break, só funciona dentro do loop; � Pula essa iteração do loop; � Os comandos que sucedem continue no bloco não são executados Comando continue int opcao; while (opcao != 5){ printf("Escolha uma opcao entre 1 e 5: "); scanf("%d", &opcao); if ((opcao > 5) || (opcao < 1)) continue; printf(“Opcao escolhida: %d”,opcao); } Comando continue while (opcao != 5){ printf("Escolha uma opcao entre 1 e 5: "); scanf("%d", &opcao); if ((opcao > 5) || (opcao < 1)) continue; printf(“Opcao escolhida: %d”,opcao); } Continuação do programa SIM NÃO SIM NÃO
Compartilhar