#include <stdio.h>
int myFunction(int parameter1, int parameter2); //Funktions Deklaration
int myNewFunction(int myVariable);
void count_to_ten(int i);
void printf_mit_umbruch(int zahl);
int main(void) {
int mySum = 0; //Variaben Deklaration und Definition
//Aufruf von myFunction mit den Werten 2 fürr parameter1 und 5 für parameter2
//Rückgabewert wird in mySum gespeichert
mySum = myFunction(2, 5); //gibt 7 zurück
printf("myFunction(2, 5): %d\n", mySum
); //Ausgabe von mySum: 7
//2. Aufruf von myFunction, diesmal mit den Werten 1 und 4
mySum = myFunction(1, 4); //gibt 5 zurück
printf("myFunction(1, 4): %d\n", mySum
); //Ausgabe von mySum: 5
//hip and new:
printf("\nFunktionen rufen Funktionen auf:\n"); mySum = myFunction(myNewFunction(4), 5); //gibt 10 zurück
printf("myFunction(myNewFunction(4), 5): %d\n", mySum
); //Ausgabe von mySum: 10
//Probleme mit dem Variablen-Scope bei Blöcken:
printf("\nProbleme mit dem Variablen-Scope bei Bloecken.\n"); int scope = 5;
if(1 == 1)
{
int scope = 10;
printf("inner scope: %d\n", scope
);
}
printf("outer scope: %d\n", scope
);
//Beispiel für die Vorteile von Funktionen
//wiederverwendbarer Code
//single point of error
//Szenario: Ausgabe mehrerer Zahlen. Jede Zahl in einer neuen Zeile
int i = 0;
int j = 5;
int k = 10;
printf("\nBeispiel für Vorteile von Funktionen\n");
printf("%d", k
); //FEHLER: Kein \n für neue Zeile eingefügt! Semantischer Fehler! Kein Compiler Error.
printf("Hier fand kein Umbruch statt :-( \nBesser:\n");
//Besser:
printf_mit_umbruch(i);
printf_mit_umbruch(j);
printf_mit_umbruch(k);
//Rekursion Beispiel:
printf("\nRekursionsbeispiel:\n"); count_to_ten(1);
return 0; //ProgrammEnde
}
//Funktions Definition
int myFunction(int parameter1, int parameter2) //Funktionskopf myFunction
{
int sum = parameter1 + parameter2; //addiere parameter1 und parameter2 nach sum
return sum; //Rückgabewert: sum
}
int myNewFunction(int myVariable) //Funktionskopf myNewFunction
{
//zähle die eingegebe Variable hoch und gebe sie zurück
return ++myVariable;
}
void printf_mit_umbruch(int zahl)
{
printf("%d\n", zahl
); //Zeilenumbruch kann nicht vergessen werden return;
}
void count_to_ten(int i)
{
printf("count_to_ten: %d\n", i
); if(i < 10)
count_to_ten(++i);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbXlGdW5jdGlvbihpbnQgcGFyYW1ldGVyMSwgaW50IHBhcmFtZXRlcjIpOyAvL0Z1bmt0aW9ucyBEZWtsYXJhdGlvbgppbnQgbXlOZXdGdW5jdGlvbihpbnQgbXlWYXJpYWJsZSk7CnZvaWQgY291bnRfdG9fdGVuKGludCBpKTsKCnZvaWQgcHJpbnRmX21pdF91bWJydWNoKGludCB6YWhsKTsKCmludCBtYWluKHZvaWQpIHsKCQoJaW50IG15U3VtID0gMDsgLy9WYXJpYWJlbiBEZWtsYXJhdGlvbiB1bmQgRGVmaW5pdGlvbgoJCgkvL0F1ZnJ1ZiB2b24gbXlGdW5jdGlvbiBtaXQgZGVuIFdlcnRlbiAyIGbDvHJyIHBhcmFtZXRlcjEgdW5kIDUgZsO8ciBwYXJhbWV0ZXIyCgkvL1LDvGNrZ2FiZXdlcnQgd2lyZCBpbiBteVN1bSBnZXNwZWljaGVydAoJbXlTdW0gPSBteUZ1bmN0aW9uKDIsIDUpOyAvL2dpYnQgNyB6dXLDvGNrCglwcmludGYoIm15RnVuY3Rpb24oMiwgNSk6ICVkXG4iLCBteVN1bSk7IC8vQXVzZ2FiZSB2b24gbXlTdW06IDcKCQoJLy8yLiBBdWZydWYgdm9uIG15RnVuY3Rpb24sIGRpZXNtYWwgbWl0IGRlbiBXZXJ0ZW4gMSB1bmQgNAoJbXlTdW0gPSBteUZ1bmN0aW9uKDEsIDQpOyAvL2dpYnQgNSB6dXLDvGNrCglwcmludGYoIm15RnVuY3Rpb24oMSwgNCk6ICVkXG4iLCBteVN1bSk7IC8vQXVzZ2FiZSB2b24gbXlTdW06IDUKCQoJLy9oaXAgYW5kIG5ldzoKCXByaW50ZigiXG5GdW5rdGlvbmVuIHJ1ZmVuIEZ1bmt0aW9uZW4gYXVmOlxuIik7CglteVN1bSA9IG15RnVuY3Rpb24obXlOZXdGdW5jdGlvbig0KSwgNSk7IC8vZ2lidCAxMCB6dXLDvGNrCglwcmludGYoIm15RnVuY3Rpb24obXlOZXdGdW5jdGlvbig0KSwgNSk6ICVkXG4iLCBteVN1bSk7IC8vQXVzZ2FiZSB2b24gbXlTdW06IDEwCgoJLy9Qcm9ibGVtZSBtaXQgZGVtIFZhcmlhYmxlbi1TY29wZSBiZWkgQmzDtmNrZW46CglwcmludGYoIlxuUHJvYmxlbWUgbWl0IGRlbSBWYXJpYWJsZW4tU2NvcGUgYmVpIEJsb2Vja2VuLlxuIik7CglpbnQgc2NvcGUgPSA1OwoJaWYoMSA9PSAxKQoJewoJCWludCBzY29wZSA9IDEwOwoJCXByaW50ZigiaW5uZXIgc2NvcGU6ICVkXG4iLCBzY29wZSk7CgkJCgl9CglwcmludGYoIm91dGVyIHNjb3BlOiAlZFxuIiwgc2NvcGUpOwoJCQoJLy9CZWlzcGllbCBmw7xyIGRpZSBWb3J0ZWlsZSB2b24gRnVua3Rpb25lbgoJLy93aWVkZXJ2ZXJ3ZW5kYmFyZXIgQ29kZQoJLy9zaW5nbGUgcG9pbnQgb2YgZXJyb3IKCQoJLy9TemVuYXJpbzogQXVzZ2FiZSBtZWhyZXJlciBaYWhsZW4uIEplZGUgWmFobCBpbiBlaW5lciBuZXVlbiBaZWlsZQoJaW50IGkgPSAwOwoJaW50IGogPSA1OwoJaW50IGsgPSAxMDsKCQoJcHJpbnRmKCJcbkJlaXNwaWVsIGbDvHIgVm9ydGVpbGUgdm9uIEZ1bmt0aW9uZW5cbiIpOwoJCglwcmludGYoIiVkXG4iLCBpKTsKCXByaW50ZigiJWRcbiIsIGopOwoJcHJpbnRmKCIlZCIsIGspOyAvL0ZFSExFUjogS2VpbiBcbiBmw7xyIG5ldWUgWmVpbGUgZWluZ2Vmw7xndCEgU2VtYW50aXNjaGVyIEZlaGxlciEgS2VpbiBDb21waWxlciBFcnJvci4KCQoJcHJpbnRmKCJIaWVyIGZhbmQga2VpbiBVbWJydWNoIHN0YXR0IDotKCBcbkJlc3NlcjpcbiIpOwoJCgkvL0Jlc3NlcjoKCXByaW50Zl9taXRfdW1icnVjaChpKTsKCXByaW50Zl9taXRfdW1icnVjaChqKTsKCXByaW50Zl9taXRfdW1icnVjaChrKTsKCQoJLy9SZWt1cnNpb24gQmVpc3BpZWw6CglwcmludGYoIlxuUmVrdXJzaW9uc2JlaXNwaWVsOlxuIik7Cgljb3VudF90b190ZW4oMSk7CgkKCQoJcmV0dXJuIDA7IC8vUHJvZ3JhbW1FbmRlCn0KCi8vRnVua3Rpb25zIERlZmluaXRpb24KaW50IG15RnVuY3Rpb24oaW50IHBhcmFtZXRlcjEsIGludCBwYXJhbWV0ZXIyKSAvL0Z1bmt0aW9uc2tvcGYgbXlGdW5jdGlvbgp7CglpbnQgc3VtID0gcGFyYW1ldGVyMSArIHBhcmFtZXRlcjI7IC8vYWRkaWVyZSBwYXJhbWV0ZXIxIHVuZCBwYXJhbWV0ZXIyIG5hY2ggc3VtCglyZXR1cm4gc3VtOyAvL1LDvGNrZ2FiZXdlcnQ6IHN1bQp9CgppbnQgbXlOZXdGdW5jdGlvbihpbnQgbXlWYXJpYWJsZSkgLy9GdW5rdGlvbnNrb3BmIG15TmV3RnVuY3Rpb24KewoJLy96w6RobGUgZGllIGVpbmdlZ2ViZSBWYXJpYWJsZSBob2NoIHVuZCBnZWJlIHNpZSB6dXLDvGNrCglyZXR1cm4gKytteVZhcmlhYmxlOyAKfQoKdm9pZCBwcmludGZfbWl0X3VtYnJ1Y2goaW50IHphaGwpCnsKCXByaW50ZigiJWRcbiIsIHphaGwpOyAvL1plaWxlbnVtYnJ1Y2gga2FubiBuaWNodCB2ZXJnZXNzZW4gd2VyZGVuCglyZXR1cm47Cn0KCnZvaWQgY291bnRfdG9fdGVuKGludCBpKQp7CglwcmludGYoImNvdW50X3RvX3RlbjogJWRcbiIsIGkpOwoJaWYoaSA8IDEwKQoJCWNvdW50X3RvX3RlbigrK2kpOwp9