You are on page 1of 4

Modularizao em C funes

Em C no existe uma distino entre funes e subrotinas. Ou seja, todas as subrotinas, do ponto de
vista de algoritmos, podem ser tratadas como funes que no retornam nenhum valor.
ormato de declarao de funes !
Tipo de retorno identificador_da_funo (tipo1 param1, tipo2 param2,...,
tipoN paramN)
{
//corpo da funo
return valor de retorno;
} //fim da funo
Tipo de retorno especifica o tipo do valor que ser" retornado para quem chamou a funo. #uando
o tipo de retorno for void isto significa que se trata de uma funo que se comporta como uma
subrotina$ ou seja, a funo no necessita retornar nenhum valor, apenas ser chamada.
Exemplos de tipos de retorno nos cabealhos das funes!
int func1(...) //retorna um valor inteiro
void func2(...) //no retorna nenhum valor. omporta!"e como
//"u#rotina
O comando return % utili&ado para reali&ar o retorno da funo$ este pode ser utili&ado em qualquer
ponto da funo que se deseje finali&ar a sua execuo e retornar o valor 'se a funo retornar
algum valor( para quem a chamou. Valor de retorno % o valor a ser efetivamente retornado e pode
ser tanto uma vari"vel como uma constante$ nos casos em que a funo no retorna nenhum valor o
comando return deve ser utili&ado so&inho ou pode)se simplesmente omit*)lo, o que far" com que a
funo retorne automaticamente ao seu final.
Exemplos de uso de return!
return $; //retorna o valor con"tante $
return var; //retorna o valor da vari%vel &var'
return; //no retorna valor. ( u"ado para fun)e" com
//retorno do tipo void
Os par+metros param1 a paramN identificam os par+metros que se deseja passar para a funo.
Cada um destes par+metros passa a ser uma vari"vel local da funo de tipo tipo1 a tipoN e %
iniciali&ado com o valor que foi passado para si no momento da chamada da funo. unes que
no recebem nenhum valor como par+metro devem ser declaradas com a palavra void entre os
par,nteses.
Exemplos de declaraes de par+metros no cabealho das funes!
... *unc1( int var, char var2) //doi" par+metro", um int
//e um char
{
}
... *unc2 (void) //no rece#e nenhum par+metro
{
}
Exemplo de funo e programa em C que a chama!
int func1 (char carac, int inteiro, float flutuante) //declaraco da
funo
{
int outra; //pode!"e declarar outra" vari%vei" a,ui dentro, como
em um trecho
//normal de pro-rama
//e"ta" vari%vei" "o locai" da funo
printf(./c0, carac); //u"o da" vari%vei" rece#ida" como par+metro
printf(./f0, flutuante);
"canf(./d0, 1outra);
printf(./d0, inteiro 2 outra);
return outra; //retorna o valor da vari%vel &outra'
} //fim da funo
void main (void) //pro-rama principal
{
char c1;
float f;
int re"ultado;
int inteiro;
//e"ta vari%vel &inteiro' e3i"te no e"copo da funo
//&main', lo-o no tem nada a ver
//com a vari%vel &inteiro' ,ue 4 criada na funo
//&func1' no momento da pa""a-em
//do" par+metro"
"canf(./d, /c, /f0, 1inteiro, 1c1, 1f); //l5 um n6mero
// inteiro, um caracter e um float
re"ultado 7 func1(c1, inteiro, f); //chama a funo &func1' com o"
//par+metro" na ordem correta
printf(./d0, re"ultado); //imprime re"ultado da funo
}
Observaes!
- main '( tamb%m % uma funo, por%m especial j" que ela representa o ponto de partida
para qualquer programa em C$
- O resultado da funo -func./, no exemplo acima, no precisa necessariamente ser
atribu*do a uma vari"vel 'no caso, -resultado/($ se isto no acontecer o valor de retorno
da funo simplesmente ser" perdido. 0or%m, como a funo foi feita para retornar um
valor inteiro isto deve ser evitado, porque constitui)se em uma m" estruturao e uso da
funo$
- 1odas as vari"veis declaradas dentro do corpo de uma funo so locais a ela, ou seja,
s2 existem enquanto a funo est" sendo executada.
1odas as funes devem ser 3conhecidas4 no local onde forem utili&adas, ou seja, a sua declarao
deve vir antes do uso. Caso no se deseje implementar a funo antes do local onde ela vai ser
utili&ada pode)se escrever um prottipo da seguinte forma!
Tipo de retorno identificador_da_funo (tipo1 param1, tipo2 param2,...,
tipoN paramN);
O prot2tipo deve ser colocado antes da chamada da funo, sinali&ando ento ao compilador que
aquela funo existe e vai ser implementada adiante. 5o nosso exemplo, se quis%ssemos escrever a
funo -func./ depois da funo -main/ dever*amos incluir um prot2tipo de -func./ antes dela.
C67898O:: O prot2tipo no % exatamente igual ao cabealho da funo, ele possui um ponto)e)
v*rgula a mais no final:
Variveis globais:
Em C considera)se como varivel global todas aquelas vari"veis declaradas fora do escopo de
qualquer funo 'inclusive da funo -main/(. #ualquer vari"vel s2 % conhecida ap2s a sua
declarao, logo costuma)se declarar todas as vari"veis globais no in*cio do programa, antes da
implementao das funes que a utili&am.

Exemplo de declarao e uso de vari"veis globais!
int c;
char t;
int func1 (void) //funo ,ue retorna um valor inteiro e no rece#e
// par+metro
{
int t; //e3i"te uma vari%vel t ,ue 4 -lo#al, por4m e"ta
//funciona como uma vari%vel local
if (c87$) //c 4 -lo#al, lo-o pode "er utili9ada dentro da funo
//&func1'
{
c22;
t 7 c:2;
return t; //ne"te ca"o o valor de t retornado 4 o da
//vari%vel local, ;% ,ue defini)e" locai"
//"o#rep)em!"e a defini)e" -lo#ai" no" e"copo" onde
//e3i"tem
}
el"e return $;
}
void main(void)
{
int retorno;
printf(.<ntre com um caracter=0);
"canf(./c0, 1t);
printf(.<ntre com um inteiro=0);
"canf(./d0, 1c); //a" vari%vei" t e c podem "er u"ada" a,ui
//por,ue "o -lo#ai"
retorno 7 func1(); //chama a funo func1 e retorna o valor na
//vari%vel &retorno'
printf(.>n?e"ultado= /d0, retorno);
}

You might also like