A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas.

Apresentações semelhantes


Apresentação em tema: "1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas."— Transcrição da apresentação:

1 1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas 1.Criação de um protótipo 2.Definição da função Tipicamente os protótipos vão parar aos header files (*.h, *.hxx) enquanto as definições vão parar aos ficheiros de código (*.c, *.cpp, *.cxx). Quando as funções são frequentemente utilizadas agrupam-se em bibliotecas para uso com outros programas

2 2 Funções (versão C) Para além dos protótipos os header files contêm também definições globais como instruções de pré-processador (#include, #define, etc.). A definição dos header files é uma fase importante do processo de criação de uma biblioteca. Vejamos um primeiro exemplo de criação de funções:

3 3 Funções (versão C) Para além dos protótipos os header files contêm também definições globais como instruções de pré-processador (#include, #define, etc.). A definição dos header files é uma fase importante do processo de criação de uma biblioteca. Uma função em C e C++ só pode retornar um valor (então e os vectores?)

4 4 Funções (versão C) /************************** Programa que calcula o Programa que calcula o quadrado de um numero. quadrado de um numero. (versao com funcao) (versao com funcao) Autor: J. Seixas 2004 Autor: J. Seixas 2004 ***************************/ #include #include double quadrado(double ); /* prototipo */ int main(){ double x; double x; printf("Introduza um numero: "); /* mostra a frase no ecra */ printf("Introduza um numero: "); /* mostra a frase no ecra */ scanf("%lf",&x); /* recebe o valor para x */ scanf("%lf",&x); /* recebe o valor para x */ printf("Valor do seu quadrado e: %lf\n",quadrado(x)); printf("Valor do seu quadrado e: %lf\n",quadrado(x)); return(0); return(0);} double quadrado(double x) { /* definicao */ return (x*x); /* retorna o valor do quadrado*/ return (x*x); /* retorna o valor do quadrado*/}

5 5 Funções (versão C) Problema das funções em C: não há overloading ou seja, não podemos criar funções com o mesmo nome para tipos diferentes. Uma possibilidade em C (e em C++) é criar macros usando as funcionalidades do pré-processador. Isso permite com o mesmo nome ter um código válido para tipos diferentes. A macro utiliza a directiva #define do pré-processador Exemplo simples: #define N 25 Repare-se que não interessa o tipo de N!

6 6 Funções (versão C) /************************** Programa que calcula o Programa que calcula o quadrado de um numero. quadrado de um numero. (versao com macro) (versao com macro) Autor: J. Seixas 2004 Autor: J. Seixas 2004 ***************************/ #include #include #define QUADRADO( a ) ( a * a ) /* macro */ int main(){ double x; double x; printf("Introduza um numero: "); printf("Introduza um numero: "); scanf("%lf",&x); scanf("%lf",&x);/* uso da macro QUADRADO uso da macro QUADRADO*/ printf("Valor do seu quadrado e: %lf\n",QUADRADO(x)); printf("Valor do seu quadrado e: %lf\n",QUADRADO(x)); return(0); return(0);}

7 7 Funções (versão C) Vantagens das funções: 1. Verificação do tipo 2.Código final pequeno 3.Pode estender-se por várias linhas e conter definição de variáveis Vantagens das macros: 1.Permite código independente do tipo 2.Rapidez de cálculo Uma macro particularmente útil: #define delta(i, j) {((i)-(j))?0:1} Implementa simultaneamente o delta de Dirac e o delta de Kronecker!

8 8 Funções (versão C) Vantagens das funções: 1. Verificação do tipo 2.Código final pequeno 3.Pode estender-se por várias linhas e conter definição de variáveis Vantagens das macros: 1.Permite código independente do tipo 2.Rapidez de cálculo

9 9 Funções (versão C) Problemas com as macros: #define QUAD(x) x * x #define DUP(x) x + x A que é igual QUAD(DUP(3))? Resposta: 36? Não: 3+3*3+3 = 15 Formulação correcta: #define QUAD(x) (x) * (x) #define DUP(x) (x) + (x)

10 10 Funções (versão C) Funções e variáveis: 1. As variáveis definidas no interior de uma função têm escopo local, ou seja, só existem dentro da função 2. Mesmo as que são passadas no argumento! Nesse caso o valor da variável na chamada à função é copiado para a variável usada na função. As eventuais mudanças só existem no interior da função e não se manifestam no exterior dela! 3. Variáveis definidas fora de todas as funções têm escopo global, ou seja, são conhecidas por todas as funções e modificáveis por todas as funções! 4. Normalmente quando se sai de uma função as variáveis locais são destruídas juntamente com os valores que contêm! 5. Na verdade o próprio nome da função pode ser usado como variável

11 11 Funções (versão C) Funções e variáveis: 5. As variáveis globais têm escopo global, mas apenas no ficheiro onde estão definidas. 6. O nome das funções, sendo por definição declarado fora de todas as funções, é global, mas apenas no ficheiro onde estão definidas! Solução: novos qualificativos static permite a uma variável local de uma função manter o seu valor quando a função termina. Quando aplicado a funções obriga o seu nome a ter escopo local ao ficheiro. static permite a uma variável local de uma função manter o seu valor quando a função termina. Quando aplicado a funções obriga o seu nome a ter escopo local ao ficheiro. extern permite usar o nome de uma função ou variável antes da sua definição. Na prática permite que a função ou variável possa ser definida num outro ficheiro. extern permite usar o nome de uma função ou variável antes da sua definição. Na prática permite que a função ou variável possa ser definida num outro ficheiro.

12 12 Funções (versão C) Funções e variáveis: Problema das variáveis constantes: a maneira mais simples de definir uma constante é usar a directiva #define do pré- processador. O problema é que o #define uma vez introduzido afecta todo o código abaixo da definição. Não tem escopo local nas funções. Solução: mais um qualificativo const: significa que a variável a que está aplicado é constante, ou seja, que só pode ser inicializada uma vez. Mas o escopo da variável continua o mesmo


Carregar ppt "1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas."

Apresentações semelhantes


Anúncios Google