Introdução à Programação Ciclos 2ª parte
Sumário Ciclos do while for Exercícios
Ciclos (while) while ( <expressão> ) <instrução>; Enquanto <expressão> for diferente de zero ou verdadeira, <instrução> é executada repetidamente.
Ciclos (do...while) do <instrução> while ( <expressão> ); A <instrução> é executada repetidamente até <expressão> ser zero ou falsa <instrução> é executada pelo menos uma vez
Exemplo int main () { char resposta; do { printf ("Quer continuar? (s, n) "); scanf (" %c",&resposta); while ((resposta=='s') (resposta=='s')); printf ("Acabou-se!\n"); return 0;
Exercício 1 Escreva um programa que peça um número ao utilizador até acertar num número predefinido O número a acertar é definido no código (não é pedido ao utilizador) Use um ciclo do...while
Exemplo de Solução int main () { int valor, palpite; valor=15; do { printf ("Qual o palpite? "); scanf ("%d",&palpite); while (valor!=palpite); printf ("Parabens, acertou!\n"); return 0;
Exercício 2 Reescreva o programa da tabuada desenvolvido na aula anterior Se o utilizador introduzir o valor 7: 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21... 7 x 10 = 70 Implemente o programa recorrendo a um ciclo do...while
Exemplo de Solução int main () { int tabuada, corrente=1; printf ("Qual a tabuada? "); scanf("%d", &tabuada); do { printf ("\t%d x %d = %d\n",tabuada, corrente++; while (corrente<=10); return 0; corrente, tabuada*corrente);
Exercício 3 Altere o programa que permite a um aluno introduzir uma sequência arbitrária de notas e que afixa no ecrã, como resultado, a média aritmética simples correspondente O programa lê as notas individualmente enquanto estas forem válidas para aprovação (entre 10 e 20) O programa terminará quando for introduzido um valor que não seja válido como nota de aprovação O programa deve usar um ciclo do while
Exemplo de Solução int main () { int nota, somatorio=0, nrnotas=0; float media; do { printf ("Insira nota: "); scanf ("%d",¬a); if ((nota>=10)&&(nota<=20)) { somatorio+=nota; nrnotas++; while ((nota>=10)&&(nota<=20)); media = somatorio/nrnotas; printf ("Media das notas: %f\n",media); return 0;
Ciclos (for) for (<inicial>;<expressão1>;<expressão2>) <instrução>; O ciclo começa por iniciar as variáveis em <inicial> A <instrução> é executada repetidamente enquanto <expressão> for diferente de zero ou verdadeira Após cada execução de <instrução> é executada <expressão2>
Exemplo /* Simulador de credito */ int main () { int mensalidade, montantedivida, taxajuro, mes; printf ("Valor do emprestimo? "); scanf ("%d",&montantedivida); printf ("Taxa de juro ao ano (%%)? "); scanf ("%d",&taxajuro); montantedivida+=montantedivida*taxajuro/100; mensalidade=montantedivida/12; for (mes=1; mes<=12;mes++) { montantedivida-=mensalidade; printf ("Apos o mes %d paga %d e fica a dever %d\n", mes, mensalidade, montantedivida); return 0;
Comparação dos ciclos for (<e1>;<e2>;<e3>) <s>; <e1>; while (<e2>) { <s>; <e3>; A formulação à esquerda é equivalente à da direita
Exercício 4 Reescreva o programa da tabuada desenvolvido na aula anterior Se o utilizador introduzir o valor 7: 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21... 7 x 10 = 70 Implemente o programa recorrendo a um ciclo for
Exemplo de Solução int main () { int tabuada, corrente; printf ("Qual a tabuada? "); scanf("%d", &tabuada); for (corrente=1; corrente <=10; corrente++) { printf ("\t%d x %d = %d\n",tabuada, corrente, tabuada*corrente); return 0;
Exercício 5 Altere o programa que permite a um aluno introduzir uma sequência de notas e que afixa no ecrã, como resultado, a média aritmética simples correspondente O programa começa por pedir a quantidade de notas a introduzir De seguida pede ao utilizador as notas individualmente Deve indicar o número da nota a introduzir: 1 para a primeira nota, 2 para a segunda, etc. O programa deve usar um ciclo for
Exemplo de Solução int main () { int nota, somatorio=0, nrnotas, nr; float media; printf ("Numero de notas a introduzir? "); scanf ("%d",&nrnotas); for (nr=1; nr<=nrnotas;nr++) { printf ("Insira a nota %d: ", nr); scanf ("%d",¬a);somatorio+=nota; media = (float)somatorio/nrnotas; printf ("Media das notas: %f\n",media); return 0; Necessário?