Mudanças entre as edições de "AULA 8 - Programação 1 - Graduação"
Ir para navegação
Ir para pesquisar
Linha 236: | Linha 236: | ||
printf ("Congratulations!\n"); | printf ("Congratulations!\n"); | ||
return 0; | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | #Uso do while e switch (Aula 6) | ||
+ | <syntaxhighlight lang=c> | ||
+ | #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",&tf); | ||
+ | tf = (tc*1.8)+32; | ||
+ | printf ("\nTemperatura = %0.1f°F", tf); | ||
+ | break; | ||
+ | default: | ||
+ | printf("\nFim.\n"); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Edição das 17h26min de 5 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",&tf);
tf = (tc*1.8)+32;
printf ("\nTemperatura = %0.1f°F", tf);
break;
default:
printf("\nFim.\n");
break;
}
}
}