funcoes_bcc201

Upload: andre-souza

Post on 05-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/15/2019 funcoes_BCC201

    1/47

    1/46

    BCC 201 - Introdução à Programação I

    Procedimentos e Funções

    Guillermo Cámara-ChávezUFOP

    http://find/

  • 8/15/2019 funcoes_BCC201

    2/47

    2/46

    Funções e Procedimentos I

      Procedimentos  são funções estruturas que agrupam umconjunto de comandos, que são executados quando oprocedimento é chamado.

    http://find/

  • 8/15/2019 funcoes_BCC201

    3/47

    3/46

    Funções e Procedimentos II

      Funções  são procedimentos que retornam um único valor aofinal de sua execução.

    x = s q r t ( 4 ) ;

    http://find/

  • 8/15/2019 funcoes_BCC201

    4/47

    4/46

    Porque utilizar funções? I

      Evitar  que os blocos do programa   fiquem grandes demais(mais dif́ıceis de entender);

      Facilitar a leitura  do programa-fonte;

     Separar o programa em partes(blocos) que possam serlogicamente  compreendidos de forma isolada.

    http://find/

  • 8/15/2019 funcoes_BCC201

    5/47

    5/46

    Porque utilizar funções? II

      Permitir o   reaproveitamento de código já constrúıdo (porvocê ou por outros programadores);

      Evitar  que um trecho de código seja  repetido  várias vezesdentro de um mesmo programa;

      Permitir a  alteração de um trecho  de código de uma formamais rápida.

    http://goforward/http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    6/47

    6/46

    Declarando uma função? I

     Uma função possui o seguinte formato:

    t i p o n om e da f un ç ão ( t i p o  

    ,t i p o  

     , . . . ,t i p o  

    )

    {comandos ;r e t u r n   ( v a l o r de r e t o r n o ) ;

    }

    http://goforward/http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    7/47

    7/46

    Declarando uma função? II

    http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    8/47

    8/46

    Declarando uma função? III

      Toda função deve ter um tipo.

      Esse tipo determina qual será o tipo de seu   valor de retorno.

      Os parâmetros de uma função determinam qual será o seucomportamento (como se fosse uma função matemática, ondeo parâmetro determina o valor da função).

    http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    9/47

  • 8/15/2019 funcoes_BCC201

    10/47

    10/46

    Declarando uma função? V

     Encontrar o maior de dois números

    http://find/

  • 8/15/2019 funcoes_BCC201

    11/47

    11/46

    Declarando uma função? VI

    http://find/

  • 8/15/2019 funcoes_BCC201

    12/47

    12/46

    Declarando uma função? VII

    http://find/

  • 8/15/2019 funcoes_BCC201

    13/47

  • 8/15/2019 funcoes_BCC201

    14/47

  • 8/15/2019 funcoes_BCC201

    15/47

  • 8/15/2019 funcoes_BCC201

    16/47

  • 8/15/2019 funcoes_BCC201

    17/47

    f ?

  • 8/15/2019 funcoes_BCC201

    18/47

    18/46

    Declarando uma função? XIII

    E l d f ˜ I

    http://goforward/http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    19/47

    19/46

    Exemplo de função I

    A função abaixo soma dois valores passados como parâmetro

    i n t   s oma ( i n t   a ,   i n t   b ){

    i n t   c = 0 ;c = a + b ;

    r e t u r n   ( c ) ;}

    i n t   s oma ( i n t   a ,   i n t   b )

    {r e t u r n   ( a + b ) ;

    }

    http://find/

  • 8/15/2019 funcoes_BCC201

    20/47

  • 8/15/2019 funcoes_BCC201

    21/47

    I d f ˜ III

  • 8/15/2019 funcoes_BCC201

    22/47

    22/46

    Invocando uma funçao III

      As variáveis passadas como  parâmetros indicam  quais são osvalores com os quais a função irá trabalhar.

      Esses  valores são copiados  para os parâmetros da função,

    que pode manipulá-los.   Os parâmetros passados pela função não

    necessariamente possuem os mesmos nomes  que osparâmetros que a função espera.

    I d f ˜ IV

    http://find/

  • 8/15/2019 funcoes_BCC201

    23/47

    23/46

    Invocando uma funçao IV

    i n t   soma( i n t   a ,   i n t   b ){r e t u r n   ( a+b ) ;

    }i n t   main ( ){

    i n t   x = 1 0 , y = 3 0 , z ;z = soma ( x , y ) ;p r i n t f ( " Soma de %d e %d = %d " , x , y , z ) ;/ / E s t á c o r r e t o ? ?p r i n t f ( " Soma de %d e %d = %d " , a , b , z );

    }

    O segundo  printf  está errado. As varíaveis  a  e  b  são variáveisprivadas que somente pertencem a função e não tem como teracesso a elas.

    O tipo void

    http://find/

  • 8/15/2019 funcoes_BCC201

    24/47

    24/46

    O tipo   void 

     Tipo especial, utilizado principalmente em funções  Representa o “nada”

    uma variável desse tipo armazena conteúdo indeterminado e uma função desse tipo retorna um conteúdo indeterminado.

    http://find/

  • 8/15/2019 funcoes_BCC201

    25/47

    A funcão main

  • 8/15/2019 funcoes_BCC201

    26/47

    26/46

    A funçao  main

      O programa principal na verdade é uma função, ele é umafunção especial.

      Ele é invocada automaticamente pelo programa quando esseinicia sua execução e possui um tipo fixo (int).

     O comando return informa ao sistema operacional se oprograma funcionou corretamente ou não.

      O padrão é que um programa retorne zero caso tenhafuncionado corretamente ou qualquer outro valor caso

    contrário.

    Declarando uma funcão I

    http://find/

  • 8/15/2019 funcoes_BCC201

    27/47

    27/46

    Declarando uma funçao I

     Declarar uma função sem a sua implementação é comodeclará-la com a implementação

      Para declará-la sem a implementação basta substituir as

    chaves e seu conteúdo por ponto e v́ırgula.

    t i p o n om e da f un ca o ( t i p o  

    ,t i p o  

    , . . . ,t i p o  

    );

    Declarando uma funcão II

    http://find/

  • 8/15/2019 funcoes_BCC201

    28/47

    28/46

    Declarando uma funçao II

    # i n c l u d e   i n t   soma( i n t   a ,   i n t   b ) ;i n t   main ( ){

    i n t   c , x , y ;p r i n t f ( " I ns er ir d oi s nú me ro s \ n " ) ;s c a n f ( " %d %d" , &x , &y ) ;p r i n t f ( " A soma eh %d "  , soma ( x , y ) ) ;

    }i n t   soma( i n t   a ,   i n t   b ){

    r e t u r n   ( a+b ) ;}

    Exemplos I

    http://find/

  • 8/15/2019 funcoes_BCC201

    29/47

    29/46

    Exemplos I

      Crie uma função para determinar se um número é ou não par.

    Exemplos II

    http://find/

  • 8/15/2019 funcoes_BCC201

    30/47

    30/46

    Exemplos II

    i n t   EhPar( i n t   num);i n t   main ( )

    {i n t   x ;p r i n t f ( " I ns er ir um nú me ro \ n " ) ;s c a n f ( " %d " , x ) ;i f    ( E hPar ( x ) = = 1 )

    p r i n t f ( " N um er o p ar ! \ n " ) ;e l s e

    p r i n t f ( " Nume ro nao eh par ! \ n" ) ;}i n t   EhPar( i n t   num){

    i f    (num % 2 == 0)r e t u r n   1 ;   // V e r d ad e i r oe l s e

    r e t u r n   0 ;   // F a ls o}

    http://find/

  • 8/15/2019 funcoes_BCC201

    31/47

    Exemplos IV

  • 8/15/2019 funcoes_BCC201

    32/47

    32/46

    Exemplos IV

    d o u b l e   P i t a g o r a s ( d o u b l e   cat1 ,   d o u b l e   c a t 2 ) ;v o i d   M o s t r a r ( d o u b l e   h i p ) ;

    i n t   main ( ){

    d o u b l e   c at 1 , c at 2 , h i p ;w h i l e ( 1 ){

    p r i n t f (   " I n s er i r p r im e ir o c at e to( 0 p ar a f i na l iz a r ) \ n" ) ;

    s c a n f ( " %lf " , &c a t 1 ) ;i f    ( c a t 1 = = 0 )   b r e a k ;p r i n t f ( " I n s er i r s e gu n do c a te to \ n " ) ;s c a n f ( " %lf " , &c a t 2 ) ;

    h i p = P i t a g o r a s ( c at 1 , c a t2 ) ;M o s t r a r ( h i p ) ;}r e t u r n   0 ;

    }

    http://find/

  • 8/15/2019 funcoes_BCC201

    33/47

    Exemplos VI

  • 8/15/2019 funcoes_BCC201

    34/47

    34/46

    p

     Determine se um número inteiro é ou não primo, criando uma

    função para isso. Sair com zero.

    Exemplos VII

    http://goforward/http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    35/47

    35/46

    p

    # i n c l u d e   i n t   EhPrimo( i n t   numero ) ;

    i n t   main ( ){

    i n t   num , p r i m o ;w h i l e ( 1 ){

    p r i n t f ( " I n s er i r n u me r o( 0 p ar a f i na l iz a r ) \ n) " ;

    s c a n f ( " %d " , &num ) ;i f    ( num = = 0)   b r e a k ;i f    ( E hP ri mo ( num ) = = 1 )

    p r i n t f ( " N um er o eh p ri mo ! \ n" ) ;

    e l s e p r i n t f ( " N um er o n ao eh p ri mo ! \ n" ) ;}r e t u r n   0 ;

    }

    Exemplos VIII

    http://find/

  • 8/15/2019 funcoes_BCC201

    36/47

    36/46

    p

    i n t   EhPrimo( i n t   numero){

    i n t   c o n t = 0 ; i ;f o r   ( i = 1 ; i  

  • 8/15/2019 funcoes_BCC201

    37/47

    37/46

      Variável local

    é declarada dentro de uma função, ela existe somente dentro de uma função, após o término da execução da função, ela deixa de existir.

    Variáveis locais e variáveis globais II

    http://goforward/http://find/http://goback/

  • 8/15/2019 funcoes_BCC201

    38/47

    38/46

      Variável global

    ela é declarada fora da função (ou seja, no mesmo lugar onderegistros (struct ), tipos enumerados (enum) e procedimentos

    são declarado) Existe dentro de todas as funções e qualquer

    procedimento/função pode alterá-las.

    http://find/

  • 8/15/2019 funcoes_BCC201

    39/47

    Variáveis locais e variáveis globais IV

  • 8/15/2019 funcoes_BCC201

    40/47

    40/46

      Ex. variável global:

    # i n c l u d e  

    i n t   v a r g l o b a l ;v o i d   I n c r e m e n t a G l o b a l ( i n t   a ) ;

    i n t   main ( ){

    i n t   i ;s c a n f ( " %d " , & i ) ;p r i n t f ( " v ar ia ve l g lo ba l eh %d \ n" , v a r g l o b a l ) ;I n c r e m e n t a G l o b a l ( i ) ;p r i n t f ( " v ar ia ve l g lo ba l eh %d \ n" , v a r g l o b a l ) ;

    }

    v o i d   I n c r e m e n t a G l o b a l ( i n t   a ){v a r g l o b a l += a ;   // v a r g l o b a l = v a r g l o b a l + a

    }

    Variáveis locais e variáveis globais V

    http://find/

  • 8/15/2019 funcoes_BCC201

    41/47

    41/46

      Notas:

    evite utilizar variáveis globais variáveis globais são sinais de um mau  design existe o problema que duas funções modifiquem o valor da

    varíavel no mesmo instânte

    http://find/

  • 8/15/2019 funcoes_BCC201

    42/47

    Variáveis locais e variáveis globais VII

  • 8/15/2019 funcoes_BCC201

    43/47

    43/46

    v o i d   M o s t r a G l o b a l e L o c a l ( i n t   v a r g l o b a l ,   i n t   num){

    p r i n t f ( " F un ca o - > P r iv a da : %d \ n " , v a r g l o b a l ) ;p r i n t f ( " F un ca o - > O ut ra P ri va da : %d \ n " , num ) ;

    p r i n t f ( " F un ca o - > G l ob a lP r iv a da : %d \ n " , : : v a r g l o b a l ) ;v a r g l o b a l += 5 ;num += 5 ;: : v a r g l o b a l += 5 ;

    }

    Variáveis locais e variáveis globais VIII

    http://find/

  • 8/15/2019 funcoes_BCC201

    44/47

    44/46

    Seria mostrado na tela:

    I n s e r i r d o i s numero : 5 060Funcao−>P r i v a d a : 50

    Funcao−>O ut ra P r i v ad a : 60Funcao−>G l o b a l P r i v a d a : 10

    Main−>v a r i a v e l g l o b a l eh : 15Main−>v a r i a v e l l o c a l eh : 50

    Exerćıcios em Aula I

    http://find/

  • 8/15/2019 funcoes_BCC201

    45/47

    45/46

    1.  Crie uma função chamada  Compara  que receba dois valores

    reais como parâmetro e retorne 1 se os números são iguais ou0 se os números são diferentes.

    2.   Fazer um aplicativo que produza a sáıda a seguir, usando oprocedimento  linha  para produzir a linha de caracteres

    desejada∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗A n i ta L op es

    =================Guto G a r c i a

    #################

    3.  Crie a função que calcule o volume de uma esfera. Utilize aseguinte fórmula para determinar o volume:  V   =   43π ∗ r 

    3

    http://find/

  • 8/15/2019 funcoes_BCC201

    46/47

  • 8/15/2019 funcoes_BCC201

    47/47

    47/46

    FIM

    http://find/