1 / 12

Funções (versão C)

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 Criação de um protótipo Definição da função

cybill
Download Presentation

Funções (versão C)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 Criação de um protótipo 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 bibliotecaspara uso com outros programas

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

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

  7. Funções (versão C) Vantagens das funções: Verificação do tipo Código final pequeno Pode estender-se por várias linhas e conter definição de variáveis Vantagens das macros: Permite código independente do tipo 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. Funções (versão C) Vantagens das funções: Verificação do tipo Código final pequeno Pode estender-se por várias linhas e conter definição de variáveis Vantagens das macros: Permite código independente do tipo Rapidez de cálculo

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

  10. Funções (versão C) Funções e variáveis: As variáveis definidas no interior de uma função têm escopo local, ou seja, só existem dentro da função Mesmo as que são passadas no argumento! Nesse caso o valor da variável na chamada à função é copiadopara 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! 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! Normalmente quando se sai de uma função as variáveis locais são destruídas juntamente com os valores que contêm! Na verdade o próprio nome da função pode ser usado como variável

  11. Funções (versão C) Funções e variáveis: As variáveis globais têm escopo global, mas apenas no ficheiro onde estão definidas. 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. 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. 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

More Related