Introdução à Programação Ciclos 1ª parte
Sumário Ciclos while Exercícios com instruções condicionais e ciclos
Ciclos (while) while ( <expressão> ) <instrução>; Enquanto <expressão> for diferente de zero ou verdadeira, <instrução> é executada repetidamente. Instrução do ciclo : Corpo do ciclo
Exemplo Ciclo entre { int main () { int contador=0; while (contador<10) { printf ("Numero %d\n",contador); contador++; return 0; Ciclo é executado enquanto contador<10 Contador tem de mudar para o ciclo terminar
Exercício 1 Faça um programa que peça um inteiro ao utilizador e imprima a tabuada desse número. 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 while
Exemplo de Solução int main () { int tabuada, corrente=1; printf ("Qual a tabuada? "); scanf("%d", &tabuada); while (corrente<=10) { printf ("\t%d x %d = %d\n",tabuada, corrente++; return 0; corrente, tabuada*corrente);
Exercício 2 Escreva um programa que permita a um aluno introduzir uma sequência arbitrária de notas e que afixe 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.
Exemplo de Solução int main () { int nota, somatorio=0, nrnotas=0; printf ("Insira nota: "); scanf ("%d",¬a); while ((nota>=10)&&(nota<=20)) { somatorio+=nota;nrnotas++; printf ("Insira nota: "); scanf ("%d",¬a); printf ("Media das notas: %f\n", (float)somatorio/nrnotas); return 0;
Exercício 3 Faça um programa que tenha uma função que detecte se um inteiro é número par ou impar: A função devolve um valor que indica se o numero é par sem imprimir qualquer mensagem A mensagem que indica se o inteiro é ou não par é gerada na função main.
Exemplo de Solução /* Funcao devolve 1 se for par, 0 se impar */ int epar (int n) { if ((n % 2)==0) return 1; else return 0; int main () { int numero; printf ("Qual o numero? "); scanf("%d", &numero); if (epar(numero)) printf ("O numero e par\n"); else printf ("O numero e impar\n"); return 0;
Exercício 3a Adicione ao programa uma função que detecte se um inteiro é número primo: Um número primo é um número natural maior que 1, cujos únicos divisores positivos é 1 e o próprio número
Exemplo de Solução /* Devolve 0 se nao for primo */ int eprimo (int n) { int divisores,teste; divisores=0; // numero de divisores para alem de 1 e n teste=2; // 1 e' é divisor de todos os inteiros if (n<2) return 0; while (teste<n) && { divisores<1) { if ((n % teste)==0) divisores++; teste++; return divisores==0; // Nao ha divisores, entao primo Quantos testes faz?
Outro Exemplo de Solução /* Devolve 0 se nao for primo */ int eprimo (int n) { int divisor=2; // Todos numeros sao divisiveis por 1. // Comecamos por 2. if (n<=1) return 0; // So pode ser primos numeros > 1 while (divisor <n) // n e divisivel por n.testamos ate n-1 { if ((n % divisor)==0) return 0; // Achamos um divisor! Nao e primo. divisor++; // Vamos testar o proximo inteiro. return 1; // Quando nao ha divisores, e' primo
Exercício 3b Usando a função anterior, construa um programa que vá aceitando números inteiros, terminando quando lhe for apresentado um valor não positivo O programa deverá detectar a introdução de um número primo, escrevendo no ecrã uma mensagem adequada.
Exemplo de Solução int main () { int numero; printf ("Qual o numero? "); scanf("%d", &numero); while (numero>0) { if (eprimo(numero)) printf ("O numero e primo\n"); else printf ("O numero nao e primo\n"); printf ("Qual o numero? "); scanf("%d", &numero); printf ("Numero nao positivo. Adeus!\n"); return 0; Repetido?
Exercício 3c Altere o programa anterior de modo a que passe a mostrar os N primeiros números primos A quantidade de números primos a mostrar é definida pelo utilizador Exemplo: Para 4 números primos: 2, 3, 5, 7
Exemplo de Solução int main () { int nprimos, primos, contador; printf ("Quantos numeros primos quer? "); scanf("%d", &nprimos); contador=1; primos=0; while (primos<nprimos) { if (eprimo(contador)) (primos>0) printf (", "); /* separa os numeros */ { if (eprimo(contador)) { printf ("%d\n", contador); printf primos++; ("%d", contador); primos++; contador++; contador++; return 0; printf ( \n"); return 0;