Você está na página 1de 10

AULA 3.

1 – FUNÇÕES, OUTRAS
DICAS

Rafael Alceste Berri – rafael.berri@udesc.br

1
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

• Escopo
• conjunto de regras que determinam a utilização de uma variável em um programa
• escopo de variáveis em três tipos:
• variáveis locais
• parâmetros formais
• variáveis globais

2
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

• Variáveis locais:
• São declaradas dentro do bloco, ou melhor, dentro de um escopo {}.
• Não podem ser usadas ou modificadas por outras funções.
• Somente existem enquanto a função onde foi declarada estiver sendo executada.
• Subescopos podem acessar as variáveis de um escopo mais antigo.
• Parâmetros formais:
• Os parâmetros formais de uma função também são variáveis locais da função (mesmo
escopo!), somente recebem um valor de inicialização a mais.

3
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

• Variáveis Globais (escopo inicial):


• São declaradas fora de todos os blocos de funções.
• São acessíveis em qualquer parte do fonte c onde está declarado, ou seja, podem ser
usadas e modificadas por todas as outras funções.
• Existem durante toda a execução do programa.

4
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

#include <stdio.h>

//declaração de variáveis globais


void funcao1(variáveis locais de
parâmetros)
int main(void) {
{ // decl. das variáveis locais da função1
//decl. das variáveis locais da main()
return;
return(0); }
}

5
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

• Perguntas interessantes:
• Podem existir variáveis locais e globais com o mesmo nome?
• Supondo que exista uma variável local e uma global com o mesmo nome, qual
prevalece?

6
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS

• Perguntas interessantes:
• Podem existir variáveis locais e globais com o mesmo nome?
• Sim. São variáveis diferentes (ocupam locais da memória diferentes!).
• Nota: Não use variáveis globais com o mesmo nome de uma local!
• Supondo que exista uma variável local e uma global com o mesmo nome, qual
prevalece?
• Prevalece sempre a variável local, ou melhor, a variável declarada mais próxima do
escopo atual na hierarquia.

7
LPG – FUNÇÕES (ESCOPO)

• Por padrão o escopo de uma função é global!


• Uma função com protótipo pode ser acessada de qualquer lugar!

void fna(void); // poderia estar em um include, posso chamar de qualquer lugar fna
void fna(void)
{
...
}

8
LPG – FUNÇÕES – STATIC (LOCAL)

static void fna(void); ...


static void fnb(uint8_t foo);
static void fna(void)
void adc_Process(void) {
{ ...
... }
fna();
... static void fnb(uint8_t foo)
fnb(3); {
} ...
}

fna e fnb podem ser chamadas somente no arquivo onde foram declarados (arquivo .c)
9
LPG – FUNÇÕES COM #DEFINE

• Pode-se criar funções simples com #define. Funções #define não são compiladas propriamente
ditas... O código é trocado antes da compilação!
#define MAX(a, b) ((a)>(b)? (a) : (b))
#define f(x) x*x // x ao quadrado
#include<stdio.h>

int main()
{
printf(“O quadrado de 2 é %d\n", f(2));
printf(“O valor maximo entre 2 e 5 é:%d\n”, MAX(2,5));
return 0;
}

10

Você também pode gostar