SlideShare una empresa de Scribd logo
Capítulo 4
Funciones
¿Qué son?¿Para qué sirven?
• Son un grupo de sentencias bajo el
  mismo nombre que realizan una tarea
  específica.
• Sirven para facilitar la resolución de
  problemas mediante la aplicación del
  paradigma “Dividir y Conquistar”.
Diferencia entre
             El Programa y las Funciones
•   Las funciones y los programas se parecen mucho, pero difieren:
    – Los programas son usados por un usuario externo.
    – Las funciones son utilizadas por un programador.
    – El usuario del programa “Hola Mundo” no conoce que
      es la función printf.
    – El programador que usa printf no siempre conocerá
      explícitamente como ésta hace para mostrar
      información en pantalla.
    – El programador que escribió printf conoce
      exactamente su funcionamiento interno.
Conceptos Básicos
• Función
   – Grupo de sentencias bajo el mismo nombre
     que realizan una tarea específica.
• Llamada a una función
   – Ejecuta el grupo de sentencias de una
     función.
• Retorno
   – Una vez “llamada” la función, esta hace su
     trabajo, y regresa al mismo punto donde fue
     llamada.
Funciones
• Vamos a conocer tres cosas muy
  importantes sobre las funciones:
  – ¿Cómo se declaran?
  – ¿Cómo se implementan?, y
  – ¿Cómo se usan?
Declaración de Funciones
• De forma similar a las variables, las
  funciones deben ser declaradas:
• La forma de declarar una función es
  siguiendo la forma predefinida:
tipoDatoRetorno nombreFuncion(lista parámetros);

• Por ejemplo:
 int potencia(int base, int exponente);
 float farenheitACelsius(double celsius);
Implementación de Funciones
 int potencia(int base, int exponente)
 {
         sentencias;                          La primera línea se escribe
                                              igual que en la declaración,
 }                                             pero sin el punto y coma.




float farenheitACelsius(double celsius)
{
                                Entre llaves se escriben
        sentencias;               las sentencias que
}                                ejecutan lo que debe
                                      realizar la función
¿Cómo Retornar?
• Si la función debe generar un valor, lo retornará usando
  la sentencia return dentro del cuerpo de la función.
• La forma de usarla es:
  return (variable o expresión que se debe retornar);
• Esto especifica que la función debe terminar, retornando
  el valor calculado.
• Hay funciones que no retornan datos, en este caso, se
  puede usar return, pero sin mencionar una expresión.
                           return;
Uso de Funciones
• Como las funciones siempre retornan un
  valor, el uso de una función consiste en
  utilizar el valor de retorno.
• Se lo puede hacer de dos formas:
  – Almacenar el valor de retorno en una
    variable que deberá ser del mismo tipo de
    dato que el tipo de dato de retorno de la
    función.
  – Utilizar el valor de retorno en una
    expresión.
Uso de Funciones (continuación)
• Ejemplo:
void main( )                       void main( )
{                                  {
    int x;                             float c;
    ….                                 ….
    x = potencia(a,b);                 c = farenheitACelsius(f);
    …                                  …
}                                  }

void main( )                       void main( )
{                                  {
    ….                                 ….
    printf(“%d”, potencia(a,b));       printf(“%f”, farenheitACelsius(f));
    …                                  …
}                                  }
Aplicación: Juegos de Azar

    Generación de Números
          Aleatorios
Generación de Números Aleatorios
• Función rand
  – Cargar <stdlib.h>
  – Returnar números “aleatorios“ entre 0 y RAND_MAX (por
    lo menos 32767)
        i = rand();
  – Números Pseudoaleatorios
     • Secuencia pre-establecida de números aleatorios
     • La misma secuencia para cada llamada a la función
• Para obtener un número aleatorio entre 1 y n:
        1 + ( rand() % n );
     • rand() % n returna un número entre 0 y n - 1
     • Agregando 1 genera números aleatorios entre 1 y n

       1 + ( rand() % 6); //Número entre 1 y 6
Generación de Números Aleatorios
• Función srand
   – <stdlib.h>
   – Toma un entero y salta a esa posición de su
     secuencia aleatoria.
       srand( time(NULL) ); //CARGAR <time.h>
     • time( NULL )
        – Returna el tiempo en el cual el programa fue compilado
          en segundos.
Librería MATH
• La librería math.h permite al programador efectuar
  cálculos matemáticos comunes a través de funciones.
    Num er o    Descr ipcion                                    Ej em plo
    ceil(x)     redondea x al entero mas pequeño no menor       ceil(9.2) es 10.0
                que x                                           ceil(-9.8) es –9.0
    floor(x)    redondea x al entero mas grande no mayor que    floor(9.2) es 9.0
                x                                               floor(-9.8) es –10.0
    fabs(x)     valor absoluto de x                             fabs(-9.5) es 9.5
    fmod(x,y)   residuo de x/ y como numero de punto flotante   fmod(13.657, 2.333) es
                                                                1.992
    sqrt(x)     raiz cuadrada de x                              sqrt(9.0) es 3.0
    pow(x,y)    x elevado a la potencia y                       pow(2,7) es 128
    log(x)      logaritmo natural de x(base e)                  log10(x)
    log10(x)    logaritmo de x(base 10)                         log(2.718282) es 1
    exp(x)      funcion exponencial                             exp(0.1) es 2.71828
    sin(x)      seno trigonometrico de x(en radianes)           sin(0.0) es 0.0
    cos(x)      coseno trigonometrico de x(en radianes)         cos(0.0) es 1
    tan(x)      tangente trigonometrico de x(en radianes)       tan(0.0) es 0
Funciones Predicado
• Las funciones que retornan valores
  lógicos se conocen como funciones
  predicado.
• Llamar a una función de predicado es
  equivalente a hacer una pregunta donde
  la respuesta puede ser Verdadera (TRUE)
  o Falsa (FALSE).
La Verdad detrás de las Funciones
• Hay una mayor complejidad de la mostrada, en el uso de
  funciones. Tomemos como ejemplo el siguiente programa:

                        #include <stdio.h>
 Si vemos el            //Declaración de funciones
 programa principal     int Factorial(int n);
 y la función como
 un todo, puede
                        void main()
 resultar un tanto                                                       Si vemos sólo el programa
                        {
 confuso:                                                                principal, tiene sentido, pues
                                       int i;
 • Hay dos                                                               se imprime el factorial de
                                       for (i = 0; i < 10; i ++)
 variables con                                                           todos los números hasta el 10
                                         printf(“%dn”, Factorial(i));
 nombre i
                        }
 • En el programa se
 usa la variable i
 como el número al      int Factorial (int n)
 que se le calcula el   {                                                       Si vemos sólo la
 factorial.                             int fact, i;                         función, tiene sentido,
 • En la función la                     fact = 1;                             pues se encarga de
 variable a la que                      for(i = 1; i <=n; i++)               calcular el factorial de
 se le calcula el                            fact = fact * i;                     la variable n
 factorial se llama n                   return (fact);
                        }
Paso de Argumentos a
                Funciones
En el programa principal, se calcula el            #include <stdio.h>
                                                   #include <simpio.h>
factorial de i.
                                                   //Declaración de funciones
En la función se calcula el factorial de n         int Factorial (int n);
¿Cómo es que hay diferentes                        void main()
                                                   {
identificadores para el mismo                         int i;
valor?                                                for (i = 0; i < 10; i ++)
                                                        printf(“%dn”, Factorial(i));
La respuesta esta muy relacionada con el           }

concepto de argumento:                             int Factorial (int n)
                                                   {
    - En el programa principal, i representa el        int fact, i;
                                                       fact = 1;
    argumento enviado a la función Factorial.          for(i = 1; i <=n; i++)
    - En la función Factorial, alguna variable            fact = fact * i;
                                                      return (fact);
    debe recibir el enviado, para representar      }
    dicho valor. Esta variable puede tener
    cualquier nombre, en este caso se le dio
    el nombre n.
    - Una variable definida en la cabecera de
    una función, que sirve para recibir el valor
    de un argumento, se conoce como
    parámetro.
Pasos para llamar a una Función
                                   #include <stdio.h>
• Se evalúan las expresiones       int Factorial(int n);
  enviadas como argumentos.        void main()
                                   {
                                                                      1
                                                                      2
                                                                      6
• El valor de cada argumento            int i;
                                        for (i = 0; i < 10; i ++)
  es copiado en orden en cada           {
                                             printf(“%dn”, Factorial(i));
  parámetro correspondiente        }
                                        }

  de la función llamada.
• Se ejecutan una a una las
  sentencias del cuerpo de la             Factorial(2)
                                          Factorial(1)
                                          Factorial(0)
                                          Factorial(3)
  función hasta que aparece la                                                n
  sentencia return.                  int Factorial(int n)
• Se evalúa la expresión de la       {
                                           int fact, i;
                                                                              3
                                                                              2
                                                                              1
                                                                              0
                                            fact = 1;
  sentencia return.                         for(i = 1; i <=n; i++)
                                                                             expr
• El programa que llamó a la              {
                                              fact = fact * i;
                                           }
  función continúa,                        return (fact);                    6
                                                                             2
                                                                             1
                                     }
  reemplazando en el lugar de
  la llamada, el valor retornado
Variables Locales
• En la función Factorial se usa una variable i, y en el
  programa principal se usa otra variable i, pero no parece
  que se usaran para lo mismo, ¿son diferentes?.
• De hecho, si son diferentes.
   – Cada función puede usar sus propias variables, y
     estas sólo serán válidas dentro de la función, se
     conocen como variables locales.
                      La variable i es   Al llamar a la función Factorial, se crean 3
       main          local a la funcion  variables locales a Factorial, pueden tener
                            main         cualquier nombre, en este caso: n, fact e i.
         i                     Factorial Las variables locales del main aun
             0   n
                                         existen, pero, no se pueden ver mientras
                     fact        i       Factorial este activa.
                                         Cuando todo Factorial termina, retorna el
                 0    1          1       valor, y las variables locales al main
                                         permanecen iguales como antes de la
                                         llamada.
Más sobre …

Un tipo especial de funciones:
       Procedimientos
Procedimientos
• Existen funciones que no retornan ningún valor, como
  printf:
         printf (“Hola Mundon”);
• Las funciones que no retornan nada, y que se llaman
  únicamente para que ejecuten su código, se les llama
  procedimientos.
• Muchos lenguajes de programación separan totalmente el
  concepto de funciones, con el de procedimientos, pero C
  las trata de igual forma.
• Un procedimiento en C, es una función sin valor de
  retorno.
             void menu (void);
• Los procedimientos pueden recibir tantos argumentos
  necesite.
Implementación de Procedimientos

     void mostrarMenu (void)
     {
           printf (“1. Tabla de Sumarn”);
           printf (“2. Tabla de Restarn”);
           printf (“3. Tabla de Multiplicarn”);
           printf (“4. Tabla de Dividirn”);
           printf (“5. Salirn”);
     }
Paso de Parámetros
• Ahora que conocemos de funciones, y sabemos crearlas,
  podemos crear una función que reciba dos valores y los
  retorne, intercambiados.
• Podríamos decir que el prototipo sería: void main()
   void intercambiar(int a, int b);                        {
                                                                         int x, y;
                                                                         printf(“Ingrese x:”);
              Al retornar la función no efectuaría el                    scanf(“%d”,&x);
              cambio, como lo deseamos. Recordemos                       printf(“Ingrese y:”);
              que, al pasar parámetros, se efectúa una                   scanf(“%d”,&y);
              copia de los valores. Este tipo de paso de                 printf(“x = %d, y= %d”, x, y);
              parámetros se conoce como PASO DE                          intercambiar(x,y);
              PARAMETROS POR VALOR.                                      printf(“x = %d, y= %d”, x, y);
                                                           }
        main                                               void intercambiar(int a, int b)
                                                           {
          x            y                 Intercambiar                   int tmp;

              3        4
                       a         b            tmp
                                                                        tmp = a;
                                                                        a = b;

                                     4          3
                                                                        b = tmp;
                           4
                           3         3                     }
Paso de Parámetros por Referencia
•   Para este tipo de problemas, en los cuales necesitamos modificar
    directamente los datos que se reciben como parámetros, se usa la
    llamada de parámetros POR REFERENCIA
•   De esta forma, el prototipo seria:
                                                     void main()
    void intercambiar(int *a, int *b);               {
                                                                   int x, y;
                                                                   printf(“Ingrese x:”);
                  Al retornar la función si habrá                  scanf(“%d”,&x);
                  efectuado el cambio sobre las                    printf(“Ingrese y:”);
                  variables que se pasaron por                     scanf(“%d”,&y);
                  referencia.                                      printf(“x = %d, y= %d”, x, y);
                                                                   intercambiar(&x,&y);
           main                                                    printf(“x = %d, y= %d”, x, y);
            x         y                              }
                                                     void intercambiar(int *a, int *b)
              4
              3           3
                          4           Intercambiar   {
                                                                  int tmp;
                  a           b        tmp                        tmp = *a;
                                                                  *a = *b;
                      3
                      4           3
                                  4          3                    *b = tmp;
                                                     }
Refinamiento
• Cuando un problema es muy grande, se busca
  separarlo, para resolver todo por partes. Esto es
  ventajoso:
   – Las partes más pequeñas son mas fáciles de entender
   – Si algo falla, el error es mas fácil de encontrar.
• Al escribir un programa, usualmente se piensa en el
  programa principal (main),y se piensa en las tareas
  más importantes.
• Se piensa en dividir el programa en componentes
  individuales, los cuales pueden ser a su vez, divididos
  en piezas más pequeñas.
• Esto se conoce como diseño top-down, o
  refinamiento paso a paso.
Un Problema más Grande
  • Se requiere escribir un programa que muestre el
                                 Dar Instrucciones
    calendario completo de un año dado, que no puede ser
    menor a 1900.                                  Imprimir Mes




                                              Mostrar Nombre del
Ingreso y                                     Mes
Validacion de Año
                                                Determinar que dia
                                                de la semana fue el
                    Dar el respectivo           primer dia del mes
                    marqen para el
                    primer dia del mes
Calendario


Dar Instrucciones                Pedir Año               Imprimir Calendario

                                                   Imprimir Calendario de c/ Mes



Imprimir Nombre       Determinar               Determinar el dia        Imprimir el Margen          Imprimir el
    del Mes        cuantos días trae            de la semana             para el primer dia          resto de
                        el mes                  donde cayo el                 del mes                  días
                                                  primer dia



                   Dependiendo del          Calcular el dia de la       Calcular el dia de la
                     mes y de si es        semana del primer dia    semana del primer dia del
                  bisiesto, elegir total    del año, contando el    mes, sumándole al primer
                        de días              total de días desde    dia del año, el total de días
                                              1900 hasta el año         hasta el mes actual,
                                            actual, considerando      considerando el total de
                                              los años bisiestos         días de cada mes

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Utilidad de las funciones en c
Utilidad de las funciones en cUtilidad de las funciones en c
Utilidad de las funciones en c
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Mars
MarsMars
Mars
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Contenidos
ContenidosContenidos
Contenidos
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
Estructurada 7
Estructurada 7Estructurada 7
Estructurada 7
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION IMETODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 

Destacado

Destacado (8)

Clase de administración
Clase de administraciónClase de administración
Clase de administración
 
Video Enseñanza
Video EnseñanzaVideo Enseñanza
Video Enseñanza
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Aula 2-planej e caracteristicas-tet
Aula 2-planej e caracteristicas-tetAula 2-planej e caracteristicas-tet
Aula 2-planej e caracteristicas-tet
 
Horario
HorarioHorario
Horario
 
paginas web
paginas webpaginas web
paginas web
 
Foldmarkclick
FoldmarkclickFoldmarkclick
Foldmarkclick
 
Movimiento
MovimientoMovimiento
Movimiento
 

Similar a 11funciones 1231096290787715-2

ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++die_dex
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variablesjcbenitezp
 
ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++Riki Tapia
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datosRiki Tapia
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2jcbenitezp
 
A3 u1-16230227
A3 u1-16230227A3 u1-16230227
A3 u1-16230227erikalejo
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punterosManuel
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptRicardo Pallás Román
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funcioneseulo10
 
Computacion funciones definidas por el programador
Computacion funciones definidas por el programadorComputacion funciones definidas por el programador
Computacion funciones definidas por el programadorManuel
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)Marco Antonio Ordoñez Valverde
 

Similar a 11funciones 1231096290787715-2 (20)

07 funciones
07 funciones07 funciones
07 funciones
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Funciones
FuncionesFunciones
Funciones
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variables
 
ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Funciones.ppt
Funciones.pptFunciones.ppt
Funciones.ppt
 
Funciones
FuncionesFunciones
Funciones
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2
 
A3 u1-16230227
A3 u1-16230227A3 u1-16230227
A3 u1-16230227
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Elemento 4
Elemento 4Elemento 4
Elemento 4
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScript
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Funciones recursivas en C++
Funciones recursivas en C++Funciones recursivas en C++
Funciones recursivas en C++
 
Presentacion
PresentacionPresentacion
Presentacion
 
Computacion funciones definidas por el programador
Computacion funciones definidas por el programadorComputacion funciones definidas por el programador
Computacion funciones definidas por el programador
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
Programación funcional Core Upgrade Febrero 2018 (ejemplos con Javascript)
 

Último

PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesssuserbe0d1c
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxJohanna4222
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 

Último (20)

PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptuales
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 

11funciones 1231096290787715-2

  • 2. ¿Qué son?¿Para qué sirven? • Son un grupo de sentencias bajo el mismo nombre que realizan una tarea específica. • Sirven para facilitar la resolución de problemas mediante la aplicación del paradigma “Dividir y Conquistar”.
  • 3. Diferencia entre El Programa y las Funciones • Las funciones y los programas se parecen mucho, pero difieren: – Los programas son usados por un usuario externo. – Las funciones son utilizadas por un programador. – El usuario del programa “Hola Mundo” no conoce que es la función printf. – El programador que usa printf no siempre conocerá explícitamente como ésta hace para mostrar información en pantalla. – El programador que escribió printf conoce exactamente su funcionamiento interno.
  • 4. Conceptos Básicos • Función – Grupo de sentencias bajo el mismo nombre que realizan una tarea específica. • Llamada a una función – Ejecuta el grupo de sentencias de una función. • Retorno – Una vez “llamada” la función, esta hace su trabajo, y regresa al mismo punto donde fue llamada.
  • 5. Funciones • Vamos a conocer tres cosas muy importantes sobre las funciones: – ¿Cómo se declaran? – ¿Cómo se implementan?, y – ¿Cómo se usan?
  • 6. Declaración de Funciones • De forma similar a las variables, las funciones deben ser declaradas: • La forma de declarar una función es siguiendo la forma predefinida: tipoDatoRetorno nombreFuncion(lista parámetros); • Por ejemplo: int potencia(int base, int exponente); float farenheitACelsius(double celsius);
  • 7. Implementación de Funciones int potencia(int base, int exponente) { sentencias; La primera línea se escribe igual que en la declaración, } pero sin el punto y coma. float farenheitACelsius(double celsius) { Entre llaves se escriben sentencias; las sentencias que } ejecutan lo que debe realizar la función
  • 8. ¿Cómo Retornar? • Si la función debe generar un valor, lo retornará usando la sentencia return dentro del cuerpo de la función. • La forma de usarla es: return (variable o expresión que se debe retornar); • Esto especifica que la función debe terminar, retornando el valor calculado. • Hay funciones que no retornan datos, en este caso, se puede usar return, pero sin mencionar una expresión. return;
  • 9. Uso de Funciones • Como las funciones siempre retornan un valor, el uso de una función consiste en utilizar el valor de retorno. • Se lo puede hacer de dos formas: – Almacenar el valor de retorno en una variable que deberá ser del mismo tipo de dato que el tipo de dato de retorno de la función. – Utilizar el valor de retorno en una expresión.
  • 10. Uso de Funciones (continuación) • Ejemplo: void main( ) void main( ) { { int x; float c; …. …. x = potencia(a,b); c = farenheitACelsius(f); … … } } void main( ) void main( ) { { …. …. printf(“%d”, potencia(a,b)); printf(“%f”, farenheitACelsius(f)); … … } }
  • 11. Aplicación: Juegos de Azar Generación de Números Aleatorios
  • 12. Generación de Números Aleatorios • Función rand – Cargar <stdlib.h> – Returnar números “aleatorios“ entre 0 y RAND_MAX (por lo menos 32767) i = rand(); – Números Pseudoaleatorios • Secuencia pre-establecida de números aleatorios • La misma secuencia para cada llamada a la función • Para obtener un número aleatorio entre 1 y n: 1 + ( rand() % n ); • rand() % n returna un número entre 0 y n - 1 • Agregando 1 genera números aleatorios entre 1 y n 1 + ( rand() % 6); //Número entre 1 y 6
  • 13. Generación de Números Aleatorios • Función srand – <stdlib.h> – Toma un entero y salta a esa posición de su secuencia aleatoria. srand( time(NULL) ); //CARGAR <time.h> • time( NULL ) – Returna el tiempo en el cual el programa fue compilado en segundos.
  • 14. Librería MATH • La librería math.h permite al programador efectuar cálculos matemáticos comunes a través de funciones. Num er o Descr ipcion Ej em plo ceil(x) redondea x al entero mas pequeño no menor ceil(9.2) es 10.0 que x ceil(-9.8) es –9.0 floor(x) redondea x al entero mas grande no mayor que floor(9.2) es 9.0 x floor(-9.8) es –10.0 fabs(x) valor absoluto de x fabs(-9.5) es 9.5 fmod(x,y) residuo de x/ y como numero de punto flotante fmod(13.657, 2.333) es 1.992 sqrt(x) raiz cuadrada de x sqrt(9.0) es 3.0 pow(x,y) x elevado a la potencia y pow(2,7) es 128 log(x) logaritmo natural de x(base e) log10(x) log10(x) logaritmo de x(base 10) log(2.718282) es 1 exp(x) funcion exponencial exp(0.1) es 2.71828 sin(x) seno trigonometrico de x(en radianes) sin(0.0) es 0.0 cos(x) coseno trigonometrico de x(en radianes) cos(0.0) es 1 tan(x) tangente trigonometrico de x(en radianes) tan(0.0) es 0
  • 15. Funciones Predicado • Las funciones que retornan valores lógicos se conocen como funciones predicado. • Llamar a una función de predicado es equivalente a hacer una pregunta donde la respuesta puede ser Verdadera (TRUE) o Falsa (FALSE).
  • 16. La Verdad detrás de las Funciones • Hay una mayor complejidad de la mostrada, en el uso de funciones. Tomemos como ejemplo el siguiente programa: #include <stdio.h> Si vemos el //Declaración de funciones programa principal int Factorial(int n); y la función como un todo, puede void main() resultar un tanto Si vemos sólo el programa { confuso: principal, tiene sentido, pues int i; • Hay dos se imprime el factorial de for (i = 0; i < 10; i ++) variables con todos los números hasta el 10 printf(“%dn”, Factorial(i)); nombre i } • En el programa se usa la variable i como el número al int Factorial (int n) que se le calcula el { Si vemos sólo la factorial. int fact, i; función, tiene sentido, • En la función la fact = 1; pues se encarga de variable a la que for(i = 1; i <=n; i++) calcular el factorial de se le calcula el fact = fact * i; la variable n factorial se llama n return (fact); }
  • 17. Paso de Argumentos a Funciones En el programa principal, se calcula el #include <stdio.h> #include <simpio.h> factorial de i. //Declaración de funciones En la función se calcula el factorial de n int Factorial (int n); ¿Cómo es que hay diferentes void main() { identificadores para el mismo int i; valor? for (i = 0; i < 10; i ++) printf(“%dn”, Factorial(i)); La respuesta esta muy relacionada con el } concepto de argumento: int Factorial (int n) { - En el programa principal, i representa el int fact, i; fact = 1; argumento enviado a la función Factorial. for(i = 1; i <=n; i++) - En la función Factorial, alguna variable fact = fact * i; return (fact); debe recibir el enviado, para representar } dicho valor. Esta variable puede tener cualquier nombre, en este caso se le dio el nombre n. - Una variable definida en la cabecera de una función, que sirve para recibir el valor de un argumento, se conoce como parámetro.
  • 18. Pasos para llamar a una Función #include <stdio.h> • Se evalúan las expresiones int Factorial(int n); enviadas como argumentos. void main() { 1 2 6 • El valor de cada argumento int i; for (i = 0; i < 10; i ++) es copiado en orden en cada { printf(“%dn”, Factorial(i)); parámetro correspondiente } } de la función llamada. • Se ejecutan una a una las sentencias del cuerpo de la Factorial(2) Factorial(1) Factorial(0) Factorial(3) función hasta que aparece la n sentencia return. int Factorial(int n) • Se evalúa la expresión de la { int fact, i; 3 2 1 0 fact = 1; sentencia return. for(i = 1; i <=n; i++) expr • El programa que llamó a la { fact = fact * i; } función continúa, return (fact); 6 2 1 } reemplazando en el lugar de la llamada, el valor retornado
  • 19. Variables Locales • En la función Factorial se usa una variable i, y en el programa principal se usa otra variable i, pero no parece que se usaran para lo mismo, ¿son diferentes?. • De hecho, si son diferentes. – Cada función puede usar sus propias variables, y estas sólo serán válidas dentro de la función, se conocen como variables locales. La variable i es Al llamar a la función Factorial, se crean 3 main local a la funcion variables locales a Factorial, pueden tener main cualquier nombre, en este caso: n, fact e i. i Factorial Las variables locales del main aun 0 n existen, pero, no se pueden ver mientras fact i Factorial este activa. Cuando todo Factorial termina, retorna el 0 1 1 valor, y las variables locales al main permanecen iguales como antes de la llamada.
  • 20. Más sobre … Un tipo especial de funciones: Procedimientos
  • 21. Procedimientos • Existen funciones que no retornan ningún valor, como printf: printf (“Hola Mundon”); • Las funciones que no retornan nada, y que se llaman únicamente para que ejecuten su código, se les llama procedimientos. • Muchos lenguajes de programación separan totalmente el concepto de funciones, con el de procedimientos, pero C las trata de igual forma. • Un procedimiento en C, es una función sin valor de retorno. void menu (void); • Los procedimientos pueden recibir tantos argumentos necesite.
  • 22. Implementación de Procedimientos void mostrarMenu (void) { printf (“1. Tabla de Sumarn”); printf (“2. Tabla de Restarn”); printf (“3. Tabla de Multiplicarn”); printf (“4. Tabla de Dividirn”); printf (“5. Salirn”); }
  • 23. Paso de Parámetros • Ahora que conocemos de funciones, y sabemos crearlas, podemos crear una función que reciba dos valores y los retorne, intercambiados. • Podríamos decir que el prototipo sería: void main() void intercambiar(int a, int b); { int x, y; printf(“Ingrese x:”); Al retornar la función no efectuaría el scanf(“%d”,&x); cambio, como lo deseamos. Recordemos printf(“Ingrese y:”); que, al pasar parámetros, se efectúa una scanf(“%d”,&y); copia de los valores. Este tipo de paso de printf(“x = %d, y= %d”, x, y); parámetros se conoce como PASO DE intercambiar(x,y); PARAMETROS POR VALOR. printf(“x = %d, y= %d”, x, y); } main void intercambiar(int a, int b) { x y Intercambiar int tmp; 3 4 a b tmp tmp = a; a = b; 4 3 b = tmp; 4 3 3 }
  • 24. Paso de Parámetros por Referencia • Para este tipo de problemas, en los cuales necesitamos modificar directamente los datos que se reciben como parámetros, se usa la llamada de parámetros POR REFERENCIA • De esta forma, el prototipo seria: void main() void intercambiar(int *a, int *b); { int x, y; printf(“Ingrese x:”); Al retornar la función si habrá scanf(“%d”,&x); efectuado el cambio sobre las printf(“Ingrese y:”); variables que se pasaron por scanf(“%d”,&y); referencia. printf(“x = %d, y= %d”, x, y); intercambiar(&x,&y); main printf(“x = %d, y= %d”, x, y); x y } void intercambiar(int *a, int *b) 4 3 3 4 Intercambiar { int tmp; a b tmp tmp = *a; *a = *b; 3 4 3 4 3 *b = tmp; }
  • 25. Refinamiento • Cuando un problema es muy grande, se busca separarlo, para resolver todo por partes. Esto es ventajoso: – Las partes más pequeñas son mas fáciles de entender – Si algo falla, el error es mas fácil de encontrar. • Al escribir un programa, usualmente se piensa en el programa principal (main),y se piensa en las tareas más importantes. • Se piensa en dividir el programa en componentes individuales, los cuales pueden ser a su vez, divididos en piezas más pequeñas. • Esto se conoce como diseño top-down, o refinamiento paso a paso.
  • 26. Un Problema más Grande • Se requiere escribir un programa que muestre el Dar Instrucciones calendario completo de un año dado, que no puede ser menor a 1900. Imprimir Mes Mostrar Nombre del Ingreso y Mes Validacion de Año Determinar que dia de la semana fue el Dar el respectivo primer dia del mes marqen para el primer dia del mes
  • 27. Calendario Dar Instrucciones Pedir Año Imprimir Calendario Imprimir Calendario de c/ Mes Imprimir Nombre Determinar Determinar el dia Imprimir el Margen Imprimir el del Mes cuantos días trae de la semana para el primer dia resto de el mes donde cayo el del mes días primer dia Dependiendo del Calcular el dia de la Calcular el dia de la mes y de si es semana del primer dia semana del primer dia del bisiesto, elegir total del año, contando el mes, sumándole al primer de días total de días desde dia del año, el total de días 1900 hasta el año hasta el mes actual, actual, considerando considerando el total de los años bisiestos días de cada mes