Tópicos Introdução Como funcionam as funções Declaração de funções Exemplo de funções 1
Introdução As funções, são unidades de código desenhadas para cumprir uma determinada tarefa. Até agora, já utilizamos algumas funções printf(); - Permite escrever um inteiro, um real, um carácter ou uma cadeia de caracteres no ecrã. putchar(); - Permite imprimir um carácter no ecrã. puts(); - Permite escrever uma cadeia de caracteres no ecrã. scanf(); - Permite ler do teclado um inteiro, um real, um carácter ou uma cadeia de caracteres. getchar(); - Permite ler um carácter do teclado gets(); - Permite ler uma cadeia de caracteres do teclado exit(); - Permite terminar a execução de um programa log(); - Calcula o logaritmo decimal de um número sin(); - Calcula o seno de um número qualquer etc 2
Como funciona uma função O código da função só é executado quando a função é invocada algures no programa que está ligado a função. Sempre que a função é invocada, o programa que a invocou fica suspenso temporariamente, em seguida são executadas todas as instruções presentes no corpo da função. Uma vez terminada a função, o controlo de execução do programa volta no ponto em que essa função foi invocada O programa que invoca uma função pode enviar dados para função. Esses dados são recebidos pela função e armazenados em variáveis locais, essas variáveis locais chamam-se parâmetros das funções. Depois da função terminar o seu funcionamento, a função pode devolver um valor para o programa que a invocou. 3
Declaração de funções Estrutura de um programa em C (lembram-se?) Directivas de Pré-Processamento Declarações Globais int main(void) Declarações das funções Definições Locais Instruções Exemplo de um programa com uma função para o calculo da área de um circulo #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.14159 int main() float Area; int Raio; printf( insira o raio: ); scanf( %d,&raio); Area = calcula_area_circulo(raio); printf( %.3f,Area); exit(0); 4
#include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.14159 Declaração de funções Declaração de funções As variáveis Raio e raio são completamente Independentes e até podem ter o mesmo nome int main() float Area; int Raio; printf( insira o raio: ); scanf( %d,&raio); Area = calcula_area_circulo(raio); printf( %.3f,Area); exit(0); Operação de atribuição de valores entre variáveis Raio raio Operação de atribuição de valores entre variáveis Area area 5
#include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.14159 int main() Declaração de funções A variável area apenas é visível dentro da função calcula_area_circulo A instrução return permite terminar a execução da função e voltar ao programa que a invocou float Area; int Raio; printf( insira o raio: ); scanf( %d,&raio); Area = calcula_area_circulo(raio); printf( %.3f,Area); exit(0); Operação de atribuição de valores entre variáveis Area area 6
Declaração de funções tipo nome_da_função(declaração dos parâmetros de entrada) declaração das variáveis locais; intruções; return (valor); Parâmetros de entrada da função Volta para o programa que chamou essa função Variáveis que só são visíveis pela função Obedece a regra semelhante a regra de atribuição de nomes às variáveis O tipo de retorno pode ser int, float, double, char ou void 7
Quais a razões que nos levam a utilizar ou escrever as funções? Reduzir a complexidade de um programa Evitar a repetição de código dentro de um programa As funções normalmente devolvem um valor através da instrução return. A instrução return não é obrigatória nas funções As funções que não devolvem qualquer valor são chamas procedimentos ou procedures.(estas funções são do tipo void) 8
Exemplo de funções standard da linguagem C Essas são funções predefinidas em linguagem C pow() putchar() exit() printf() scanf() sin() float pow(float x, float y) int putchar(int ch) void exit(int code) int printf(char *f,... ) int scanf(char *f,...) double sin(double x) 9
Conceito de procedimentos e funções Exemplo de funções Essas são funções são criadas pelo programador Objectivo: calcular a área do circulo Parâmetros de entrada: valor do raio A função devolve o valor da área do circulo float calcula_area_triangulo(float base, float altura) return base*altura/2; Objectivo: calcular a área do triangulo Parâmetros de entrada: valor da base e o valor da altura. A função devolve o valor da área do triangulo void factorial(int x) int i,x,n=1; for( i = 1 ; i <= x ; i++ ) n = n*i; printf("%d",n); return; Objectivo: calcular o factorial de um número inteiro positivo. Parâmetros de entrada: um valor inteiro. A função não devolve nada (void) Então é um procedimento 10
#include <stdio.h> #include <stdlib.h> ; void factorial(int x); Onde escrever as funções? As funções podem ser colocadas em qualquer local de um ficheiro desde que se colocam os protótipos no inicio do ficheiro int main() int raio = 1; int n = 3; printf( A. Circulo: %.3f\n, calcula_area_circulo(raio)); factorial(n); exit(0); void factorial(int x) int i,x,n=1; for( i = 1 ; i <= x ; i++ ) n = n*i; printf( factorial de %d é : %d\n",x,n); return; 11