DMarlon Studio

Lección 12 · 12 de 20

Funciones · C++

Escriba funciones en C++ con su tipo de retorno y sus parámetros, use void y return, y reutilícelas para convertir temperaturas.

C++ · Funciones en DMarlon Studio: el código del ejemplo y su salida en la terminal

Una función agrupa código bajo un nombre para poder reutilizarlo. Se declara con el tipo de retorno, el nombre y los parámetros con sus tipos: double toFahrenheit(double celsius) recibe grados Celsius y `return` devuelve el resultado.

Una función `void` no devuelve nada: printLine(26) solo escribe una raya de 26 guiones. El argumento 26 se copia en el parámetro width.

return termina la función en cuanto se ejecuta. En describe, si la temperatura es menor de 10 devuelve cold y no mira nada más; por eso no hace falta ningún else.

Los parámetros pueden ser de cualquier tipo, también un std::vector. average comprueba con empty() que hay datos antes de dividir. Las funciones se escriben antes de main, que las usa, porque el compilador lee el archivo de arriba abajo.

En main, un for de rango llama a dos funciones por cada día, y el resultado de una función se puede pasar directamente a otra: describe(average(week)).

Código · main.cpp

#include <iostream>#include <string>#include <vector>// A function: return type, name, parameters and body.double toFahrenheit(double celsius) { return celsius * 9 / 5 + 32; }// void: it does something, but returns nothing.void printLine(int width) {    for (int i = 0; i < width; i++) std::cout << '-';    std::cout << '\n';}// return ends the function as soon as it runs.std::string describe(double celsius) {    if (celsius < 10) return "cold";    if (celsius < 25) return "mild";    return "hot";}double average(std::vector<double> values) {    double sum = 0;    for (double v : values) sum += v;    return values.empty() ? 0 : sum / values.size();}int main() {    std::vector<double> week = {8.5, 14.0, 22.5, 27.0, 31.5};    printLine(26);    for (double c : week) std::cout << c << " C = " << toFahrenheit(c) << " F, " << describe(c) << '\n';    printLine(26);    std::cout << "Average: " << average(week) << " C, " << describe(average(week)) << '\n';    return 0;}

Salida · c++ -std=c++17 main.cpp -o main && ./main

--------------------------
8.5 C = 47.3 F, cold
14 C = 57.2 F, mild
22.5 C = 72.5 F, mild
27 C = 80.6 F, hot
31.5 C = 88.7 F, hot
--------------------------
Average: 20.7 C, mild

Para recordar

  • Tipo de retorno, nombre y parámetros: double f(double x).
  • return devuelve el valor y termina la función.
  • void significa que no devuelve nada.
  • Una función debe declararse antes de usarse.
  • El resultado de una función puede ser el argumento de otra.

Ejercicio

Escriba double toCelsius(double fahrenheit) y int countHot(std::vector<double> temps), que cuente los días de más de 25 grados, y úselas en main.