5) Observe o programa abaixo:
1. #include
2. #include
3.
4. void reajuste20(float *preco, float *reajuste);
5.
6. int main(void){
7. setlocale(LC_ALL, "Portuguese");
8. float val_preco, val_reajuste;
9.
10. printf("Insira o preço atual: ");
11. scanf("%f", &val_preco);
12. reajuste20(&val_preco, &val_reajuste);
13. printf("\nO preço novo é %0.2f", val_preco);
14. printf("\nO aumento foi de %.2f", val_reajuste);
15.
16. return 0;
17. }
18.
19. void reajuste20(float *preco, float *reajuste){
20. *reajuste = *preco*0.2;
21. *preco *=1.2;
22. }
Em relação a função reajuste20() responda:
a) qual é o seu tipo?
b) qual é o seu nome?
c) quantos parâmetros possui?
d) se tiver apenas um parâmetro, qual é o seu tipo? Ou se tiver mais que um parâmetro quais são os
seus respectivos tipos? Obs.: Se não tiver parâmetros não precisa responder este item.
e) Descreva o que a função faz nas linhas 20 e 21.
f) O que é passado como argumento para a função na linha 12?
Respostas
1.
double
cube
(
int
y){2.
return
y*y*y;3. }
Em relação a essa função responda:a) qual é o seu tipo?b) qual é o seu nome?c) quantos parâmetros possui?d) se tiver apenas um parâmetro, qual é o seu tipo? Ou se tiver mais que um parâmetro quais são osseus respectivos tipos?
Obs.:
Se não tiver parâmetros não precisa responder este item.e) ual é a tarefa que essa função e!ecuta?
) !onsidere o problema:
Escrever um pro"rama com a função
"arifa"axi# )
que simule um ta!#metro, ou se$a, calcule ovalor da corrida de um passa"eiro. %ara isso, o pro"rama deve solicitar, ainda na função
main# )$
que o usu&rio di"ite, via teclado, a distância percorrida pelo passa"eiro no t&!i, em quil'metros. (função
"arifa"axi# )
deve receber esse valor, di"itado pelo usu&rio, e retornar o quanto o passa"eirodever pa"ar. Esse valor a ser pa"o, deve ser impresso na tela por uma instrução escrita na função
main# )
. onsidere que a bandeirada se$a de *+,- e que a acada quil'metro percorrido se$aacrescido o valor de *+ /, ao valor total a ser pa"o.
%)
Escreva uma função recursiva c0amada
poten&ia# )
que aceite dois ar"umentos positivos
i
e
j
. (função deve retornar o resultado de
i
elevado a
j.
%or e!emplo:
poten&ia#$%)
retorna 1.
'i&a: use a propriedade de que i elevado a ( igual a i elevado a #(*1) vezes i.+) Observe o programa abaixo:
#include
<stdio.h>
#include
<locale.h>
#define
TAMANHO 5
void
pesquisa
(
int
eto!"#$
int
chae$
int
ta%a&ho);
int
main
(
void
){
setlocale
('A''$ +o!t,-,ese);
int
a"TAMANHO#{1$2$3$/$5};
int
chae;
printf
(0sse !o-!a%a !ealia es,isas e% eto!es4&);
printf
(0&t!e co% o alo! a se! es,isado );
scanf
(6d$7chae);es,isa(a$ chae$ TAMANHO);}
void
pesquisa
(
int
eto!"#$
int
chae$
int
ta%a&ho){
int
&;
for
(&8;&<TAMANHO;&99){
if
(eto!"&#chae){
printf
(:alo! e&co&t!ado &a osio 6d$&);
return ;
}
}
Olá!
Vamos resolver cada questão passo a passo:
Letra a) Na linha 19 do algoritmo, podemos observar que a função é do tipo void, isso significa que quando ela é chamada para ser executada, não oferece nenhum retorno ao usuário.
Letra b) O nome da função é reajuste20, pois se tratando de nome, consideramos apenas a palavra que vem depois do tipo da função, que no caso é do tipo void.
Letra c) O padrão para declarar uma função na linguagem que esta sendo utilizada na pergunta é:
tipo nome_da_funcao(parâmetro 1,parâmetro 2, ...){
...
}
Como no programa está escrito:
void reajusta20(float *preco, float *reajuste){
...
}
De acordo com as regras de declaração de uma função, podemos concluir que essa em específico tem 2 parâmetros.
Letra d) Os 2 parâmetros contidos na função são ponteiros do tipo float, isso significa que que as variáveis declaradas como parâmetro, não guardam valor do tipo float, na verdade, elas armazenam o endereço de uma variável do tipo float. Ou seja, elas guardam um valor que aponta para uma variável, por isso o nome ponteiro.
Podemos deduzir que é um ponteiro, pois ambas as variáveis contidas nos parâmetros da função são precedidas de um *.
Letra e) Na linha 20, o programa diz que o reajuste será igual ao preço declarado multiplicado por 0,2
Na linha 21, vale lembrar que: a *= b é a mesma coisa que a = a*b, portanto o esta sendo feito uma nova atribuiçã ao preço, que será igual ao valor do preço antigo multiplicado por 1,2.
Letra f) Podemos observar que é passado dois parâmetros, são eles:
&val_preco e &val_reajuste, o operador & é usado para especificar o endereço de uma variável, e não o valor que ela esta armazenando. Ele foi utilizado pois na função reajuste20, é necessário o uso de ponteiros, conforme explicado na letra d.