Funciones

                              Roberto Carlos
                               Abreu D´ıaz

                            Outline

                            Funciones
                            Caso de Estudio
                            Estructura de una
                            Funci´n
                                 o

      Funciones             Llamada a funciones
                            ´
                            Ambito
                            Call stack




Roberto Carlos Abreu D´
                      ıaz


    January 27, 2010
Funciones

                                 Roberto Carlos
                                  Abreu D´ıaz

                               Outline

                               Funciones
                               Caso de Estudio
                               Estructura de una
                               Funci´n
                                    o
Funciones                      Llamada a funciones
                               ´
                               Ambito
   Caso de Estudio             Call stack


   Estructura de una Funci´n
                          o
   Llamada a funciones
   ´
   Ambito
   Call stack
Funciones
Funciones
                                                              Roberto Carlos
                                                               Abreu D´ıaz

                                                            Outline

                                                            Funciones
                                                            Caso de Estudio
                                                            Estructura de una
                                                            Funci´n
                                                                 o
                                                            Llamada a funciones
                                                            ´
                                                            Ambito
                                                            Call stack




    Entrada, procesamiento, Salida
    Se pueden llamar (”ejecutar”) un sin n´mero de veces.
                                          u
    Relativamente independientes del resto del c´digo
                                                o
    Sin´nimos: sub-programas, procedimientos, m´todos,
       o                                          e
    funciones, rutinas
Funciones
Caso de Estudio
                                                                Roberto Carlos
                                                                 Abreu D´ıaz

                                                              Outline

Ejemplo de Kernighan y Ritchie                                Funciones
                                                              Caso de Estudio
                                                              Estructura de una
                                                              Funci´n
                                                                   o
    Si tenemos que dise˜ar y escribir un programa que
                        n                                     Llamada a funciones
                                                              ´
                                                              Ambito
    imprima cada l´
                  ınea de la entrada si esta contiene alg´n
                                                         u    Call stack

    patr´n de caracteres.
        o
    El c´digo ser´ algo as´
         o        ıa        ı:
    while (haya m´s l´
                    a ıneas)
    if (la l´
            ınea contiene el patr´n)
                                 o
    impr´ ımela
    Aunque podamos escribir todo el c´digo en el main(),
                                      o
    separar el c´digo en varias funciones trae consigo sus
                o
    ventajas
Funciones
Continuaci´n...
          o
                                                              Roberto Carlos
                                                               Abreu D´ıaz

                                                            Outline

                                                            Funciones
                                                            Caso de Estudio
Ejemplo de Kernighan y Ritchie (2)                          Estructura de una
                                                            Funci´n
                                                                 o
                                                            Llamada a funciones
                                                            ´
                                                            Ambito
    ”haya m´s l´
            a ıneas” es una funci´n que lee datos tipo
                                 o                          Call stack

    cadena de la entrada
    ”(if) la l´
              ınea contiene el patr´n” es una funci´n que
                                   o               o
    busca la ocurrencia de patrones de textos
    ”impr´
         ımela” es ya el printf!
    ¡Si queremos cambiar el patr´n de b´squeda s´lo
                                o      u        o
    tendr´
         ıamos que cambiar la funci´n encargada de eso!
                                   o
Funciones
Estructura de una Funci´n
                       o
                                                                  Roberto Carlos
                                                                   Abreu D´ıaz

                                                                Outline

                                                                Funciones
                                                                Caso de Estudio
                                                                Estructura de una
                                                                Funci´n
                                                                     o
                                                                Llamada a funciones
                                                                ´
                                                                Ambito
                                                                Call stack




    La lista de par´metros es separada por coma
                   a
    Si la funci´n no devuelve datos, el tipo de dato es: void
               o
    La palabra reservada return se utiliza para devolver el
    resultado
Funciones
Ejemplo!
                                          Roberto Carlos
                                           Abreu D´ıaz

                                        Outline
C´digo
 o                                      Funciones
                                        Caso de Estudio
                                        Estructura de una
 int f a c t o r i a l ( int n)         Funci´n
                                             o
                                        Llamada a funciones
 {                                      ´
                                        Ambito
                                        Call stack
       i f ( n <= 2 )
              return n ;

         int producto = n ;

         while ( n > 1)
             p r o d u c t o ∗= −−n ;
         return producto ;
 }
Funciones
Llamada a funciones
                                                                  Roberto Carlos
                                                                   Abreu D´ıaz

                                                                Outline

                                                                Funciones
                                                                Caso de Estudio
                                                                Estructura de una
                                                                Funci´n
                                                                     o
                                                                Llamada a funciones
                                                                ´
                                                                Ambito
                                                                Call stack
    ¡Ya lo hemos hecho! printf!
    Si la funci´n devuelve un resultado . . . la llamada a la
               o
    funci´n es una expresi´n v´lida!
          o               o a
    Ejemplo: factorial(5) + factorial(6)!
´
Ambito
                                                                   Funciones

                                                                 Roberto Carlos
                                                                  Abreu D´ıaz

                                                               Outline

                                                               Funciones
                                                               Caso de Estudio
                                                               Estructura de una
                                                               Funci´n
                                                                    o
                                                               Llamada a funciones
                                                               ´
                                                               Ambito
                                                               Call stack




   Las funciones pueden acceder a las variables globales
   Pero no pueden acceder a las variables de otras variables
   ¿Por qu´?
          e
Funciones
Call stack
               Roberto Carlos
                Abreu D´ıaz

             Outline

             Funciones
             Caso de Estudio
             Estructura de una
             Funci´n
                  o
             Llamada a funciones
             ´
             Ambito
             Call stack

Funciones

  • 1.
    Funciones Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Funciones Llamada a funciones ´ Ambito Call stack Roberto Carlos Abreu D´ ıaz January 27, 2010
  • 2.
    Funciones Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Funciones Llamada a funciones ´ Ambito Caso de Estudio Call stack Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack
  • 3.
    Funciones Funciones Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack Entrada, procesamiento, Salida Se pueden llamar (”ejecutar”) un sin n´mero de veces. u Relativamente independientes del resto del c´digo o Sin´nimos: sub-programas, procedimientos, m´todos, o e funciones, rutinas
  • 4.
    Funciones Caso de Estudio Roberto Carlos Abreu D´ıaz Outline Ejemplo de Kernighan y Ritchie Funciones Caso de Estudio Estructura de una Funci´n o Si tenemos que dise˜ar y escribir un programa que n Llamada a funciones ´ Ambito imprima cada l´ ınea de la entrada si esta contiene alg´n u Call stack patr´n de caracteres. o El c´digo ser´ algo as´ o ıa ı: while (haya m´s l´ a ıneas) if (la l´ ınea contiene el patr´n) o impr´ ımela Aunque podamos escribir todo el c´digo en el main(), o separar el c´digo en varias funciones trae consigo sus o ventajas
  • 5.
    Funciones Continuaci´n... o Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Ejemplo de Kernighan y Ritchie (2) Estructura de una Funci´n o Llamada a funciones ´ Ambito ”haya m´s l´ a ıneas” es una funci´n que lee datos tipo o Call stack cadena de la entrada ”(if) la l´ ınea contiene el patr´n” es una funci´n que o o busca la ocurrencia de patrones de textos ”impr´ ımela” es ya el printf! ¡Si queremos cambiar el patr´n de b´squeda s´lo o u o tendr´ ıamos que cambiar la funci´n encargada de eso! o
  • 6.
    Funciones Estructura de unaFunci´n o Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack La lista de par´metros es separada por coma a Si la funci´n no devuelve datos, el tipo de dato es: void o La palabra reservada return se utiliza para devolver el resultado
  • 7.
    Funciones Ejemplo! Roberto Carlos Abreu D´ıaz Outline C´digo o Funciones Caso de Estudio Estructura de una int f a c t o r i a l ( int n) Funci´n o Llamada a funciones { ´ Ambito Call stack i f ( n <= 2 ) return n ; int producto = n ; while ( n > 1) p r o d u c t o ∗= −−n ; return producto ; }
  • 8.
    Funciones Llamada a funciones Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack ¡Ya lo hemos hecho! printf! Si la funci´n devuelve un resultado . . . la llamada a la o funci´n es una expresi´n v´lida! o o a Ejemplo: factorial(5) + factorial(6)!
  • 9.
    ´ Ambito Funciones Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack Las funciones pueden acceder a las variables globales Pero no pueden acceder a las variables de otras variables ¿Por qu´? e
  • 10.
    Funciones Call stack Roberto Carlos Abreu D´ıaz Outline Funciones Caso de Estudio Estructura de una Funci´n o Llamada a funciones ´ Ambito Call stack