edongashi Shënimet e ushtrimeve

Tipi ‘void’


Funksioni kemi thënë është një transformim nga hyrjadaljen.

\[\begin{array}{rcl} 45° \rightarrow & \boxed{f(x)} & \rightarrow \frac{\sqrt{2}}{2} \\ 6 \rightarrow & \boxed{g(x)} & \rightarrow 36 \\ \texttt{'c'} \rightarrow & \boxed{h(x)} & \rightarrow 3 \end{array}\]

Shembull: Funksioni katrori $f(x) = x^2$ merr vlerën $x$ (int) dhe kthen katrorin e saj (përsëri int):

int katrori(int x) {
  return x * x;
}

int main() {
  int y = katrori(2);
  cout << "y = " << y;
  return 0;
}

Përmes funksioneve krijojmë blloqe kodi të ripërdorshme.

Çdo herë që na nevojitet katrori i një numri, e përdorim të gatshëm funksionin katrori.

int a = katrori(2);
int b = katrori(5);
int c = katrori(13);

Jo gjithmonë na nevojitet krijimi i funksionit për të transformuar të dhëna dhe për të marrë rezultate.

Ndonjëherë nuk ka intereson rezultati, por vetëm na duhet ta kryejmë një punë.


Shembull: Funksioni shfaqPiket(p) e merr numrin e pikëve dhe e shfaq në ekran:

??? shfaqPiket(int piket) {
  cout << "Studenti ka arritur " 
       << piket
       << " pike ne provim."
       << endl;
  return ???;
}

Çfarë rezultati ka ky funksion? Çfarë tipi dhe çfarë vlere duhet të kthejë ky operacion?


Përgjigja: Funksioni nuk kthen asgjë. Qëllimi i funksionit është të kryejë punë, e jo të bëjë llogaritje:

int main() {
  shfaqPiket(25);
  shfaqPiket(60);
  shfaqPiket(100);
}

Rezultati në ekran:

Studenti ka arritur 25 pike ne provim.
Studenti ka arritur 60 pike ne provim.
Studenti ka arritur 100 pike ne provim.

Kur funksioni ka për qëllim kryerjen e një pune e cila nuk kthen ndonjë rezultat të dobishëm, atëherë themi se funksioni nuk kthen asgjë.

“Asgjë”-ja në programim quhet void (vrimë) - mungesë tipi.

void shfaqPiket(int piket) {
  cout << "Studenti ka arritur " 
       << piket
       << " pike ne provim."
       << endl;
  return; // nuk po kthejmë asgjë
}

Kur funksioni nuk kthen asgjë, atëherë ai përdorët vetëm si urdhër, e jo si shprehje.

Rikujtim: Gjithçka që ka tip dhe vlerë quhet shprehje.

void nuk paska as tip e as vlerë, prandaj nuk është shprehje!

int x = shfaqPiket(73); // gabim: shfaqPiket nuk kthen rezultat!
cout << shfaqPiket(25); // gabim: shfaqPiket nuk kthen rezultat!

Kur tipi i kthimit është void, nuk është i obligueshëm urdhëri return në fund të funksionit, pasi që nënkuptohet:

void pershendeteBoten() {
  cout << "Pershendetje Bote!";
  return;
}

Kodi i mësipërm thjeshtohet në:

void pershendeteBoten() {
  cout << "Pershendetje Bote!";
}