Você está na página 1de 4

Exercícios para B2 de LPE.

Execute cada código, entenda bem e depois responda o que se pede. Caso não entenda venha tirar suas
dúvidas.

1) Os dois códigos (A e B) abaixo funcionam da mesma forma, porém, o código com IF ANINHADO É
CONSIDERADO MELHOR. Explique o motivo.

Codigo A
// IF SIMPLES

void main()
{
float n1,n2;
int v=1;
char op;
while(v)
{
clrscr();
printf("digite um numero operador numero\n");
scanf("%f %c %f",&n1,&op,&n2);

if (op=='+')
printf(" soma= %f",n1+n2);

if(op=='-')
printf("subtracao= %f",n1-n2);

if(op=='*')
printf("multiplicacao= %f",n1*n2);

if(op=='/')
printf("divisao= %f",n1/n2);

getche();

printf("\n\nDigite Zero para Sair ou Um para continuar ");


scanf("%d",&v);
}
}

Codigo B
//IF ANINHADO

void main()
{
float n1,n2;
int v=1;
char op;
while(v)
{
clrscr();
printf("digite um numero operador numero\n");
scanf("%f %c %f",&n1,&op,&n2);

if (op=='+')
printf(" soma= %f",n1+n2);
else
if(op=='-')
printf("subtracao= %f",n1-n2);
else
if(op=='*')
printf("multiplicacao= %f",n1*n2);
else
if(op=='/')
printf("divisao= %f",n1/n2);
getche();

printf("\n\nDigite Zero para Sair ou Um para continuar ");


scanf("%d",&v);
}
}
2) Os códigos (C e D) abaixo fazem a mesma coisa, porém, eles usam o SWITCH CASE no lugar do IF.
E também um usa DO... e o outro usa While. Estude-os com atenção e caso não entenda, venha tirar
suas dúvidas.

Código C

// SWITCH CASE COM LOOP DO...

void main()
{
int v=1;
float n1,n2;
char op;
do /* sempre executa pelo menos uma vez*/
{
clrscr();
printf("digite o primeiro numero\n");
scanf("%f",&n1);
printf("digite o Operador ( + - * / ) \n");
scanf("%s",&op);
printf("digite o segundo numero\n");
scanf("%f",&n2);
switch(op)
{
case '+':printf(" soma= %f",n1+n2);break;
case '-': printf("subtracao= %f",n1-n2);break;
case '*':printf(" multiplicacao= %f",n1*n2);break;
case '/': printf("divisao= %f",n1/n2);break;
}

getche();
printf("\n\nDigite Zero para ou outro numero para continuar ");
scanf("%d",&v);

}while(v);

Código D

// SWITCH CASE COM LOOP WHILE

void main(void)
{
int v=1;
float n1,n2;
char op;
while(v){ /*sempre verdadeiro*/
clrscr();
printf("digite o primeiro numero\n");
scanf("%f",&n1);
printf("digite o Operador ( + - * / ) \n");
scanf("%s",&op);
printf("digite o segundo numero\n");
scanf("%f",&n2);

switch(op)
{
case '+':printf(" soma= %f",n1+n2);break;
case '-': printf("subtracao= %f",n1-n2);break;
case '*':
case 'x':printf(" multiplicacao= %f",n1*n2);break;
case '/': printf("divisao= %f",n1/n2);break;
}

getche();

printf("\n\nDigite Zero para Sair ou Um para continuar ");


scanf("%d",&v);
}
}
3) Execute o código E abaixo, entenda bem como ele funciona e:
a) Explique o que se pede no quadros
b) TERMINE AS OPCOES 3 e 4 PARA MULTIPLICAR E DIVIDIR

CODIGO E

void main()
{
char op;
int x,y;
int i;

clrscr();
A do
{

do
B {
clrscr();
printf ("\n\t ** CALCULADORA **\n\n "); Para que serve esse
printf ("\n\t1 - SOMA \n\n "); loop? Explique a
printf ("\n\t2 - SUBTRAI\n\n"); lógica usada
printf ("\n\t3 - MULTIPLICA\n\n");
printf ("\n\t4 - DIVIDE\n\n");
printf("\n\tDigite a Opcao:");
scanf("%d", &i);
}while ( ( i<1 ) || ( i>4 ) );

switch (i)
{
case 1:
{
printf ("\n\n\n\t Digite o primeiro valor ");
scanf("%d",&x); Por que esse case
printf ("\n\t Digite o primeiro valor "); tem { } ?
scanf("%d",&y);
printf ("\n\n\n\t Soma = %d\n\n", x+y);
}
break;

Por que o case 2 NÃO


case 2: precisou das { } ?
printf ("\n\n\n\t Subtracao = %d\n\n", 5-10 );
break; E pra que serve o Break?
}

C do
{
printf("\tDeseja Continuar? (S)im ou (N)ao ");
op=getch();
op=toupper(op);
}while ( op != 'S' && op != 'N' );

}while (op != 'N');

Explique o DO (A, B e C),isto é, para que serve cada um deles?


4) Entenda os códigos e explique o que se pede:

CODIGO F

// FUNÇÃO MULT ATRIBUINDO NA VARIAVEL DA MAIN()

1 int mult (int x,int y)


2 {
3 return (x*y);
4 }

5 void main ()
6 {
7 int v1,v2, res;
8 clrscr();
9 printf("Digite os dois valores\n");
10 scanf("%d %d", &v1,&v2);
11 res=mult(v1,v2);
12 printf ("\n\nA multiplicacao dos valores = %d\n", res);
13 getche();
14 }

a) Quais são e onde estão os parâmetros formais?


b) Quais são e onde estão os parâmetros atuais?
c) Onde ocorre a chamada da função?

CODIGO G

// FUNÇÃO MULT USADA DIRETA SEM VARIÁVEL PRA RECEBER O RESULTADO

1 int mult (int x,int y)


2 {
3 return (x*y);
4 }

5 void main ()
6 {
7 int v1,v2, res;
8 clrscr();
9 printf("Digite os dois valores\n");
10 scanf("%d %d", &v1,&v2);

11 printf ("\n\nA multiplicacao dos valores = %d\n", mult(v1,v2));


12 getche();
13 }

a) Quais são e onde estão os parâmetros formais?


b) Quais são e onde estão os parâmetros atuais?
c) Onde ocorre a chamada da função?

CODIGO H

// FUNÇÃO MULT PROTOTIPADA USADA DIRETA SEM VARIÁVEL PRA RECEBER O RESULTADO

1 int mult (int x,int y);


2 void main ()
3 {
4 int v1,v2, res;
5 clrscr();
6 printf("Digite os dois valores\n");
7 scanf("%d %d", &v1,&v2);
8
9 printf ("\n\nA multiplicacao dos valores = %d\n", mult(v1,v2));
10 getche();
11 }

12 int mult (int x,int y)


13 {
14 return (x*y);
15 }

a) QUAL A FINALIDADE DA LINHA 1 TER O NOME DA FUNÇÃO MULT?


b) EM QUAL LINHA PODE-SE DIZER QUE COMEÇA A EXECUÇÃO DESSE CÓDIGO?