1 ciclos for, while e do...while em c/c++ existem 3 tipos diferentes de ciclos: while for...
TRANSCRIPT
11
Ciclos Ciclos forfor, , whilewhile e do...while e do...while
Em C/C++ existem 3 tipos diferentes de ciclos:Em C/C++ existem 3 tipos diferentes de ciclos: whilewhile for for equivalente a um whileequivalente a um while do...whiledo...while
O for e o while são equivalentes:O for e o while são equivalentes:
forfor whilewhilefor(int i=0 ;i<10 ;++i){for(int i=0 ;i<10 ;++i){ …… ……..}}
int i=0 ;int i=0 ;while( i<10 ){while( i<10 ){ …… …….. ++i;++i;}}
22
O ciclo do…while usa-se quando há necessidade de executar o ciclo O ciclo do…while usa-se quando há necessidade de executar o ciclo pelo menos uma vez : por exemplo menuspelo menos uma vez : por exemplo menus do {do { opcao=0;opcao=0; limpa_ecra();limpa_ecra();
/* /* Menu de opcoesMenu de opcoes*/ */ printf("Programa para calculo da trajectoria de um pendulo\n");printf("Programa para calculo da trajectoria de um pendulo\n"); printf("pelo metodo de Euler-Cromer.\n\n");printf("pelo metodo de Euler-Cromer.\n\n"); printf("(Resultados da execucao no ficheiro %s)\n\n", \ printf("(Resultados da execucao no ficheiro %s)\n\n", \ dados_iniciais.nome);dados_iniciais.nome); printf("Escolha uma opcao:\n\n\n");printf("Escolha uma opcao:\n\n\n"); printf(" 1 - Usar valores iniciais pre-definidos:\n");printf(" 1 - Usar valores iniciais pre-definidos:\n"); printf(" m=0.05 Kg, l=0.30 m, theta=0.1 rad,\n");printf(" m=0.05 Kg, l=0.30 m, theta=0.1 rad,\n"); printf(" vel.= 0 rad/s, 500 pontos de solucao;\n");printf(" vel.= 0 rad/s, 500 pontos de solucao;\n"); printf(" 2 - Definir valores;\n");printf(" 2 - Definir valores;\n"); printf(" 3 - Executar o calculo com os valores \ printf(" 3 - Executar o calculo com os valores \ definidos na opcao 2;\n");definidos na opcao 2;\n"); printf(" 4 - Sair do programa.\n\n");printf(" 4 - Sair do programa.\n\n"); printf("Opcao: (valor por defeito: 1) ");printf("Opcao: (valor por defeito: 1) "); ................ while ( opcao != 4 && opcao != 1 );while ( opcao != 4 && opcao != 1 );
Repare-se que aqui o while termina com ;Repare-se que aqui o while termina com ;
Ciclos Ciclos forfor, , whilewhile e do...while e do...while
33
Em C/C++ falso Em C/C++ falso 0, verdade é não nulo 0, verdade é não nulowhile(1){while(1){ … …..}}
Produz um ciclo infinito que tem de ser terminado de outra Produz um ciclo infinito que tem de ser terminado de outra forma. Idem paraforma. Idem para
for( ; 1 ; ){for( ; 1 ; ){……....}}
Nesse caso termina-se com Nesse caso termina-se com breakbreak
Ciclos Ciclos forfor, , whilewhile e do...while e do...while
44
Erro comum: incluir ; como por exemplo emErro comum: incluir ; como por exemplo emwhile(1)while(1); ; {{ … …..}}
O ; é a chamada instrução vazia: O ; é a chamada instrução vazia: o ciclo é o ciclo é verdadeiramente infinito!verdadeiramente infinito!
Ciclos Ciclos forfor, , whilewhile e do...while e do...while
55
Instruções condicionaisInstruções condicionais
Controlo de um ciclo:Controlo de um ciclo:
breakbreak continuecontinue#include <stdio.h>#include <stdio.h>#include <math.h>#include <math.h>
int main(){int main(){ int i=4, j=100;int i=4, j=100;
while( abs(i) <=4 ){while( abs(i) <=4 ){ if( i == 0 ) break;if( i == 0 ) break; printf("i= %d, %d/%d= %d\n", i, j, i, j/i);printf("i= %d, %d/%d= %d\n", i, j, i, j/i); --i;--i; }} return 0;return 0;}}
#include <stdio.h>#include <stdio.h>#include <math.h>#include <math.h>
int main(){int main(){ int i=4, j=100;int i=4, j=100;
while( abs(i) <=4 ){while( abs(i) <=4 ){ --i;--i; if( i == 0 ) continue;if( i == 0 ) continue; printf("i= %d, %d/%d= %d\n", i, j, i, j/i);printf("i= %d, %d/%d= %d\n", i, j, i, j/i); }} return 0;return 0;}}
breakbreak continuecontinuei= 4, 100/4= 25i= 4, 100/4= 25i= 3, 100/3= 33i= 3, 100/3= 33i= 2, 100/2= 50i= 2, 100/2= 50i= 1, 100/1= 100i= 1, 100/1= 100
i= 3, 100/3= 33i= 3, 100/3= 33i= 2, 100/2= 50i= 2, 100/2= 50i= 1, 100/1= 100i= 1, 100/1= 100i= -1, 100/-1= -100i= -1, 100/-1= -100i= -2, 100/-2= -50i= -2, 100/-2= -50i= -3, 100/-3= -33i= -3, 100/-3= -33i= -4, 100/-4= -25i= -4, 100/-4= -25i= -5, 100/-5= -20i= -5, 100/-5= -20