SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
• Archivos Cabecera
• Librería Matemática
• Definición, Implementación y Uso
• Generación de Números Aleatorios
• Paso de Parámetros:
      Por Valor e Introducción por Referencia
Archivos Cabecera

• Los problemas que buscamos resolver por el computador
        usualmente son bastante complejos, siempre
        buscaremos dividir un problema grande en
        subproblemas.
• Las funciones son la herramienta que nos ayudara en la
        técnica de “dividir y conquistar”
• Cada función se encarga de resolver un problema mas
        pequeño.
• Ya hemos utilizado funciones, pues existen funciones que
        ya han sido creadas y están incluidas en las librerías
• Por ejemplo printf(), de la librería estandar stdio.h, para
        mostrar información en pantalla
• De hecho, el programa principal es una función: main()
Librería Matemática

• La librería math.h permite al programador
  efectuar cálculos matemáticos comunes
   Prototipo Descripción                                      Ejemplo
   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
Definición de Funciones

Grupo de sentencias bajo un mismo nombre que
  solucionan un problema especifico
•   Llamar a una función es pedir que se ejecute para obtener su resultado
         • Se escribe el nombre de la función, seguida por una lista de
            expresiones separadas por coma y encerradas entre paréntesis.
•   Ejemplo
         • printf(“%d”, a);
         • e = abs(x-y)/ abs(x);
     – Las funciones son utilizadas o creadas por un programador, y solo él
       conoce cómo funciona
     – Los programas son usados por un usuario externo, el cual no conoce
       cómo trabajan las funciones
Implementación de Funciones

Para crear una nueva función se debe seguir los pasos:
• Declaración
   – Luego de las líneas de #include, y antes del programa principal
• Argumentos
   – Para lograr resolver un problema necesita que le entreguen datos
     de entrada
   – Existen funciones que no necesitan argumentos
• Implementación
   – Se especifica los pasos de la función, y cómo ésta llevará a cabo
     su tarea
• Retorno
   – Al llamar a una función, esperamos que regrese con un resultado
   – Al regresar y entregar el resultado se dice que
       • La función ha “retornado” al punto de llamada
Declaración y Prototipos

• Al escribir una nueva función, debe ser
  declarada, igual como declaramos una
  variable
• La declaración de una función, debe incluir:
  – El tipo de dato del valor que va a retornar
  – El nombre de la función
  – El tipo de dato de cada argumento, y un nombre
    para cada uno.

• El prototipo se refiere a la declaración de una
  función
             double sqrt(double x);
Uso de Funciones

     • Los datos de entrada de una función son obtenidos por el
       programa principal, ya sea por teclado o de alguna otra forma.
       La función solo debe recibirlos, no obtenerlos
     • El resultado que genera una función es obtenido por ella y
       retornado al programa donde fue llamada.
     • No es deber de la función imprimir datos por pantalla, eso lo
       decidirá el programa principal
                   void main()
                   {
                            double x, y;
E/S de datos permiten       printf(“Ingrese un real:”);           Argumentos y retorno
a un programa               scanf(“%f”, &x);                      permiten a una función
comunicarse con su                                                comunicarse con el
                            y = sin(x);                           programa que la llama
usuario externo
                            printf(“El seno de x es: %.2f”, y);
                   }
Definición de Funciones:
                 Analogía
• Un programa principal es similar a un jefe, y una función
  a un empleado en una oficina

   – Si el jefe necesita resolver un cierto problema, lo divide en varias tareas
     y llama a sus empleados, para que cada uno resuelva una tarea
   – Dependiendo de la tarea, el jefe entrega al empleado los datos que este
     necesita para resolverla. Estos son equivalentes a los argumentos para
     una función
   – Para resolver su tarea especifica, el empleado podría a su vez, delegar
     subtareas a otros empleados
   – Una vez encargada la resolución de una tarea, el jefe solo espera que el
     empleado retorne con el resultado deseado. Esto es equivalente al valor
     de retorno de una función
   – El jefe nunca se entera de los detalles de cómo el empleado resolvió la
     tarea
Ejercicio de Ejemplo

 Escribir un programa que muestre las
  respectivas conversiones de Celsius a
  Fahrenheit de las temperaturas de 0 a 100,
  de 5 en 5
 Esto se logra con la fórmula:
                  9
               F  C  32
                  5
 Podríamos crear una función que solo se
  encargue de convertir de Celsius a
  Fahrenheit, y luego podremos usarla en el
  programa deseado
Implementación: Prototipo
   – Qué necesitamos que la función genere:
       • La temperatura en Fahrenheit(real)
   – Qué necesita la función para resolver el problema:
       • La temperatura en Celsius(real)

       double CelsiusAFahrenheit (double c);
• La implementación se compone de dos partes:
   – La cabecera es igual que el prototipo. El cuerpo es un bloque de sentencias,
     encerrado entre llaves. Si se van a necesitar variables, se declaran en el
     bloque.
                   double CelsiusAFahrenheit(double c)
                   {         /*Cuerpo*/
                   }
Implementación: Retorno

 El retorno de la función especifica que debe terminar y
  devolver el valor calculado.
        return (expresión que se debe retornar);
 Hay funciones que no retornan datos, se usa return pero sin
  mencionar valor de retorno: return;

             double CelsiusAFahrenheit(double c)
             {      return (9.0 / 5.0 * c + 32);
             }

 Una vez implementada, la función puede ser usada por
  cualquier otro programa o función, es decir, puede ser
  LLAMADA
Llamada a la función
#include <stdio.h>

#define LIMITEINF 0
#define LIMITESUP 100
#define PASO 5

// Prototipos de Funciones
double CelsiusAFahrenheit(double c);

/* Programa Principal */
void main()
{
          int c=0;
          printf(“Tabla de conversión de Celsius a Fahrenheit.n”);
          printf(“C      Fn”);
          for(c = LIMITEINF; c <= LIMITESUP; c = c + PASO)
                     printf(“%3d     %3fn”, c, CelsiusAFahrenheit(c));
}

/* Esta función retorna el equivalente en Fahrenheit del valor c
en Celsius */
double CelsiusAFahrenheit(double c)
{
         return (9.0 / 5.0 * c + 32);
}
Ejercicio

• Escribir la función Factorial en C que permita
  calcular el factorial de un numero dado.
  – El factorial de 0 es 1
  – El factorial de 1 es 1(1x1)
  – El factorial de 2 es 2(1x2)
  – El factorial de 3 es 6(1x2x3)
  – El factorial de 4 es 24(1x2x3x4)
  – El factorial de un número dado es la multiplicación de todos los
    números desde el 1 hasta el mismo.
Solución

                                   int Factorial(int n)
     Inicio
                                   {
   Recibir n
                                            int fact, i=0;
                                            fact = 1;
 Fact = 1;
 i = 1;                                     if (n==0)
                                                    return 1;
    i >=n          Retornar fact

                                            for(i = 1; i <=n; i++)
fact = fact * i;       Fin                           fact = fact * i;

   i = i +1;
                                            return (fact);
                                   }
Paso de Parámetros
                             a Funciones

                          #include <stdio.h>

                          //Declaración de funciones
                          int Factorial(int n);
Si vemos el programa
principal y la función
como un todo, puede       void main()
resultar un tanto         {                                               Si vemos sólo el programa
confuso:                                int i;                            principal, tiene sentido, pues se
• Hay dos variables                     for (i = 0; i < 10; i ++)         imprime el factorial de todos los
con nombre i                              printf(“%dn”, Factorial(i));   números hasta el 10
• En el programa se       }
usa la variable i como
el número al que se le    int Factorial (int n)
calcula el factorial.     {
• En la función la                        int fact, i;                        Si vemos sólo la función,
variable a la que se le                   fact = 1;                             tiene sentido, pues se
calcula el factorial se                   for(i = 1; i <=n; i++)                encarga de calcular el
llama n                                        fact = fact * i;               factorial de la variable n
                                          return (fact);
                          }
Paso de Parámetros
                     a Funciones
• Se evalúan las expresiones          #include <stdio.h>
  enviadas como argumentos            int Factorial(int n);
• El valor de cada argumento es       main()
                                      {
                                                                        1
                                                                        2
                                                                        6
  copiado en cada parámetro de             int i;
                                           for (i = 0; i < 10; i ++)
  la función llamada.                      {
                                                          printf(“%dn”, Factorial(i));
• Se ejecutan una a una las                }
                                      }
  sentencias de la función hasta
  que aparece la sentencia return
• Se evalúa la expresión de la
                                             Factorial(3)
                                             Factorial(2)
                                             Factorial(1)
                                             Factorial(0)
  sentencia return.                                                                       n
• El programa que llamó a la
                                      int Factorial(int n)
  función continúa, reemplazando      {
                                                      int fact, i;
                                                                                          3
                                                                                          2
                                                                                          1
                                                                                          0
  en el lugar de la llamada, por el                   fact = 1;
                                                      for(i = 1; i <=n; i++)
  valor retornado                                     {
                                                            fact = fact * i;
                                                                                    expr
                                                      }
                                                      return (fact);
                                      }                                             6
                                                                                    2
                                                                                    1
Paso de Parámetros
                        Por Valor
 Crearemos una funcion que reciba dos valores y los intercambie
 Podríamos decir que el prototipo sería:
     void Intercambiar(int a, int b);                 void main()
                                                       {
Esta función no efectuará el cambio, como se                         int x, y;
                                                                     printf(“Ingrese x:”);
espera.
                                                                     scanf(“%d”,&x);
Al pasar parámetros, se efectúa una copia de                         printf(“Ingrese y:”);
los valores. Este tipo se conoce como PASO DE                        scanf(“%d”,&y);
PARAMETROS POR VALOR.                                                printf(“x = %d, y= %d”, x, y);
                                                                     Intercambiar(x, y);
                                                                     printf(“x = %d, y= %d”, x, y);
         main                                          }
                                                       void Intercambiar(int a, int b)
          x          y               Intercambiar      {

              3      4
                     a       b            tmp
                                                                    int tmp;
                                                                    tmp = a;
                                                                    a = b;
                         4
                         3       4
                                 3          3                       b = tmp;
                                                       }
Paso de Parámetros
                         Por Referencia
•   Para modificar directamente los datos que se reciben como parámetros, se usa
    la llamada POR REFERENCIA
•   El prototipo sería:
                                                       void main()

• void Intercambiar(int *a, int *b);                   {
                                                                     int x, y;
                                                                     printf(“Ingrese x:”);
                                                                      scanf(“%d”,&x);
                 Al retornar la función si habrá                     printf(“Ingrese y:”);
                 efectuado el cambio sobre las                        scanf(“%d”,&y);
                 variables que se pasaron por                        printf(“x = %d, y= %d”, x, y);
                                                                     Intercambiar(&x, &y);
                 referencia.                                         printf(“x = %d, y= %d”, x, y);
         main                                          }
                                                       void Intercambiar(int *a, int *b)
          x            y                               {
                                                                    int tmp;
             4
             3             3
                           4           Intercambiar                 tmp = a;
                                                                    a = b;
                   a           b         tmp                        b = tmp;
                                                       }
                       3
                       4           3
                                   4        3
Procedimientos

• Existen funciones que no retornan ningún valor:
                   printf (“Hola Mundon”);
• Una función que no retorna nada, y que se llama únicamente
  para que ejecute su código, se llama procedimiento
• C trata de igual forma a las funciones y a los procedimientos
• Un procedimiento en C, es una función sin valor de
  retorno
        void DarInstrucciones(void);


• Los procedimientos pueden recibir tantos argumentos necesite
Implementación de un
       Procedimiento

void ImprimirMenu (void)
{
      printf   (“1.   Tabla de Sumarn”);
      printf   (“2.   Tabla de Restarn”);
      printf   (“3.   Tabla de Multiplicarn”);
      printf   (“4.   Tabla de Dividirn”);
      printf   (“5.   Salirn”);
}
Generación de Números
               Aleatorios
• Para introducir el factor “suerte” en los programas en C, tenemos
  la función rand() que genera números aleatorios.
• Los números obtenidos son enteros entre 0 y RAND_MAX (32767).
• Si ejecutamos varias veces el programa, la secuencia de
  números aleatorios se repite. Si un programa genera 3
  números aleatorios entre 0 y 10. Lo ejecutamos una vez y
  obtenemos por ejemplo 4, 7 y 9. Lo ejecutamos por segunda
  vez y vuelve a salir 4, 7 y 9. Y siempre se repetirá este
  resultado.
• Esto sucede porque rand() "calcula" los números aleatorios
  partiendo de un número inicial llamado semilla.
• Si volvemos a ejecutar el programa desde el principio, el
  número inicial (la semilla) que usa rand() es el mismo, por lo
  tanto, la secuencia de números aleatorios se repetirá.
Función rand()

•   aleatorio = rand(); // Aleatorio entre 0 y 32767

•   La operación módulo (%) nos da el residuo de dividir rand() entre cualquier
    número. Este residuo puede ir de 0 a N-1.

     aleatorio = rand () % N;           // Aleatorio entre 0 y N-1
     aleatorio = rand () % 6;           // Aleatorio entre 0 y 5

     aleatorio = rand () % N+1;         // Aleatorio entre 1 y N
     aleatorio = rand () % 7;           // Aleatorio entre 1 y 6

     aleatorio = N + rand() % (M-N+1) ;            // Aleatorio entre N y M
     aleatorio = 20 + rand () % 11;               // Aleatorio entre 20 y 30
Función srand()

• Para evitar el problema de obtener siempre los mismos números
  aleatorios, tenemos la función srand()
• A esta función se le pasa un parámetro que se utilizará como número
  semilla para el cálculo. No se debe poner un número fijo como
  semilla, porque entonces se repite el problema.
• Podemos utiliza la fecha/hora del sistema, pues este valor cambia si
  ejecutamos el programa en distintos instantes de tiempo.
• En C se obtiene con la función time()
        srand (time(NULL));
• A la función srand() sólo debemos llamarla una vez en nuestro
  programa, antes de utilizar la función rand()
• Para utilizar las funciones se debe declarar las librerías:
        #include <stdlib.h>
        #include <time.h>

Más contenido relacionado

La actualidad más candente

Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Metricas de calidad de software
Metricas de calidad de softwareMetricas de calidad de software
Metricas de calidad de softwareisisparada
 
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...lupita zume
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datospepelebu1313
 
Programacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismoProgramacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismoJosé Antonio Sandoval Acosta
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesbasilioj
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a ObjetosIsmael Perea
 
Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,GQ Vargas
 
Normalización en Bases de datos
Normalización en Bases de datosNormalización en Bases de datos
Normalización en Bases de datoskamui002
 
Algoritmo centralizado
Algoritmo centralizadoAlgoritmo centralizado
Algoritmo centralizadoPattzy Montero
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Walter Javier Franck
 
Procesos Interrupciones y Nucleo
 Procesos Interrupciones y Nucleo Procesos Interrupciones y Nucleo
Procesos Interrupciones y NucleoG Hoyos A
 
Teoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesTeoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesErivan Martinez Ovando
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blancaStudentPc
 

La actualidad más candente (20)

Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Metricas de calidad de software
Metricas de calidad de softwareMetricas de calidad de software
Metricas de calidad de software
 
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
 
Odbc
OdbcOdbc
Odbc
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Programacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismoProgramacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismo
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relaciones
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,
 
Normalización en Bases de datos
Normalización en Bases de datosNormalización en Bases de datos
Normalización en Bases de datos
 
Algoritmo centralizado
Algoritmo centralizadoAlgoritmo centralizado
Algoritmo centralizado
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Comandos c#
Comandos c#Comandos c#
Comandos c#
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)
 
Procesos Interrupciones y Nucleo
 Procesos Interrupciones y Nucleo Procesos Interrupciones y Nucleo
Procesos Interrupciones y Nucleo
 
Teoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesTeoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes Formales
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 

Destacado

Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientosRichard Robalino
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificadocompumet sac
 
Librerias en-lenguaje-c
Librerias en-lenguaje-cLibrerias en-lenguaje-c
Librerias en-lenguaje-cKevin2811
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Cantidad de divisores
Cantidad de divisoresCantidad de divisores
Cantidad de divisorescviana23
 
procedimientos (programación)
procedimientos (programación)procedimientos (programación)
procedimientos (programación)Jandry Banegas
 
Factorial de un número 2º
Factorial de un número   2ºFactorial de un número   2º
Factorial de un número 2ºbrisagaela29
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ Eli Diaz
 
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)Juan Manuel Pineda
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 

Destacado (20)

Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Librerias en-lenguaje-c
Librerias en-lenguaje-cLibrerias en-lenguaje-c
Librerias en-lenguaje-c
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Factorial
FactorialFactorial
Factorial
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Cantidad de divisores
Cantidad de divisoresCantidad de divisores
Cantidad de divisores
 
Introducción a lenguaje Visual Basic
Introducción a lenguaje Visual BasicIntroducción a lenguaje Visual Basic
Introducción a lenguaje Visual Basic
 
Clase 6
Clase 6Clase 6
Clase 6
 
procedimientos (programación)
procedimientos (programación)procedimientos (programación)
procedimientos (programación)
 
1002 19
1002 191002 19
1002 19
 
Factorial de un número 2º
Factorial de un número   2ºFactorial de un número   2º
Factorial de un número 2º
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++
 
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)
Modulo postítulo gestión de bibliotecas educativas - Villa María ( Córdoba)
 
11 Funciones
11 Funciones11 Funciones
11 Funciones
 
Introducción c++
Introducción c++Introducción c++
Introducción c++
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 

Similar a Capítulo 6 funciones y procedimiento

Similar a Capítulo 6 funciones y procedimiento (20)

11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
07 funciones
07 funciones07 funciones
07 funciones
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
050 Componentes de un programa Python.pdf
050 Componentes de un programa Python.pdf050 Componentes de un programa Python.pdf
050 Componentes de un programa Python.pdf
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
Funciones
FuncionesFunciones
Funciones
 
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
 
Introducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CIntroducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje C
 
Modulo4
Modulo4Modulo4
Modulo4
 
Funciones recursivas en C++
Funciones recursivas en C++Funciones recursivas en C++
Funciones recursivas en C++
 
Funciones
FuncionesFunciones
Funciones
 
Clase 7
Clase 7Clase 7
Clase 7
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
CURSO DE PROGRAMACION BASICA - Cap 5
CURSO DE PROGRAMACION BASICA - Cap 5CURSO DE PROGRAMACION BASICA - Cap 5
CURSO DE PROGRAMACION BASICA - Cap 5
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Actividad 20
Actividad 20 Actividad 20
Actividad 20
 

Último

30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 

Último (20)

30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 

Capítulo 6 funciones y procedimiento

  • 1. • Archivos Cabecera • Librería Matemática • Definición, Implementación y Uso • Generación de Números Aleatorios • Paso de Parámetros: Por Valor e Introducción por Referencia
  • 2. Archivos Cabecera • Los problemas que buscamos resolver por el computador usualmente son bastante complejos, siempre buscaremos dividir un problema grande en subproblemas. • Las funciones son la herramienta que nos ayudara en la técnica de “dividir y conquistar” • Cada función se encarga de resolver un problema mas pequeño. • Ya hemos utilizado funciones, pues existen funciones que ya han sido creadas y están incluidas en las librerías • Por ejemplo printf(), de la librería estandar stdio.h, para mostrar información en pantalla • De hecho, el programa principal es una función: main()
  • 3. Librería Matemática • La librería math.h permite al programador efectuar cálculos matemáticos comunes Prototipo Descripción Ejemplo 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
  • 4. Definición de Funciones Grupo de sentencias bajo un mismo nombre que solucionan un problema especifico • Llamar a una función es pedir que se ejecute para obtener su resultado • Se escribe el nombre de la función, seguida por una lista de expresiones separadas por coma y encerradas entre paréntesis. • Ejemplo • printf(“%d”, a); • e = abs(x-y)/ abs(x); – Las funciones son utilizadas o creadas por un programador, y solo él conoce cómo funciona – Los programas son usados por un usuario externo, el cual no conoce cómo trabajan las funciones
  • 5. Implementación de Funciones Para crear una nueva función se debe seguir los pasos: • Declaración – Luego de las líneas de #include, y antes del programa principal • Argumentos – Para lograr resolver un problema necesita que le entreguen datos de entrada – Existen funciones que no necesitan argumentos • Implementación – Se especifica los pasos de la función, y cómo ésta llevará a cabo su tarea • Retorno – Al llamar a una función, esperamos que regrese con un resultado – Al regresar y entregar el resultado se dice que • La función ha “retornado” al punto de llamada
  • 6. Declaración y Prototipos • Al escribir una nueva función, debe ser declarada, igual como declaramos una variable • La declaración de una función, debe incluir: – El tipo de dato del valor que va a retornar – El nombre de la función – El tipo de dato de cada argumento, y un nombre para cada uno. • El prototipo se refiere a la declaración de una función double sqrt(double x);
  • 7. Uso de Funciones • Los datos de entrada de una función son obtenidos por el programa principal, ya sea por teclado o de alguna otra forma. La función solo debe recibirlos, no obtenerlos • El resultado que genera una función es obtenido por ella y retornado al programa donde fue llamada. • No es deber de la función imprimir datos por pantalla, eso lo decidirá el programa principal void main() { double x, y; E/S de datos permiten printf(“Ingrese un real:”); Argumentos y retorno a un programa scanf(“%f”, &x); permiten a una función comunicarse con su comunicarse con el y = sin(x); programa que la llama usuario externo printf(“El seno de x es: %.2f”, y); }
  • 8. Definición de Funciones: Analogía • Un programa principal es similar a un jefe, y una función a un empleado en una oficina – Si el jefe necesita resolver un cierto problema, lo divide en varias tareas y llama a sus empleados, para que cada uno resuelva una tarea – Dependiendo de la tarea, el jefe entrega al empleado los datos que este necesita para resolverla. Estos son equivalentes a los argumentos para una función – Para resolver su tarea especifica, el empleado podría a su vez, delegar subtareas a otros empleados – Una vez encargada la resolución de una tarea, el jefe solo espera que el empleado retorne con el resultado deseado. Esto es equivalente al valor de retorno de una función – El jefe nunca se entera de los detalles de cómo el empleado resolvió la tarea
  • 9. Ejercicio de Ejemplo  Escribir un programa que muestre las respectivas conversiones de Celsius a Fahrenheit de las temperaturas de 0 a 100, de 5 en 5  Esto se logra con la fórmula: 9 F  C  32 5  Podríamos crear una función que solo se encargue de convertir de Celsius a Fahrenheit, y luego podremos usarla en el programa deseado
  • 10. Implementación: Prototipo – Qué necesitamos que la función genere: • La temperatura en Fahrenheit(real) – Qué necesita la función para resolver el problema: • La temperatura en Celsius(real) double CelsiusAFahrenheit (double c); • La implementación se compone de dos partes: – La cabecera es igual que el prototipo. El cuerpo es un bloque de sentencias, encerrado entre llaves. Si se van a necesitar variables, se declaran en el bloque. double CelsiusAFahrenheit(double c) { /*Cuerpo*/ }
  • 11. Implementación: Retorno  El retorno de la función especifica que debe terminar y devolver el valor calculado. return (expresión que se debe retornar);  Hay funciones que no retornan datos, se usa return pero sin mencionar valor de retorno: return; double CelsiusAFahrenheit(double c) { return (9.0 / 5.0 * c + 32); }  Una vez implementada, la función puede ser usada por cualquier otro programa o función, es decir, puede ser LLAMADA
  • 12. Llamada a la función #include <stdio.h> #define LIMITEINF 0 #define LIMITESUP 100 #define PASO 5 // Prototipos de Funciones double CelsiusAFahrenheit(double c); /* Programa Principal */ void main() { int c=0; printf(“Tabla de conversión de Celsius a Fahrenheit.n”); printf(“C Fn”); for(c = LIMITEINF; c <= LIMITESUP; c = c + PASO) printf(“%3d %3fn”, c, CelsiusAFahrenheit(c)); } /* Esta función retorna el equivalente en Fahrenheit del valor c en Celsius */ double CelsiusAFahrenheit(double c) { return (9.0 / 5.0 * c + 32); }
  • 13. Ejercicio • Escribir la función Factorial en C que permita calcular el factorial de un numero dado. – El factorial de 0 es 1 – El factorial de 1 es 1(1x1) – El factorial de 2 es 2(1x2) – El factorial de 3 es 6(1x2x3) – El factorial de 4 es 24(1x2x3x4) – El factorial de un número dado es la multiplicación de todos los números desde el 1 hasta el mismo.
  • 14. Solución int Factorial(int n) Inicio { Recibir n int fact, i=0; fact = 1; Fact = 1; i = 1; if (n==0) return 1; i >=n Retornar fact for(i = 1; i <=n; i++) fact = fact * i; Fin fact = fact * i; i = i +1; return (fact); }
  • 15. Paso de Parámetros a Funciones #include <stdio.h> //Declaración de funciones int Factorial(int n); Si vemos el programa principal y la función como un todo, puede void main() resultar un tanto { Si vemos sólo el programa confuso: int i; principal, tiene sentido, pues se • Hay dos variables for (i = 0; i < 10; i ++) imprime el factorial de todos los con nombre i printf(“%dn”, Factorial(i)); números hasta el 10 • En el programa se } usa la variable i como el número al que se le int Factorial (int n) calcula el factorial. { • En la función la int fact, i; Si vemos sólo la función, variable a la que se le fact = 1; tiene sentido, pues se calcula el factorial se for(i = 1; i <=n; i++) encarga de calcular el llama n fact = fact * i; factorial de la variable n return (fact); }
  • 16. Paso de Parámetros a Funciones • Se evalúan las expresiones #include <stdio.h> enviadas como argumentos int Factorial(int n); • El valor de cada argumento es main() { 1 2 6 copiado en cada parámetro de int i; for (i = 0; i < 10; i ++) la función llamada. { printf(“%dn”, Factorial(i)); • Se ejecutan una a una las } } sentencias de la función hasta que aparece la sentencia return • Se evalúa la expresión de la Factorial(3) Factorial(2) Factorial(1) Factorial(0) sentencia return. n • El programa que llamó a la int Factorial(int n) función continúa, reemplazando { int fact, i; 3 2 1 0 en el lugar de la llamada, por el fact = 1; for(i = 1; i <=n; i++) valor retornado { fact = fact * i; expr } return (fact); } 6 2 1
  • 17. Paso de Parámetros Por Valor  Crearemos una funcion que reciba dos valores y los intercambie  Podríamos decir que el prototipo sería:  void Intercambiar(int a, int b); void main() { Esta función no efectuará el cambio, como se int x, y; printf(“Ingrese x:”); espera. scanf(“%d”,&x); Al pasar parámetros, se efectúa una copia de printf(“Ingrese y:”); los valores. Este tipo se conoce como PASO DE scanf(“%d”,&y); PARAMETROS POR VALOR. printf(“x = %d, y= %d”, x, y); Intercambiar(x, y); printf(“x = %d, y= %d”, x, y); main } void Intercambiar(int a, int b) x y Intercambiar { 3 4 a b tmp int tmp; tmp = a; a = b; 4 3 4 3 3 b = tmp; }
  • 18. Paso de Parámetros Por Referencia • Para modificar directamente los datos que se reciben como parámetros, se usa la llamada POR REFERENCIA • El prototipo sería: void main() • void Intercambiar(int *a, int *b); { int x, y; printf(“Ingrese x:”); scanf(“%d”,&x); Al retornar la función si habrá printf(“Ingrese y:”); efectuado el cambio sobre las scanf(“%d”,&y); variables que se pasaron por printf(“x = %d, y= %d”, x, y); Intercambiar(&x, &y); referencia. printf(“x = %d, y= %d”, x, y); main } void Intercambiar(int *a, int *b) x y { int tmp; 4 3 3 4 Intercambiar tmp = a; a = b; a b tmp b = tmp; } 3 4 3 4 3
  • 19. Procedimientos • Existen funciones que no retornan ningún valor: printf (“Hola Mundon”); • Una función que no retorna nada, y que se llama únicamente para que ejecute su código, se llama procedimiento • C trata de igual forma a las funciones y a los procedimientos • Un procedimiento en C, es una función sin valor de retorno void DarInstrucciones(void); • Los procedimientos pueden recibir tantos argumentos necesite
  • 20. Implementación de un Procedimiento void ImprimirMenu (void) { printf (“1. Tabla de Sumarn”); printf (“2. Tabla de Restarn”); printf (“3. Tabla de Multiplicarn”); printf (“4. Tabla de Dividirn”); printf (“5. Salirn”); }
  • 21. Generación de Números Aleatorios • Para introducir el factor “suerte” en los programas en C, tenemos la función rand() que genera números aleatorios. • Los números obtenidos son enteros entre 0 y RAND_MAX (32767). • Si ejecutamos varias veces el programa, la secuencia de números aleatorios se repite. Si un programa genera 3 números aleatorios entre 0 y 10. Lo ejecutamos una vez y obtenemos por ejemplo 4, 7 y 9. Lo ejecutamos por segunda vez y vuelve a salir 4, 7 y 9. Y siempre se repetirá este resultado. • Esto sucede porque rand() "calcula" los números aleatorios partiendo de un número inicial llamado semilla. • Si volvemos a ejecutar el programa desde el principio, el número inicial (la semilla) que usa rand() es el mismo, por lo tanto, la secuencia de números aleatorios se repetirá.
  • 22. Función rand() • aleatorio = rand(); // Aleatorio entre 0 y 32767 • La operación módulo (%) nos da el residuo de dividir rand() entre cualquier número. Este residuo puede ir de 0 a N-1. aleatorio = rand () % N; // Aleatorio entre 0 y N-1 aleatorio = rand () % 6; // Aleatorio entre 0 y 5 aleatorio = rand () % N+1; // Aleatorio entre 1 y N aleatorio = rand () % 7; // Aleatorio entre 1 y 6 aleatorio = N + rand() % (M-N+1) ; // Aleatorio entre N y M aleatorio = 20 + rand () % 11; // Aleatorio entre 20 y 30
  • 23. Función srand() • Para evitar el problema de obtener siempre los mismos números aleatorios, tenemos la función srand() • A esta función se le pasa un parámetro que se utilizará como número semilla para el cálculo. No se debe poner un número fijo como semilla, porque entonces se repite el problema. • Podemos utiliza la fecha/hora del sistema, pues este valor cambia si ejecutamos el programa en distintos instantes de tiempo. • En C se obtiene con la función time() srand (time(NULL)); • A la función srand() sólo debemos llamarla una vez en nuestro programa, antes de utilizar la función rand() • Para utilizar las funciones se debe declarar las librerías: #include <stdlib.h> #include <time.h>