Escolar Documentos
Profissional Documentos
Cultura Documentos
1 – FUNÇÕES, OUTRAS
DICAS
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
4
LPG – FUNÇÕES E ESCOPO DE
VARIÁVEIS
#include <stdio.h>
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)
void fna(void); // poderia estar em um include, posso chamar de qualquer lugar fna
void fna(void)
{
...
}
8
LPG – FUNÇÕES – STATIC (LOCAL)
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