fork(1) download
  1. #include <stdio.h>
  2.  
  3. int myFunction(int parameter1, int parameter2); //Funktions Deklaration
  4. int myNewFunction(int myVariable);
  5. void count_to_ten(int i);
  6.  
  7. void printf_mit_umbruch(int zahl);
  8.  
  9. int main(void) {
  10.  
  11. int mySum = 0; //Variaben Deklaration und Definition
  12.  
  13. //Aufruf von myFunction mit den Werten 2 fürr parameter1 und 5 für parameter2
  14. //Rückgabewert wird in mySum gespeichert
  15. mySum = myFunction(2, 5); //gibt 7 zurück
  16. printf("myFunction(2, 5): %d\n", mySum); //Ausgabe von mySum: 7
  17.  
  18. //2. Aufruf von myFunction, diesmal mit den Werten 1 und 4
  19. mySum = myFunction(1, 4); //gibt 5 zurück
  20. printf("myFunction(1, 4): %d\n", mySum); //Ausgabe von mySum: 5
  21.  
  22. //hip and new:
  23. printf("\nFunktionen rufen Funktionen auf:\n");
  24. mySum = myFunction(myNewFunction(4), 5); //gibt 10 zurück
  25. printf("myFunction(myNewFunction(4), 5): %d\n", mySum); //Ausgabe von mySum: 10
  26.  
  27. //Probleme mit dem Variablen-Scope bei Blöcken:
  28. printf("\nProbleme mit dem Variablen-Scope bei Bloecken.\n");
  29. int scope = 5;
  30. if(1 == 1)
  31. {
  32. int scope = 10;
  33. printf("inner scope: %d\n", scope);
  34.  
  35. }
  36. printf("outer scope: %d\n", scope);
  37.  
  38. //Beispiel für die Vorteile von Funktionen
  39. //wiederverwendbarer Code
  40. //single point of error
  41.  
  42. //Szenario: Ausgabe mehrerer Zahlen. Jede Zahl in einer neuen Zeile
  43. int i = 0;
  44. int j = 5;
  45. int k = 10;
  46.  
  47. printf("\nBeispiel für Vorteile von Funktionen\n");
  48.  
  49. printf("%d\n", i);
  50. printf("%d\n", j);
  51. printf("%d", k); //FEHLER: Kein \n für neue Zeile eingefügt! Semantischer Fehler! Kein Compiler Error.
  52.  
  53. printf("Hier fand kein Umbruch statt :-( \nBesser:\n");
  54.  
  55. //Besser:
  56. printf_mit_umbruch(i);
  57. printf_mit_umbruch(j);
  58. printf_mit_umbruch(k);
  59.  
  60. //Rekursion Beispiel:
  61. printf("\nRekursionsbeispiel:\n");
  62. count_to_ten(1);
  63.  
  64.  
  65. return 0; //ProgrammEnde
  66. }
  67.  
  68. //Funktions Definition
  69. int myFunction(int parameter1, int parameter2) //Funktionskopf myFunction
  70. {
  71. int sum = parameter1 + parameter2; //addiere parameter1 und parameter2 nach sum
  72. return sum; //Rückgabewert: sum
  73. }
  74.  
  75. int myNewFunction(int myVariable) //Funktionskopf myNewFunction
  76. {
  77. //zähle die eingegebe Variable hoch und gebe sie zurück
  78. return ++myVariable;
  79. }
  80.  
  81. void printf_mit_umbruch(int zahl)
  82. {
  83. printf("%d\n", zahl); //Zeilenumbruch kann nicht vergessen werden
  84. return;
  85. }
  86.  
  87. void count_to_ten(int i)
  88. {
  89. printf("count_to_ten: %d\n", i);
  90. if(i < 10)
  91. count_to_ten(++i);
  92. }
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
myFunction(2, 5): 7
myFunction(1, 4): 5

Funktionen rufen Funktionen auf:
myFunction(myNewFunction(4), 5): 10

Probleme mit dem Variablen-Scope bei Bloecken.
inner scope: 10
outer scope: 5

Beispiel für Vorteile von Funktionen
0
5
10Hier fand kein Umbruch statt :-( 
Besser:
0
5
10

Rekursionsbeispiel:
count_to_ten: 1
count_to_ten: 2
count_to_ten: 3
count_to_ten: 4
count_to_ten: 5
count_to_ten: 6
count_to_ten: 7
count_to_ten: 8
count_to_ten: 9
count_to_ten: 10