Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Procedimentos e Funes
01/04/09 09:42
Curso C - IC/UNICAMP
Funes
Roteiro: Funes
Declarao e chamada
>
Curso C - IC/UNICAMP
Funes
Funes: So trechos de cdigo fora do programa principal Implementam um subalgoritmo do programa So utilizadas (chamadas) em diversos pontos do programa
01/04/09 09:42
>
Curso C - IC/UNICAMP
Funes
Vantagens:
Organiza o cdigo:
Cada funo um algoritmo Dividir um programa complicado em vrias funes simples
>
Curso C - IC/UNICAMP
Funes
Exemplo: comparar a mdia das duas melhores
notas do aluno A e do aluno B
Algoritmo:
Ler 3 notas dos alunos A e B Calcular a mdia de A Calcular a mdia de B Comparar as mdias Imprimir resultados
01/04/09 09:42 5
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ... Ler 3 notas dos alunos A e B Calcular a mdia de A Calcular a mdia de B Comparar as mdias Imprimir resultados
01/04/09 09:42
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ... Ler 3 notas dos alunos A e B Calcular a mdia de A Repetio do Repetio do mesmo algoritmo mesmo algoritmo Calcular a mdia de B Comparar as mdias Imprimir resultados
01/04/09 09:42
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ... Ler 3 notas dos alunos A e B Calcular a mdia de A Repetio do Repetio do mesmo algoritmo mesmo algoritmo Calcular a mdia de B Comparar as mdias Imprimir resultados
Soluo: Uma funo genrica para calcular a mdia Soluo: Uma funo genrica para calcular a mdia
01/04/09 09:42 8
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ...
Ler 3 notas dos alunos A e B Calcular a mdia de A Calcular a mdia de B Comparar as mdias Imprimir resultados
Funcoes\ ota01\ ota01.vcproj
01/04/09 09:42
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ...
Ler 3 notas dos alunos A e B Calcular a mdia de A Calcular a mdia de B Comparar as mdias Imprimir resultados
Programa principal Programa principal mistura vrios mistura vrios algoritmos: algoritmos:
Leitura Leitura Clculo de mdia Clculo de mdia Comparao Comparao Impresso Impresso
01/04/09 09:42
10
>
Curso C - IC/UNICAMP
Funes
Alguns problemas no exemplo ...
Ler 3 notas dos alunos A e B Calcular a mdia de A Calcular a mdia de B Comparar as mdias Imprimir resultados
Programa principal Programa principal mistura vrios mistura vrios algoritmos: algoritmos:
Leitura Leitura Clculo de mdia Clculo de mdia Comparao Comparao Impresso Impresso
Soluo: Uma funo para cada algoritmo Soluo: Uma funo para cada algoritmo
01/04/09 09:42 11
>
Curso C - IC/UNICAMP
Funes
Chamada de funo:
1. Interrupo do programa principal 2. Passagem de dados de entrada para a funo 3. Execuo do cdigo da funo 4. Retorno do resultado 5. Continuao do programa principal
01/04/09 09:42 Programa principal Instrues C
12
>
Curso C - IC/UNICAMP
Funes
Chamada de funo:
1. Interrupo do programa principal 2. Passagem de dados de entrada para a funo 3. Execuo do cdigo da funo 4. Retorno do resultado 5. Continuao do programa principal
01/04/09 09:42 Programa principal Instrues C
chamada
13
>
Curso C - IC/UNICAMP
Funes
Chamada de funo:
1. Interrupo do programa principal 2. Passagem de dados de entrada para a funo 3. Execuo do cdigo da funo 4. Retorno do resultado 5. Continuao do programa principal
01/04/09 09:42 Programa principal Dados de entrada Instrues C Funo chamada
14
>
Curso C - IC/UNICAMP
Funes
Chamada de funo:
1. Interrupo do programa principal 2. Passagem de dados de entrada para a funo 3. Execuo do cdigo da funo 4. Retorno do resultado 5. Continuao do programa principal
01/04/09 09:42 Programa principal Dados de entrada Instrues C Funo chamada Resultado
15
>
Curso C - IC/UNICAMP
Funes
Chamada de funo:
1. Interrupo do programa principal 2. Passagem de dados de entrada para a funo 3. Execuo do cdigo da funo 4. Retorno do resultado 5. Continuao do programa principal
01/04/09 09:42 Programa principal Dados de entrada Instrues C Funo chamada Resultado
Instrues C
16
>
Curso C - IC/UNICAMP
Funes
Chamada de funo: Para chamar uma funo: Para chamar uma funo:
sentena(s); sentena(s); ... ... resultado = nome(entr11, entr22, ...); resultado = nome(entr , entr , ...);
>
Curso C - IC/UNICAMP
Funes
Chamada de funo: Para chamar uma funo: Para chamar uma funo:
sentena(s); sentena(s); ... ... resultado = nome(entr11, entr22, ...); resultado = nome(entr , entr , ...);
Nome da funo
18
>
Curso C - IC/UNICAMP
Funes
Chamada de funo: Para chamar uma funo: Para chamar uma funo:
sentena(s); sentena(s); Valores de entrada ... (parmetros) ... resultado = nome(entr11, entr22, ...); resultado = nome(entr , entr , ...);
Nome da funo
19
>
Curso C - IC/UNICAMP
Funes
Chamada de funo: Para chamar uma funo: Para chamar uma funo:
sentena(s); sentena(s); Valores de entrada ... (parmetros) ... resultado = nome(entr11, entr22, ...); resultado = nome(entr , entr , ...); Resultado ... ... sentena(s); sentena(s);
01/04/09 09:42
Nome da funo
20
>
Curso C - IC/UNICAMP
Funcoes\Chamada01\Chamada01.vcproj
21
>
Curso C - IC/UNICAMP
Funo
>
Curso C - IC/UNICAMP
Funo
>
Curso C - IC/UNICAMP
Funo Resultado
>
Curso C - IC/UNICAMP
Funo Resultado
>
Curso C - IC/UNICAMP
Funes
Definio de funes:
tipo nome(parmetros) { tipo nome(parmetros) { declaraes de variveis declaraes de variveis ... ... instrues; instrues; ... ... return valor; return valor; } }
01/04/09 09:42 26
>
Curso C - IC/UNICAMP
Funes
Nome: Identifica o trecho de cdigo da funo O nome usado na chamada Formao igual a nome de varivel
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes instrues; instrues; return valor; return valor; } } 27
>
Nome da funo
01/04/09 09:42
Curso C - IC/UNICAMP
Funes
Nome:
Nome da funo: media
... media(...) { ... media(...) { Declaraes Declaraes Instrues Instrues ... ... } } Corpo da funo
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes instrues; instrues; return valor; return valor; } } 28
>
01/04/09 09:42
Curso C - IC/UNICAMP
Funes
Parmetros:
Definir dados de entrada. So variveis locais, declaradas e atribudas na chamada da funo. Programa principal Lista de tipos e nomes. Dados de entrada
Instrues C Funo
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes instrues; instrues; return valor; return valor; } } 01/04/09 09:42
chamada Resultado
Instrues C
29
>
Curso C - IC/UNICAMP
Funes
Parmetros:
Lista de 3 parmetros: Variveis locais da funo: float nota1, nota2 e nota3 ... media(float nota1, float nota2, ... media(float nota1, float nota2, float nota3) { float nota3) { Declaraes Declaraes tipo nome(parmetros) { tipo nome(parmetros) { Instrues Instrues declaraes declaraes ... ... instrues; instrues; } return valor; } return valor;
01/04/09 09:42
} }
30
>
Curso C - IC/UNICAMP
Funes
Parmetros na chamada de funo: Ao chamar a funo, o valor de cada parmetro deve ser informado Regras:
Um valor para cada parmetro Valores compatveis com o tipo do parmetro Valores na mesma ordem que na declarao
Chamada de funo: Chamada de funo: nome(parametro1, parametro2, ...) nome(parametro1, parametro2, ...)
01/04/09 09:42 31
>
Curso C - IC/UNICAMP
Funes
Parmetros na chamada de funo:
float resultado; float resultado; resultado = potencia(2.0f, 5.0f); resultado = potencia(2.0f, 5.0f); Quando a funo executa
Declarao da funo potencia:
... potencia(float base, float expoente) { ... potencia(float base, float expoente) { ... ... // Corpo da funo // Corpo da funo ... ... } } 01/04/09 09:42 32
>
Curso C - IC/UNICAMP
Funes
Parmetros na chamada de funo:
float resultado; float resultado; resultado = potencia(2.0f, 5.0f); resultado = potencia(2.0f, 5.0f); Quando a funo executa base = 2.0f
... potencia(float base, float expoente) { ... potencia(float base, float expoente) { ... ... // Corpo da funo // Corpo da funo ... ... } } 01/04/09 09:42 33
>
Curso C - IC/UNICAMP
Funes
Parmetros na chamada de funo:
float resultado; float resultado; resultado = potencia(2.0f, 5.0f); resultado = potencia(2.0f, 5.0f); Quando a funo executa base = 2.0f expoente = 5.0f
... potencia(float base, float expoente) { ... potencia(float base, float expoente) { ... ... // Corpo da funo // Corpo da funo ... ... } } 01/04/09 09:42 34
>
Curso C - IC/UNICAMP
Funes
Parmetros na chamada de funo: Tipos: int, long int, char, float, etc So variveis locais declaradas no corpo da funo e que vo ser inicializadas com cpias dos valores correspondentes s expresses na chamada da funo!
... maior_elemento(char c, int tamanho) { ... maior_elemento(char c, int tamanho) { // Corpo da funo // Corpo da funo } }
01/04/09 09:42 35
>
Curso C - IC/UNICAMP
Funes
Funo sem parmetros:
Lista vazia de parmetros ...funcaoSemParametros(void) ...funcaoSemParametros(void) { { Declaraes Declaraes Instrues tipo nome(void) { Instrues tipo nome(void) { ... declaraes ... declaraes instrues; } instrues; } de funo: Chamada de funo: Chamada
funcaoSemParametros() funcaoSemParametros()
01/04/09 09:42
} }
>
Curso C - IC/UNICAMP
Funes
Corpo da funo: Cdigo para o algoritmo da funo. Declara variveis locais, alm dos parmetros. Parmetros so variveis locais, j prdeclaradas.
01/04/09 09:42
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes instrues; instrues; return valor; return valor; } } 37
>
Curso C - IC/UNICAMP
Funes
Corpo da funo:
... media(float nota1, float nota2, float nota3) { ... media(float nota1, float nota2, float nota3) { float media; float media; if ((nota1 <= nota2) && (nota1 <= nota3)) { if ((nota1 <= nota2) && (nota1 <= nota3)) { media = (nota2 + nota3) / 2.0f; media = (nota2 + nota3) / 2.0f; } else if ((nota2 <= nota1) && (nota2 <= nota3)) { } else if ((nota2 <= nota1) && (nota2 <= nota3)) { media = (nota1 + nota3) / 2.0f; media = (nota1 + nota3) / 2.0f; } else { } else { media = (nota1 + nota2) / 2.0f; media = (nota1 + nota2) / 2.0f; } } ... ... } }
01/04/09 09:42 38
>
Curso C - IC/UNICAMP
Funes
Valor de retorno: Tipo da funo:
Indica o domnio do resultado da funo Qualquer tipo vlido para variveis
Programa principal Dados de entrada
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes Tipo da instrues; instrues; funo return valor; return valor; } }
01/04/09 09:42
Instrues C
39
>
Curso C - IC/UNICAMP
Funes
Valor de retorno:
Comando return Termina a execuo da funo. Define o resultado (valor de retorno). Deve ser compatvel com o tipo da funo.
Programa principal
tipo nome(parmetros) { tipo nome(parmetros) { declaraes declaraes instrues; Valor do instrues; return valor; return valor; resultado } }
01/04/09 09:42
Instrues C
40
>
Curso C - IC/UNICAMP
Funes
Valor de retorno:
float mediaMelhoresNotas(float nota1, float nota2, float mediaMelhoresNotas(float nota1, float nota2, float nota3) { float nota3) { float media; float media; if ((nota1 <= nota2) && (nota1 <= nota3)) { if ((nota1 <= nota2) && (nota1 <= nota3)) { media = (nota2 + nota3) / 2.0f; media = (nota2 + nota3) / 2.0f; } else if ((nota2 <= nota1) && (nota1 <= nota3)){ } else if ((nota2 <= nota1) && (nota1 <= nota3)){ media = (nota1 + nota3) / 2.0f; media = (nota1 + nota3) / 2.0f; } else { } else { media = (nota1 + nota2) / 2.0f; media = (nota1 + nota2) / 2.0f; } } return media; return media; } }
01/04/09 09:42 41
>
Curso C - IC/UNICAMP
Funes
Funo sem valor de retorno:
void comparaNotas(float mediaA, float mediaB) { void comparaNotas(float mediaA, float mediaB) { if (mediaA > mediaB) { if (mediaA > mediaB) { printf("Aluno A"); printf("Aluno A"); } else if (mediaA < mediaB) { } else if (mediaA < mediaB) { printf("Aluno B"); printf("Aluno B"); } else { } else { printf(Alunos A e B"); printf(Alunos A e B"); } } return; return; } }
>
Curso C - IC/UNICAMP
Funes
Exemplo completo: programa principal
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) { float notaA1, notaA2, notaA3, mediaA; float notaA1, notaA2, notaA3, mediaA; float notaB1, notaB2, notaB3, mediaB; float notaB1, notaB2, notaB3, mediaB; scanf("%f %f %f", ¬aA1, ¬aA2, ¬aA3); scanf("%f %f %f", ¬aA1, ¬aA2, ¬aA3); scanf("%f %f %f", ¬aB1, ¬aB2, ¬aB3); scanf("%f %f %f", ¬aB1, ¬aB2, ¬aB3); mediaA = mediaMelhoresNotas(notaA1, notaA2, notaA3); mediaA = mediaMelhoresNotas(notaA1, notaA2, notaA3); mediaB = mediaMelhoresNotas(notaB1, notaB2, notaB3); mediaB = mediaMelhoresNotas(notaB1, notaB2, notaB3); comparaNotas(mediaA, mediaB); comparaNotas(mediaA, mediaB); return 0; return 0; } }
01/04/09 09:42
>
Funes
Funes importantes
01/04/09 09:42
44
Curso C - IC/UNICAMP
Funes importantes
Funo main: Contm o programa principal Vrias declaraes possveis:
void main(void) { ... } int main() { ... } int main(int argc, char *argv[])
01/04/09 09:42
45
>
Curso C - IC/UNICAMP
Funes importantes
Leitura e Escrita:
Ler dados do usurio e escrever na tela #include <stdlib.h> Vrias funes disponveis:
scanf, printf, getchar, putchar, gets, puts, ...
Exemplo:
prinft("Resultado: %d", valor); scanf("%d %d", &linhas, &colunas);
01/04/09 09:42
46
>
Curso C - IC/UNICAMP
Funes importantes
Manipulao de arquivos:
Ler e escrever dados em arquivos ou fluxos de dados. #include <stdio.h> Vrias funes disponveis:
fopen, fclose, fscanf, fprintf, rewind, fflush, fputc, fputs, fgetc, fgets, ftell, fseek, etc...
01/04/09 09:42 47
>
Curso C - IC/UNICAMP
Funes importantes
Matemticas:
Realizar operaes matemticas. #include <math.h> Vrias funes disponveis:
sqrt,sqr, pow, exp, log, log10 sin, asen, senh, cos, acos, cosh, tan, atan, atan2, tanh floor, ceil, abs
01/04/09 09:42
48
>
Curso C - IC/UNICAMP
Funes importantes
Texto e caracteres:
Modificar texto (vetores de caracteres). #include <string.h> Vrias funes disponveis:
strcat, strdup, strlen, strcmp, strcpy, strstr
01/04/09 09:42
49
>
Funes
Exemplos de Funes
01/04/09 09:42
50
Curso C - IC/UNICAMP
Exemplos de Funes
Matemtica:
float potencia(float base, int expoente) { float resultado = 1.0; int i; for (i = 0; i < expoente; i++) { resultado = resultado * base; } return resultado; }
Funcoes\Potencia01\Potencia01.vcproj Funcoes\Potencia02\Potencia02.vcproj
01/04/09 09:42 51
>
Curso C - IC/UNICAMP
Exemplos de Funes
Exemplo: Leitura de dados
int le_numero(int min, int max) { int leitura; scanf("%d", &leitura); while ((leitura < min) || (leitura > max)) { printf(Digite entre %1d e %1d)\n", min, max); printf("Digite novamente: "); scanf("%d", &leitura); } return leitura; }
Funcoes\Entrada01\Entrada01.vcproj
01/04/09 09:42 52
>
Curso C - IC/UNICAMP
Exemplos de Funes
Funo para medir tempo:
#include <time.h> int main(int argc, char argv[]) { int fim, inicio = clock(); int i; for (i = 0; i < 20000; i++) { printf("Um texto para imprimir... %d\n", i); } fim = clock(); printf("Tempo necessrio: %d\n", fim - inicio); return 0; }
01/04/09 09:42 Funcoes\Time01\Time01.vcproj 53
>
Curso C - IC/UNICAMP
Exemplos de Funes
Organizao de cdigo:
Ruim:
char opcao; scanf(%c, &opcao); if (opcao == P) { // Cdigo para calcular raizes de polinmios // ... } else if (opcao == M) {
// Cdigo para calcular determinantes de matrizes
>
Curso C - IC/UNICAMP
Exemplos de Funes
Organizao de cdigo:
void resolver_polinimio(void) { // Cdigo ... } void calcular_determinante(void) { // Cdigo ... } void derivar_funcao(void) { // Cdigo ... scanf(%c, &opcao); } if (opcao == P) { resolver_polinomio(); } else if (opcao == M) { calcular_determinante(); } else if (opcao == D) { derivar_funcao(); } 01/04/09 09:42 55 }
>
Funes
01/04/09 09:42
56
Curso C - IC/UNICAMP
Variveis
Tempo de vida: Tempo que o valor da varivel permanece na memria:
do incio at final do programa, ou da chamada at final da funo
01/04/09 09:42
57
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
Variveis declaradas localmente em uma funo:
Tempo de vida: durante a execuo da funo Durante a execuo a varivel visvel, acessvel Durante a execuo est associada posies de memria Em duas execues, ocupam posies de memria diferentes
{ int v = 0; ... }
01/04/09 09:42 58
Vida da varivel v
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida: Declarao dentro do corpo da funo
Visibilidade apenas na funo
int funcao(void) { int v = 0; ... } int main(void) { ... a(); }
01/04/09 09:42 59
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida: Declarao dentro do corpo da funo
Visibilidade apenas na funo
int funcao(void) { int v = 0; ... } int main(void) { ... a(); }
01/04/09 09:42 60
Visibilidade da varivel v
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida: Declarao dentro do corpo da funo
Visibilidade apenas na funo
int funcao(void) { int v = 0; ... } int main(void) { ... a(); }
01/04/09 09:42
Visibilidade da varivel v
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
Variveis declaradas fora do corpo das funes
Sobrevivem por toda a execuo do programa Permanecem ocupando a mesma posio de memria int v = 0; int funcao(void) { ... } int main(void) { ... a(); } 01/04/09 09:42
Vida da varivel v
62
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int x = 0; int a(void) { int v = 0; ... } int b(void) { int w = 0; ... } int main(void) { ... }
01/04/09 09:42 63
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int x = 0; int a(void) { int v = 0; ... } int b(void) { int w = 0; ... } int main(void) { ... }
01/04/09 09:42
64
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int x = 0; int a(void) { int v = 0; ... } int b(void) { int w = 0; ... } int main(void) { ... }
01/04/09 09:42
65
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int v = 0; int funcaoA(void) { int w = 0; ... } int funcaoB(void) { ... } int main(void) { ... } 01/04/09 09:42
66
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int v = 0; int funcaoA(void) { int w = 0; ... } int funcaoB(void) { ... } int main(void) { ... } 01/04/09 09:42
w inacessvel
67
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int v = 0; int funcaoA(void) { int w = 0; ... } int funcaoB(void) { ... } int main(void) { ... } 01/04/09 09:42
w inacessvel w acessvel
68
>
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int v = 0; int funcaoA(void) { int w = 0; ... } int funcaoB(void) { ... } int main(void) { ... } 01/04/09 09:42
w inacessvel w acessvel
w inacessvel
69
Curso C - IC/UNICAMP
Variveis
Tempo de vida:
int v = 0; int funcaoA(void) { int w = 0; ... } int funcaoB(void) { ... } int main(void) { ... } 01/04/09 09:42
>
Curso C - IC/UNICAMP
Variveis
Sobreposio de nomes: Condies:
Variveis com mesmo nome Sobreposio de escopo
Conseqncia:
Declarao mais recente torna inacessvel outras declaraes
01/04/09 09:42
71
>
Curso C - IC/UNICAMP
Variveis
Sobreposio de nomes:
int w = 0; int funcao (void) { int w = 1; ... } int main(void) { ... }
01/04/09 09:42 72
Curso C - IC/UNICAMP
Variveis
Sobreposio de nomes:
int w = 0; int funcao (void) { int w = 1; ... } int main(void) { ... }
01/04/09 09:42 73
w acessvel
Curso C - IC/UNICAMP
Variveis
Sobreposio de nomes:
int w = 0; int funcao (void) { int w = 1; ... } int main(void) { ... }
01/04/09 09:42 74
>
Curso C - IC/UNICAMP
Variveis
Sobreposio de nomes:
int w = 0; int funcao (void) { int w = 1; ... } int main(void) { ... }
01/04/09 09:42
>
Curso C - IC/UNICAMP
Variveis
Varivel global:
Declarada fora das funes Tempo vida:
at fim do programa acessvel a todas funes do programa, exceto quando h sobreposio
int v = 0; void f1(void) { ... } void f2(void) { ... }
76
Inicializao:
ao iniciar o programa
01/04/09 09:42
>
Curso C - IC/UNICAMP
Variveis
Varivel global:
int v = 0; void f1(void) { v++; printf("f1: v = %d\n", v); } void f2(void) { v+=2; printf("f2: v = %d\n", v); } int main(int argc, char argv[]) { f1(); f2(); f1(); } 01/04/09 09:42
Funcoes\Visibilidade01\Visibilidade01.vcproj
77
>
Curso C - IC/UNICAMP
Variveis
Varivel global:
int v = 0; void f1(void) { v++; printf("f1: v = %d\n", v); } void f2(void) { v+=2; printf("f2: v = %d\n", v); } int main(int argc, char argv[]) { f1(); f2(); f1(); } 01/04/09 09:42
Funcoes\Visibilidade01\Visibilidade01.vcproj
78
>
Curso C - IC/UNICAMP
Variveis
Varivel local: Declarada dentro das funes Tempo vida:
do incio at o fim da funo nova execuo no lembra valor anterior
Inicializao:
no incio da funo
01/04/09 09:42
{ 0;
{ 0;
79
>
Curso C - IC/UNICAMP
Variveis
Varivel local:
void f1() { int v = 0; v++; printf("f1: v = %d\n", v); } void f2() { int v = 0; v+=2; printf("f2: v = %d\n", v); } int main(int argc, char argv[]) { f1(); f2(); f1(); 01/04/09 09:42 Funcoes\Visibilidade02\Visibilidade02.vcproj }
80
>
Curso C - IC/UNICAMP
Variveis
Varivel local:
void f1() { int v = 0; v++; printf("f1: v = %d\n", v); } void f2() { int v = 0; v+=2; printf("f2: v = %d\n", v); } int main(int argc, char argv[]) { f1(); f2(); f1(); 01/04/09 09:42 Funcoes\Visibilidade02\Visibilidade02.vcproj }
81
>
Funes
01/04/09 09:42
82
Curso C - IC/UNICAMP
Arquivos Cabealho
Arquivos cabealho (headers ou .h):
A diretiva #include
Permite incluir arquivos no ponto de chamada Texto do arquivo substitui a diretiva, no ponto de chamada Nome do arquivo entre < > Sistema operacional sabe onde encontrar o arquivo
>
Curso C - IC/UNICAMP
Arquivos Cabealho
Seus prprios arquivos cabealho:
Nomes com extenso .h Nomes devem aparecer entre aspas duplas () Indicar diretrio onde esto os arquivos
Default depende do sistema operacional
consts.h
Funcoes\PegaPal\PegaPal.vcproj 84
>
Curso C - IC/UNICAMP
Arquivos Cabealho
Seus prprios arquivos cabealho:
Nomes com extenso .h Nomes devem aparecer entre aspas duplas () Indicar diretrio onde esto os arquivos
Default depende do sistema operacional
>
Curso C - IC/UNICAMP
Arquivos Cabealho
Seus prprios arquivos cabealho:
Nomes com extenso .h Nomes devem aparecer entre aspas duplas () Indicar diretrio onde esto os arquivos
Default depende do sistema operacional
Arquivo const.h
>
Curso C - IC/UNICAMP
Pragmas
Onde escrever o cdigo de funes:
At agora:
.... int funcaoA(int a) { ... } float funcaoB(char c, double r) { ... } char funcaoC(char c, int x) { ... } // Int main( ... ) { ... }
01/04/09 09:42 87
>
Curso C - IC/UNICAMP
Pragmas
Onde escrever o cdigo de funes:
At agora:
.... int funcaoA(int a) { ... } float funcaoB(char c, double r) { ... } char funcaoC(char c, int x) { ... } // Int main( ... ) { ... }
01/04/09 09:42
88
>
Curso C - IC/UNICAMP
Pragmas
Onde escrever o cdigo de funes:
At agora:
.... int funcaoA(int a) { ... } float funcaoB(char c, double r) { funcaoA conhecida aqui ... } char funcaoC(char c, int x) { funcaoA, funcaoB conhecidas aqui ... } // Int main( ... ) { ... }
01/04/09 09:42 89
>
Curso C - IC/UNICAMP
Pragmas
Onde escrever o cdigo de funes:
At agora:
.... int funcaoA(int a) { ... } float funcaoB(char c, double r) { funcaoA conhecida aqui ... } char funcaoC(char c, int x) { funcaoA, funcaoB conhecidas aqui ... } // Int main( ... ) { funcaoA, funcaoB, funcaoC conhecidas aqui ... }
01/04/09 09:42 90
>
Curso C - IC/UNICAMP
Pragmas
Cdigo das funes no final: pragmas
.... int funcaoA(int a); float funcaoB(char c, double r); char funcaoC(char c, int x); // Int main( ... ) { ...} // int funcaoA(int a) { ... } float funcaoB(char c, double r) { ... } char funcaoC(char c, int x) { ... }
01/04/09 09:42
Funcoes\MDC\MDDC.vcproj 91
>
Curso C - IC/UNICAMP
Pragmas
Cdigo das funes no final: pragmas
.... int funcaoA(int a); float funcaoB(char c, double r); char funcaoC(char c, int x); // Int main( ... ) { ...} // int funcaoA(int a) { ... } float funcaoB(char c, double r) { ... } char funcaoC(char c, int x) { ... }
01/04/09 09:42
pragmas de funes
Funcoes\MDC\MDDC.vcproj 92
>
Curso C - IC/UNICAMP
Pragmas
Cdigo das funes no final: pragmas
.... int funcaoA(int a); pragmas de funes float funcaoB(char c, double r); char funcaoC(char c, int x); // Int main( ... ) { funcaoA, funcaoB, funcaoC conhecidas aqui ...} // int funcaoA(int a) { ... } float funcaoB(char c, double r) { ... } char funcaoC(char c, int x) { ... }
01/04/09 09:42
Funcoes\MDC\MDDC.vcproj 93
>
Curso C - IC/UNICAMP
Pragmas
Cdigo das funes no final: pragmas
.... int funcaoA(int a); pragmas de funes float funcaoB(char c, double r); char funcaoC(char c, int x); // Int main( ... ) { funcaoA, funcaoB, funcaoC conhecidas aqui ...} // int funcaoA(int a) { ... } float funcaoB(char c, double r) { Corpo das funes ... } char funcaoC(char c, int x) { ... }
01/04/09 09:42
Funcoes\MDC\MDDC.vcproj 94
>
Funes
Fim do captulo
01/04/09 09:42
95