DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais Larissa Camila Papa 1 Funes Parte I Aula 08 Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 2 Funes so as estruturas que permitem ao usurio separar seus programas em blocos.
Se no as tivssemos, os programas teriam que ser curtos e de pequena complexidade.
Para fazermos programas grandes e complexos temos de constru-los bloco a bloco. Funo Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 3 tipo_de_retorno nome_da_funo (declarao_de_parmetros) { corpo_da_funo }
onde: tipo-de-retorno o tipo de varivel que a funo vai retornar. A declarao de parmetros uma lista com a seguinte forma geral: tipo nome1, tipo nome2, ... , tipo nomeN Escopo de uma funo Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 4 O tipo deve ser especificado para cada uma das N variveis de entrada. na declarao de parmetros que informamos ao compilador quais sero as entradas da funo (assim como informamos a sada no tipo-de-retorno).
O corpo da funo a sua alma. nele que as entradas so processadas, sadas so geradas ou outras coisas so feitas. Consideraes Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 5 Comando return O comando return tem a seguinte forma geral: return valor_de_retorno;
Quando se chega a uma declarao return a funo encerrada imediatamente e a funo retorna este valor.
importante lembrar que o valor de retorno fornecido tem que ser compatvel com o tipo de retorno declarado para a funo. Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 6 int Square (int a) { return (a*a); }
int main () { int num; printf ("Entre com um numero: "); scanf ("%d",&num); num=Square(num); printf ("\n\nO seu quadrado vale: %d\n",num); return 0; } Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 7 Escopo de variveis O escopo o conjunto de regras que determinam o uso e a validade de variveis nas diversas partes do programa. Variveis locais; Variveis globais. Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 8 Variveis locais So aquelas que s tm validade dentro do bloco no qual so declaradas.
Podemos declarar variveis dentro de qualquer bloco. Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 9 Variveis locais func1 (...) { int abc,x; ... }
void main () { int a,x,y; for (...) { float a,b,c; ... } ... } Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 10 Variveis globais Variveis globais so declaradas, fora de todas as funes do programa.
Elas so conhecidas e podem ser alteradas por todas as funes do programa. Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 11 Passagem de parmetros por valor Quando chamamos uma funo os parmetros formais da funo copiam os valores dos parmetros que so passados para a funo.
No so alterados os valores que os parmetros tm fora da funo.
So passados para a funo apenas os valores dos parmetros e no os prprios parmetros Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 12 float sqr (float num) { num=num*num; return num; }
void main () { float num,sq; printf ("Entre com um numero: "); scanf ("%f",&num); sq=sqr(num); printf ("\n\nO numero original e: %f\n",num); printf ("O seu quadrado vale: %f\n",sq); } Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 13 Passagem de parmetros por referncia Ocorre quando alteraes nos parmetros formais, dentro da funo, alteram os valores dos parmetros que foram passados para a funo.
Neste tipo de chamada, no se passa para a funo os valores das variveis, mas sim suas referncias. Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 14 Quando queremos alterar as variveis que so passadas para uma funo, ns podemos declarar seus parmetros formais como sendo ponteiros.
Os ponteiros so a "referncia" que precisamos para poder alterar a varivel fora da funo.
Quando usarmos a funo, teremos de lembrar de colocar um & na frente das variveis que estivermos passando para a funo. Passagem de parmetros por referncia Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 15 Passagem de parmetros por referncia void Swap (int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; }
void main (void){ int num1,num2; num1=100; num2=200; Swap (&num1,&num2); printf ("\n\nEles agora valem %d %d\n",num1,num2); } Universidade Federal de Ouro Preto DECEA Departamento de Cincias Exatas e Aplicadas Joo Monlevade Minas Gerais 16 Referncias Rudek, M.; Carneiro, L. G.; Pereira. A. Z.. Apostila de tcnicas de programao. Pontifcia Universidade Catlica do Paran, 2002.
Curso de Programao em C. Apostila desenvolvida pelo professor Renato C. M.. UFMG.