2.4.6 Parametriton arvon palauttava funktio

Esimerkki parametrittomasta arvon palauttavasta funktiosta olkoon käyttäjältä syötteitä kysyvä ja lukeva funktio. Olkoon sen tehtävä lukea ympyrän säteen arvo ja palauttaa se kutsuvalle yksikölle.

Palautettava luku on tyypiltään liukuluku. Näin ollen funktion tyypiksi ilmoitetaan liukuluku. Funktio ei saa kutsuvasta yksiköltä minkäänlaista syöttötietoa, joten sen parametrilista on tyhjä (void). Kutsuvaan yksikköön palautettava arvo ilmoitetaan lauseessa return, johon funktion suoritus päättyy.

/* *********************************************************
FUNKTIO3.CPP
  Esimerkki funktiosta, jolla on paluuarvo, mutta ei
  parametreja.
********************************************************* */

#include <iostream.h>
#include <math.h>

/* Lukee näppäimistöltä ympyrän säteen ja palauttaa sen
   paluuarvona. Huomaa, että tämä on huono tapa lukea
   syöttötietoja, parempi tapa esitetään myöhemmin.     */
double lue_sade(void)
{
  double sade;

  cout << "Anna säteen pituus > ";
  cin >> sade;

  return sade;
}

int main(void)
{
  double sade, pinta_ala;

  sade = lue_sade();
  pinta_ala = M_PI*sade*sade;
  cout << "Säde on " << sade;
  cout << " ja pinta-ala on " << pinta_ala << endl;

  return 0;
}

Esimerkkiajo:

Anna säteen pituus > 10
Säde on 10 ja pinta-ala on 314.159265

Kun funktio palauttaa arvon, täytyy se tallentaa johonkin (tai käyttää sitä jollain muulla tavalla). Muuten paluuarvo menetetään. Tallentaminen tehdään sijoittamalla funktion arvo johonkin muuttujaan sijoituslauseella.

Huomaa, että edellä esitetty tapa palauttaa syöttötietoja paluuarvoina ei ole kovin hyvä. Jos esimerkiksi halutaan lukea kaksi lukua (vaikkapa suorakaiteen leveys ja korkeus), täytyisi ne lukea eri funktioissa, sillä paluuarvoja voi olla vain yksi. Luonnollisempaa on lukea kaikki yhteenkuuluvat syöttötiedot samassa funktiossa ja palauttaa ne parametrien välityksellä. Tähän palataan hieman myöhemmin.