Mudanças entre as edições de "AULA 8 - Programação 1 - Graduação"
Ir para navegação
Ir para pesquisar
Linha 138: | Linha 138: | ||
− | #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''.<syntaxhighlight lang=c> | + | #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''. |
+ | <syntaxhighlight lang=c> | ||
/* rand example: guess the number */ | /* rand example: guess the number */ | ||
#include <stdio.h> | #include <stdio.h> |
Edição das 14h43min de 9 de março de 2015
Objetivos
- Uso do break associado ao comando for, do, while.
- Uso da biblioteca matemática (math.h).
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:
Tanto valores passados como argumento, quanto o returno de valores são do tipo double.
Veja alguns exemplos de funções disponíveis ao se utilizar math.h.
Função | Como chamar |
---|---|
Seno | sin(x) |
Cosseno | cos(x) |
Tangente | tan(x) |
Exponencial | exp(x) |
Logaritmo | log(x), log10(x) |
Potência | pow(x,y) |
Raiz | sqrt(x) |
- Atenção
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; }
- Uso do while e switch (Aula 6)
#include <stdio.h>
main()
{
float tf,tc; /* declaração de duas variáveis reais */
int opcao=0;
while (opcao!=3){
printf("\nDigite: (1) para converter de F para °C\n");
printf("Digite: (2) para converter de C para °F\n");
printf("Digite: (3) para sair\n");
scanf ("%d",&opcao);
switch(opcao) {
case 1: printf ("\nEntre com o valor da temperatura fahrenheit = ");
scanf("%f",&tf);
tc = (tf-32)/1.8;
printf ("\nTemperatura = %0.1f°C", tc);
break;
case 2: printf ("\nEntre com o valor da temperatura Celcius = ");
scanf("%f",&tc);
tf = (tc*1.8)+32;
printf ("\nTemperatura = %0.1f°F", tf);
break;
default:
printf("\nFim.\n");
break;
}
}
}