A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 3 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos das Funções.

Apresentações semelhantes


Apresentação em tema: "Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 3 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos das Funções."— Transcrição da apresentação:

1 Pearson Education Slide 1

2 Pearson Education Slide 2 Cap í tulo 3 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos das Funções

3 Pearson Education Slide 3 Objetivos de Estudo Funções Predefinidas Aquelas que retornam (produzem) um valor e funções que não retornam um valor. Funções Definidas pelo Programador Definindo, Declarando e chamando Funções Recursivas Regras de Escopo Variáveis Locais Constantes Globais e variáveis globais Blocos e escopos aninhados

4 Pearson Education Slide 4 Introdução às Funções Construindo Blocos de Programas Outras terminologias em outras linguagens: Procedimento, subprogramas e métodos Em C++: Funções E-P-S Entrada – Processamento – Saída Subpartes básicas para qualquer programa Utilize funções para estas partes

5 Pearson Education Slide 5 Funções Predefinidas Bibliotecas cheias de funções para usar! Dois tipos: Aquelas que retornam um valor Aquelas que não retornam (void) Deve-se #include a biblioteca apropriada Ex.:, (Original C libraries) (for cout, cin)

6 Pearson Education Slide 6 Usando Funções Predefinidas Funções matemáticas muito abundantes Encontradas na Biblioteca A maioria retorna um valor (a resposta) Exemplo: aRaiz = sqrt(9.0); Componentes: sqrt = nome da função na biblioteca aRaiz = variável usada para atribuir resposta ao 9.0 = argumento entrada inicial para a função Em E-P-S: E = 9.0 P = Calcula a raiz quadrada S = 3, o qual é retornado e atribuído à aRaiz

7 Pearson Education Slide 7 Chamada de Função Retorne para essa tarefa: aRaiz = sqrt(9.0); A expressão sqrt(9.0) é conhecida como chamada de função, ou invocação de função O argumento em uma chamada de função (9.0) pode ser uma literal, variável ou uma expressão Chamar a si própria pode ser parte de uma expressão : bonus = sqrt(vendas)/10; A chamada de função é permitida sempre que for legal usar uma expressão de tipo de retorno de função

8 Pearson Education Slide 8 Um grande exemplo Painel 3.1 página 62

9 Pearson Education Slide 9 Um grande exemplo (cont.) Painel 3.1 página 63

10 Pearson Education Slide 10 Mais Funções Predefinidas #include Bibliotecas que contêm funções como: abs()// Retorna o valor absoluto de um int labs()// Retorna o valor absoluto de um long *fabs()// Retorna o valor absoluto de um double *fabs() está atualmente na Biblioteca ! Pode parecer confuso Lembre-se: Bibliotecas foram adicionadas depois que C++ havia nascido, em frases incrementais Consulte os apêndices/manuais para detalhes

11 Pearson Education Slide 11 Mais Funções Matemáticas pow(x, y) Retorna x elevado a potência de y Resulta um double, x = 3.0, y = 2.0; resultado = pow(x, y); cout << resulto; Aqui, 9.0 é mostrado, visto que = 9.0 Observe que esta função recebe dois argumentos Uma função pode ter qualquer número de argumentos de vários tipos

12 Pearson Education Slide 12 Mais Funções Matemáticas Painel 3.2 página 64

13 Pearson Education Slide 13 Funções void Predefinidas Nenhum valor retornado Executa uma ação, mas não envia nenhuma resposta Quando chamadas, são comandos exit(1);// Não retorna valor Esta chamada termina o programa Funções void podem ainda ter argumentos Em todos os aspectos, mesmo as funções que retornam um valor Elas não retornam simplesmente um valor!

14 Pearson Education Slide 14 Gerador de Números Aleatórios Retorna um número aleatoriamente escolhido Usado em simulações e jogos rand() Não requer nenhum argumento Retorna um valor entre 0 e RAND_MAX Scaling (colocar em escala) Posiciona o número aleatório dentro de um pequeno intervalo rand() % 6 Retorna um valor aleatório entre 0 e 5 Deslocamento rand() % Desloca o intervalo para 1 e 6 (Ex.: roleta-russa)

15 Pearson Education Slide 15 Semente de Números Aleatórios Números Pseudo-aleatórios Chamar rand() produz determinada seqüência de números aleatórios Utilize a semente para alterar a seqüência srand(valor_da_semente); Função void Recebe um argumento, a semente Pode usar qualquer valor de semente, inclusive a hora do sistema srand(time(0)); time() retorna a hora do sistema como uma valor numérico Biblioteca contém funções time()

16 Pearson Education Slide 16 Exemplos Aleatório double entre 0.0 e 1.0: (RAND_MAX – rand())/static_cast (RAND_MAX) Conversão de tipo usada para forçar uma divisão de precisão double Aleatório int entre 1 e 6: rand() % % é o operador de módulo (resto) Aleatório int entre 10 e 20: rand() %

17 Pearson Education Slide 17 Funções Definidas pelo Programador Escreva suas próprias funções! Construindo blocos de programas Dividir e Conquistar Legibilidade Reutilização Sua definição pode estar: No mesmo arquivo que main() Em um arquivo separado, assim outros podem usá-la também

18 Pearson Education Slide 18 Componentes de Função 3 partes para utilizar funções: Declaração de função/protótipo Informação para o compilador Para interpretar corretamente as chamadas Definição de função Implementação atual/código para o que faz a função Chamada de função Tranfere o controle para a função

19 Pearson Education Slide 19 Declaração de Função Também chamada protótipo de função Uma declaração informativa para o compilador Informa ao compilador como interpretar chamadas Sintaxe FnName( ); Exemplo: double custoTotal (int numeroParametro, double precoParametro); Colocada antes de quaisquer chamadas No espaço de declaração de main() Ou acima de main() no espaço global

20 Pearson Education Slide 20 Definição de Função Implementação da função Exatamente como a implementação de main() Exemplo: double custoTotal(int numeroParametro, double precoParametro) { const double IMPOSTO = 0.05; double subTotal; subtotal = precoParametro * numeroParametro; return (subtotal + subtotal * IMPOSTO); } Observe o alinhamento próprio

21 Pearson Education Slide 21 Localização da Definição de Função Colocada depois da função main() Não dentro da função main()! Funções são iguais; nenhuma função é parte de outra Parâmetros formais na definição Guardador de lugar para dados enviados Nome de Variável usado para referência a dados em uma definição Comando return Retorna dados a quem chamou

22 Pearson Education Slide 22 Chamada de Função Exatemente como chamadas de funções predefinidas conta = custoTotal(numero, preco); Lembre-se: custoTotal retorna um valor double Atribuído à variável chamada conta Argumentos: numero, preco Lembre-se que argumentos podem ser literais, variáveis, expressões, ou uma combinação Na chamada de função, os argumentos são freqüentemente chamados de argumentos atuais Porque eles contém os dados atuais sendo enviados

23 Pearson Education Slide 23 Exemplo de Função Painel 3.5 página 70

24 Pearson Education Slide 24 Exemplo de Função (cont.) Painel 3.5 página 71

25 Pearson Education Slide 25 Declaração Alternativa de Funções Lembre-se: Declaração de função é informação para o compilador O compilador somente necessita saber: Tipo de retorno Nome da função Lista de parâmentros Não são necessários nomes de parâmetrors formais: double custoTotal(int, double); Colocar nomes de parâmetro formal Melhora a legibilidade

26 Pearson Education Slide 26 Parametros vs. Argumentos Termos freqüentemente usados Parâmetros/Argumentos Formais Em declaração de função Em cabeçalho de definição de função Parâmetros/Argumentos Atuais Em chamada de função Tecnicamente, parametro é a parte formal enquanto, argumento é a perte atual * *Esses termos não são sempre usados dessa maneira

27 Pearson Education Slide 27 Funções Chamando Funções Nós já estamos fazendo isso! main() É uma função! Único requerimento : A declaração de função deve aparecer primeiro Definição de função tipicamente em outro lugar Depois da definição de main() Ou em um arquivo separado É comum para funções chamar muitas outras funções Funções podem até chamar a si próprias recurso

28 Pearson Education Slide 28 Funções que retornam um valor booleano Tipo retornado pode ser qualquer tipo válido Dada a declaração/protótipo de função: bool apropriada (int taxa); E a definição de função: bool apropriada (int taxa); { return (((taxa>=10)&&(taxa <20))||(taxa ==0); } Retorna true ou false Chamada de função, de alguma outra função: if (apropriada(taxa)) cout << Taxa é válida\n;

29 Pearson Education Slide 29 Definindo Funções void Similar a funções que retornam um valor Tipo retornado especificado como void Exemplo: Declaração/protótipo de função : void mostraResultados (double fDegrees, double cDegrees); Tipo retornado é void Nada é retornado

30 Pearson Education Slide 30 Declarando Funções void Definição de função : void mostraResultados(double fDegrees, double cDegrees) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(1); cout << fDegrees << degrees fahrenheit igual a \n << cDegrees << degrees celsius.\n; } Observação: Nenhum comando return Opcional para funções void

31 Pearson Education Slide 31 Chamando Funções void O mesmo que chamar funções predefinidas void De alguma outra função, como main(): mostraResultados(degreesF, degreesC); mostraResultados(32.5, 0.3); Observe: nenhuma atribuição, uma vez que nenhum valor é retornado Argumentos Atuais (degreesF, degreesC) Passados para a função A função é chamada para fazer seu trabalho com os dados passados

32 Pearson Education Slide 32 Mais sobre Comandos Return Transfere o controle de volta para a função que chamou Para retornar dados, qualquer função diferente de void, DEVE ter o comando return Tipicamente o ÚLTIMO comando na definição da função O comando return é opcional para funcões void Fechando } implicitamente retorna o controle da função void

33 Pearson Education Slide 33 Pré-Condições e Pós-Condições Semelhante a discussão E-P-S Comentário da declaração de função: void mostraJuro(double saldo, double taxa); // Pré-condição: saldo é um saldo não-negativo de uma conta de // poupança // taxa é a taxa de juros expressa como porcentagem // Pós-condição: O valor em juros sobre um dado saldo Freqüentemente chamados Entradas e Saídas

34 Pearson Education Slide 34 main( ): Especial Lembre-se: main() É uma Função tão especial que: Uma e somente uma função chamada main() existirá em um programa Quem chama a função main()? O Sistema Operacional Por tradição ela deveria ter um comando return Valor retornado para o Sistema Operacional Retorna int ou void

35 Pearson Education Slide 35 Regras de Escopo Variáveis Locais Declarada dentro do corpo de uma dada função Disponível somente dentro daquela função Podemos ter variáveis com os mesmos nomes declaradas em diferentes funções Escopo é local: a função é o escopo Prefira variáveis locais Mantém o controle individual sobre os dados Necessário conhecimentos básicos Deveriam ser declaradas na função não impor- ta as variáveis necessárias para executar o trabalho

36 Pearson Education Slide 36 Abstração Procedural Precisa saber o que a função faz, não como ela faz! Pense em uma caixa preta Dispositivo que você sabe como usar, mas não seu método de operação Implemente funções como uma caixa preta O usuário da função só necessita: declaração Não necessita da definição de função Chamado ocultação de informação. Esconder detalhes de como a função trabalha

37 Pearson Education Slide 37 Constantes Globais e Variáveis Globais Declarada fora do corpo da função Global para todas as funções do programa Declarada dentro do corpo da função Local para aquela função Declarações globais são típicas para constantes: const double IMPOSTO = 0.05; Declare constantes globalmente Variáveis Globais? Possível, mas RARAMENTE USADAS Perigoso: nehum controle sobre o uso!

38 Pearson Education Slide 38 Blocos Uma variável declarada dentro de um comando composto Chamado bloco Tem escopo de bloco Note: todas as definições de funções são blocos! Isto fornece um escopo de função local Blocos de Loops: for (int n = 1; n <= 10; n++) { for (int n = 1; n <= 10; n++) soma = soma + n;} Variável n tem escopo somente no bloco do corpo do loop

39 Pearson Education Slide 39 Escopos Aninhados Variáveis de mesmo nome declaradas em múltiplos blocos Muito Legal; o escopo é o escopo de bloco Nenhuma ambigüidade Cada nome é distinto dentro de seu escopo

40 Pearson Education Slide 40 Sumário 1 Dois tipos de funções: As que retornam valor e funções void Funções deveriam ser caixas pretas Esconder detalhes: como Declarar suas próprias variáveis locais Declarações de Funções deveriam ser documentos independentes que: Fornecem pré e pós-condições em comentários Fornecem todas as chamadas necessárias para a sua utilização

41 Pearson Education Slide 41 Sumário 2 Variável Local Declarada na definição de função Variável Global Declarada acima da definição de função OK para constantes, não para variáveis Parametros/Argumentos Formal: Em declaração de função e definição Guarda-lugar para dados de entrada Atual: Na chamada da função Dados atuais passados para a função


Carregar ppt "Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 3 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos das Funções."

Apresentações semelhantes


Anúncios Google