MezData-Logo Lösungen Button :PI-BASIS: Funktionen Spezial: Einfaches Unterprogramm und Seiteneffekte

Aufruf von Funktionen bei Klick auf Button in Oberfläche oder durch main()

Beim Mausklick auf einen Button wird eine Funktion aufgerufen. In C wird bei Programmstart die Funktion main() aufgerufen.
Die Anweisungen die in dieser Funktion stehen werden dann ausgeführt.

Bei den folgenden Beispielen gilt die Vereinbarung das gerade "ButtonClick()" bzw. in C++ main() aufgerufen wurde und das Ergebnis mit "Ausgabe(Ergebnis)" sichtbar gemacht wird.

Java

void ButtonClick(){  
  Ausgabe(4);
}

C++

void main(){
  cout << 4 << endl;
}

Dieser Funktionsaufruf gibt einfach die Zahl 4 aus. Nun ein Beispiel mit Variablen

int a=10,b=5,c;  // Variablen vereinbaren
void ButtonClick(){  // dieses Rezept wird ausgeführt
  c=a+b; // Wert von a und b addieren und in c abspeichern (merken)
  Ausgabe(c); // Wert von c ausgeben
}

Drei Variablen a,b,c werden definiert (bereitgestellt) in a und b soll schon ein Wert (Inhalt) sein, sie werden zusätzlich initialisiert. Beim Aufruf von ButtonClick passiert folgendes:
Aus den Variablen a und b werden die Werte geholt und addiert, das Ergebnis landet in c, es wird c zugewiesen. Die Ausgabe ist 15.

Wichtig: a und b wurden nicht verändert, c hat nun den Wert 15.

Job: Implementieren und testen Sie das Programm.

Einfaches Unterprogramm

Im nächsten Beispiel soll die Anweisung c=a+b in ein Unter-Programm namens sum() verpackt werden.
Um zu sehen wie der Programmablauf sich gestaltet, gibt es zwei Möglichkeiten, zusätzliche Ausgaben oder mit dem Debugger und Break-Points.
Hier die Methode mit zusätzlichen Ausgaben:

int a=10,b=5,c; // Variablen vereinbaren

void sum(){  // Unterprogramm namens sum()
  Ausgabe("Hallo, ich bin sum und rechne");
  c= a+b;
  Ausgabe("sum: ich bin fertig");
}

void ButtonClick(){ // dieses Rezept wird ausgeführt
  Ausgabe("Chef ruft sum() auf");
  sum();  // sum() aufrufen
  Ausgabe("Chef: sum hat fertig");
  Ausgabe(c);
}

Job: Implementieren und testen Sie das Programm. Warum steht die Definition von sum() vor dem ersten Aufruf von sum()?

Hier ein Beispiel, wie der Ablauf des Programms in Worten beschrieben werden kann:

Das Unterprogramm sum() wird in ButtonClick() aufgerufen. c wird der berechnete Wert 15 zugewiesen, nach dem Ende des Unterprogramms geht die Verarbeitung bei der Ausgabe von c weiter. Die Ausgabe ist 15.

Seiteneffekt

Das Beispiel wurde so erweitert, daß ein sogenannter Seiteneffekt einer Funktion verdeutlicht werden kann:

int a=10,b=5,c; // Variablen vereinbaren

void sum(){  // Unterprogramm namens sum()
 a= a-5; 
 c= a+b;
}

void ButtonClick(){ // dieses Rezept wird ausgeführt
  sum();  // sum() aufrufen
  sum();  // sum() aufrufen
  Ausgabe(c);
}

Aufgabe: Implementieren Sie das Programm, fügen sie zusätzliche Ausgaben für Ihr Verständnis ein. Beschreiben Sie mit eigenen Worten den Programmablauf.

Welcher Wert wird ausgegeben? Welchen Wert hat a nach dem zweiten Aufruf von sum()? Worin besteht der "Seiteneffekt"?