funcoes_bcc201
TRANSCRIPT
-
8/15/2019 funcoes_BCC201
1/47
1/46
BCC 201 - Introdução à Programação I
Procedimentos e Funções
Guillermo Cámara-ChávezUFOP
http://find/
-
8/15/2019 funcoes_BCC201
2/47
2/46
Funções e Procedimentos I
Procedimentos são funções estruturas que agrupam umconjunto de comandos, que são executados quando oprocedimento é chamado.
http://find/
-
8/15/2019 funcoes_BCC201
3/47
3/46
Funções e Procedimentos II
Funções são procedimentos que retornam um único valor aofinal de sua execução.
x = s q r t ( 4 ) ;
http://find/
-
8/15/2019 funcoes_BCC201
4/47
4/46
Porque utilizar funções? I
Evitar que os blocos do programa fiquem grandes demais(mais dif́ıceis de entender);
Facilitar a leitura do programa-fonte;
Separar o programa em partes(blocos) que possam serlogicamente compreendidos de forma isolada.
http://find/
-
8/15/2019 funcoes_BCC201
5/47
5/46
Porque utilizar funções? II
Permitir o reaproveitamento de código já constrúıdo (porvocê ou por outros programadores);
Evitar que um trecho de código seja repetido várias vezesdentro de um mesmo programa;
Permitir a alteração de um trecho de código de uma formamais rápida.
http://goforward/http://find/http://goback/
-
8/15/2019 funcoes_BCC201
6/47
6/46
Declarando uma função? I
Uma função possui o seguinte formato:
t i p o n om e da f un ç ão ( t i p o
,t i p o
, . . . ,t i p o
)
{comandos ;r e t u r n ( v a l o r de r e t o r n o ) ;
}
http://goforward/http://find/http://goback/
-
8/15/2019 funcoes_BCC201
7/47
7/46
Declarando uma função? II
http://find/http://goback/
-
8/15/2019 funcoes_BCC201
8/47
8/46
Declarando uma função? III
Toda função deve ter um tipo.
Esse tipo determina qual será o tipo de seu valor de retorno.
Os parâmetros de uma função determinam qual será o seucomportamento (como se fosse uma função matemática, ondeo parâmetro determina o valor da função).
http://find/http://goback/
-
8/15/2019 funcoes_BCC201
9/47
-
8/15/2019 funcoes_BCC201
10/47
10/46
Declarando uma função? V
Encontrar o maior de dois números
http://find/
-
8/15/2019 funcoes_BCC201
11/47
11/46
Declarando uma função? VI
http://find/
-
8/15/2019 funcoes_BCC201
12/47
12/46
Declarando uma função? VII
http://find/
-
8/15/2019 funcoes_BCC201
13/47
-
8/15/2019 funcoes_BCC201
14/47
-
8/15/2019 funcoes_BCC201
15/47
-
8/15/2019 funcoes_BCC201
16/47
-
8/15/2019 funcoes_BCC201
17/47
f ?
-
8/15/2019 funcoes_BCC201
18/47
18/46
Declarando uma função? XIII
E l d f ˜ I
http://goforward/http://find/http://goback/
-
8/15/2019 funcoes_BCC201
19/47
19/46
Exemplo de função I
A função abaixo soma dois valores passados como parâmetro
i n t s oma ( i n t a , i n t b ){
i n t c = 0 ;c = a + b ;
r e t u r n ( c ) ;}
i n t s oma ( i n t a , i n t b )
{r e t u r n ( a + b ) ;
}
http://find/
-
8/15/2019 funcoes_BCC201
20/47
-
8/15/2019 funcoes_BCC201
21/47
I d f ˜ III
-
8/15/2019 funcoes_BCC201
22/47
22/46
Invocando uma funçao III
As variáveis passadas como parâmetros indicam quais são osvalores com os quais a função irá trabalhar.
Esses valores são copiados para os parâmetros da função,
que pode manipulá-los. Os parâmetros passados pela função não
necessariamente possuem os mesmos nomes que osparâmetros que a função espera.
I d f ˜ IV
http://find/
-
8/15/2019 funcoes_BCC201
23/47
23/46
Invocando uma funçao IV
i n t soma( i n t a , i n t b ){r e t u r n ( a+b ) ;
}i n t main ( ){
i n t x = 1 0 , y = 3 0 , z ;z = soma ( x , y ) ;p r i n t f ( " Soma de %d e %d = %d " , x , y , z ) ;/ / E s t á c o r r e t o ? ?p r i n t f ( " Soma de %d e %d = %d " , a , b , z );
}
O segundo printf está errado. As varíaveis a e b são variáveisprivadas que somente pertencem a função e não tem como teracesso a elas.
O tipo void
http://find/
-
8/15/2019 funcoes_BCC201
24/47
24/46
O tipo void
Tipo especial, utilizado principalmente em funções Representa o “nada”
uma variável desse tipo armazena conteúdo indeterminado e uma função desse tipo retorna um conteúdo indeterminado.
http://find/
-
8/15/2019 funcoes_BCC201
25/47
A funcão main
-
8/15/2019 funcoes_BCC201
26/47
26/46
A funçao main
O programa principal na verdade é uma função, ele é umafunção especial.
Ele é invocada automaticamente pelo programa quando esseinicia sua execução e possui um tipo fixo (int).
O comando return informa ao sistema operacional se oprograma funcionou corretamente ou não.
O padrão é que um programa retorne zero caso tenhafuncionado corretamente ou qualquer outro valor caso
contrário.
Declarando uma funcão I
http://find/
-
8/15/2019 funcoes_BCC201
27/47
27/46
Declarando uma funçao I
Declarar uma função sem a sua implementação é comodeclará-la com a implementação
Para declará-la sem a implementação basta substituir as
chaves e seu conteúdo por ponto e v́ırgula.
t i p o n om e da f un ca o ( t i p o
,t i p o
, . . . ,t i p o
);
Declarando uma funcão II
http://find/
-
8/15/2019 funcoes_BCC201
28/47
28/46
Declarando uma funçao II
# i n c l u d e i n t soma( i n t a , i n t b ) ;i n t main ( ){
i n t c , x , y ;p r i n t f ( " I ns er ir d oi s nú me ro s \ n " ) ;s c a n f ( " %d %d" , &x , &y ) ;p r i n t f ( " A soma eh %d " , soma ( x , y ) ) ;
}i n t soma( i n t a , i n t b ){
r e t u r n ( a+b ) ;}
Exemplos I
http://find/
-
8/15/2019 funcoes_BCC201
29/47
29/46
Exemplos I
Crie uma função para determinar se um número é ou não par.
Exemplos II
http://find/
-
8/15/2019 funcoes_BCC201
30/47
30/46
Exemplos II
i n t EhPar( i n t num);i n t main ( )
{i n t x ;p r i n t f ( " I ns er ir um nú me ro \ n " ) ;s c a n f ( " %d " , x ) ;i f ( E hPar ( x ) = = 1 )
p r i n t f ( " N um er o p ar ! \ n " ) ;e l s e
p r i n t f ( " Nume ro nao eh par ! \ n" ) ;}i n t EhPar( i n t num){
i f (num % 2 == 0)r e t u r n 1 ; // V e r d ad e i r oe l s e
r e t u r n 0 ; // F a ls o}
http://find/
-
8/15/2019 funcoes_BCC201
31/47
Exemplos IV
-
8/15/2019 funcoes_BCC201
32/47
32/46
Exemplos IV
d o u b l e P i t a g o r a s ( d o u b l e cat1 , d o u b l e c a t 2 ) ;v o i d M o s t r a r ( d o u b l e h i p ) ;
i n t main ( ){
d o u b l e c at 1 , c at 2 , h i p ;w h i l e ( 1 ){
p r i n t f ( " I n s er i r p r im e ir o c at e to( 0 p ar a f i na l iz a r ) \ n" ) ;
s c a n f ( " %lf " , &c a t 1 ) ;i f ( c a t 1 = = 0 ) b r e a k ;p r i n t f ( " I n s er i r s e gu n do c a te to \ n " ) ;s c a n f ( " %lf " , &c a t 2 ) ;
h i p = P i t a g o r a s ( c at 1 , c a t2 ) ;M o s t r a r ( h i p ) ;}r e t u r n 0 ;
}
http://find/
-
8/15/2019 funcoes_BCC201
33/47
Exemplos VI
-
8/15/2019 funcoes_BCC201
34/47
34/46
p
Determine se um número inteiro é ou não primo, criando uma
função para isso. Sair com zero.
Exemplos VII
http://goforward/http://find/http://goback/
-
8/15/2019 funcoes_BCC201
35/47
35/46
p
# i n c l u d e i n t EhPrimo( i n t numero ) ;
i n t main ( ){
i n t num , p r i m o ;w h i l e ( 1 ){
p r i n t f ( " I n s er i r n u me r o( 0 p ar a f i na l iz a r ) \ n) " ;
s c a n f ( " %d " , &num ) ;i f ( num = = 0) b r e a k ;i f ( E hP ri mo ( num ) = = 1 )
p r i n t f ( " N um er o eh p ri mo ! \ n" ) ;
e l s e p r i n t f ( " N um er o n ao eh p ri mo ! \ n" ) ;}r e t u r n 0 ;
}
Exemplos VIII
http://find/
-
8/15/2019 funcoes_BCC201
36/47
36/46
p
i n t EhPrimo( i n t numero){
i n t c o n t = 0 ; i ;f o r ( i = 1 ; i
-
8/15/2019 funcoes_BCC201
37/47
37/46
Variável local
é declarada dentro de uma função, ela existe somente dentro de uma função, após o término da execução da função, ela deixa de existir.
Variáveis locais e variáveis globais II
http://goforward/http://find/http://goback/
-
8/15/2019 funcoes_BCC201
38/47
38/46
Variável global
ela é declarada fora da função (ou seja, no mesmo lugar onderegistros (struct ), tipos enumerados (enum) e procedimentos
são declarado) Existe dentro de todas as funções e qualquer
procedimento/função pode alterá-las.
http://find/
-
8/15/2019 funcoes_BCC201
39/47
Variáveis locais e variáveis globais IV
-
8/15/2019 funcoes_BCC201
40/47
40/46
Ex. variável global:
# i n c l u d e
i n t v a r g l o b a l ;v o i d I n c r e m e n t a G l o b a l ( i n t a ) ;
i n t main ( ){
i n t i ;s c a n f ( " %d " , & i ) ;p r i n t f ( " v ar ia ve l g lo ba l eh %d \ n" , v a r g l o b a l ) ;I n c r e m e n t a G l o b a l ( i ) ;p r i n t f ( " v ar ia ve l g lo ba l eh %d \ n" , v a r g l o b a l ) ;
}
v o i d I n c r e m e n t a G l o b a l ( i n t a ){v a r g l o b a l += a ; // v a r g l o b a l = v a r g l o b a l + a
}
Variáveis locais e variáveis globais V
http://find/
-
8/15/2019 funcoes_BCC201
41/47
41/46
Notas:
evite utilizar variáveis globais variáveis globais são sinais de um mau design existe o problema que duas funções modifiquem o valor da
varíavel no mesmo instânte
http://find/
-
8/15/2019 funcoes_BCC201
42/47
Variáveis locais e variáveis globais VII
-
8/15/2019 funcoes_BCC201
43/47
43/46
v o i d M o s t r a G l o b a l e L o c a l ( i n t v a r g l o b a l , i n t num){
p r i n t f ( " F un ca o - > P r iv a da : %d \ n " , v a r g l o b a l ) ;p r i n t f ( " F un ca o - > O ut ra P ri va da : %d \ n " , num ) ;
p r i n t f ( " F un ca o - > G l ob a lP r iv a da : %d \ n " , : : v a r g l o b a l ) ;v a r g l o b a l += 5 ;num += 5 ;: : v a r g l o b a l += 5 ;
}
Variáveis locais e variáveis globais VIII
http://find/
-
8/15/2019 funcoes_BCC201
44/47
44/46
Seria mostrado na tela:
I n s e r i r d o i s numero : 5 060Funcao−>P r i v a d a : 50
Funcao−>O ut ra P r i v ad a : 60Funcao−>G l o b a l P r i v a d a : 10
Main−>v a r i a v e l g l o b a l eh : 15Main−>v a r i a v e l l o c a l eh : 50
Exerćıcios em Aula I
http://find/
-
8/15/2019 funcoes_BCC201
45/47
45/46
1. Crie uma função chamada Compara que receba dois valores
reais como parâmetro e retorne 1 se os números são iguais ou0 se os números são diferentes.
2. Fazer um aplicativo que produza a sáıda a seguir, usando oprocedimento linha para produzir a linha de caracteres
desejada∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗A n i ta L op es
=================Guto G a r c i a
#################
3. Crie a função que calcule o volume de uma esfera. Utilize aseguinte fórmula para determinar o volume: V = 43π ∗ r
3
http://find/
-
8/15/2019 funcoes_BCC201
46/47
-
8/15/2019 funcoes_BCC201
47/47
47/46
FIM
http://find/