Mudanças entre as edições de "AULA 7 - Programação 1 - Graduação"
Ir para navegação
Ir para pesquisar
Linha 51: | Linha 51: | ||
==Uso do continue para prosseguir no início do ''loop''== | ==Uso do continue para prosseguir no início do ''loop''== | ||
− | + | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #include <stdio.h> |
Edição das 15h49min de 27 de fevereiro de 2015
Objetivos
- Uso do break e do while.
- Uso da biblioteca matemática.
Uso de break para sair de loops
Em exercícios anteriores, a finalização de um loop normalmente se dá pela expressão de controle de loop associado a instrução usada.
É possível sair de um loop na "força bruta" usando a instrução break:
#include <stdio.h>
main()
{
int i,j;
for (i=0;i<10;i++) {
if (i==5)
break;
}
printf("valor de i=%d\n", i);
}
Note que o break sempre sai do loop mais próximo a ele.
#include <stdio.h>
main()
{
int i,j;
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
if (j==1) {
break;
}
printf("valor de j = %d\n", j);
}
if (i==2)
break;
printf("valor de i = %d\n", i);
}
}
Uso do continue para prosseguir no início do loop
#include <stdio.h>
main()
{
int i,j;
for (i=0;i<3;i++) {
if (i==1) {
continue;
}
printf("valor de j = %d\n", j);
for (j=0;j<4;j++) {
if (j==1) {
continue;
}
printf("valor de j = %d\n", j);
}
}
}
Usando funções da biblioteca matemática
Para usar as funções matemáticas da biblioteca padrão, fazer os seguintes passos:
- No arquivo-fonte incluir o header math.h da biblioteca matemática:
#include <stdio.h>
#include <math.h>
main()
{
float x,y; /* declaração de duas variáveis reais */
printf ("Entre com o valor de x ");
scanf("%f",&x);
y = sqrtf(x);
printf ("Raiz de x = %lf", y);
}
NOTA: a maior parte de parâmetros e valores de retorno das funções matemáticas são reais de dupla precisão (double).
- Compilar e linkar o arquivo da forma:
gcc ex1.c -o ex1 -lm
EXERCÍCIOS
- Faça uma versão "politicamente incorreta" do programa de adivinhação da aula passada, Faça um loop infinito com o do while() e use uma instrução goto para sair do loop.
/* rand example: guess the number */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int iSecret, iGuess; /* initialize random seed: */ srand ( time(NULL) ); /* generate secret number: */ iSecret = rand() % 10 + 1; do { printf ("Guess the number (1 to 10): "); scanf ("%d",&iGuess); if (iSecret<iGuess) printf ("The secret number is lower\n"); else { if (iSecret>iGuess) printf ("The secret number is higher\n"); } if (iSecret==iGuess) /* se acertou salta para FIM */ goto FIM; } while(1); FIM: printf ("Congratulations!\n"); return 0; }
- Ainda sobre o exercício 1, implemente uma versão usando o comando while().
/* rand example: guess the number */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int iSecret, iGuess; /* initialize random seed: */ srand ( time(NULL) ); /* generate secret number: */ iSecret = rand() % 10 + 1; /* coloca um valor em iGuess que nunca será inserido pelo usuário */ iGuess = -1; while (iSecret!=iGuess) { printf ("Guess the number (1 to 10): "); scanf ("%d",&iGuess); if (iSecret<iGuess) printf ("The secret number is lower\n"); else { if (iSecret>iGuess) printf ("The secret number is higher\n"); } } printf ("Congratulations!\n"); return 0; }
- Ainda sobre o exercício 1, implemente uma versão usando loop infinito e o comando break;
/* rand example: guess the number */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int iSecret, iGuess; /* initialize random seed: */ srand ( time(NULL) ); /* generate secret number: */ iSecret = rand() % 10 + 1; do { printf ("Guess the number (1 to 10): "); scanf ("%d",&iGuess); if (iSecret<iGuess) printf ("The secret number is lower\n"); else { if (iSecret>iGuess) printf ("The secret number is higher\n"); } if (iSecret==iGuess) /* se acertou sai do loop */ break; } while(1); printf ("Congratulations!\n"); return 0; }