Procedimentos e Funcoes
Guillermo Camara-Chavez
UFOP
1/46
Funcoes e Procedimentos I
2/46
Funcoes e Procedimentos II
Func
oes sao procedimentos que retornam um u
nico valor ao
final de sua execucao.
x = sqrt (4);
3/46
4/46
Permitir o reaproveitamento de c
odigo ja construdo (por
voce ou por outros programadores);
Permitir a alterac
ao de um trecho de c
odigo de uma forma
mais r
apida.
5/46
6/46
7/46
8/46
9/46
10/46
11/46
12/46
13/46
14/46
15/46
16/46
17/46
18/46
Exemplo de funcao I
A funcao abaixo soma dois valores passados como parametro
i n t soma ( i n t a , i n t b )
{
int c = 0;
c = a + b;
return (c );
}
m
i n t soma ( i n t a , i n t b )
{
return (a + b );
}
19/46
20/46
21/46
Esses valores s
ao copiados para os parametros da funcao,
que pode manipula-los.
Os par
ametros passados pela func
ao n
ao
necessariamente possuem os mesmos nomes que os
parametros que a funcao espera.
22/46
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 = 10 , y = 30 , z ;
z = soma ( x , y ) ;
p r i n t f ( " Soma de %d e %d = %d" , x , y , z ) ;
// E s t
a c o r r e t o ??
p r i n t f ( " Soma de %d e %d = %d" , a , b , z ) ;
}
23/46
O tipo void
I
I
24/46
Procedimento em C I
25/46
A funcao main
26/46
27/46
#i n c l u d e < s t d i o . h>
i n t soma ( i n t a , i n t b ) ;
i n t main ( )
{
int c , x , y ;
p r i n t f ( " Inserir dois n
u meros \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 ) ;
}
28/46
Exemplos I
29/46
Exemplos II
i n t EhPar ( i n t num ) ;
i n t main ( )
{
int x ;
p r i n t f ( " Inserir um n
u mero \n" ) ;
s c a n f ( " %d" , x ) ;
i f ( EhPar ( x ) = = 1 )
p r i n t f ( " Numero par ! \n" ) ;
else
p r i n t f ( " Numero 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 a d e i r o
else
r e t u r n 0 ; // F a l s o
}
30/46
Exemplos III
31/46
Exemplos IV
double P i t a g o r a s ( double cat1 , double cat2 ) ;
void Mostrar ( double hip ) ;
i n t main ( )
{
double cat1 , cat2 , hip ;
while (1)
{
p r i n t f ( " Inserir primeiro cateto
(0 para finalizar )\ n" ) ;
s c a n f ( " %lf " , &c a t 1 ) ;
i f ( cat1 = = 0) break ;
p r i n t f ( " Inserir segundo cateto \n" ) ;
s c a n f ( " %lf " , &c a t 2 ) ;
hip = P i t a g o r a s ( cat1 , cat2 ) ;
Mostrar ( hip ) ;
}
return 0;
}
32/46
Exemplos V
33/46
Exemplos VI
Determine se um n
umero inteiro e ou nao primo, criando uma
funcao para isso. Sair com zero.
34/46
Exemplos VII
#i n c l u d e < s t d i o . h>
i n t EhPrimo ( i n t numero ) ;
i n t main ( )
{
i n t num , p r i m o ;
while (1)
{
p r i n t f ( " Inserir numero
(0 para finalizar )\ n)" ;
s c a n f ( " %d" , &num ) ;
i f ( num = = 0 ) b r e a k ;
i f ( EhPrimo ( num ) = = 1 )
p r i n t f ( " Numero eh primo ! \n" ) ;
else
p r i n t f ( " Numero nao eh primo ! \n" ) ;
}
return 0;
}
35/46
Exemplos VIII
i n t EhPrimo ( i n t numero )
{
i n t cont = 0; i ;
f o r ( i = 1 ; i <= numero ; i ++)
{
i f ( numero % i = = 0 )
c o n t ++;
}
i f ( cont = = 2)
r e t u r n 1 ; // V e r d a d e i r o
else
r e t u r n 0 ; // F a l s o
}
36/46
Variavel local
I
I
I
37/46
Variavel global
I
38/46
39/46
Notas:
I
I
I
41/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 ( " Funcao -> Privada : %d \n" , v a r g l o b a l ) ;
p r i n t f ( " Funcao -> Outra Privada : %d \n" , num ) ;
p r i n t f ( " Funcao -> GlobalPrivada : %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 ;
}
43/46
44/46
Exerccios em Aula I
1. Crie uma funcao chamada Compara que receba dois valores
reais como parametro e retorne 1 se os n
umeros sao iguais ou
0 se os n
umeros sao diferentes.
2. Fazer um aplicativo que produza a sada a seguir, usando o
procedimento linha para produzir a linha de caracteres
desejada
Anita Lopes
=================
Guto G a r c i a
#################
Exerccios propostos I
5
1
a
1
b
1
c
1
d
1
e
46/46
FIM
47/46