Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1



Documentos relacionados
Estrutura de um programa em linguagem C

INF 1005 Programação I

Capítulo 2: Introdução à Linguagem C

Introdução a Computação

Estruturas de entrada e saída

Primeiro Curso de Programação em C 3 a Edição

Manipulação de Arquivos

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1005 Programação I

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome:

Linguagem C Funções definidas pelo usuário. Lógica de Programação

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

INF 1620 P1-11/04/08 Questão 1 Nome:

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

INF 1620 P1-17/09/05 Questão 1 Nome:

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

PROVA P2 INF /10/2014 Programação II

17 - Funções e Procedimentos em C Programação Modular

Estruturas de Repetição

Programação e Sistemas de Informação

INF 1620 P3-25/11/05 Questão 1 Nome:

Introdução a POO. Introdução a Linguagem C++ e POO

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

INF 1620 P3-21/06/08 Questão 1 Nome:

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

INF 1620 P4-01/07/08 Questão 1 Nome:

Linguagens de Programação I

Curso de C para Engenharias

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

P2 Programação II Departamento de Informática/PUC-Rio

MC-102 Aula 17 Strings e Matrizes

INF 1620 P2-14/10/05 Questão 1 Nome:

Algoritmos e Programação Estruturada

INF 1007 Programação II

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

INF 1620 P1-14/04/07 Questão 1 Nome:

Tabela ASCII de caracteres de controle

Conceitos de Linguagens de Programação

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INF 1620 P4 30/06/07 Questão 1 Nome:

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Programação de Computadores I

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

INF 1620 P1-04/10/03 Questão 1 Nome:

Curso de Linguagem C

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

Strings. Todas as funções apresentadas neste documento estão no arquivo de cabeçalho string.h.

Linguagem C. Programação Estruturada. Funções Matemáticas. Prof. Luis Nícolas de Amorim Trigo

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

MC-102 Aula 19 Registros

Exemplos. char c; int i=67;... c= A ; c=c+1; if (c== B )... c=i; i=c; i++; if (i>= C )...

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Comunicação. O Modelo de Fluxo de Dados (Streams)

Introdução à Programação

INF P3-23/06/07 Questão 1 Nome:

INF 1620 P3-27/11/04 Questão 1 Nome:

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

P2 Programação II Departamento de Informática/PUC-Rio

INF 1620 P4-09/07/03 Questão 1 Nome:

SIMULADO PROVA. Questões Nota Revisão 1 (2.0) 2 (1.0) 3 (2.0) 4 (2.0) 5 (2.0) P1 (9,0)

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

INF 1007 Programação II

Tipos de Dados Avançados Vetores e Matrizes

#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.

1. PROLOGO ==========

Introdução à Linguagem C. Adaptado de Deise Saccol

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Fundamentos de Programação 1

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

INF 1620 P4 11/12/06 Questão 1 Nome:

Laboratório de Programação 02

Universidade Federal de Uberlândia Faculdade de Computação. A Linguagem C

Aula 12- Variáveis e valores reais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

INF 1620 P2-23/10/04 Questão 1 Nome:

PROGRAMA DE DISCIPLINA

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Introdução a Computação

Algoritmos e Estruturas de Dados I (DCC/003) Funções

Algoritmos RESUMO - LINGUAGEM C

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Curso de C. Estruturas de Repetição 1/4/ :31 1

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Algoritmos e Programação

Material sobre Funções AEDS 1

Introdução à Programação

Curso de C: uma breve introdução

Transcrição:

Curso de C Procedimentos e Funções 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Funções Roteiro: Funções Declaração e chamada Funções importantes Exemplos de funções Variáveis Globais, locais e parâmetros 6/4/200901/04/09 09:42 2

Funções O que são funções O porquê de usá-las 6/4/200901/04/09 09:42 3

Funções Funções: São um trechos de código fora do programa principal Implementam um subalgoritmo do programa São utilizadas (chamadas) em diversos pontos do programa 6/4/200901/04/09 09:42 4

Funções Vantagens: Organiza o código: Cada função é um algoritmo Dividir um programa complicado em várias funções simples Evita repetição de código semelhante Escrever o código apenas uma vez Usar a mesma função várias vezes para variáveis diferentes Simplifica e agiliza a programação 6/4/200901/04/09 09:42 5

Funções Exemplo: comparar a média das duas melhores notas do aluno A e do aluno B Algoritmo: Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados 6/4/200901/04/09 09:42 6

Funções Alguns problemas no exemplo Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados 6/4/200901/04/09 09:42 7

Funções Alguns problemas no exemplo Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados Repetição do do mesmo algoritmo 6/4/200901/04/09 09:42 8

Funções Alguns problemas no exemplo Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados Repetição do do mesmo algoritmo Solução: Uma função genérica para calcular a média 6/4/200901/04/09 09:42 9

Funções Alguns problemas no exemplo Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados Funcoes\Nota01\Nota01.vcproj 6/4/200901/04/09 09:42 10

Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados Funções Alguns problemas no exemplo Programa principal mistura vários algoritmos: Leitura Cálculo de de média média Comparação Impressão Funcoes\Nota01\Nota01.vcproj 6/4/200901/04/09 09:42 11

Ler 3 notas dos alunos A e B Calcular a média de A Calcular a média de B Comparar as médias Imprimir resultados Funções Alguns problemas no exemplo Programa principal mistura vários algoritmos: Leitura Cálculo de de média média Comparação Impressão Funcoes\Nota01\Nota01.vcproj Solução: Uma função para cada algoritmo 6/4/200901/04/09 09:42 12

Funções Chamada de Funções 6/4/200901/04/09 09:42 13

Funções Chamada de função: 1. Interrupção do programa principal 2. Passagem de dados de entrada para a função 3. Execução do código da função 4. Retorno do resultado 5. Continuação do programa principal Programa principal Instruções C 6/4/200901/04/09 09:42 14

Funções Chamada de função: 1. Interrupção do programa principal 2. Passagem de dados de entrada para a função 3. Execução do código da função 4. Retorno do resultado 5. Continuação do programa principal Programa principal Instruções C chamada 6/4/200901/04/09 09:42 15

Funções Chamada de função: 1. Interrupção do programa principal 2. Passagem de dados de entrada para a função 3. Execução do código da função 4. Retorno do resultado 5. Continuação do programa principal Programa principal Instruções C chamada Dados de entrada Função 6/4/200901/04/09 09:42 16

Funções Chamada de função: 1. Interrupção do programa principal 2. Passagem de dados de entrada para a função 3. Execução do código da função 4. Retorno do resultado 5. Continuação do programa principal Programa principal Instruções C chamada Dados de entrada Função Resultado 6/4/200901/04/09 09:42 17

Funções Chamada de função: 1. Interrupção do programa principal 2. Passagem de dados de entrada para a função 3. Execução do código da função 4. Retorno do resultado 5. Continuação do programa principal Programa principal Instruções C chamada Instruções C Dados de entrada Função Resultado 6/4/200901/04/09 09:42 18

Chamada de função: Para chamar uma função: Funções sentença(s); resultado = nome(entr 1, entr 2, ); sentença(s); 6/4/200901/04/09 09:42 19

Chamada de função: Para chamar uma função: Funções sentença(s); resultado = nome(entr 1, entr 2, ); sentença(s); Nome da função 6/4/200901/04/09 09:42 20

Chamada de função: Para chamar uma função: Funções sentença(s); Valores de entrada (parâmetros) resultado = nome(entr 1, entr 2, ); sentença(s); Nome da função 6/4/200901/04/09 09:42 21

Chamada de função: Para chamar uma função: Funções sentença(s); Valores de entrada (parâmetros) resultado = nome(entr 1, entr 2, ); Resultado sentença(s); Nome da função 6/4/200901/04/09 09:42 22

Exemplo: Calcular distância entre dois pontos #include <stdio.h #include <math.h int int main(int argc, char *argv[]) { double x1, x1, x2, x2, y1, y1, y2, y2, d; d; scanf("%lf, %lf, %lf, %lf", &x1, &y1, &x2, &y2); d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); printf("distância: %f", d); d); return 0 Funcoes\Chamada01\Chamada01.vcproj 6/4/200901/04/09 09:42 23

Exemplo: Calcular distância entre dois pontos #include <stdio.h #include <math.h int int main(int argc, char *argv[]) { double x1, x1, x2, x2, y1, y1, y2, y2, d; d; scanf("%lf, %lf, %lf, %lf", &x1, &y1, &x2, &y2); d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); printf("distância: %f", d); d); return 0 Função Valores de entrada (parâmetros) Funcoes\Chamada01\Chamada01.vcproj 6/4/200901/04/09 09:42 24

Exemplo: Calcular distância entre dois pontos #include <stdio.h #include <math.h int int main(int argc, char *argv[]) { double x1, x1, x2, x2, y1, y1, y2, y2, d; d; scanf("%lf, %lf, %lf, %lf", &x1, &y1, &x2, &y2); d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); printf("distância: %f", d); d); Interrompe o programa para executar sqrt return 0 Função Valores de entrada (parâmetros) Funcoes\Chamada01\Chamada01.vcproj 6/4/200901/04/09 09:42 25

Exemplo: Calcular distância entre dois pontos #include <stdio.h #include <math.h int int main(int argc, char *argv[]) { double x1, x1, x2, x2, y1, y1, y2, y2, d; d; scanf("%lf, %lf, %lf, %lf", &x1, &y1, &x2, &y2); d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); printf("distância: %f", d); d); Interrompe o programa para executar sqrt return 0 Função Resultado Valores de entrada (parâmetros) Funcoes\Chamada01\Chamada01.vcproj 6/4/200901/04/09 09:42 26

Exemplo: Calcular distância entre dois pontos #include <stdio.h #include <math.h int int main(int argc, char *argv[]) { double x1, x1, x2, x2, y1, y1, y2, y2, d; d; scanf("%lf, %lf, %lf, %lf", &x1, &y1, &x2, &y2); d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); Depois printf("distância: %f", d); d); Interrompe o programa para executar sqrt continua aqui return 0 Função Resultado Valores de entrada (parâmetros) Funcoes\Chamada01\Chamada01.vcproj 6/4/200901/04/09 09:42 27

Funções Definição de Funções 6/4/200901/04/09 09:42 28

Funções Definição de funções: tipo nome(parâmetros) { declarações de variáveis instruções; return valor; 6/4/200901/04/09 09:42 29

Funções Nome: Identifica o trecho de código da função O nome é usado na chamada Formação igual a nome de variável Nome da função tipo nome(parâmetros) { declarações instruções; return valor; 6/4/200901/04/09 09:42 30

Funções Nome: Nome da função: media media() { Declarações Instruções Corpo da função tipo nome(parâmetros) { declarações instruções; return valor; 6/4/200901/04/09 09:42 31

Parâmetros: Definir dados de entrada. São variáveis locais, declaradas e atribuídas na chamada da função. Lista de tipos e nomes. Funções Programa principal Dados de entrada Instruções C tipo nome(parâmetros) { declarações instruções; return valor; Função chamada Resultado Instruções C 6/4/200901/04/09 09:42 32

Parâmetros: Funções Lista de 3 parâmetros: Variáveis locais da função: floatnota1, nota2 e nota3 media(float nota1, float nota2, float nota3) { Declarações Instruções declarações instruções; return valor; tipo nome(parâmetros) { return valor; 6/4/200901/04/09 09:42 33

Ao chamar a função, o valor de cada parâmetro deve ser informado Regras: Funções Parâmetros na chamada de função: Um valor para cada parâmetro Valores compatíveis com o tipo do parâmetro Valores na mesma ordem que na declaração Chamada de de função: nome(parametro1, parametro2, ) 6/4/200901/04/09 09:42 34

Funções Parâmetros na chamada de função: float resultado; resultado = potencia(2.0f, 5.0f); Quando a função executa Declaração da função potencia: potencia(float base, float expoente) { // // Corpo da da função 6/4/200901/04/09 09:42 35

Funções Parâmetros na chamada de função: float resultado; resultado = potencia(2.0f, 5.0f); Quando a função executa base = 2.0f Declaração da função potencia: potencia(float base, float expoente) { // // Corpo da da função 6/4/200901/04/09 09:42 36

Funções Parâmetros na chamada de função: float resultado; resultado = potencia(2.0f, 5.0f); Quando a função executa base = 2.0f expoente = 5.0f Declaração da função potencia: potencia(float base, float expoente) { // // Corpo da da função 6/4/200901/04/09 09:42 37

Funções Parâmetros na chamada de função: Tipos: int, long int, char, float, etc São variáveis locais declaradas no corpo da função e que vão ser inicializadas com cópias dos valores correspondentes às expressões na chamada da função! maior_elemento(char c, c, int int tamanho) { // // Corpo da da função 6/4/200901/04/09 09:42 38

Função sem parâmetros: Funções Lista vazia de parâmetros funcaosemparametros() { Declarações Instruções Chamada de de função: funcaosemparametros() tipo nome() { declarações instruções; return valor; 6/4/200901/04/09 09:42 39

Funções Corpo da função: Código para o algoritmo da função. Declara variáveis locais, além dos parâmetros. Parâmetros são variáveis locais, já prédeclaradas. tipo nome(parâmetros) { declarações instruções; return valor; 6/4/200901/04/09 09:42 40

Funções Corpo da função: media(float nota1, float nota2, float nota3) { float media; if if ((nota1 <= <= nota2) && && (nota1 <= <= nota3)) { media = (nota2 + nota3) / 2.0f; else if if ((nota2 <= <= nota1) && && (nota2 <= <= nota3)) { media = (nota1 + nota3) / 2.0f; else { media = (nota1 + nota2) / 2.0f; 6/4/200901/04/09 09:42 41

Valor de retorno: Tipo da função: Funções Indica o domínio do resultado da função Qualquer tipo válido para variáveis Tipo da função tipo nome(parâmetros) { declarações instruções; return valor; Programa principal Instruções C chamada Instruções C Dados de entrada Resultado Função 6/4/200901/04/09 09:42 42

Valor de retorno: Funções Comando return Termina a execução da função. Define o resultado (valor de retorno). Deve ser compatível com o tipo da função. Valor do resultado tipo nome(parâmetros) { declarações instruções; return valor; Programa principal Dados de entrada Instruções C Função chamada Resultado Instruções C 6/4/200901/04/09 09:42 43

Funções Valor de retorno: float media(float nota1, float nota2, float nota3) { float media; if if ((nota1 <= <= nota2) && && (nota1 <= <= nota3)) { media = (nota2 + nota3) / 2.0f; else if if ((nota2 <= <= nota1) && && (nota1 <= <= nota3)) { media = (nota1 + nota3) / 2.0f; else { media = (nota1 + nota2) / 2.0f; return media; 6/4/200901/04/09 09:42 44

Funções Função sem valor de retorno: void comparanotas(float mediaa, float mediab) { if if (mediaa mediab) { printf("aluno A"); else if if (mediaa < mediab) { printf("aluno B"); else { printf( Alunos A e B"); return; Tipo de retorno: void Esta função não retorna resultado. 6/4/200901/04/09 09:42 45

Funções Exemplo completo: programa principal int int main(int argc, char char *argv[]) { float notaa1, notaa2, notaa3, mediaa; float notab1, notab2, notab3, mediab; scanf("%f %f %f%f", %f",&notaa1, &notaa2, &notaa3); scanf("%f %f %f%f", %f",&notab1, &notab2, &notab3); mediaa = mediamelhoresnotas(notaa1, notaa2, notaa3); mediab = mediamelhoresnotas(notab1, notab2, notab3); comparanotas(mediaa, mediab); return 0; 0; Funcoes\Nota02\Nota02.vcproj 6/4/200901/04/09 09:42 46

Funções Funções importantes 6/4/200901/04/09 09:42 47

Funções importantes Função main: Contém o programa principal Várias declarações possíveis: void main(void) { int main() { int main(int argc, char *argv[]) 6/4/200901/04/09 09:42 48

Funções importantes Leitura e Escrita: Ler dados do usuário e escrever na tela #include <stdlib.h Várias funções disponíveis: scanf, printf, getchar, putchar, gets, puts, Exemplo: prinft("resultado: %d", valor); scanf("%d %d", &linhas, &colunas); 6/4/200901/04/09 09:42 49

Manipulação de arquivos: Curso C - IC/UNICAMP Funções importantes Ler e escrever dados em arquivos ou fluxos de dados. #include <stdio.h Várias funções disponíveis: fopen, fclose, fscanf, fprintf, rewind, fflush, fputc, fputs, fgetc, fgets, ftell, fseek, etc 6/4/200901/04/09 09:42 50

Funções importantes Matemáticas: Realizar operações matemáticas. #include <math.h Várias funções disponíveis: sqrt, sqr, pow, exp, log, log10 sin, asen, senh, cos, acos, cosh, tan, atan, atan2, tanh floor, ceil, abs, fabs 6/4/200901/04/09 09:42 51

Texto e caracteres: Modificar texto (vetores de caracteres). #include <string.h Curso C - IC/UNICAMP Funções importantes Várias funções disponíveis: strcat, strdup, strlen, strcmp, strcpy, strstr 6/4/200901/04/09 09:42 52

Funções Exemplos de Funções 6/4/200901/04/09 09:42 53

Exemplos de Funções Matemática: 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 6/4/200901/04/09 09:42 54

Lógica de programa: Curso C - IC/UNICAMP Exemplos de Funções 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 6/4/200901/04/09 09:42 55

Gerar/obter dados: #include <time.h int main(int argc, char argv[]) { int fim, inicio = clock(); int i; Curso C - IC/UNICAMP Exemplos de Funções for (i = 0; i < 20000; i++) { printf("um texto para imprimir %d\n", i); fim = clock(); printf("tempo necessário: %d\n", fim - inicio); return 0; Funcoes\Time01\Time01.vcproj 6/4/200901/04/09 09:42 56

Organização de código: Curso C - IC/UNICAMP Exemplos de Funções Ruim: char opcao; scanf( %c, &opcao); if (opcao == P ) { // Código para calcular raizes de polinômios // else if (opcao == M ) { // Código para calcular determinantes de matrizes // else if (opcao == D ) { // Código para calcular derivadas de funções // 6/4/200901/04/09 09:42 57

Exemplos de Funções Organização de código: void resolver_polinimio(void) { // Código void calc_determinante(void) { // Código void derivar_funcao(void) { // Código scanf( %c, &opcao); if (opcao == P ) { resolver_polinomio(); else if (opcao == M ) { calc_determinante(); else if (opcao == D ) { derivar_funcao(); 6/4/200901/04/09 09:42 58

Funções Tempo de vida de variáveis 6/4/200901/04/09 09:42 59

Variáveis Curso C - IC/UNICAMP Tempo de vida: Tempo que o valor da variável permanece na memória: do início até final do programa, ou do início até final da função no início da função: cria espaço na memória no fim da função: libera espaço usado na memória 6/4/200901/04/09 09:42 60

Variáveis Curso C - IC/UNICAMP Tempo de vida: Variáveis declaradas localmente em funções: Tempo de vida: durante a execução da função Durante a execução a variável é visível, acessível Durante a execução estão associadas à posições de memória Em duas execuções, podem ocupar posições de memória diferentes { int v = 0; Vida da variável v 6/4/200901/04/09 09:42 61

Tempo de vida: Variáveis Declaração dentro do corpo da função Visibilidade apenas na função Curso C - IC/UNICAMP int funcao(void) { int v = 0; int main(void) { a(); 6/4/200901/04/09 09:42 62

Tempo de vida: Variáveis Declaração dentro do corpo da função Visibilidade apenas na função Curso C - IC/UNICAMP int funcao(void) { int v = 0; Visibilidade da variável v int main(void) { a(); 6/4/200901/04/09 09:42 63

Tempo de vida: Variáveis Declaração dentro do corpo da função Visibilidade apenas na função Curso C - IC/UNICAMP int funcao(void) { int v = 0; Visibilidade da variável v int main(void) { a(); Aqui a variável v é invisível 6/4/200901/04/09 09:42 64

Variáveis Curso C - IC/UNICAMP Tempo de vida: Variáveis declaradas fora do corpo das funções Sobrevivem por toda a execução do programa Permanecem ocupando a mesma posição de memória int v = 0; int funcao(void) { int main(void) { a(); Vida de variável v 6/4/200901/04/09 09:42 65

Variáveis Curso C - IC/UNICAMP Tempo de vida: int x = 0; int a(void) { int v = 0; int b(void) { int w = 0; int main(void) { 6/4/200901/04/09 09:42 66

Variáveis Curso C - IC/UNICAMP Tempo de vida: int x = 0; int a(void) { int v = 0; int b(void) { int w = 0; int main(void) { Vida da variável v Vida da variável w 6/4/200901/04/09 09:42 67

Variáveis Curso C - IC/UNICAMP Tempo de vida: int x = 0; int a(void) { int v = 0; int b(void) { int w = 0; int main(void) { Vida da variável v Vida da variável w Vida da variável x 6/4/200901/04/09 09:42 68

Variáveis Curso C - IC/UNICAMP Tempo de vida: int v = 0; int funcaoa(void) { int w = 0; int funcaob(void) { int main(void) { 6/4/200901/04/09 09:42 69

Variáveis Curso C - IC/UNICAMP Tempo de vida: int v = 0; int funcaoa(void) { int w = 0; w inacessível int funcaob(void) { int main(void) { 6/4/200901/04/09 09:42 70

Variáveis Curso C - IC/UNICAMP Tempo de vida: int v = 0; int funcaoa(void) { int w = 0; w inacessível w acessível int funcaob(void) { int main(void) { 6/4/200901/04/09 09:42 71

Variáveis Curso C - IC/UNICAMP Tempo de vida: int v = 0; int funcaoa(void) { int w = 0; w inacessível w acessível int funcaob(void) { int main(void) { w inacessível 6/4/200901/04/09 09:42 72

Variáveis Curso C - IC/UNICAMP Tempo de vida: int v = 0; int funcaoa(void) { int w = 0; int funcaob(void) { int main(void) { w inacessível w acessível w inacessível v sempre acessível 6/4/200901/04/09 09:42 73

Sobreposição de nomes: Condições: Variáveis Variáveis com mesmo nome Sobreposição de escopo Conseqüência: Curso C - IC/UNICAMP Declaração mais recente torna inacessível outras declarações 6/4/200901/04/09 09:42 74

Sobreposição de nomes: Variáveis Curso C - IC/UNICAMP int w = 0; int funcao (void) { int w = 1; int main(void) { 6/4/200901/04/09 09:42 75

Sobreposição de nomes: Variáveis Curso C - IC/UNICAMP int w = 0; w acessível int funcao (void) { int w = 1; int main(void) { 6/4/200901/04/09 09:42 76

Sobreposição de nomes: Variáveis Curso C - IC/UNICAMP int w = 0; int funcao (void) { int w = 1; w acessível w acessível, mas sobrepõe w anterior int main(void) { 6/4/200901/04/09 09:42 77

Sobreposição de nomes: Variáveis Curso C - IC/UNICAMP int w = 0; int funcao (void) { int w = 1; int main(void) { w acessível w acessível, mas sobrepõe w anterior w anterior novamente acessível 6/4/200901/04/09 09:42 78

Variáveis Curso C - IC/UNICAMP Variável global: Declarada fora das funções Tempo vida: até fim do programa acessível à todas as funções do programa, exceto quando há sobreposição Inicialização: ao iniciar o programa int v = 0; void f1(void) { void f2(void) { 6/4/200901/04/09 09:42 79

Variáveis Curso C - IC/UNICAMP Variável 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(); Resultado: f1: f1: v = f2: f2: v = f1: f1: v = 6/4/200901/04/09 09:42 80 Funcoes\Visibilidade01\Visibilidade01.vcproj

Variáveis Curso C - IC/UNICAMP Variável 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(); Resultado: f1: f1: v = 1 f2: f2: v = 3 f1: f1: v = 4 6/4/200901/04/09 09:42 81 Funcoes\Visibilidade01\Visibilidade01.vcproj

Variáveis Curso C - IC/UNICAMP Variável local: Declarada dentro das funções Tempo vida: do início até o fim da função nova execução não lembra valor anterior Inicialização: no início da função void f1(void) { int v = 0; void f2(void) { int w = 0; 6/4/200901/04/09 09:42 82

Variáveis Curso C - IC/UNICAMP Variável 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(); Resultado: f1: f1: v = f2: f2: v = f1: f1: v = 6/4/200901/04/09 09:42 Funcoes\Visibilidade02\Visibilidade02.vcproj 83

Variáveis Curso C - IC/UNICAMP Variável 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(); Resultado: f1: f1: v = 1 f2: f2: v = 2 f1: f1: v = 1 6/4/200901/04/09 09:42 Funcoes\Visibilidade02\Visibilidade02.vcproj 84

Funções Arquivos de cabeçalhos Compilação em separado 6/4/200901/04/09 09:42 85

Arquivos Cabeçalho Curso C - IC/UNICAMP Arquivos cabeçalho ( 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.... #include <stdio.h #include <math.h.... 6/4/200901/04/09 09:42 86

Arquivos Cabeçalho Seus próprios arquivos cabeçalho: Nomes com extensão.h Nomes devem aparecer entre aspas duplas ( ) Indicar diretório onde estão os arquivos Default depende do sistema operacional Curso C - IC/UNICAMP Contém: definições de constantes comuns, etc....... #include consts.h.... 6/4/200901/04/09 09:42 Funcoes\PegaPal\PegaPal.vcproj 87

Arquivos Cabeçalho Seus próprios arquivos cabeçalho: Nomes com extensão.h Nomes devem aparecer entre aspas duplas ( ) Indicar diretório onde estão os arquivos Default depende do sistema operacional Curso C - IC/UNICAMP Contém: definições de constantes comuns, etc....... #include consts.h.... /* arquivo.h com definição de constantes */ #define pi 3.141592 #define true 1.... 6/4/200901/04/09 09:42 Funcoes\PegaPal\PegaPal.vcproj 88

Arquivos Cabeçalho Seus próprios arquivos cabeçalho: Nomes com extensão.h Nomes devem aparecer entre aspas duplas ( ) Indicar diretório onde estão os arquivos Default depende do sistema operacional Curso C - IC/UNICAMP Contém: definições de constantes comuns, etc... Arquivo const.h.... #include consts.h.... /* arquivo.h com definição de constantes */ #define pi 3.141592 #define true 1.... 6/4/200901/04/09 09:42 Funcoes\PegaPal\PegaPal.vcproj 89

Pragmas Onde escrever o código de funções: Até agora: int funcaoa(int a) {... float funcaob(char c, double r) {... char funcaoc(char c, int x) {... // Int main( ) {... 6/4/200901/04/09 09:42 90

Pragmas Onde escrever o código de funções: Até agora: int funcaoa(int a) {... float funcaob(char c, double r) {... funcaoa conhecida aqui char funcaoc(char c, int x) {... // Int main( ) {... 6/4/200901/04/09 09:42 91

Pragmas Onde escrever o código de funções: Até agora: int funcaoa(int a) {... float funcaob(char c, double r) {... char funcaoc(char c, int x) {... // Int main( ) {... funcaoa conhecida aqui funcaoa, funcaob conhecidas aqui 6/4/200901/04/09 09:42 92

Pragmas Onde escrever o código de funções: Até agora: int funcaoa(int a) {... float funcaob(char c, double r) {... char funcaoc(char c, int x) {... // Int main( ) {... funcaoa conhecida aqui funcaoa, funcaob conhecidas aqui funcaoa, funcaob, funcaoc conhecidas aqui 6/4/200901/04/09 09:42 93

Pragmas Código das funções 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) {... 6/4/200901/04/09 09:42 Funcoes\MDC\MDDC.vcproj 94

Pragmas Código das funções 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) {... pragmas de funções 6/4/200901/04/09 09:42 Funcoes\MDC\MDDC.vcproj 95

Pragmas Código das funções 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) {... pragmas de funções funcaoa, funcaob, funcaoc conhecidas aqui 6/4/200901/04/09 09:42 Funcoes\MDC\MDDC.vcproj 96

Pragmas Código das funções 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) {... pragmas de funções funcaoa, funcaob, funcaoc conhecidas aqui Corpo das funções 6/4/200901/04/09 09:42 Funcoes\MDC\MDDC.vcproj 97

Funções Fim do capítulo 6/4/200901/04/09 09:42 98