Funções em C Prof. Fabiano Utiyama Funções em C • Subprogramas são estabelecidos em linguagem C através da construção de funções; • A sub-programação é uma ferramenta que contribui com a tarefa de programar: – Favorecendo a estruturação do programa; – Facilitando a correção do programa; – Facilitando a modificação do programa; – Melhorando a legibilidade do programa; – Divisão do problema a ser resolvido em partes (modularização); Funções em C • Com a modularização de um programa, as partes que o compõem podem ser desenvolvidas por diferentes equipes; • Para isto deve-se estabelecer antes padrões de programação; • Deve-se definir também que dependência haverá entre os vários subprogramas; Funções em C • As funções dividem um programa em tarefas menores que, juntas, cumprem o objetivo inicial do programa; • Quando um determinado conjunto de instruções tiver que ser repetido dentro da solução de um problema, é conveniente colocá-lo dentro de uma única função; – Para se criar uma função é necessário: – Um identificador (o nome da função); – Uma lista de parâmetros (que possibilitam a comunicação com outras funções); – E as ações que serão executadas por esta função, que formam o corpo da mesma; Funções em C • As funções declaradas em C podem retornar um valor. Este valor ficará associado ao identificador da função e normalmente é resultante de um processamento realizado dentro da mesma; • As funções em C podem apresentar parâmetros. Estes são utilizados para que se possa dar um caráter mais genérico às mesmas, permitindo que sejam descritos os formatos dos argumentos de entrada das mesmas; • Declaração de uma função: • Uma função deve ser declarada antes de ser utilizada, como acontece com as variáveis; • Isto deve ser feito para fornecer ao compilador informações sobre o tipo da função e seus parâmetros; Funções em C • Na declaração da função deve constar o tipo da mesma, que deve ser o tipo do valor que ela deve retornar; • O comando return é utilizado para retornar um valor ao ponto onde uma função foi chamada (utilizada); Funções em C • Sintaxe: tipo f1 (declaração de argumentos); main () { a=f1(..); } Uso da função Declaração do protótipo da função Declaração da função tipo f1 (declaração dos parâmetros recebidos) { declaração das variáveis locais; comandos; Valor retornado pela função f1, que neste return(x); caso seria atribuído a variável a } Funções em C • Exemplo: função para calcular a soma; #include <stdio.h> #include <conio.h> int soma(int a, int b); main() { int a,b,result; printf("Digite o valor de a: "); scanf("%d",&a); printf("Digite o valor de b: "); scanf("%d",&b); result = soma(a,b); printf("%d",result); getch(); } ... int soma(int a, int b) { int r; r = a + b; return(r); } Funções em C • Outro exemplo de aplicação: • Fazer um algoritmo para calcular a combinação (análise combinatória) de N elementos tomados P a P. Sabe-se que isto é possível através da seguinte expressão n Cp= n! p! (n-p)! com n p Funções em C • A solução deste problema sem o uso de uma função teria N e P como argumentos de entrada e C como argumento de saída; • Seriam necessários os seguintes passos: • Calcular o fatorial de N (armazenar em uma variável); • Calcular o fatorial de P (armazenar em outra variável); • Calcular o fatorial de N-P (armazenar em outra variável); • E finalmente calcular a expressão FatN/(FatP*FatNP); Funções em C • Note que nesta solução teríamos que descrever várias vezes uma mesma seqüência de ações que são utilizadas para o cálculo do fatorial de um número; • Esta seqüência tem um comportamento padrão; •A seguir, será descrita uma solução mais elegante, que utiliza uma função que calcula o fatorial de um número inteiro dado como argumento e retorna este valor; Funções em C • Exemplo: função para calcular o fatorial de um número inteiro; #include <stdio.h> #include <stdlib.h> #include <conio.h> int fatorial (int num); ... int fatorial (int num) { int i, fat=1; for (i=1;i<=num;i++) fat=fat*i; return (fat); } main() { int i, n, p; float combinacao; printf ("Digite um valor para n: "); scanf ("%d",&n); printf ("Digite um valor para p: "); scanf ("%d",&p); combinacao=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf ("\n\nValor da combinacao: %f\n\n", combinacao); system ("PAUSE"); } ... Funções em C • Exercícios: 1. Construa uma função que calcule a soma de dois valores inteiros e retorne o valor obtido. 2. Construa uma função que receba como argumento o valor do raio de uma circunferência e retorne o valor da área da mesma. 3. Construa uma função que receba como argumento de entrada uma cadeia de 20 caracteres e um caractere e retorne o número de vezes que este caractere aparece na cadeia.