[Orador 1]: Hemos visto el prototipo de una función y área de trabajo de una función que es la invocación o el uso de esa función. Para ello vamos a escribir un programa main que lea por teclado la edad de una persona y muestre por pantalla los años que esa persona se ha pasado durmiendo. Los cálculos los va a realizar una función que se llama cuánto has dormido. Esta función recibirá de quien la use la edad de una persona y devolverá a quien la use los años que esa persona ha pasado durmiendo. Este era el prototipo al que habíamos llegado para esta función cuando utilizamos el mecanismo de valor devuelto por la función para el parámetro de salida de la misma que es exactamente los años que la persona se ha pasado durmiendo. ¿Cómo sería la utilización o la invocación de esta función? Bueno, pues aquí tenemos el main que usa esta función. El main lo único que necesita conocer para poder usar una función es el prototipo, no necesita conocer cómo está implementada la función. Hasta ahora solo necesitamos saber qué hace la función, no cómo. Si te das cuenta tenemos aquí dos variables en el programa principal vida total y durmiendo. Vida total va a almacenar la edad de la persona que se le dé teclado con un escanece y durmiendo va a almacenar los años que ha dormido esa persona y que le daremos valor exactamente aquí invocando a la función. Como la función espera un valor doble le pasamos como valor doble vida total que tendrá la persona y como la función devuelve otro valor doble pues el resultado de la función se lo asignamos a durmiendo. Entonces fíjate es importante que te des cuenta de cómo se está invocando la función y cómo el resultado de eso es dejar en la variable durmiendo el valor que nos interesa y que luego vamos a pasar aquí a imprimir. Este era el siguiente prototipo. La función es la misma, realiza el mismo cometido, hace lo mismo, pero el parámetro de salida, los años que la persona se pasa durmiendo en este caso, se utiliza el mecanismo de paso por referencia. Te recuerdo que el paso por referencia consiste en cuando se invoca la función pasarle una dirección de veboría de una variable. y en el prototipo de la función tener ahí un parámetro que es un puntero. Acuérdate del asterisco que significa puntero. ¿Cómo se utilizaría? Aquí lo tenemos, fíjate. en que todo lo relativo al main permanece exactamente igual, las mismas variables, le damos valor aquí a vida total, imprimimos aquí durmiendo y la única diferencia es que en este caso la invocación, fíjate que es así, para coincidir con el prototipo de la función, no hay ninguna asignación de lo que debe ser la función porque la función es void, Y ahora tiene dos parámetros, como antes, un valor doble que representa la edad de la persona, pues aquí se lo estoy pasando, vida total. Y después está este parámetro por referencia, que es un puntero, que lo que espera recibir es una dirección de memoria. ¿Qué le tiene que pasar el main? La dirección de memoria de la variable donde quiere dejar ese valor, ¿vale?, En programación 1 las únicas veces en las que te vas a encontrar el ampersand, este operador unario que se aplica a una variable, como puedes ver aquí, va a ser en la invocación a las funciones. Cuando se les pase a esas funciones se les pasen parámetros por referencia. Muy bien, hemos visto el prototipo, hemos visto cómo se usa, cómo se invoca la función y ahora vamos a entrar ya no sólo en qué hace la función, que ya lo sabemos, sino en cómo lo hace, a detallar cómo la función realiza sus operaciones, sus cálculos para obtener los años que una persona ha pasado durmiendo.