diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2cd0a4d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/bin/Debug/net7.0/Exercises_C_Sharp_Lections.dll", + "args": [], + "cwd": "${workspaceFolder}", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..8bf12ec --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/Exercises_C_Sharp_Lections.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/Exercises_C_Sharp_Lections.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/Exercises_C_Sharp_Lections.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/Exercises/E01_Einleitung/Exercise_1.cs b/Exercises/E01_Einleitung/Exercise_1.cs new file mode 100644 index 0000000..ff8ec36 --- /dev/null +++ b/Exercises/E01_Einleitung/Exercise_1.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E01_Einleitung +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass in der Konsole nicht das englische ‚Hello World!‘, sondern die deutsche Übersetzung ‚Hallo Welt!‘ ausgegeben wird. + //Code START + Console.WriteLine("Hello World!"); + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E01_Einleitung/Exercise_2.cs b/Exercises/E01_Einleitung/Exercise_2.cs new file mode 100644 index 0000000..11fcc8b --- /dev/null +++ b/Exercises/E01_Einleitung/Exercise_2.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E01_Einleitung +{ + class Exercise_2 + { + public static void Start() + { + //Geben Sie diese nacheinander die Lösungen folgender Gleichungen jeweils in eigener Zeile in der Konsole aus: + //24 + 14 – 34 / 12 * 2 % 4 + //23847 + 3333 / 34 * 22 – 12 + 2343234 % 6 + //123.34 / 2344.3 – 12035.55 / 4.9 * 123.2 + //948475.23423 * 7 – 23433.833 % 22.66 + 34.3 * 4 + //2343 – 3434.2 * 333.33 – 3333.88 / 77777.1 + 12.33 % 0.3336 + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E01_Einleitung/Exercise_3.cs b/Exercises/E01_Einleitung/Exercise_3.cs new file mode 100644 index 0000000..af0ffe0 --- /dev/null +++ b/Exercises/E01_Einleitung/Exercise_3.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E01_Einleitung +{ + class Exercise_3 + { + public static void Start() + { + //Programmieren Sie folgende Anweisungen aus: + + //Teilen Sie dreimal die Zahl 343 durch 7 und geben Sie das Ergebnis aus: + //Code START + + //Code ENDE + + //Nehmen Sie die Zahl 10 mal 4, addieren Sie dann die Zahl 17 darauf, teilen Sie dann das Ergebnis durch 3. Ziehen Sie zum Schluss noch 2 ab und geben Sie das Ergebnis aus: + //Code START + + //Code ENDE + + //Teilen Sie die Zahl 343 zweimal durch 7 und nehmen Sie die erhaltene Zahl Modulo 3. Geben Sie das Ergebnis aus: + //Code Start + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E01_Einleitung/Exercise_4.cs b/Exercises/E01_Einleitung/Exercise_4.cs new file mode 100644 index 0000000..d3ec55b --- /dev/null +++ b/Exercises/E01_Einleitung/Exercise_4.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E01_Einleitung +{ + class Exercise_4 + { + public static void Start() + { + //Geben Sie die Ergebnise der booleschen Werte nacheinander in eigener Zeile in der Konsole aus: + //8374 + 1234 > 10522 - 2256 + //123 * 123 != 100 + 12523 + //756.055 / 299.25 >= 25 * 22 + //123 + 2562 / 4 <= 3874 + 56856 + //1234 % 4 * 526 / 25685 == 9374 + 85 * 36369 / 40252 % 256 + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E01_Einleitung/Exercise_5.cs b/Exercises/E01_Einleitung/Exercise_5.cs new file mode 100644 index 0000000..46e4fe6 --- /dev/null +++ b/Exercises/E01_Einleitung/Exercise_5.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E01_Einleitung +{ + class Exercise_5 + { + public static void Start() + { + //Programmieren Sie folgende Anweisungen aus: + + //Ist das Ergebnis von 100 / 3 größer als 3 mal 11? Lassen Sie diese Frage den Computer beantworten und geben das Ergebnis in einer extra Zeile aus: + //Code START + + //Code ENDE + + //Ist 1526 Modulo 12 kleiner als 1526 Modulo 16? Lassen Sie diese Frage den Computer beantworten und geben das Ergebnis in einer extra Zeile aus: + //Code START + + //Code ENDE + + //Kommt dasselbe Ergebnis heraus, wenn man 2152 durch acht teilt und wenn man von 500 231 subtrahiert? Lassen Sie diese Frage den Computer beantworten und geben das Ergebnis in einer extra Zeile aus: + //Code Start + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_1.cs b/Exercises/E02_Variablen/Exercise_1.cs new file mode 100644 index 0000000..1f4ddee --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_1.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_1 + { + public static void Start() + { + //Um welche Variablentypen handelt es sich hier? Tauschen Sie den Wert dynamic durch den richtigen Typ aus: + dynamic var1 = 343; + dynamic var2 = -231; + dynamic var3 = 'T'; + dynamic var4 = "T"; + dynamic var5 = "Hallo"; + dynamic var6 = " "; + dynamic var7 = 123.34; + dynamic var8 = 335.27364; + dynamic var9 = 7483.291M; + dynamic var10 = true; + dynamic var11 = 3847M; + dynamic var12 = 38493.28F; + dynamic var13 = 8349.23; + dynamic var14 = '\\'; + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_2.cs b/Exercises/E02_Variablen/Exercise_2.cs new file mode 100644 index 0000000..756f41e --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_2.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_2 + { + public static void Start() + { + string val1 = "Hallo, "; + string val2 = ""; + string val3 = "geht's?"; + + //Sorgen Sie dafür, dass unten auf der Konsole "Hallo, wie geht's?" ausgegeben wird. + //Code Start + + //Code Ende + + Console.Write(val1); + Console.Write(val2); + Console.Write(val3); + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_3.cs b/Exercises/E02_Variablen/Exercise_3.cs new file mode 100644 index 0000000..45b2731 --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_3.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_3 + { + public static void Start() + { + int val1 = 156; + int val2 = 7; + int val3 = -12; + + //Sorgen Sie dafür, dass unten auf der Konsole 101 ausgegeben wird. + //Code Start + + //Code Ende + + Console.Write(val1 + val2 + val3); + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_4.cs b/Exercises/E02_Variablen/Exercise_4.cs new file mode 100644 index 0000000..71b2d29 --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_4.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_4 + { + public static void Start() + { + string val1 = "Das "; + string val2 = " cool!"; + string val3 = "ist "; + + //Geben Sie den Satz "Das ist cool!" auf der Konsole aus. Verwenden Sie ausschließlich Variablen: + //Code Start + val2 = val1; + val3 = val2; + val1 = val3; + //Code Ende + + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_5.cs b/Exercises/E02_Variablen/Exercise_5.cs new file mode 100644 index 0000000..861a6ce --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_5.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_5 + { + public static void Start() + { + double val1 = 123.456; + double val2 = 789.101112; + + //Geben Sie die Addition, die Subtraktion, die Division und die Multiplikation der beiden oeben Zahlen auf der Konsole aus: + //Code Start + val2 = val1; + //Code Ende + + + + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_6.cs b/Exercises/E02_Variablen/Exercise_6.cs new file mode 100644 index 0000000..40f651c --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_6.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_6 + { + public static void Start() + { + int var1 = 160; + int var2 = 20; + string hello = "Hallo und herzlich Willkommen!"; + string end = "Hier kommt das Ergebnis:"; + + + //Geben Sie zuerst beide String-Variablen in der richtigen Reihenfolge aus: + //Code Start + var1 = var2; + hello = end; + //Code Ende + + //Geben Sie nun das Ergebnis folgender Operation aus: var1 soll durch var2 geteilt werden. Das Ergebnis soll dann durch zwei geteilt werden und mal var2 genommen werden. Dann soll davon var1 abgezogen werden und das dreifache von var2 addiert werden. Nehmen Sie das Ergebnis dann Modulo 27. Nutzen Sie dabei ausschließlich die Variablen! + //Code Start + + //Code Ende + + //Ändern Sie nun die beiden Werte oben auf 3600 und 360: + //Code Start + + //Code Ende + + //Machen Sie nun dieselben Operationen wie oben und geben Sie dann wiederum das Ergebnis aus: + //Code START + + //Code ENDE + + + + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_7.cs b/Exercises/E02_Variablen/Exercise_7.cs new file mode 100644 index 0000000..192ed09 --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_7.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_7 + { + public static void Start() + { + //Erstellen Sie zwei Variablen, sodass unten auf der Konsole "Dies ist Ihre Zahl: 123" ausgegeben wird. + //Code START + dynamic a = 1; + dynamic b = 2; + dynamic c = 3; + //Code ENDE + + Console.Write(a); + Console.WriteLine(c); + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_8.cs b/Exercises/E02_Variablen/Exercise_8.cs new file mode 100644 index 0000000..358bdd6 --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_8.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_8 + { + public static void Start() + { + + //Erstellen Sie unten die drei Variablen richtig: + //Code START + dynamic firstValue; + dynamic secondValue; + dynamic thirdValue; + //Code ENDE + + firstValue = "Hier kommen die Zahlen:"; + secondValue = 456; + thirdValue = 789.4585; + + Console.WriteLine(firstValue); + Console.WriteLine(secondValue); + Console.WriteLine(thirdValue); + + } + } +} \ No newline at end of file diff --git a/Exercises/E02_Variablen/Exercise_9.cs b/Exercises/E02_Variablen/Exercise_9.cs new file mode 100644 index 0000000..8e70787 --- /dev/null +++ b/Exercises/E02_Variablen/Exercise_9.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E02_Variablen +{ + class Exercise_9 + { + public static void Start() + { + //Sorgen Sie dafür, dass die Zahl 2736.938 unten auf der Konsole ausgegeben wird. + + //Code START + double d1 = 2634.37263; + double d2 = 237384.2832; + double d3 = 663782.39283; + //Code ENDE + + d1 = d2 -d3; + d2 = d3 / d1; + d3 = d1 * d3; + d1 = d3 / d2; + d2 = d3 + d2; + double d4 = d1 + d2 + d3; + + //Code Start + double d5 = 0; + //Code Ende + Console.WriteLine(d5 + d4 + d3 + d2 + d1); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_1.cs b/Exercises/E03_Strings/Exercise_1.cs new file mode 100644 index 0000000..fcefaa4 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_1.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass "Hallo, wie geht's?" unten auf der Konsole ausgegeben wird. + //Code START + dynamic s = -1; + //Code ENDE + + Console.WriteLine(s); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_10.cs b/Exercises/E03_Strings/Exercise_10.cs new file mode 100644 index 0000000..632937e --- /dev/null +++ b/Exercises/E03_Strings/Exercise_10.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_10 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole + //"Das Erste kommt zuerst... + //...und das Zweite kommt zuletzt." + //ausgegeben wird + + + //Code START + string s1 = ""; + string s2 = ""; + string s3 = ""; + string s4 = ""; + //Code ENDE + string s = string.Format("{0} Erste kommt zu{1}{2}das Zweite{3}zuletzt.", s2, s1, s4, s3); + + Console.WriteLine(s); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_11.cs b/Exercises/E03_Strings/Exercise_11.cs new file mode 100644 index 0000000..685fa69 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_11.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_11 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole ein richtiger Satz ausgegeben wird. + string s1 = "Piratenschiff"; + + //Code START + string s2 = ""; + int i1 = -1; + //Code ENDE + + Console.WriteLine($"Das Wort {s1} hat genau so viele Zeichen wie {s2}, nämlich {i1}."); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_12.cs b/Exercises/E03_Strings/Exercise_12.cs new file mode 100644 index 0000000..7e9c7d1 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_12.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_12 + { + public static void Start() + { + //Sorgen Sie dafür, dass nach der Eingabe ausgegeben wird, ob der eingegebene String ein A bzw. a besitzt, oder nicht. + string s = Console.ReadLine() ?? "Irgendwas"; + bool b = false; + + //CODE START + + //CODE ENDE + + if(b) + { + Console.WriteLine("Das Wort enthält den Buchstaben A."); + } + else + { + Console.WriteLine("Das Wort enthält nicht den Buchstaben A."); + } + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_2.cs b/Exercises/E03_Strings/Exercise_2.cs new file mode 100644 index 0000000..f126457 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_2.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_2 + { + public static void Start() + { + //Fügen Sie die Strings so zusammen, dass der Satz "Wie gut es ist, oder?" ausgegeben wird. Nutzen Sie wo es geht die folgenden Variablen: + string s1 = "gut"; + string s2 = "wie"; + string s3 = "oder"; + string s4 = "Wie"; + string s5 = "es"; + string s6 = "ist"; + + + //Code START + s2 = s3 = s4 = s5 = s6; + //Code ENDE + + Console.WriteLine(s1); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_3.cs b/Exercises/E03_Strings/Exercise_3.cs new file mode 100644 index 0000000..fef3261 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_3.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_3 + { + public static void Start() + { + //Fügen Sie die Variable DasWarGemeint in den String ausgabeString anstatt der Stelle {0} ein: + string DasWarGemeint = "Elefanten"; + string ausgabeString = "{0} sind die größten Landtiere."; + + //Code START + DasWarGemeint = ausgabeString; + //Code ENDE + + Console.WriteLine(ausgabeString); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_4.cs b/Exercises/E03_Strings/Exercise_4.cs new file mode 100644 index 0000000..ba38c8b --- /dev/null +++ b/Exercises/E03_Strings/Exercise_4.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_4 + { + public static void Start() + { + //Sorgen Sie dafür, dass der String userinput ohne führende und endende Leerzeichen ausgegeben wird: + string userinput = " WERT "; + //Code START + + //Code ENDE + + Console.WriteLine(userinput); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_5.cs b/Exercises/E03_Strings/Exercise_5.cs new file mode 100644 index 0000000..1f0f33c --- /dev/null +++ b/Exercises/E03_Strings/Exercise_5.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_5 + { + public static void Start() + { + //Geben Sie von folgenden Werten den vierten Buchstaben aus: + string firstValue = "Brauerei"; + string secondValue = "Überbau"; + string thirdValue = "keinerlei"; + string fourthValue = "Fairness"; + + + //Code START + firstValue = secondValue = thirdValue = fourthValue; + //Code ENDE + + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_6.cs b/Exercises/E03_Strings/Exercise_6.cs new file mode 100644 index 0000000..c4ebbd6 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_6.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_6 + { + public static void Start() + { + //Sorgen Sie dafür, dass das erste Wort in Großbuchen und in Kleinbuchstaben ausgegeben wird. + string val = "hAllIHaLlo"; + string small; + string big; + + + //Code START + small = val; + big = val; + //Code ENDE + + Console.WriteLine("Kleinbuchstaben:"); + Console.WriteLine(small); + Console.WriteLine("Großbuchstaben:"); + Console.WriteLine(big); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_7.cs b/Exercises/E03_Strings/Exercise_7.cs new file mode 100644 index 0000000..2de2f7e --- /dev/null +++ b/Exercises/E03_Strings/Exercise_7.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_7 + { + public static void Start() + { + //Extrahieren Sie aus dem folgenden String das Wort Polizei + string val = " difjPolizei jidf das dielsaö"; + + + //Code START + + + //Code ENDE + + Console.WriteLine(val); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_8.cs b/Exercises/E03_Strings/Exercise_8.cs new file mode 100644 index 0000000..0edb3a8 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_8.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_8 + { + public static void Start() + { + //Sorgen Sie dafür, dass alle drei Strings in einer extra Zeile ausgegeben werden. + string val = "Zeile 1"; + string val2 = "Zeile 2"; + string val3 = "Zeile 3"; + + + //Code START + + + //Code ENDE + + Console.WriteLine(val + val2 + val3); + } + } +} \ No newline at end of file diff --git a/Exercises/E03_Strings/Exercise_9.cs b/Exercises/E03_Strings/Exercise_9.cs new file mode 100644 index 0000000..fa2cae4 --- /dev/null +++ b/Exercises/E03_Strings/Exercise_9.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E03_Strings +{ + class Exercise_9 + { + public static void Start() + { + //Lassen Sie folgende Zeichen(folgen) auf der Konsole ausgeben: + // - \ + // - \n + // - \t + // - " + + + //Code START + string val = "Element 1"; + string val2 = "Element 2"; + string val3 = "Element 3"; + string val4 = "Element 4"; + //Code ENDE + + Console.WriteLine(val); + Console.WriteLine(val2); + Console.WriteLine(val3); + Console.WriteLine(val4); + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_1.cs b/Exercises/E04_Konsole/Exercise_1.cs new file mode 100644 index 0000000..f828627 --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_1.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_1 + { + public static void Start() + { + //Geben Sie auf der Konsole "Hallo, wie geht es Ihnen?" aus. + string s = "irgendwas?"; + + //Code START + + //Code ENDE + + Console.WriteLine(s); + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_2.cs b/Exercises/E04_Konsole/Exercise_2.cs new file mode 100644 index 0000000..ada4d9a --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_2.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_2 + { + public static void Start() + { + //Sorgen Sie dafür, dass nach jedem Mal "Eingabe" drücken, der Text und der Hintergrund eine neue Farbe bekommt: + Console.WriteLine("Hallo und herzlich Willkommen zum bunten Farbenspiel!"); + Console.WriteLine(); + //Code START + + //Code ENDE + Console.WriteLine(); + //Code START + + //Code ENDE + Console.WriteLine(); + //Code START + + //Code ENDE + Console.WriteLine("Danke für die Nutzung!"); + Console.WriteLine(); + + + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_3.cs b/Exercises/E04_Konsole/Exercise_3.cs new file mode 100644 index 0000000..3d036c2 --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_3.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_3 + { + public static void Start() + { + //Auf der Konsole soll das ausgegeben werden, was der Anwender eingibt. + + Console.WriteLine("Bitte geben Sie was ein:"); + //Code START + string s = "irgendwas?"; + //Code ENDE + + Console.WriteLine("Ihre Eingabe war:\n" + s); + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_4.cs b/Exercises/E04_Konsole/Exercise_4.cs new file mode 100644 index 0000000..b43c0d8 --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_4.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_4 + { + public static void Start() + { + //Der Anwender soll auf der Konsole zwei Zahlen eingeben. Dann soll die Addition, die Subtraktion, die Division, die Multiplikation und das Modulo Ergebnis ausgegeben werden. + double result = 0; + //Code START + + //Code ENDE + Console.WriteLine("Die Addition der Zahlen ist: {0}", result); + //Code START + + //Code ENDE + Console.WriteLine("Die Subtraktion der Zahlen ist: {0}", result); + //Code START + + //Code ENDE + Console.WriteLine("Die Division der Zahlen ist: {0}", result); + //Code START + + //Code ENDE + Console.WriteLine("Die Multiplikation der Zahlen ist: {0}", result); + //Code START + + //Code ENDE + Console.WriteLine("Das Modulo der Zahlen ist: {0}", result); + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_5.cs b/Exercises/E04_Konsole/Exercise_5.cs new file mode 100644 index 0000000..04b1079 --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_5.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_5 + { + public static void Start() + { + string terminalName = string.Empty; + //Code START + + //Code ENDE + Console.WriteLine("Der Name der Konsole wurde auf '{0}' geändert!", terminalName); + Console.ReadLine(); + } + } +} \ No newline at end of file diff --git a/Exercises/E04_Konsole/Exercise_6.cs b/Exercises/E04_Konsole/Exercise_6.cs new file mode 100644 index 0000000..8712911 --- /dev/null +++ b/Exercises/E04_Konsole/Exercise_6.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E04_Konsole +{ + class Exercise_6 + { + public static void Start() + { + //Sie sollen dafür sorgen, dass der Anwender zu Beginn eine Zahl eingibt. Danach soll diese Zahl bei jedem Tastendruck verdoppelt werden. Sorgen Sie dafür, dass dies 5 mal funktioniert. + int userinput = 0; + //Code START + + //Code ENDE + Console.WriteLine("Die 1. Verdopplung ist {0}.", userinput); + //Code START + + //Code ENDE + Console.WriteLine("Die 2. Verdopplung ist {0}.", userinput); + //Code START + + //Code ENDE + Console.WriteLine("Die 3. Verdopplung ist {0}.", userinput); + //Code START + + //Code ENDE + Console.WriteLine("Die 4. Verdopplung ist {0}.", userinput); + //Code START + + //Code ENDE + Console.WriteLine("Die 5. Verdopplung ist {0}.", userinput); + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_1.cs b/Exercises/E05_Arrays/Exercise_1.cs new file mode 100644 index 0000000..3f8ea94 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_1.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_1 + { + public static void Start() + { + //Geben Sie alle Werte aus dem Array aus. Was fällt Ihnen auf? + int[] intArray = new int[3]; + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_10.cs b/Exercises/E05_Arrays/Exercise_10.cs new file mode 100644 index 0000000..a7b5516 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_10.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_10 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_11.cs b/Exercises/E05_Arrays/Exercise_11.cs new file mode 100644 index 0000000..1a35710 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_11.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_11 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_12.cs b/Exercises/E05_Arrays/Exercise_12.cs new file mode 100644 index 0000000..0a274af --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_12.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_12 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_2.cs b/Exercises/E05_Arrays/Exercise_2.cs new file mode 100644 index 0000000..993d00b --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_2.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_2 + { + public static void Start() + { + //Lassen Sie den Anwender fünf Strings eingeben und speichern Sie diese in diesem Array: + string[] stringArray = new string[5]; + //Code START + + //Code ENDE + + //Geben Sie nun alle fünf String in dem Array mit Leerzeichen getrennt aus: + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_3.cs b/Exercises/E05_Arrays/Exercise_3.cs new file mode 100644 index 0000000..c3c2295 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_3.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_3 + { + public static void Start() + { + //Geben Sie alle Zeichen in alphabetischer Reihenfolge auf der Konsole aus: + char[] charArray = new char[]{ 'k', 'a', 'o', 'w', 'l', 'x', 't', 's'}; + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_4.cs b/Exercises/E05_Arrays/Exercise_4.cs new file mode 100644 index 0000000..97e6a50 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_4.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_4 + { + public static void Start() + { + //Auf der Konsole soll ausgegen werden, wie viele Elemente sich in dem Array befinden: + int[] intArray = new int[] + {123,23,43,123,4,122,43235,46,45645,756,7,58,56,74,5,634,56456,4,56,3457,4,57,56,75,6,856,85,67,45,74564356,45,645,6756876,98,98,978,97,80,790789,78,978,96,7,865786,57546,74,67,45,64,56,45,645,6,45,65,67567,567,4567,45,656,64565,64,56465,766,7,56,8,5678,7,8,67,9,678678,56,7,567,6,75,674565645,6,45,46,7,56,867,8,67,8,67,867,8,678,67,86786,78,98879,67,8,768,56,756,74,56,54,6,45,645,7,56,756,87,56,876,8,56,74,5,645,6,3,632,4,5,435,34,53,45,34,5,34,5,4,6745,67,34567,5,45,74,56,45,6,54,6,45,7,65,7,56,8,56,85,674567,56745,6,4,56,456,45645,6,3,45,3,4,5345345,34654,56,987,546,756,8,756,87,5,67,5467,45,6,354,64,57,45,7,4,6,45,6,45,6,34,6,4,65,34,6,457,45,7,658,67,9,2345,89,879780,87,0,80987,9,78,97,89,78,97,8,79,89789,78,9789,78,97897,89}; + + //Code START + dynamic i = 0; + //Code ENDE + + Console.WriteLine("Das Array hat {0} Elemente.", i); + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_5.cs b/Exercises/E05_Arrays/Exercise_5.cs new file mode 100644 index 0000000..a49a085 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_5.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_5 + { + public static void Start() + { + //Lassen Sie den Anwender fünf Decimal-Zahlen eingeben. Speichern Sie diese in das Array: + decimal[] decimalArray = new decimal[5]; + //Code START + + //Code ENDE + + //Geben Sie nun die Summe aller Zahlen auf der Konsole aus: + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_6.cs b/Exercises/E05_Arrays/Exercise_6.cs new file mode 100644 index 0000000..75bf65b --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_6.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_6 + { + public static void Start() + { + //Erstellen Sie ein Array, sodass unten eine wahre Aussage steht: + //Code START + dynamic arr = -1; + //Code ENDE + + arr[2] = 12; + arr[0] = 32; + + int i = arr[0] + arr[1] + arr[2]; + + Console.WriteLine("Teilt man Zahl {0} durch 57 kommt 1 heraus.", i); + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_7.cs b/Exercises/E05_Arrays/Exercise_7.cs new file mode 100644 index 0000000..e1171b9 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_7.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_7 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_8.cs b/Exercises/E05_Arrays/Exercise_8.cs new file mode 100644 index 0000000..2e58a97 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_8.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_8 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E05_Arrays/Exercise_9.cs b/Exercises/E05_Arrays/Exercise_9.cs new file mode 100644 index 0000000..ed30617 --- /dev/null +++ b/Exercises/E05_Arrays/Exercise_9.cs @@ -0,0 +1,14 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E05_Arrays +{ + class Exercise_9 + { + public static void Start() + { + + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_1.cs b/Exercises/E06_Random/Exercise_1.cs new file mode 100644 index 0000000..a6573e8 --- /dev/null +++ b/Exercises/E06_Random/Exercise_1.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass eine Zufallszahl auf der Konsole ausgegeben wird. + int i; + //Code START + i = -1; + //Code ENDE + Console.WriteLine(i); + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_2.cs b/Exercises/E06_Random/Exercise_2.cs new file mode 100644 index 0000000..56dbf15 --- /dev/null +++ b/Exercises/E06_Random/Exercise_2.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_2 + { + public static void Start() + { + //Sorgen Sie dafür, dass eine Zufallszahl zwischen 1 und 10 ausgegeben wird. + int i; + //Code START + i = -1; + //Code ENDE + Console.WriteLine(i); + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_3.cs b/Exercises/E06_Random/Exercise_3.cs new file mode 100644 index 0000000..2ed25fe --- /dev/null +++ b/Exercises/E06_Random/Exercise_3.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_3 + { + public static void Start() + { + //Sorgen Sie dafür, dass eine Zufallszahl zwischen 0 und 45 ausgegeben wird. + Random rand = new Random(); + int k; + + //Code START + k = -1; + //Code ENDE + + Console.WriteLine(rand.Next() % k); + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_4.cs b/Exercises/E06_Random/Exercise_4.cs new file mode 100644 index 0000000..f3a2b75 --- /dev/null +++ b/Exercises/E06_Random/Exercise_4.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_4 + { + public static void Start() + { + //Sorgen Sie dafür, dass eine negative Zahl zwischen -120 und -10 auf der Konsole ausgegeben wird. + + int i; + + //Code START + i = -1; + //Code ENDE + + Console.WriteLine(i); + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_5.cs b/Exercises/E06_Random/Exercise_5.cs new file mode 100644 index 0000000..ec1518e --- /dev/null +++ b/Exercises/E06_Random/Exercise_5.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_5 + { + public static void Start() + { + //Sorgen Sie dafür, dass immer drei verschiedene Zufallszahlen ausgegeben werden. + int[] intArray = new int[3]; + + //Code START + + //Code ENDE + + Console.WriteLine("Zahl 1: " + intArray[0]); + Console.WriteLine("Zahl 2: " + intArray[1]); + Console.WriteLine("Zahl 3: " + intArray[2]); + } + } +} \ No newline at end of file diff --git a/Exercises/E06_Random/Exercise_6.cs b/Exercises/E06_Random/Exercise_6.cs new file mode 100644 index 0000000..4762bcd --- /dev/null +++ b/Exercises/E06_Random/Exercise_6.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E06_Random +{ + class Exercise_6 + { + public static void Start() + { + //Generieren Sie zufällig ein Wort mit 5 Zeichen. Der erste Buchstabe sollte groß geschrieben sein. (Tipp: Buchstaben sind auch nur Zahlen) + + string s = string.Empty; + + //Code START + + //Code ENDE + + Console.WriteLine("Das neue Wort ist \"{0}\".", s); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_1.cs b/Exercises/E07_DateTime/Exercise_1.cs new file mode 100644 index 0000000..dd977ad --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_1.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Data.Common; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole das heutige Datum ausgegeben wird. + //Code START + dynamic dt = -1; + + //Code ENDE + Console.WriteLine(dt.ToString("dd.MM.yyyy")); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_2.cs b/Exercises/E07_DateTime/Exercise_2.cs new file mode 100644 index 0000000..f4b8d96 --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_2.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_2 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole die aktuelle Uhrzeit ausgegeben wird. + int hour = 0; + int minute = 0; + //Code START + + //Code ENDE + Console.WriteLine("{0}:{1} Uhr", hour, minute); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_3.cs b/Exercises/E07_DateTime/Exercise_3.cs new file mode 100644 index 0000000..d3dd5ad --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_3.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_3 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole der 13.02.1998 12:53:52 ausgegeben wird. + //Code START + dynamic dt = -1; + + //Code ENDE + Console.WriteLine(dt.ToString("dd.MM.yyyy hh:mm:ss")); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_4.cs b/Exercises/E07_DateTime/Exercise_4.cs new file mode 100644 index 0000000..adf958c --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_4.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_4 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole die Zahl 101 ausgegeben wird. + DateTime dt = new DateTime(1,2,3,4,5,6); + //Code START + + //Code ENDE + Console.WriteLine(dt.Day + dt.Hour); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_5.cs b/Exercises/E07_DateTime/Exercise_5.cs new file mode 100644 index 0000000..4aa3538 --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_5.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_5 + { + public static void Start() + { + //Ziehen Sie von dem angegeben Datum eine Stunde ab und addieren Sie drei Tage drauf. + DateTime dt = DateTime.Now; + //Code START + + //Code ENDE + Console.WriteLine(dt.ToString("dd.MM.yyyy hh:mm:ss")); + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_6.cs b/Exercises/E07_DateTime/Exercise_6.cs new file mode 100644 index 0000000..25549ad --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_6.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_6 + { + public static void Start() + { + //Zeigen Sie auf der Konsole die Millisekunden und die Microsekunden der aktuellen Uhrzeit an. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E07_DateTime/Exercise_7.cs b/Exercises/E07_DateTime/Exercise_7.cs new file mode 100644 index 0000000..f2f0297 --- /dev/null +++ b/Exercises/E07_DateTime/Exercise_7.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E07_DateTime +{ + class Exercise_7 + { + public static void Start() + { + //Wie viel Zeit liegt zwischen den beiden Daten? Geben Sie diese vollständig auf der Konsole aus (Jahr bis Sekunde). + DateTime dt1 = new DateTime(1999, 12, 31, 11, 59, 59); + DateTime dt2 = DateTime.Now; + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_1.cs b/Exercises/E08_If/Exercise_1.cs new file mode 100644 index 0000000..2c79fb9 --- /dev/null +++ b/Exercises/E08_If/Exercise_1.cs @@ -0,0 +1,41 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Data.Common; + +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass unten "Hello World!" ausgegeben wird. + + //Code START + dynamic b = -1; + + //Code ENDE + if(b) + Console.Write("He"); + + //Code START + + //Code ENDE + if(!b) + Console.Write("llo"); + + + //Code START + + //Code ENDE + if(b == true) + Console.Write(" Worl"); + + //Code START + + //Code ENDE + if(b == false) + Console.WriteLine("d!"); + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_10.cs b/Exercises/E08_If/Exercise_10.cs new file mode 100644 index 0000000..e1005ba --- /dev/null +++ b/Exercises/E08_If/Exercise_10.cs @@ -0,0 +1,16 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_10 + { + public static void Start() + { + //Geben Sie aus, wie viele freie Plätze das Array besitzt. Achten Sie auf die korrekte Grammatik. Sollte kein Element in dem Array sein, schreiben Sie auf die Konsole, dass kein Platz in dem Array frei ist. + + int[] intArray = new int[new Random().Next(0,11)]; + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_11.cs b/Exercises/E08_If/Exercise_11.cs new file mode 100644 index 0000000..fe37dd0 --- /dev/null +++ b/Exercises/E08_If/Exercise_11.cs @@ -0,0 +1,16 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_11 + { + public static void Start() + { + //Die vom Nutzer eingegebene Zahl soll zwischen 10 und 100 liegen. Sollte die Zahl über 100 oder unter 10 liegen, geben Sie die unten stehende Fehlermeldung aus. + + int userinput = Convert.ToInt32(Console.ReadLine()); + //Code START + + //Code ENDE + Console.WriteLine("Die Zahl liegt leider außerhalb des Bereichs von 10 bis 100 und ist somit nicht valide..."); + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_12.cs b/Exercises/E08_If/Exercise_12.cs new file mode 100644 index 0000000..e75704e --- /dev/null +++ b/Exercises/E08_If/Exercise_12.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_12 + { + public static void Start() + { + //Sorgen Sie dafür, dass überprüft wird, ob der Anwender eine Zahl eingegeben hat. Wenn das der Fall, geben Sie die Zahl aus, wenn nicht, dann schreiben Sie auf die Konsole, dass der eingegebene String X keine valide Zahl repräsentiert. + + int k; + string userinput = Console.ReadLine() ?? ""; + bool b = int.TryParse(userinput, out k); + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_13.cs b/Exercises/E08_If/Exercise_13.cs new file mode 100644 index 0000000..00787ef --- /dev/null +++ b/Exercises/E08_If/Exercise_13.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_13 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole immer "Hallo!" ausgegeben wird. + bool b = true; + bool c = false; + + + if(b /*Code START*/&&/*Code ENDE*/ c) + Console.WriteLine("Hallo!"); + + + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_14.cs b/Exercises/E08_If/Exercise_14.cs new file mode 100644 index 0000000..c6b695c --- /dev/null +++ b/Exercises/E08_If/Exercise_14.cs @@ -0,0 +1,17 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_14 + { + public static void Start() + { + //Der Anwender soll hier zwei Zahlen eingeben. Sie sollen danach überprüfen, ob die erste Zahl durch die zweite Zahl teilbar ist. Geben Sie Ihr jeweiliges Resultat auf der Konsole aus. + + int a = Convert.ToInt32(Console.ReadLine()); + int b = Convert.ToInt32(Console.ReadLine()); + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_15.cs b/Exercises/E08_If/Exercise_15.cs new file mode 100644 index 0000000..ee46a0e --- /dev/null +++ b/Exercises/E08_If/Exercise_15.cs @@ -0,0 +1,15 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_15 + { + public static void Start() + { + //In diser if werden direkt zwei Zahlen vom Nutzer verlangt. Wenn dieser beide richtig eingibt, dann soll die Multiplikation beider Zahlen auf der Konsole ausgegeben werden. Wenn einer der Zahlen nicht korrekt ist, dann soll eine Fehlermeldung ausgegeben werden. + + if(int.TryParse(Console.ReadLine(), out int a) && int.TryParse(Console.ReadLine(), out int b)) + //Code START + Console.WriteLine(); + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_16.cs b/Exercises/E08_If/Exercise_16.cs new file mode 100644 index 0000000..92b39ad --- /dev/null +++ b/Exercises/E08_If/Exercise_16.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_16 + { + public static void Start() + { + //Fragen Sie den User nach zwei decimal Zahlen. + // - Gibt er beide richtig ein, dann soll die erste Zahl durch die zweite Zahl geteilt werden. + // - Gibt er nur die erste richtig an, dann soll diese durch 7 geteilt werden. + // - Gibt er nur die zweite richtig an, dann soll die Zahl 1937 durch diese Eingabe geteilt werden. + // - Sind beide Eingaben falsch, dann soll eine 0 ausgegeben werden. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_17.cs b/Exercises/E08_If/Exercise_17.cs new file mode 100644 index 0000000..1d6cdfe --- /dev/null +++ b/Exercises/E08_If/Exercise_17.cs @@ -0,0 +1,17 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_17 + { + public static void Start() + { + //Geben Sie auf der Konsole den Wert von der Eingabe i aus und lassen mit Hilfe vom String s dazuschreiben, ob die Zahl größer/gleich/kleiner 12 ist. + + int i = Convert.ToInt32(Console.ReadLine()); + string s = i > 12 ? "größer 12" : i == 12 ? "gleich 12" : "kleiner 12"; + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_18.cs b/Exercises/E08_If/Exercise_18.cs new file mode 100644 index 0000000..6a21d76 --- /dev/null +++ b/Exercises/E08_If/Exercise_18.cs @@ -0,0 +1,19 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_18 + { + public static void Start() + { + //Fragen Sie den Nutzer zuerst nach einer Integerzahl. Sorgen Sie dafür, dass das Programm bei Falscheingabe nicht abstürzt. + //Code START + + //Code ENDE + string s = string.Empty; + //Füllen Sie nun den String s mit Hilfe eines SHORT-IF. Es soll überprüft und unten ausgegeben werden, ob die Zahl zwischen 0 und 10, zwischen 10 und 100, zwischen 100 und 1000 und über 1000 liegt. + //Code START + + //Code ENDE + Console.WriteLine("Die eingegebene Zahl ist " + s); + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_2.cs b/Exercises/E08_If/Exercise_2.cs new file mode 100644 index 0000000..15a27cf --- /dev/null +++ b/Exercises/E08_If/Exercise_2.cs @@ -0,0 +1,14 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_2 + { + public static void Start() + { + //Sorgen Sie dafür, dass niemals "Hey" ausgegeben wird. + //Code START + if(true) + //Code ENDE + Console.WriteLine("Hey"); + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_3.cs b/Exercises/E08_If/Exercise_3.cs new file mode 100644 index 0000000..30b7b95 --- /dev/null +++ b/Exercises/E08_If/Exercise_3.cs @@ -0,0 +1,22 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_3 + { + public static void Start() + { + //Sorgen Sie dafür, dass die beiden Berechnungen gemacht und die Ergebnise ausgegeben werden. + int i = 123; + //Code START + + //Code ENDE + if(i > 1000) + Console.WriteLine(i / 100); + + //Code START + + //Code ENDE + if(!(i > 1000)) + Console.WriteLine(i * 100); + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_4.cs b/Exercises/E08_If/Exercise_4.cs new file mode 100644 index 0000000..d685af7 --- /dev/null +++ b/Exercises/E08_If/Exercise_4.cs @@ -0,0 +1,17 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_4 + { + public static void Start() + { + //Sorgen Sie dafür, dass der String "Passt!" immer ein einziges Mal ausgegeben wird, egal welcher Wert für i gesetzt wird. (Sie dürfen diesen natürlich testweise ändern.) + + int i = 123; + if(i < 100) + Console.WriteLine("Passt!"); + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_5.cs b/Exercises/E08_If/Exercise_5.cs new file mode 100644 index 0000000..7259053 --- /dev/null +++ b/Exercises/E08_If/Exercise_5.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_5 + { + public static void Start() + { + //Lassen Sie den Computer die folgenden Boolschen Werte berechnen. Geben Sie dabei immer aus, ob die Aussage Wahr oder Falsch ist: + //123 / 12 > 124 /13 + //123 + 123 == 321 - 123 + //1234 / 56 > 7 * 12 + //10000 % 12 <= 2000 % 23 + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_6.cs b/Exercises/E08_If/Exercise_6.cs new file mode 100644 index 0000000..0b6acdb --- /dev/null +++ b/Exercises/E08_If/Exercise_6.cs @@ -0,0 +1,15 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_6 + { + public static void Start() + { + //Geben Sie "Es ist richtig!" auf der Konsole aus, wenn die Aussage richtig ist und "Es ist falsch!" wenn die Aussage falsch ist. + + if(123 * 12 / 85 % 88 < 123 * 13 / 86 % 77) + //Code START + Console.WriteLine(); + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_7.cs b/Exercises/E08_If/Exercise_7.cs new file mode 100644 index 0000000..b03068e --- /dev/null +++ b/Exercises/E08_If/Exercise_7.cs @@ -0,0 +1,16 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_7 + { + public static void Start() + { + //Geben Sie die erstellte Zahl num auf der Konsole aus. Schreiben Sie dazu, ob die Zahl größer, kleiner oder gleich 500 ist. + + int num = new Random().Next(0,1001); + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_8.cs b/Exercises/E08_If/Exercise_8.cs new file mode 100644 index 0000000..c6a7a2f --- /dev/null +++ b/Exercises/E08_If/Exercise_8.cs @@ -0,0 +1,14 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_8 + { + public static void Start() + { + //Es heißt als Sprichwort "Kein Bier vor vier". Schreiben Sie ein Programm, welches überprüft, ob es schon nach 4 Uhr Nachmittags (also 16 Uhr) ist. Wenn das der Fall ist, geben Sie auf der Konsole "Sie dürfen ein Bier trinken" aus. Ansonsten geben Sie "Sie dürfen gerade kein Bier trinken" aus. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E08_If/Exercise_9.cs b/Exercises/E08_If/Exercise_9.cs new file mode 100644 index 0000000..88a071d --- /dev/null +++ b/Exercises/E08_If/Exercise_9.cs @@ -0,0 +1,16 @@ +namespace Exercises_C_Sharp.E08_If +{ + class Exercise_9 + { + public static void Start() + { + //Analysieren Sie den String userinput. Hat dieser über 20 Zeichen, geben Sie aus, dass der String zu lang sei, hat er kein Zeichen, dass der String zu kurz sei. Liegt die Größe dazwischen, geben Sie aus, dass die Länge X so passt. + + string userinput = Console.ReadLine() ?? ""; + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E09_Flowchart/dummy.txt b/Exercises/E09_Flowchart/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E10_SwitchCase/dummy.txt b/Exercises/E10_SwitchCase/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E11_For/dummy.txt b/Exercises/E11_For/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E12_ResizeArrays/dummy.txt b/Exercises/E12_ResizeArrays/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E13_Foreach/dummy.txt b/Exercises/E13_Foreach/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E14_While/dummy.txt b/Exercises/E14_While/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E15_DoWhile/dummy.txt b/Exercises/E15_DoWhile/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E16_BreakContinue/dummy.txt b/Exercises/E16_BreakContinue/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E17_StructureDiagram/dummy.txt b/Exercises/E17_StructureDiagram/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E18_Methods/Exercise_1.cs b/Exercises/E18_Methods/Exercise_1.cs new file mode 100644 index 0000000..8b12d08 --- /dev/null +++ b/Exercises/E18_Methods/Exercise_1.cs @@ -0,0 +1,26 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + class Exercise_1 + { + public static void Start() + { + //Rufen Sie die unten stehende Methode auf. + //Code START + + //Code ENDE + } + + static void ShowImage() + { + Console.WriteLine("**#***********************#**"); + Console.WriteLine("***#*********************#***"); + Console.WriteLine("****#*******************#****"); + Console.WriteLine("*****#********##*******#*****"); + Console.WriteLine("******#******#**#*****#******"); + Console.WriteLine("*******#****#****#***#*******"); + Console.WriteLine("********#**#******#*#********"); + Console.WriteLine("*********##********#*********"); + } + + } +} \ No newline at end of file diff --git a/Exercises/E18_Methods/Exercise_2.cs b/Exercises/E18_Methods/Exercise_2.cs new file mode 100644 index 0000000..1489c2a --- /dev/null +++ b/Exercises/E18_Methods/Exercise_2.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + class Exercise_2 + { + public static void Start() + { + //2. Rufen Sie die unten erstellte Methode auf. + //Code START + + //Code ENDE + } + //Schreiben Sie eine Methode "Superstart", die auf der Konsole ein Begrüßungsfloskel ausgibt und zusätzlich noch auf die Konsole schreibt, dass das Programm gestartet wurde. + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E18_Methods/Exercise_3.cs b/Exercises/E18_Methods/Exercise_3.cs new file mode 100644 index 0000000..ced18a9 --- /dev/null +++ b/Exercises/E18_Methods/Exercise_3.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + class Exercise_3 + { + public static void Start() + { + //2. Rufen Sie die unten erstellte Methode dreimal auf. Starten Sie mit dem Wert "13" und arbeiten Sie dann jeweils mit dem Rückgabewert weiter. + //Code START + + //Code ENDE + } + //Schreiben Sie eine Methode, die eine Übergebene Zahl verdoppelt und zurück gibt. + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E18_Methods/Exercise_4.cs b/Exercises/E18_Methods/Exercise_4.cs new file mode 100644 index 0000000..768184c --- /dev/null +++ b/Exercises/E18_Methods/Exercise_4.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + class Exercise_4 + { + public static void Start() + { + //2. Rufen Sie die unten erstellte Methode auf und geben Sie den Inhalt auf der Konsole aus. + //Code START + + //Code ENDE + } + //Erstellen Sie eine Methode, die bei jedem Aufruf zufällig eine von 10 Begrüßungen zurück gibt. + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E18_Methods/Exercise_5.cs b/Exercises/E18_Methods/Exercise_5.cs new file mode 100644 index 0000000..cf3a244 --- /dev/null +++ b/Exercises/E18_Methods/Exercise_5.cs @@ -0,0 +1,18 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + class Exercise_5 + { + public static void Start() + { + //2. Fragen Sie den Nutzer mit Hilfe der unten erstellten Methode nach einer Primzahl. Fragen Sie diesen dann, ob er noch eine weitere Primzahl eingeben möchte. Wiederholen Sie den Vorgang, bis der Nutzer keine Zahl mehr eingeben möchte. Multiplizieren Sie dann alle Eingaben miteinander und geben das Ergebnis aus. + //Code START + + //Code ENDE + } + //Schreiben Sie eine Methode, bei der der Nutzer eine Primzahl (Zahl, die nur durch 1 und sich selbst teilbar ist) eingeben soll. Geben Sie diese Zahl zurück. Wenn der Nutzer eine falsche Eingabe tätigt, dann soll der Nutzer darüber informiert und die Abfrage wiederholt werden. + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E18_Methods/Exercise_6.cs b/Exercises/E18_Methods/Exercise_6.cs new file mode 100644 index 0000000..90eedaf --- /dev/null +++ b/Exercises/E18_Methods/Exercise_6.cs @@ -0,0 +1,72 @@ +namespace Exercises_C_Sharp.E18_Methods +{ + //In dieser Aufgabe wurde eine Art Hangman programmiert. Leider handelt es sich hierbei um sogenannten "Spaghetti-Code". Ihre Aufgabe ist nun, alle Elemente in dieser Aufgabe, um die "Code START/ENDE" steht, in Methoden auszulagern. Rufen Sie dann anstelle des Codes die Methode auf. + class Exercise_6 + { + static List StringList = new List(){ "ELTERN", "BAUM", "HAUSDACH", "GELÄNDEWAGEN"}; + static List InputList = new List(); + public static void Start() + { + Random rand = new Random(); + //Wählen eines zufälligen Elements + string word = StringList[rand.Next(0, StringList.Count)]; + int tries = 0; + + while(true) + { + //Ausgabe der Anzeige für den User + //Code START + Console.Clear(); + foreach(var element in word) + { + if(InputList.Contains(element)) + Console.Write(element); + else + Console.Write("_"); + } + Console.WriteLine(); + //Code ENDE + + //Fragen nach der Eingabe + //Code START + Console.WriteLine("Bitte geben Sie einen Buchstaben ein:"); + while(true) + { + string userinput = (Console.ReadLine() ?? "").ToUpper(); + if(userinput == null || userinput.Length == 0 || InputList.Contains(userinput[0])) + continue; + InputList.Add(userinput[0]); + break; + } + //Code ENDE + tries++; + + //Kontrolle, ob alle Elemente gefunden wurden + //Code START + bool allFound = true; + foreach(var element in word) + { + if(!InputList.Contains(element)) + { + allFound = false; + break; + } + } + //Code ENDE + if(allFound) + break; + } + + //Ausgaben der Spielstatistiken + Console.WriteLine("Herzlichen Glückwunsch! Sie haben gewonnen!"); + Console.WriteLine("Das Wort war: " + word); + Console.WriteLine("Ihre Versuche: " + tries); + } + + //Hier kommen die Methoden hin: + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E19_Überladung/Exercise_1.cs b/Exercises/E19_Überladung/Exercise_1.cs new file mode 100644 index 0000000..845ddcd --- /dev/null +++ b/Exercises/E19_Überladung/Exercise_1.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E19_Überladung +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass die Methode Output ausgibt, ob es sich um eine Zahl, oder um einen String handelt und diesen dann ausgibt. Nutzen Sie dafür Überladung der Methoden. + Output(12); + Output("Hallo"); + } + //Code START + static void Output(dynamic d) + { + + } + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E19_Überladung/Exercise_2.cs b/Exercises/E19_Überladung/Exercise_2.cs new file mode 100644 index 0000000..775b36a --- /dev/null +++ b/Exercises/E19_Überladung/Exercise_2.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E19_Überladung +{ + class Exercise_2 + { + //Schreiben Sie den unteren Code so um, dass die Felder Number und DoubleNumber entfernt werden können. Nutzen Sie dafür die Möglichkeit der Überladung. + + //Code START + static int Number = 0; + static double DoubleNumber = 0.0; + + public static void Start() + { + Number = 13; + Output(); + DoubleNumber = 34.23; + Output(); + } + + + static void Output() + { + if(Number != 0) + Console.WriteLine("Der Integer {0} wurde gesetzt.", Number); + else if(DoubleNumber != 0.0) + Console.WriteLine("Der Double {0} wurde gesetzt.", DoubleNumber); + } + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E19_Überladung/Exercise_3.cs b/Exercises/E19_Überladung/Exercise_3.cs new file mode 100644 index 0000000..c68f159 --- /dev/null +++ b/Exercises/E19_Überladung/Exercise_3.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E19_Überladung +{ + class Exercise_3 + { + //Sorgen Sie dafür, dass die unteren Elemente auf der Konsole ausgegeben werden. + + public static void Start() + { + Output(12); + Output("Hallo", 12.5); + Output(15.15, "Heyho"); + Output(123, "Element", 'G'); + } + + //Code START + static void Output(dynamic d) + { + + } + static void Output(dynamic d, dynamic d2) + { + + } + static void Output(dynamic d, dynamic d2, dynamic d3) + { + + } + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E19_Überladung/Exercise_4.cs b/Exercises/E19_Überladung/Exercise_4.cs new file mode 100644 index 0000000..6f26d95 --- /dev/null +++ b/Exercises/E19_Überladung/Exercise_4.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E19_Überladung +{ + class Exercise_4 + { + //Sie sollen die Methode ConvertToInt so schreiben, dass mit allen drei Aufrufen der richtige Integer-Wert zurück gegeben wird. Verwenden Sie dafür Überladung und kein dynamic. + + public static void Start() + { + Console.WriteLine(ConvertToInt('7')); + Console.WriteLine(ConvertToInt("Drei")); + Console.WriteLine(ConvertToInt("i")); + } + + //Code START + static int ConvertToInt(dynamic d) + { + return -1; + } + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E19_Überladung/Exercise_5.cs b/Exercises/E19_Überladung/Exercise_5.cs new file mode 100644 index 0000000..cd522b2 --- /dev/null +++ b/Exercises/E19_Überladung/Exercise_5.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E19_Überladung +{ + class Exercise_5 + { + //Beim Aufruf der Methode Analyze soll man einen String, einen Integer, einen Character oder einen Double übergeben können. Dabei soll die Methode jeweils den Typ der Variablen auf die Konsole schreiben. Zusätzlich soll zu einem String die Länge ausgegeben werden, zu einem Integer die Anzahl der Stellen, zu einem Character die dezimale Darstellung und zu einem Double die Anzahl der Nachkommastellen. Nutzen Sie dafür Überladungen der Mehtode Analyze. + + //Ausgabebeispiel: + //Das übergebene Element ist ein Double. Dieser besitzt 3 Nachkommastellen. + //Das übergebene Element ist ein Character mit der dezimalen Codierung 83. + //Das übergebene Element ist ein String mit der Länge 10. + //usw.... + + public static void Start() + { + Analyze(44.343); + Analyze('S'); + Analyze("Teststring"); + Analyze(390); + Analyze(33.0); + Analyze(1209); + Analyze('c'); + } + + //Code START + static void Analyze(dynamic d) + { + + } + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_1.cs b/Exercises/E20_Lists/Exercise_1.cs new file mode 100644 index 0000000..44fe31a --- /dev/null +++ b/Exercises/E20_Lists/Exercise_1.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_1 + { + public static void Start() + { + //Sorgen Sie dafür, dass in der Liste alle Zahlen von 1 bis 10 stehen: + List intList = new List(); + for(int i = 0; i < 10; i++) + { + /*Code START*/ + + /*Code ENDE*/ + } + + //Kontrolle: + foreach(var element in intList) + { + Console.WriteLine(element); + } + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_10.cs b/Exercises/E20_Lists/Exercise_10.cs new file mode 100644 index 0000000..7e2d923 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_10.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_10 + { + public static void Start() + { + //Kontrolle: + foreach (var element in Meth()) + Console.WriteLine(element); + + } + + //Schreiben Sie eine Methode, die eine beliebige Anzahl von String-Eingaben vom Nutzer entgegen nimmt. Die Methode soll dann eine Liste dieser Eingaben zurück geben. + static List Meth() + { + /*Code START*/ + + return new List(); + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_11.cs b/Exercises/E20_Lists/Exercise_11.cs new file mode 100644 index 0000000..a00c8b8 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_11.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_11 + { + public static void Start() + { + //Kontrolle: + foreach (var element in Meth()) + Console.WriteLine(element); + + } + + //Schreiben Sie eine Methode, die eine beliebige Anzahl von Integer-Eingaben vom Nutzer entgegen nimmt. Die Methode soll dann eine Liste dieser Eingaben zurück geben. Falsche Eingaben (Strings, die nicht umgewandelt werden können) sollen ignoriert werden. + static List Meth() + { + /*Code START*/ + + return new List(); + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_12.cs b/Exercises/E20_Lists/Exercise_12.cs new file mode 100644 index 0000000..98208f2 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_12.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_12 + { + public static void Start() + { + List stringList = new List(); + stringList.Add(Console.ReadLine() ?? ""); + stringList.Add(Console.ReadLine() ?? ""); + stringList.Add(Console.ReadLine() ?? ""); + stringList.Add(Console.ReadLine() ?? ""); + stringList.Add(Console.ReadLine() ?? ""); + //Kontrolle: + Console.WriteLine(); + foreach (var element in Meth(stringList, 'a')) + Console.WriteLine(element); + + } + + //In der folgenden Methode bekommen Sie eine Liste von Strings und einen Character. Sie sollen nun aus der Liste alle Wörter entfernen, die diesen Character beinhalten. + static List Meth(List lis, char c) + { + /*Code START*/ + + return new List(); + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_13.cs b/Exercises/E20_Lists/Exercise_13.cs new file mode 100644 index 0000000..fc45fbf --- /dev/null +++ b/Exercises/E20_Lists/Exercise_13.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_13 + { + public static void Start() + { + List intList = new List(){736,452,372,493,482,803,392,473,293,493,462,583,192,483,201,939,483,192,472,493}; + + //Kontrolle: + foreach (var element in Meth(intList)) + Console.WriteLine(element); + + } + + //Schreiben Sie eine Methode, die die Integerwerte einer übergebenen Liste nach ihren Kehrwert sortiert. Somit würde 432 (Kehrwert: 234) vor der 123 (Kehrwert: 321) kommen. + static List Meth(List lis) + { + /*Code START*/ + + return new List(); + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_2.cs b/Exercises/E20_Lists/Exercise_2.cs new file mode 100644 index 0000000..565896e --- /dev/null +++ b/Exercises/E20_Lists/Exercise_2.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_2 + { + public static void Start() + { + //Erstellen Sie eine Liste, in die unten die drei Werte reingeschrieben werden: + + /*Code START*/ + dynamic superList = 1; + /*Code ENDE*/ + + superList.Add("Hallo"); + superList.Add("Hi"); + superList.Insert(0, "Hey"); + + //Kontrolle: + foreach(var element in superList) + Console.WriteLine(element); + + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_3.cs b/Exercises/E20_Lists/Exercise_3.cs new file mode 100644 index 0000000..4e4bca1 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_3.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_3 + { + public static void Start() + { + //Sorgen Sie dafür, dass unten aus der Liste "Hallo, wie geht's?" ausgegeben wird: + + List stringList = new List(); + stringList.Add(", wie"); + stringList.Add("'s?"); + + /*Code START*/ + + + /*Code ENDE*/ + + + //Kontrolle: + foreach(var element in stringList) + Console.Write(element); + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_4.cs b/Exercises/E20_Lists/Exercise_4.cs new file mode 100644 index 0000000..1b9a3cf --- /dev/null +++ b/Exercises/E20_Lists/Exercise_4.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_4 + { + public static void Start() + { + //Geben Sie das Doppelte der ersten Zahl, das Dreifache der zweiten Zahl, das Vierfache der dritten Zahl usw. aus der Liste aus: + List intList = new List() {14,2,12,32,51,31,53,12,34,34,2,45,45,23,62,72,25,40}; + + + /*Code START*/ + + + /*Code ENDE*/ + + + //Kontrolle: + //28 - 6 - 48 - 160 usw.... + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_5.cs b/Exercises/E20_Lists/Exercise_5.cs new file mode 100644 index 0000000..b33bd22 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_5.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_5 + { + public static void Start() + { + //Geben Sie die folgenden Informationen über die Zahlen in der Liste aus: Größte Zahl, kleinste Zahl, Durchschnitt (arithmetisches Mittel): + List intList = new List() {14,2,12,32,51,31,53,12,34,34,2,45,45,23,62,72,25,40}; + + + /*Code START*/ + + + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_6.cs b/Exercises/E20_Lists/Exercise_6.cs new file mode 100644 index 0000000..7d53401 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_6.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_6 + { + public static void Start() + { + //Geben Sie den Medianwert der folgenden Zahlenreihe an. Der Medianwert ist der Wert, der bei einer sortierten Reihe genau in der Mitte steht: + List intList = new List() {14,2,12,32,51,31,53,12,34,34,2,45,45,23,62,72,25,40}; + + + /*Code START*/ + + + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_7.cs b/Exercises/E20_Lists/Exercise_7.cs new file mode 100644 index 0000000..8e88676 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_7.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_7 + { + public static void Start() + { + //Schreiben Sie zwei Methoden. Die erste soll alle geraden Zahlen aus der Liste entfernen, die zweite alle ungeraden Zahlen: + + List intListOdd = new List() {14,2,12,32,51,31,53,12,34,34,2,45,45,23,62,72,25,40}; + List intListEven = new List() {14,2,12,32,51,31,53,12,34,34,2,45,45,23,62,72,25,40}; + + //Kontrolle: + foreach(var element in RemoveOdds(intListEven)) + Console.Write(element + " - "); + Console.WriteLine(); + foreach(var element in RemoveEvens(intListOdd)) + Console.Write(element + " - "); + + } + static List RemoveOdds(List intList) + { + /*Code START*/ + + return intList; + /*Code ENDE*/ + } + static List RemoveEvens(List intList) + { + /*Code START*/ + + return intList; + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_8.cs b/Exercises/E20_Lists/Exercise_8.cs new file mode 100644 index 0000000..64e0cc0 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_8.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_8 + { + public static void Start() + { + + List doubleList = new List() {12.2, 34.2,434,2.5,23.134, 54.684, 23.43, 34.683, 23.43, 11.53, 11.5444, 34.2345, 23.3534223}; + + //Kontrolle: + foreach(var element in Meth(doubleList, 4)) + Console.WriteLine(element); + + } + + //Schreiben Sie eine Methode, die eine Liste von Doubles bekommt. Zusätzlich soll noch ein Wert übergeben werden, der die neue Größe der Liste angibt. Nehmen Sie solange Werte aus der Liste, bis diese übergebene Anzahl erreicht ist. Streichen Sie dabei immer die kleinsten Werte heraus. Änder Sie nicht die Ordnung der übergebenen Liste: + static List Meth(List doubleList, int i) + { + /*Code START*/ + + return doubleList; + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E20_Lists/Exercise_9.cs b/Exercises/E20_Lists/Exercise_9.cs new file mode 100644 index 0000000..b0fc952 --- /dev/null +++ b/Exercises/E20_Lists/Exercise_9.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E20_Lists +{ + class Exercise_9 + { + public static void Start() + { + + List intList = new List() {46,45,2,3,-8,15,14,16,35,86,-84,25,78,6,32,-15,99,87, -38, 64, -42}; + + //Kontrolle: + Meth(intList); + + } + + //Schreiben Sie eine Methode, die alle Werte einer Integerliste als String ausgibt. So soll er beispielsweise bei der 1 -> "Eins" ausgeben und bei der 34 -> "Vierunddreißig". Es reicht aus, wenn es für ein und zweistellige Zahlen funktioniert. Schauen Sie auch, dass auch negative Zahlen ausgegeben werden: + static void Meth(List intList) + { + /*Code START*/ + + /*Code ENDE*/ + } + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_1.cs b/Exercises/E21_Sorting/Exercise_1.cs new file mode 100644 index 0000000..b952371 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_1.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_1 + { + //Sortieren Sie folgende Liste mit Hilfe des Bubble Sort + public static List NumberList = new(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Bubble Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_2.cs b/Exercises/E21_Sorting/Exercise_2.cs new file mode 100644 index 0000000..1cfcee6 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_2.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_2 + { + //Sortieren Sie folgende Liste mit Hilfe des Selection Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Selection Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_3.cs b/Exercises/E21_Sorting/Exercise_3.cs new file mode 100644 index 0000000..92c759a --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_3.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_3 + { + //Sortieren Sie folgende Liste mit Hilfe des Insert Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Insert Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_4.cs b/Exercises/E21_Sorting/Exercise_4.cs new file mode 100644 index 0000000..ffc858a --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_4.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_4 + { + //Sortieren Sie folgende Liste mit Hilfe des Heap Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Heap Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_5.cs b/Exercises/E21_Sorting/Exercise_5.cs new file mode 100644 index 0000000..9b03ee6 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_5.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_5 + { + //Sortieren Sie folgende Liste mit Hilfe des Quick Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Quick Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_6.cs b/Exercises/E21_Sorting/Exercise_6.cs new file mode 100644 index 0000000..7dc3413 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_6.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_6 + { + //Sortieren Sie folgende Liste mit Hilfe des Count Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Count Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_7.cs b/Exercises/E21_Sorting/Exercise_7.cs new file mode 100644 index 0000000..8d436a8 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_7.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_7 + { + //Sortieren Sie folgende Liste mit Hilfe des Bogo Sort + public static List NumberList = new List(){ 5865, 2152, 9596, 1258, 6585, 3265, 4256, 9215, 3256, 8526, 1452, 6215, 1478, 9548, 7532, 1254, 6253, 4268, 8523, 9652, 4521, 8527, 5215, 4236, 7524, 1258, 1952, 6235, 6548, 7598, 9854, 8562, 3358, 5591, 6279, 3791, 7523, 9137, 8245, 6237, 8266, 1762, 2458, 6775, 6325, 6326, 8542, 6324, 5833}; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert mit Bogo Sort:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E21_Sorting/Exercise_8.cs b/Exercises/E21_Sorting/Exercise_8.cs new file mode 100644 index 0000000..f61aa34 --- /dev/null +++ b/Exercises/E21_Sorting/Exercise_8.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E21_Sorting +{ + class Exercise_8 + { + //Sortieren Sie folgende Liste selbstständig, ohne die Methode Sort() zu verwenden + public static List NumberList = new List(){ "Dies", "ist", "ein", "wunderschöner", "Satz", "welcher", "tolle", "Wörter", "verwendet", "und", "ideal", "zum", "Sortieren", "ist", "achten", "Sie", "nur", "darauf", "dass", "die", "Wörter", "zum", "Schluss", "sauber", "alphabetisch", "geordnet", "sind", "denn", "wie", "es", "ja", "so", "schön", "heißt", "Ordnung", "ist", "das", "halbe", "Leben" }; + + public static void Start() + { + Console.WriteLine("Alte Reihe:"); + foreach(var element in NumberList) + Console.Write(element + " - "); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Sortiert:"); + //Code Start + + //Code ENDE + + foreach(var element in NumberList) + Console.Write(element + " - "); + + } + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E22_Dictionary/Exercise_1.cs b/Exercises/E22_Dictionary/Exercise_1.cs new file mode 100644 index 0000000..53a44c2 --- /dev/null +++ b/Exercises/E22_Dictionary/Exercise_1.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E22_Dictionary +{ + class Exercise_1 + { + //Erstellen Sie ein Dictionary, das zu den Datentypen passt. + public static void Start() + { + //Code Start + dynamic dic = -1; + //Code ENDE + dic.Add("Hallo", 12.54); + dic.Add("Hi", 7.33); + dic.Add("Hey", 0.56); + } + } +} \ No newline at end of file diff --git a/Exercises/E22_Dictionary/Exercise_2.cs b/Exercises/E22_Dictionary/Exercise_2.cs new file mode 100644 index 0000000..2703178 --- /dev/null +++ b/Exercises/E22_Dictionary/Exercise_2.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E22_Dictionary +{ + class Exercise_2 + { + //Geben Sie alle Value-Werte hintereinander mit Leerzeichen getrennt auf der Konsole aus. + public static void Start() + { + Dictionary dic = new() { {12, "Dies"}, {4, "ist"}, {22, "ein"}, {94, "tolles"}, {26, "Ding!"} }; + + //Code Start + + //Code ENDE + + } + } +} \ No newline at end of file diff --git a/Exercises/E22_Dictionary/Exercise_3.cs b/Exercises/E22_Dictionary/Exercise_3.cs new file mode 100644 index 0000000..f213738 --- /dev/null +++ b/Exercises/E22_Dictionary/Exercise_3.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E22_Dictionary +{ + class Exercise_3 + { + //Sorgen Sie dafür, dass auf der Konsole "Dies ist mein Programm" ausgegeben wird. + public static void Start() + { + Dictionary dic = new(); + + //Code Start + + //Code ENDE + + Console.Write(dic["dieses"]); + Console.Write(dic["ist"]); + Console.Write(dic["Programm"]); + Console.Write(dic["es"]); + + } + } +} \ No newline at end of file diff --git a/Exercises/E22_Dictionary/Exercise_4.cs b/Exercises/E22_Dictionary/Exercise_4.cs new file mode 100644 index 0000000..a05ed7c --- /dev/null +++ b/Exercises/E22_Dictionary/Exercise_4.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E22_Dictionary +{ + class Exercise_4 + { + //Addieren Sie alle Value-Werte mit geraden Index auf und geben Sie das Ergebnis aus. + public static void Start() + { + Dictionary dic = new() {{1, 14.85}, {2, 58.52}, {3, 8.63}, {4, 6.49}, {5, 62.85}, {6, 2.22}, {7, 3.33}, {8, 9.99}}; + + //Code Start + + //Code ENDE + + + } + } +} \ No newline at end of file diff --git a/Exercises/E22_Dictionary/Exercise_5.cs b/Exercises/E22_Dictionary/Exercise_5.cs new file mode 100644 index 0000000..d126abd --- /dev/null +++ b/Exercises/E22_Dictionary/Exercise_5.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E22_Dictionary +{ + class Exercise_5 + { + //Der User soll hier ein Wort eingeben. Wenn es sich schon im Dictionary befindet, dann soll die Übersetzung ausgegeben werden. Wenn nicht, dass soll der User die Übersetzung eingeben und beide Elemente sollen in dem Dictionary gespeichert werden. Groß- und Kleinschreibung soll keine Rolle spielen. + public static void Start() + { + Dictionary dic = new(){{"black", "schwarz"}, {"exception", "Ausnahme"}, {"barrel", "Fass"}}; + + //Code Start + + //Code ENDE + + + } + } +} \ No newline at end of file diff --git a/Exercises/E23_ChatGPT/Exercise_1.cs b/Exercises/E23_ChatGPT/Exercise_1.cs new file mode 100644 index 0000000..976360b --- /dev/null +++ b/Exercises/E23_ChatGPT/Exercise_1.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using Microsoft.VisualBasic; + +namespace Exercises_C_Sharp.E323_ChatGPT +{ + class Exercise_1 + { + //Lassen Sie ChatGPT den Inhalt der Methode Make erstellen. Die Methode soll einen String mit zufälligen Buchstaben zurück geben. Die Anzahl wird dabei übergeben. Der erste Buchstabe muss groß geschrieben sein. + public static void Start() + { + Console.WriteLine(Make(12)); + Console.WriteLine(Make(2)); + Console.WriteLine(Make(1)); + Console.WriteLine(Make(-3)); + Console.WriteLine(Make(99)); + } + + public static string Make(int i) + { + //Code START + return string.Empty; + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_1.cs b/Exercises/E24_Enums/Exercise_1.cs new file mode 100644 index 0000000..46ece4e --- /dev/null +++ b/Exercises/E24_Enums/Exercise_1.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_1 + { + //Ändern Sie die Hintergrundfarbe der Konsole auf weiß und die Farbe der Schrift auf lila. Nutzen Sie dafür die unten definierte Methode. + public static void Start() + { + //Code Start + + + //Code ENDE + } + static void PrintAnimal(ConsoleColor back, ConsoleColor front) + { + Console.BackgroundColor = back; + Console.ForegroundColor = front; + Console.WriteLine("Farbe geändert!!!"); + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_10.cs b/Exercises/E24_Enums/Exercise_10.cs new file mode 100644 index 0000000..7200da8 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_10.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_10 + { + //Sorgen Sie dafür, dass auf der Konsole "Hallo wie geht es Ihnen " ausgegeben wird. + enum Things { wie, es, Ihnen, Hallo, geht } + + public static void Start() + { + List ThingList = new List(); + //Code START + + //Code ENDE + + foreach(var element in ThingList) + Console.Write(element.ToString() + " "); + + + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_11.cs b/Exercises/E24_Enums/Exercise_11.cs new file mode 100644 index 0000000..c5a2c7e --- /dev/null +++ b/Exercises/E24_Enums/Exercise_11.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_11 + { + //Zeigen Sie im ersten Bereich zuerst alle möglichen Städte (die im Enum City) an. Sorgen Sie dann dafür, dass die Auswahl des Nutzers in die Liste gespeichert wird. + enum City { München, Berlin, Köln, Regensburg, Hamburg } + + public static void Start() + { + List CityList = new List(); + + while(true) + { + Console.WriteLine("Hier ist Ihre Auswahl:"); + //Code START + + //Code ENDE + Console.WriteLine("Bitte geben Sie eine valide Nummer ein:"); + int index = Convert.ToInt32(Console.ReadLine()) - 1; + Console.Clear(); + //Code START + + //Code ENDE + Console.WriteLine("Ihre Werte:"); + foreach(var element in CityList) + Console.WriteLine(element.ToString()); + Console.WriteLine(); + } + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_12.cs b/Exercises/E24_Enums/Exercise_12.cs new file mode 100644 index 0000000..22948c5 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_12.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_12 + { + //Hierbei handelt es sich um ein Spiel, welches der Spieler erraten muss, welchen Wert der Computer wählt. Dabei muss der Anwender eine Zahl auswählen, die eine Richtung (Direction) repräsentiert. Schreiben Sie die Methode, die beide Eingaben (die des Anwenders und die des Computers) miteinander vergleicht und die Anzahl der Treffer zurück gibt. + enum Direction { Vorne, Hinten, Links, Rechts, Oben, Unten } + + public static void Start() + { + List PlayerList = new List(); + List ComputerList = new List(); + Random rand = new Random(); + int k = 0; + foreach(var element in Enum.GetValues(typeof(Direction))) + { + Console.WriteLine(k + ".) " + element.ToString()); + k++; + } + for(int i = 0; i < 10; i++) + { + Console.WriteLine("Bitte geben Sie eine Zahl zwischen 0 und 5 ein:"); + PlayerList.Add((Direction)Convert.ToInt32(Console.ReadLine())); + ComputerList.Add((Direction)(rand.Next() % 6)); + } + int res = TestListMatches(PlayerList, ComputerList); + if(res < 5) + Console.WriteLine("Leider haben Sie nur schäbige {0} von 10 erraten :(", res); + else + Console.WriteLine("Herzlichen Glückwunsch! Sie konnten fantastische {0} von 10 erraten!", res); + } + + static int TestListMatches(List FirstList, List SecondList) + { + //Code START + return -1; + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_13.cs b/Exercises/E24_Enums/Exercise_13.cs new file mode 100644 index 0000000..b9a31e4 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_13.cs @@ -0,0 +1,97 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_13 + { + //Hier ist das Enum definiert, in denen die Spielelemente drinnen stehen + enum GameObjects { Schere, Stein, Papier } + + public static void Start() + { + int playerPoints = 0; + int computerPoints = 0; + + Console.WriteLine("Hallo und Herzlich Willkommen zu Schere, Stein Papier!"); + string message = string.Empty; + while(TestGameEnding(playerPoints, computerPoints)) + { + bool? winner = FindWinner(UserInput(), ComputerInput()); + if(winner == true) + { + playerPoints++; + message = "Glückwunsch! Ein Punkt für Sie!"; + } + else if(winner == false) + { + computerPoints++; + message = "Schade... Ein Punkt für den Computer..."; + } + else + message = "UNENTSCHIEDEN....."; + + Console.Clear(); + Console.WriteLine("Spieler: {0} Computer: {1}\n{2}", playerPoints, computerPoints, message); + } + + Console.Clear(); + Console.WriteLine("Das Spiel ist aus. Hier ist Ihr Ergebnis:"); + Console.WriteLine("Punkte des Spielers: {0}\nPunkte der Computers: {1}", playerPoints, computerPoints); + if(playerPoints > computerPoints) + Console.WriteLine("SIE HABEN GEWONNEN! SIE SIND DER MEISTER IN DIESEM SPIEL!"); + else if (playerPoints < computerPoints) + Console.WriteLine("Sie haben verloren. Sie sind leider sehr schlecht in dem Spiel. Bitte hören Sie auf, es zu spielen..."); + else + Console.WriteLine("!!!Unentschieden!!!"); + + } + + //Diese Methode frägt den Nutzer nach seiner Eingabe und gibt diese zurück + static GameObjects UserInput() + { + Console.WriteLine("Hier sind Ihre Auswahlelemente:"); + //Geben Sie hier die Elemente in GameObjects aus, mit jeweils einer Zahl zur Auswahl da davor. + + //Code START + + //Code ENDE + + Console.WriteLine("Bitte geben Sie die Nummer zu der Eingabe ein:"); + //Nehmen Sie hier eine Eingabe vom Nutzer entgegen. Überprüfen Sie, ob dieser eine valide Zahl eingegeben hat. Wandeln Sie die Zahl dann in ein GameObjects-Objekt um und geben Sie es zurück. + + //Code START + + return GameObjects.Papier; + //Code ENDE + } + + //Diese Methode gibt einen zufällig erstellten Wert zurück + static Random rand = new Random(); + static GameObjects ComputerInput() + { + //Erstellen Sie hier eine valide Zufallszahl und wandeln Sie diese in ein GameObjects um. Geben Sie dann diesen Wert zurück. + + //Code START + + return GameObjects.Papier; + //Code ENDE + } + + //Diese Methode gibt true zurück, wenn der Erste gewonnen hat und false, wenn der Zweite (B) + static bool? FindWinner(GameObjects A, GameObjects B) + { + //Code START + return false; + //Code ENDE + } + //Diese Methode überprüft, ob das Spiel zu Ende ist. + static bool TestGameEnding(int A, int B) + { + //Überlegen Sie sich selbst, wann das Spiel enden soll. + //Code START + return true; + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_14.cs b/Exercises/E24_Enums/Exercise_14.cs new file mode 100644 index 0000000..efddb0e --- /dev/null +++ b/Exercises/E24_Enums/Exercise_14.cs @@ -0,0 +1,15 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_14 + { + // + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_2.cs b/Exercises/E24_Enums/Exercise_2.cs new file mode 100644 index 0000000..bce188f --- /dev/null +++ b/Exercises/E24_Enums/Exercise_2.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_2 + { + //Gehen Sie zur Stelle 3x5 und danach zur Stelle -2x1. Nutzen Sie dafür nur die Aufrufe der Going-Methode in der Start-Methode. + enum Direction {North, South, West, East} + + public static void Start() + { + //Code Start + + //Code Ende + } + static int x = 0; + static int y = 0; + static void Going(Direction a) + { + if(a == Direction.North) + x++; + else if(a == Direction.South) + x--; + else if(a == Direction.West) + y--; + else if(a == Direction.East) + y++; + + Console.WriteLine("Ihre aktuelle Position ist {0}x{1}", x, y); + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_3.cs b/Exercises/E24_Enums/Exercise_3.cs new file mode 100644 index 0000000..4bd5208 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_3.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_3 + { + //Malen Sie unten in der Methode ShowForm die übergebene Form mit Hilfe von Sternchen (*) auf die Konsole. + + enum SpecialForms {Dreieck, Quadrat, Rechteck, Kreis} + + public static void Start() + { + ShowForm(SpecialForms.Dreieck); + ShowForm(SpecialForms.Kreis); + ShowForm(SpecialForms.Quadrat); + ShowForm(SpecialForms.Rechteck); + } + static void ShowForm(SpecialForms a) + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_4.cs b/Exercises/E24_Enums/Exercise_4.cs new file mode 100644 index 0000000..57575a2 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_4.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_4 + { + //Sorgen Sie dafür, dass "Hihi", "Hi" und "Haidiho" in dieser Reihenfolge unten ausgegeben wird. + enum Greetings {Hello, Hi, Hey, Heyho, Hihi, Haha, Haidiho} + + public static void Start() + { + int i1 = -1; + int i2 = -1; + int i3 = -1; + + //Code Start + i1 = -1; + i2 = -1; + i3 = -1; + //Code Ende + + Greetings g1 = (Greetings)i1; + Greetings g2 = (Greetings)i2; + Greetings g3 = (Greetings)i3; + + + Console.WriteLine(g1.ToString()); + Console.WriteLine(g2.ToString()); + Console.WriteLine(g3.ToString()); + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_5.cs b/Exercises/E24_Enums/Exercise_5.cs new file mode 100644 index 0000000..39c6e17 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_5.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_5 + { + //Sorgen Sie dafür, dass die Zahl 325 ausgegeben wird. + + //Code START + enum Something{ Dies, ist, ein, Enum, mit, einem, Wert } + //Code ENDE + + public static void Start() + { + int val = (int)Something.einem + (int)Something.Wert + (int)Something.ist + (int)Something.ein; + Console.WriteLine(val); + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_6.cs b/Exercises/E24_Enums/Exercise_6.cs new file mode 100644 index 0000000..7ee3114 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_6.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_6 + { + //Auf der Konsole soll "Cloe", "Flo" und "Adam" ausgegeben werden. + enum GivenName { Adam = 25, Berta = 83, Cloe = 29, Dagmar = 16, Erik = 72, Flo = 57, Gerda = 73} + + public static void Start() + { + int res = (int)GivenName.Gerda; + + //Code START + res += -1; + //Code ENDE + + for(int i = 0; i < 4; i++) + res += i; + res -= 3; + for(int i = 2; i > 0; i--) + res -= i; + + Console.WriteLine(((GivenName)res).ToString()); + //Code START + res += -1; + //Code ENDE + Console.WriteLine(((GivenName)res).ToString()); + //Code START + res += -1; + //Code ENDE + Console.WriteLine(((GivenName)res).ToString()); + + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_7.cs b/Exercises/E24_Enums/Exercise_7.cs new file mode 100644 index 0000000..68d1b22 --- /dev/null +++ b/Exercises/E24_Enums/Exercise_7.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_7 + { + //Schreiben Sie die untere Methode und deren Aufruf um, sodass ein Enum als Übergabewert verwendet wird. Erstellen Sie dafür ein neues Enum 'Animals'. + + public static void Start() + { + PrintAnimal("Ente"); + PrintAnimal("Ente"); + PrintAnimal("Hund"); + PrintAnimal("Pferd"); + } + static void PrintAnimal(string a) + { + if(a == "Ente") + Console.WriteLine("Quark"); + else if(a == "Kuh") + Console.WriteLine("Muh"); + else if(a == "Hund") + Console.WriteLine("Wuff"); + else if(a == "Katze") + Console.WriteLine("Miau"); + else if(a == "Pferd") + Console.WriteLine("Wieha"); + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_8.cs b/Exercises/E24_Enums/Exercise_8.cs new file mode 100644 index 0000000..4840f0b --- /dev/null +++ b/Exercises/E24_Enums/Exercise_8.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_8 + { + //Sorgen Sie dafür, dass die Methode GiveAValue immer ein zufälliges Element des Typs Things zurück gibt. Es soll dann zum Schluss 20 mal ein zufälliges Things-Element ausgegeben werden. + enum Things { Haus, Garten, Dach, Fenster, Schaukel, Terasse, Balkon, Türe } + + public static void Start() + { + for(int i = 0; i < 20; i++) + { + Console.WriteLine(GiveAValue().ToString()); + } + } + static Things GiveAValue() + { + Random rand = new Random(); + + //Code Start + return Things.Balkon; + //Code Ende + } + } +} \ No newline at end of file diff --git a/Exercises/E24_Enums/Exercise_9.cs b/Exercises/E24_Enums/Exercise_9.cs new file mode 100644 index 0000000..873d38c --- /dev/null +++ b/Exercises/E24_Enums/Exercise_9.cs @@ -0,0 +1,30 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E24_Enumns +{ + class Exercise_9 + { + //Sie sollen eine Methode ergänzen, die die Eingabe eines Nutzers analysiert und überprüft, ob sich das Element im Enum "Music" befindet. Sollte dem so sein, gibt sie true zurück, ansonsten false. Sorgen Sie dafür, dass Groß- und Kleinschreibung keine Rolle spielen. + enum Music { Rock, Blues, Rap, Hiphop, Volksmusik } + + public static void Start() + { + while(true) + { + Console.WriteLine("Bitte geben Sie eine Musikrichtung ein:"); + if(TestValue(Console.ReadLine() ?? "")) + Console.WriteLine("Ja, wir kennen diese Richtung."); + else + Console.WriteLine("Nein, leider kennen wir diese Richtung nicht."); + } + + } + static bool TestValue(string userinput) + { + //Code Start + return false; + //Code Ende + } + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_1.cs b/Exercises/E25_Tuple/Exercise_1.cs new file mode 100644 index 0000000..3f299f2 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_1.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_1 + { + //Übergeben Sie an Stelle zweier Übergabeparameter ein Tuple mit diesen Werten: + + public static void Start() + { + //Code START + Meth("Hans", 35); + //Code ENDE + } + + static void Meth(/*CODE START*/string name, int age/*CODE ENDE*/) + { + Console.WriteLine("{0} ist {1} Jahre alt.", name, age); + } + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_2.cs b/Exercises/E25_Tuple/Exercise_2.cs new file mode 100644 index 0000000..cbca329 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_2.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_2 + { + //Ändern Sie die Werte in dem Tuple 'tup', sodass die Werte "Breite2 und 12.9 darin stehen. + + public static void Start() + { + Tuple tup = new Tuple("Länge", 12.54); + + //Code START + + //Code ENDE + + + //Konstrolle: + Console.WriteLine("Die {0} beträgt {1} Meter.", tup.Item1, tup.Item2); + } + + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_3.cs b/Exercises/E25_Tuple/Exercise_3.cs new file mode 100644 index 0000000..f6b8418 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_3.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_3 + { + //Erstellen Sie ein Tuple, welches dafür sorgt, dass unten die Daten für den Mt. Everest richtig ausgibt. + + public static void Start() + { + //Code START + dynamic tup = -1; + //Code ENDE + + + //Konstrolle: + Console.WriteLine("Der Berg {0} ist {1} Meter hoch und liegt in {2}.", tup.Item1, tup.Item2, tup.Item3); + } + + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_4.cs b/Exercises/E25_Tuple/Exercise_4.cs new file mode 100644 index 0000000..9cb9224 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_4.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_4 + { + //Die untere Methode soll eine Eingabe vom Nutzer entgegen nehmen und dann die Werte (Nutzereingabe, Anzahl des Buchstabens, der Buchstabe selbst) als ein Tuple zurückgeben. + + public static void Start() + { + var element = Meth(); + Console.WriteLine("Das Wort {0} hat {1} den Buchstaben {2} enthalten.", element.Item1, element.Item2, element.Item3); + } + + static /*Code START*/dynamic/*Code ENDE*/ Meth() + { + string s = Console.ReadLine() ?? string.Empty; + int res = 0; + foreach(var element in s) + if(element == 'a' || element == 'A') + res++; + + //Code START + return s + res; + //Code ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_5.cs b/Exercises/E25_Tuple/Exercise_5.cs new file mode 100644 index 0000000..3dfdf94 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_5.cs @@ -0,0 +1,44 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_5 + { + //Erstellen Sie eine Liste von Tupeln. Sorgen Sie dafür, dass die Liste mit der unteren Methode gefüllt wird. Geben Sie zum Schluss die Elemente aus. + + //Code START + static dynamic tupleList = -1; + //Code ENDE + public static void Start() + { + while(true) + { + tupleList.Add(GetStringAndIntFromUser()); + Console.WriteLine("Weiter? Dann Enter..."); + var key = Console.ReadKey(); + if(key.Key != ConsoleKey.Enter) + break; + } + + Console.Clear(); + + foreach(var element in tupleList) + { + //Code START + + //Code ENDE + } + } + + //Diese Methode soll den Nutzer nach einen String und einen int fragen und diese kombination dann in einem Tuple zurück geben. Sorgen Sie dafür, dass der Nutzer valide Werte eingibt. + static /*Code START*/ dynamic /*Code ENDE*/ GetStringAndIntFromUser() + { + //Code START + return -1; + //Code ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_6.cs b/Exercises/E25_Tuple/Exercise_6.cs new file mode 100644 index 0000000..ecca0d0 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_6.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_6 + { + //Sorgen Sie dafür, dass 7 und 345 ausgegeben wird: + + //Code START + static dynamic tupList = -1; + //Code ENDE + public static void Start() + { + int counter = 0; + int sum = 0; + foreach(var element in tupList) + { + sum += element.Item1; + sum += element.Item2; + sum += element.Item3; + counter++; + } + Console.WriteLine("Die beiden Werte sind {0} und {1}!", counter, sum); + } + + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_7.cs b/Exercises/E25_Tuple/Exercise_7.cs new file mode 100644 index 0000000..d827f84 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_7.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_7 + { + //Sorgen Sie dafür, dass "Elementarelement" ausgegeben wird. + + public static void Start() + { + //Code START + dynamic element = -1; + //Code ENDE + Meth(element); + + } + + static void Meth(dynamic tup) + { + int temp = tup.Item2; + while(tup.Item1.Length <= temp || temp < 0) + { + if(temp < 0) + { + temp *= -1; + continue; + } + temp /= 2; + } + for(int i = temp; i >= 0; i--) + Console.Write(tup.Item1[i]); + for(int i = tup.Item1.Length - 1; i > temp; i--) + Console.Write(tup.Item1[i]); + } + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_8.cs b/Exercises/E25_Tuple/Exercise_8.cs new file mode 100644 index 0000000..8526677 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_8.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_8 + { + //Die Methode soll den Nutzer nach Strings fragen. Wenn der nutzer nichts eingibt, dann soll die Methode Start() die Methode Meth() mit den eingegebenen Werten aufrufen. + public static void Start() + { + //Code START + dynamic element = -1; + //Code ENDE + foreach(var item in Meth(element)) + { + //Geben Sie hier die einzelnen Werte in dieser Form aus: + //Haus -> 2 Selbstlaute + //Bauer -> 3 Selbstlaute + //Er -> 1 Selbstlaut + //Achten Sie auf die deutsche Grammatik! + + //Code START + + //Code ENDE + } + + } + //Sorgen Sie dafür, dass die Methode eine Liste der Strings mit deren Anzahl an Selbstlauten zurück gibt: + static List> Meth(List stringList) + { + //Code START + dynamic returnList = -1; + //Code ENDE + + return returnList; + } + } +} \ No newline at end of file diff --git a/Exercises/E25_Tuple/Exercise_9.cs b/Exercises/E25_Tuple/Exercise_9.cs new file mode 100644 index 0000000..3c4aae4 --- /dev/null +++ b/Exercises/E25_Tuple/Exercise_9.cs @@ -0,0 +1,57 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E25_Tuple +{ + class Exercise_9 + { + //Sie sollen ein Kochbuch in einer Liste implementieren. In diesem Kochbuch steht zuerst das Produkt, dann folgt eine Liste mit Zutaten und deren Mengen. Sie sollen auch noch zusätzlich zwei weitere Methoden schreiben, dem Nutzer ein Element löschen und dem Nutzer ein Element hinzufügen lassen. + static List>>> Kochbuch = new List>>>(); + public static void Start() + { + //Starten Sie hier und füllen Sie die Liste 'Kochbuch' mit mindesten drei Rezepten + //Code START + + //Code ENDE + + Console.WriteLine("------ Gefülltes Kochbuch -----"); + ShowKochbuch(); + AddNewToKochbuch(); + Console.WriteLine("------ Zusätzliches Rezept -----"); + ShowKochbuch(); + DeleteElementFromKochbuch(); + Console.WriteLine("------ Rezept gelöscht -----"); + ShowKochbuch(); + } + //Hier werden alle Rezepte ausgegeben + static void ShowKochbuch() + { + foreach(var recipes in Kochbuch) + { + Console.WriteLine("*****************"); + Console.WriteLine("*** {0}", recipes.Item1); + Console.WriteLine("*****************"); + foreach(var element in recipes.Item2) + { + Console.WriteLine("- {0}: {1}", element.Item1, element.Item2); + } + Console.WriteLine(); + } + } + //In dieser Methode kann der Anwender ein Element aus dem Kochbuch löschen lassen + static void DeleteElementFromKochbuch() + { + //Code START + + //Code ENDE + } + //In dieser Methode soll der Anwender ein Rezept hinzufügen können + static void AddNewToKochbuch() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_1.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_1.cs new file mode 100644 index 0000000..8bd2a18 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_1.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_1 + { + static int[] array1 = new int[]{12,45,21,34,12,45}; + static int[] array2 = new int[]{152,475,211,734,812,455}; + static int[] array3 = new int[]{1722,4565,2123,3452,12121,3315}; + public static void Start() + { + //Führen Sie diese drei oben gezeigten Arrays zu einem Array zusammen + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_2.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_2.cs new file mode 100644 index 0000000..f77eac4 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_2.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_2 + { + public static void Start() + { + //Sorgen Sie dafür, dass auf der Konsole die Zahl 2565 ausgegeben wird. + + //Code START + dynamic array = -1; + //Code ENDE + + MakeSomething(array); + } + + static void MakeSomething(int[,] intArray) + { + int i = intArray[1,4] + intArray[0,3] + intArray[5, 1]; + Console.WriteLine(i); + } + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_3.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_3.cs new file mode 100644 index 0000000..fd9f331 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_3.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_3 + { + static int[,] intArray = new int[,]{ + { 1, 2, 3 }, + { 3, 4, 5 }, + { 5, 6, 6 }, + { 7, 8, 9 } + }; + public static void Start() + { + //Geben Sie das 2-dimensionale Feld auf der Konsole aus. Geben Sie zu jeder Zeile und zu jeder Spalte die jewilige Summe mit aus. + + //Code START + + //Code ENDE + + } + + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_4.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_4.cs new file mode 100644 index 0000000..1d3f80a --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_4.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_4 + { + + public static void Start() + { + int[,] intArray = new int[,]{{ 1, 2, 3 },{ 3, 4, 5 },{ 5, 6, 6 },{ 7, 8, 9 }}; + int[,] intArray2 = new int[,]{{ 45,12,18,89,685 },{ 1,258,333,95,667},{ 685,19,5,1,0 },{ 4888,555,222,336,96 }}; + + ShowArray(ReverseArray(intArray)); + ShowArray(ReverseArray(intArray2)); + + } + + //Schreiben Sie eine Methode, die die Zeilen und die Spalten eines 2-dimensionalen Arrays vertauscht. + static int[,] ReverseArray(int[,] arr) + { + //Code START + return new int[0,0]; + //Code ENDE + } + + //Schreiben Sie eine Methode, die ein 2-dimensionales Array ausgibt. + static void ShowArray(int[,] arr) + { + //Code START + + //Code ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_5.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_5.cs new file mode 100644 index 0000000..2990d99 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_5.cs @@ -0,0 +1,40 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_5 + { + + public static void Start() + { + int[,] intArray1 = new int[,]{{ 45,12,18,89,685 },{ 1,258,333,95,667},{ 685,19,5,1,0 },{ 4888,555,222,336,96 }}; + int[,] intArray2 = new int[,]{{ 45,12,18,89,685 },{ 1,258,333,95,667},{ 685,19,5,1,0 },{ 4888,555,222,336,96 }}; + + //Überprüfung: + foreach(var element in RemoveEven(intArray1)) + Console.Write(element + " - "); + Console.WriteLine("\n"); + foreach(var element in RemoveOdd(intArray2)) + Console.Write(element + " - "); + + + } + //Schreiben Sie eine Methode, die alle geraden Zahlen aus einem 2-dimensionalen Array durch -1 ersetzt: + static int[,] RemoveEven(int[,] arr) + { + //Code START + return new int[0,0]; + //Code ENDE + } + + //Schreiben Sie eine Methode, die alle ungeraden Zahlen aus einem 2-dimensionalen Array durch -1 ersetzt: + static int[,] RemoveOdd(int[,] arr) + { + //Code START + return new int[0,0]; + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_6.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_6.cs new file mode 100644 index 0000000..549d9f3 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_6.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_6 + { + static string[,] stringArray = new string[3,3]; + + public static void Start() + { + //Lassen Sie den Nutzer das zweidimensionale Array 'stringArray' mit (9, jeweils eine pro Feld) Eingaben befüllen + + //Code START + + //Code ENDE + + //Überprüfung: + foreach(var element in stringArray) + Console.Write(element + " - "); + } + + } +} \ No newline at end of file diff --git a/Exercises/E26_Mehrdimensionale_Arrays/Exercise_7.cs b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_7.cs new file mode 100644 index 0000000..e5465e5 --- /dev/null +++ b/Exercises/E26_Mehrdimensionale_Arrays/Exercise_7.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E26_Mehrdimensionale_Arrays +{ + class Exercise_7 + { + //Ein Wissenschaftler hat einen Versuchsaufbau, bei deren Durchführung dieser verschiedene Werte bekommt. Er hat diesen Versuch dreimal gemacht und die Werte in das Array reingeschreiben lassen. + static double[,] scienceArray1 = new double[,] + { + {2.343, 65.235539, 534.239384, 4934.23534}, + {6.342, 64.231343, 345.645342, 3453.23345}, + {5.234, 56.203923, 432.859384, 3429.348504} + }; + static double[,] scienceArray2 = new double[,] + { + {2.343, 65.235539, 534.239384}, + {6.342, 64.231343, 345.645342}, + {5.234, 56.203923, 432.859384} + };static double[,] scienceArray3 = new double[,] + { + {2.343, 65.235539, 534.239384, 4934.23534, 74.2383}, + {6.342, 64.231343, 345.645342, 3453.23345, 764.239334}, + {5.234, 56.203923, 432.859384, 3429.348504, 532.28394483}, + {6.864, 86.12923, 122.2319384, 1229.34234, 322.28243} + }; + + public static void Start() + { + ShowValues(WorkArray(scienceArray1)); + ShowValues(WorkArray(scienceArray2)); + ShowValues(WorkArray(scienceArray3)); + + } + static void ShowValues(Tuple res) + { + Console.WriteLine("----------------------"); + for(int i = 0; i < res.Item1.Length; i++) + { + Console.WriteLine(i+1 + ". Reihe: " + res.Item1[i]); + } + Console.WriteLine("Durschnitte der Reihen: " + res.Item2); + Console.WriteLine("Durschnitte aller Werte: " + res.Item3); + Console.WriteLine("----------------------"); + } + + //Ihre Aufgabe ist nun, eine Methode zu schreiben, die beliebig große zweidimensionale Arrays verarbeitet. Die Methode soll folgende Werte zurück geben: + // - Es soll von allen Reihen der Druchschnitt (arithmetisches Mittel) berechnet werden. + // - Es soll von den oberen (Durchschnitts-)Werten der Druchschnitt (arithmetisches Mittel) berechnet werden. + // - Es soll der Druchschnitt (arithmetisches Mittel) von allen Zahlen in dem Array berechnet werden. + //Gebene Sie daher ein Array mit den Zeilendurchschnitten und die jeweiligen Zahlen zurück. + static Tuple WorkArray(double[,] dArray) + { + //Code START + dynamic d = -1; + return d; + //Code ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E27_Jagged_Arrays/Exercise_1.cs b/Exercises/E27_Jagged_Arrays/Exercise_1.cs new file mode 100644 index 0000000..3d0b5f6 --- /dev/null +++ b/Exercises/E27_Jagged_Arrays/Exercise_1.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E27_Jagged_Arrays +{ + class Exercise_1 + { + static int[] array1 = new int[]{12,45,21,34,12,45,23}; + static int[] array2 = new int[]{152,475,211,734,812,455,3872,37283}; + static int[] array3 = new int[]{1722,4565,2123,3452,12121}; + public static void Start() + { + //Führen Sie diese drei oben gezeigten Arrays zu einem zweidimensionalen Jagged Array zusammen + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E27_Jagged_Arrays/Exercise_2.cs b/Exercises/E27_Jagged_Arrays/Exercise_2.cs new file mode 100644 index 0000000..bf2c550 --- /dev/null +++ b/Exercises/E27_Jagged_Arrays/Exercise_2.cs @@ -0,0 +1,24 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E27_Jagged_Arrays +{ + class Exercise_2 + { + static string[][] JaggedArray = new string[][]{ + new string[]{"Dies", "ist", "der", "erste", "Satz", "."}, + new string[]{"Dies", "ist", "ein", "weiterer", "extrem", "guter", "Satz", "."}, + new string[]{"Der", "dritte", "Satz", "hat", "wesentlich", "mehr", "Sinn", "und", "einen", "besseren", "Inhalt", "."}, + new string[]{"Dieser", "Satz", "ist", "kurz", "."} + }; + public static void Start() + { + //Geben Sie die Sätze oben aus. Jeder Satz soll in einer Zeile stehen. Achten Sie darauf, dass die Leerzeichen richtig gesetzt sind und dass zwischen den Sätzen jeweils eine Zeile frei ist. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E27_Jagged_Arrays/Exercise_3.cs b/Exercises/E27_Jagged_Arrays/Exercise_3.cs new file mode 100644 index 0000000..e2950c6 --- /dev/null +++ b/Exercises/E27_Jagged_Arrays/Exercise_3.cs @@ -0,0 +1,19 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E27_Jagged_Arrays +{ + class Exercise_3 + { + static string[][] JaggedArray = new string[3][]; + public static void Start() + { + //Der Anwender soll drei Sätze eingeben. Unterteilen Sie die Sätze in einzelene Wörter und Satzzeichen, wie Sie sie auch aus Aufgabe 2 kennen und speichern Sie diese in das oben stehende Array ab. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E27_Jagged_Arrays/Exercise_4.cs b/Exercises/E27_Jagged_Arrays/Exercise_4.cs new file mode 100644 index 0000000..32727c8 --- /dev/null +++ b/Exercises/E27_Jagged_Arrays/Exercise_4.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E27_Jagged_Arrays +{ + class Exercise_4 + { + static int[][] JaggedArray = new int[][] + { + new int[] {1234, 2712, 993843, 273273, 382783}, + new int[] {93847, 3827362, 3049384, 384738, 2938273}, + new int[] {3948374, 39485, 3029384, 30493847, 30293849, 2738203}, + new int[] {949302, 495874, 483747, 392910, 3049381, 3723901, 39409381, 3784803, 2838499}, + new int[] {3892, 29302, 392830, 9583,573483, 38492, 1923, 39403} + }; + public static void Start() + { + //Sorgen Sie dafür, dass im Jagged Array oben alle ungeraden Zahlen herausgelöscht werden. Geben Sie dann das Array zur kontrolle aus. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_1.cs b/Exercises/E28_Classes/Exercise_1.cs new file mode 100644 index 0000000..51118a7 --- /dev/null +++ b/Exercises/E28_Classes/Exercise_1.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_1 + { + public static void Start() + { + //Erstellen Sie die Klasse Funny, sodass "Hallo, das ist super!" auf der Konsole ausgegeben wird. + //Code START + dynamic funnyClass = -1; + //Code ENDE + + Console.WriteLine(funnyClass.Value1 + funnyClass.Value2 + funnyClass.Value3 + funnyClass.Value4); + } + class Funny + { + public string Value1 = "Hallo"; + public string Value2 = ", das"; + public string Value3 = " ist"; + public string Value4 = " super!"; + + } + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_2.cs b/Exercises/E28_Classes/Exercise_2.cs new file mode 100644 index 0000000..b12a745 --- /dev/null +++ b/Exercises/E28_Classes/Exercise_2.cs @@ -0,0 +1,63 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_2 + { + public static void Start() + { + List listList = new(); + //Erstellen Sie fünf neue Instanzen der Klasse Lists und fügen Sie diese der oberen Liste hinzu. + //Code START + + //Code ENDE + + foreach(var element in listList) + fillListsWithRandomValues(element); + + //Lassen Sie nun den Anwender Eingaben machen. Diese sollen Strings, Chars, Ints oder Decimal sein. Überprüfen Sie, um welchen Typ es sich handelt und überprüfen Sie, ob sich dieser Wert in einer Liste in einen der Klassen befindet oder nicht. + //Sollte sich das Element in einer Liste befinden, dann geben Sie den Wert davor und den Wert danach aus. Sollte es keinen Wert davor bzw. danach geben, nehmen Sie den letzten oder den ersten Wert. + while(true) + { + //Code START + + //Code ENDE + } + } + static void fillListsWithRandomValues(Lists lis) + { + Random rand = new(); + //Fill Integer + for(int i = 0; i < rand.Next(5, 21); i++) + lis.IntegerList.Add(rand.Next()); + //Fill Strings + for(int i = 0; i < rand.Next(5,21); i++) + { + string temp = ""; + for(int j = 0; j < rand.Next(5,21); j++) + temp += (char)rand.Next(65,123); + lis.StringList.Add(temp); + } + //Fill Chars + for(int i = 0; i < rand.Next(5,21); i++) + { + lis.CharList.Add((char)rand.Next(65,123)); + } + //Fill Decimal + for(int i = 0; i < rand.Next(5,21); i++) + { + lis.DecimalList.Add(((decimal)rand.Next()) / (decimal)Math.Pow(10, rand.Next(1,9))); + } + + } + } + class Lists + { + public List IntegerList = new(); + public List StringList = new(); + public List CharList = new(); + public List DecimalList = new(); + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_3.cs b/Exercises/E28_Classes/Exercise_3.cs new file mode 100644 index 0000000..edaeafa --- /dev/null +++ b/Exercises/E28_Classes/Exercise_3.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_3 + { + public static void Start() + { + //Erstellen Sie eine Liste von Ausweisen (IDs) + //Code START + + //Code ENDE + + //Der Nutzer soll nun beliebig viele Ausweise erstellen können. Achten Sie darauf, dass der Nutzer mindestens 5 Ausweise erstellen muss. Verwenden Sie die Methode UserCreateID(). Speichern Sie die Ausweise in die oben erstellte Liste, nach dem Geburtsdatum sortiert. + //Code START + + //Code ENDE + + //Geben Sie zum Schluss alle Ausweise aus. Nutzen Sie dafür die Methode ShowIDs(). + //Code Start + //ShowIDs(); + //Code ENDE + } + + //Geben Sie in diser Methode alle Ausweise optisch ansprechend auf der Konsole aus. + static void ShowIDs(List idList) + { + //Code START + + //Code ENDE + } + + //Sorgen Sie dafür, dass der Anwender hier einen validen Ausweis erstellen kann. Setzen Sie die IDNumber selber. Achten Sie darauf, dass eine IDNumber mindesten 5 Zahlen beinhaltet und eindeutig sein muss. + //Code START + + //Code ENDE + static ID UserCreateID() + { + //Code START + return new ID(); + //Code ENDE + } + + + //Code START + + //Code ENDE + } + + class ID + { + public int IDNumber = -1; + public string? Prename = null; + public string? Givenname = null; + public DateTime Birth = DateTime.MinValue; + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_4.cs b/Exercises/E28_Classes/Exercise_4.cs new file mode 100644 index 0000000..e427021 --- /dev/null +++ b/Exercises/E28_Classes/Exercise_4.cs @@ -0,0 +1,49 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_4 + { + //Erstellen Sie eine statische Liste, wo man Elemente vom Typ Equipment reinspeichern kann + //Code Start + static dynamic EList = 1; + //Code ENDE + public static void Start() + { + string userinput; + do + { + EList.Add(MakeEquipment()); + Console.WriteLine("Wollen Sie die weitere Eingabe abbrechen? (y -> JA, ABBRECHEN)"); + userinput = Console.ReadLine() ?? ""; + } + while(userinput.Trim().ToUpper() != "Y"); + PrintEquipment(); + } + + //Lassen Sie hier einen Nutzer Ausrüstung erstellen (Eingabe einer ID, eines Namens und einer Anzahl) und gegen Sie diese zurück. + static Equipment? MakeEquipment() + { + //Code Start + return null; + //Code ENDE + } + + //Geben Sie hier die Liste mit Equipment optisch ansprechend aus. + static void PrintEquipment() + { + //Code Start + + //Code ENDE + } + } + + class Equipment + { + public int ID = -1; + public string? Name = null; + public int Amount = -1; + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_5.cs b/Exercises/E28_Classes/Exercise_5.cs new file mode 100644 index 0000000..520fc9b --- /dev/null +++ b/Exercises/E28_Classes/Exercise_5.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_5 + { + public static void Start() + { + //Erstellen Sie hier eine Instanz ihrer Klasse + //Code START + dynamic obj = 1; + //Code ENDE + + obj.StringList = new List{"Hallo", "Hi", "Hey", "Hohoho", "Ciao", "Byebye"}; + obj.Position = 1; + + Console.WriteLine(GetCharsFromPosition(obj)); + } + static string GetCharsFromPosition(dynamic d) + { + string tempString = string.Empty; + foreach(var element in d.StringList) + { + tempString += element.Length > d.Position ? element[d.Position] : ""; + } + return tempString; + } + } + //Schreiben Sie eine Klasse, die oben zu der Aufgabe passt. Ändern Sie dann auch alle dynamics oben ab. + //Code START + + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_6.cs b/Exercises/E28_Classes/Exercise_6.cs new file mode 100644 index 0000000..e095d6e --- /dev/null +++ b/Exercises/E28_Classes/Exercise_6.cs @@ -0,0 +1,78 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_6 + { + public static void Start() + { + List AnimalList = new List(); + + //Füllen Sie die AnimalList mit 20 verschiedenen Tieren unterschiedlichen Typs. + //Code Start + + //Code Ende + + while(true) + { + //Geben Sie dem Anwender die Möglichkeit, nach den unten stehenden Enums zu filtern. Der Anwender soll auswählen, nach was er filtern möchte (z.B. Schuppen, Vogel, Insekt usw.). Rufen Sie dann die Methode FilterAnimnals() auf und übergeben Sie diesen Wert. + //Code Start + + //Code Ende + } + + } + + static void FilterAnimals (List animalList, T filterItem) + { + Console.Clear(); + if(filterItem == null || animalList == null) + return; + foreach(var element in animalList) + { + if(typeof(T) == typeof(SkinKind)) + { + if(element.Skin == (SkinKind)Convert.ChangeType(filterItem, typeof(SkinKind))) + PrintAnimalToConsole(element); + } + else if(typeof(T) == typeof(MealKind)) + { + if(element.Meal == (MealKind)Convert.ChangeType(filterItem, typeof(MealKind))) + PrintAnimalToConsole(element); + } + else if(typeof(T) == typeof(AnimalKind)) + { + if(element.Kind == (AnimalKind)Convert.ChangeType(filterItem, typeof(AnimalKind))) + PrintAnimalToConsole(element); + } + } + } + + static void PrintAnimalToConsole(Animal a) + { + //Geben Sie hier das übergebene Tier mit allen Werten aus. + //Code Start + + + //Code Ende + } + + + enum SkinKind {Fell, Schuppen, Federn, Haut} + enum MealKind {Pflanzenfresser, Fleischfresser, Allesfresser} + enum AnimalKind {Säugetier, Vogel, Insekt, Reptil} + + class Animal + { + public string? Name = null; + public SkinKind Skin = SkinKind.Federn; + public MealKind Meal = MealKind.Allesfresser; + public AnimalKind Kind = AnimalKind.Insekt; + + public int CurrentPopulation = -1; + + } + } +} \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_7.cs b/Exercises/E28_Classes/Exercise_7.cs new file mode 100644 index 0000000..d57d0c6 --- /dev/null +++ b/Exercises/E28_Classes/Exercise_7.cs @@ -0,0 +1,84 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E28_Classes +{ + class Exercise_7 + { + static List CustomerList = new(); + static List ProductList = new(); + static List InvoiceList = new(); + public static void Start() + { + while(true) + { + //Schreiben Sie ein Menü (auch gerne in einer neuen Methode), in dem der Nutzer Auswählen kann, ob er einen Kunden, ein Produkt oder eine Rechnung erstellen kann. Geben Sie ihm auch die Möglichkeit, zu einer Rechnung Produkte hinzuzufügen und zu löschen. + //Code Start + + //Code Ende + } + + } + + //Ergänzen Sie diese Methode, sodass ein Anwender hier einen neuen Kunden erstellen kann. Dieser soll dann in die CustomerList gespeichert werden. + static void CreateNewCustomerAndAddToList() + { + //Code Start + + //Code Ende + } + //Ergänzen Sie diese Methode, sodass ein Anwender hier einen neues Produkt erstellen kann. Dieser soll dann in die ProductList gespeichert werden. + static void CreateNewProductAndAddToList() + { + //Code Start + + //Code Ende + } + //Ergänzen Sie diese Methode, sodass ein Anwender hier eine neue Rechnung erstellen kann. Dieser soll dann in die InvoiceList gespeichert werden. + static void CreateNewInvoiceAndAddToList() + { + //Code Start + + //Code Ende + } + //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt zu einer Rechnung hinzufügen kann. + static void AddElementToInvoice(Invoice inv) + { + + } + //Ergänzen Sie diese Methode, sodass ein Anwender hier ein Produkt von einer Rechnung löschen kann. + static void DeleteElementToInvoice(Invoice inv) + { + + } + } + class Product + { + public string? Name = null; + public decimal Price = 0; + } + class Invoice + { + public Customer? Cust = null; + public List Items = new List(); + + //Schreiben Sie hier eine Methode, die die Anzahl aller einzelnen Elemente zurückgibt + + //Schreiben Sie hier eine Methode, die die Anzahl der verschiedenen Produkte zurückgibt + + //Schreiben Sie hier eine Methode, die den Gesamtpreis der Rechnung zurück gibt + } + class Item + { + public Product? Product = null; + public int Amount = 0; + } + class Customer + { + public int ID = -1; + public string? Name = null; + public string? Address = null; + } + +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_1.cs b/Exercises/E29_Konstruktoren/Exercise_1.cs new file mode 100644 index 0000000..62d5f67 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_1.cs @@ -0,0 +1,23 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_1 + { + public static void Start() + { + //Erstellen Sie ein Objekt der Klasse und sorgen Sie dafür, dass "Hello World!" auf der Konsole ausgegeben wird. + //Code Start + + + //Code ENDE + } + } + class Hallo + { + public Hallo(string s) + { + Console.WriteLine(s); + } + } +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_2.cs b/Exercises/E29_Konstruktoren/Exercise_2.cs new file mode 100644 index 0000000..a881ac8 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_2.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_2 + { + public static void Start() + { + //Im Kontruktor von der Klasse List ist es möglich, eine andere Liste zu übergeben, damit diese übernommen wird. Erstellen Sie eine neue Liste newList und übergeben Sie direkt im Konstruktor die stringList. + List stringList = new List() { "Hallo", "Hi", "Hey" }; + + //Code Start + dynamic newList = 1; + //Code ENDE + + foreach(var element in newList) + Console.WriteLine(element); + } + } +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_3.cs b/Exercises/E29_Konstruktoren/Exercise_3.cs new file mode 100644 index 0000000..1946af5 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_3.cs @@ -0,0 +1,25 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_3 + { + public static void Start() + { + //Erstellen Sie ein Objekt der Klasse SomeThingElse. Sorgen Sie dafür, dass auf der Konsole die Zahl 343 ausgegeben wird. + //Code Start + dynamic obj = 1; + //Code ENDE + Console.WriteLine(obj.Number * obj.Number * obj.Number); + } + + class SomeThingElse + { + public int Number; + public SomeThingElse(int i) + { + Number = i; + } + } + } +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_4.cs b/Exercises/E29_Konstruktoren/Exercise_4.cs new file mode 100644 index 0000000..52642f3 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_4.cs @@ -0,0 +1,21 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_4 + { + public static void Start() + { + //2. Erzeugen Sie eine Objekt der Klasse StringShortner. Geben Sie dann den erzeugten String auf der Konsole aus. + //Code Start + + + //Code ENDE + } + //1. Schreiben Sie eine Klasse "StringShortner", die im Konstruktor einen String und einen Integer verlangt. Sorgen Sie dann dafür, dass der auf die übergebene Anzahl von Integern gekürzt wird. Schreiben Sie den String dann in ein Feld, wovon außen zugegriffen werden kann. + //Code Start + + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_5.cs b/Exercises/E29_Konstruktoren/Exercise_5.cs new file mode 100644 index 0000000..4928b76 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_5.cs @@ -0,0 +1,42 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_5 + { + public static void Start() + { + //Erzeugen Sie drei Tiere und lassen Sie sie Lärm machen.... + //Code Start + + //Code ENDE + } + } + + class Animalclass + { + public readonly string Name; + public readonly Animals Kind; + public Animalclass(string name, Animals kind) + { + this.Name = name; + this.Kind = kind; + } + public void MakeNoise() + { + Console.Write("{0} is a {1} and make ", Name, Kind.ToString()); + if(Kind == Animals.Dog) + Console.WriteLine("\"Wuff\""); + else if(Kind == Animals.Cat) + Console.WriteLine("\"Miau\""); + else if(Kind == Animals.Cow) + Console.WriteLine("\"Muh\""); + else if(Kind == Animals.Sheep) + Console.WriteLine("\"Mäh\""); + else if(Kind == Animals.Horse) + Console.WriteLine("\"Wieha\""); + } + } + + enum Animals {Dog, Cat, Cow, Sheep, Horse} +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_6.cs b/Exercises/E29_Konstruktoren/Exercise_6.cs new file mode 100644 index 0000000..b0dcb11 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_6.cs @@ -0,0 +1,24 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_6 + { + public static void Start() + { + //Es gibt einige Klassen, von denen Sie schon wissen, dass es Konstruktoren gibt. Hier zwei weitere Beispiele: + + //Erzeugen Sie ein Tuple aus double und decimal: + //Code Start + dynamic tup = -1; + //Code ENDE + Console.WriteLine("Der double: {0} - der decimal: {1}", tup.Item1, tup.Item2); + + //Erstellen Sie ein neues Random-Element, um Zufallszahlen zu erzeugen. Übergeben Sie einen dabei einen Seed, um die Zufallszahlen noch besser zu machen: + //Code Start + dynamic Random = -1; + //Code ENDE + Console.WriteLine(Random.Next()); + } + } +} \ No newline at end of file diff --git a/Exercises/E29_Konstruktoren/Exercise_7.cs b/Exercises/E29_Konstruktoren/Exercise_7.cs new file mode 100644 index 0000000..726e3c4 --- /dev/null +++ b/Exercises/E29_Konstruktoren/Exercise_7.cs @@ -0,0 +1,32 @@ +using System; + +namespace Exercises_C_Sharp.E29_Konstruktoren +{ + class Exercise_7 + { + public static void Start() + { + //3. Erstellen Sie drei Objekte der Klasse MoreMethod. Erstellen Sie diese mit jeweils drei verschiedenen Übergabewerten in dem Konstruktor: + //Code Start + + //Code ENDE + } + } + + class MoreMethod + { + public MoreMethod() + { + Console.WriteLine("MoreMethod wurde erstellt. Keine Werte wurden übergeben..."); + } + //1. Überladen Sie den Konstruktor, damit ein String übergeben werden kann. Geben Sie diesen dann aus: + //Code START + + //Code ENDE + + //2. Schreiben Sie eine zweite Überladung des Konstruktors, welche zwei Integer-Zahlen übergeben werden. Teilen Sie die erste Zahl durch die zweite Zahl und geben Sie das Ergebnis mit den Nachkommastellen aus: + //Code START + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E30_Klassendiagramm/Exercise_1.cs b/Exercises/E30_Klassendiagramm/Exercise_1.cs new file mode 100644 index 0000000..5a8828f --- /dev/null +++ b/Exercises/E30_Klassendiagramm/Exercise_1.cs @@ -0,0 +1,41 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E30_Klassendiagramm +{ + //Übertragen Sie jede Klasse in ein Objekt eines Klassendiagramms + class Messbecher + { + private int volume = 0; + public string Material {get{return "plastic";}} + public int Volume{get{return volume;}} + + public void Fill(int milliliter){ } + public void Empty(){ } + private bool isStill(){ return true; } + } + + class Hammer + { + public string Material = "Stahl"; + private int verschleiß = 46; + public void Schlagen(int stärke){ } + public void Pflegen(){ } + private int verschleißBerechnen(int schlagstärke){return verschleiß * schlagstärke;} + } + + class Kaugummi + { + public List Inhaltsstoffe = new List(); + private List giftigeStoffe = new List(); + public string Geschmack = "Erdbeere"; + public double GrammZucker = 12.453; + private double wirklicheGrammZucker = 72.82; + private DateTime wirklichesAblaufdatum = new DateTime(1999, 02, 08); + + private decimal freigabeGiftstoffe(){return (decimal)(wirklicheGrammZucker * 3);} + public bool Kauen(int kaustärke){ return true; } + public DateTime Ablaufdatum(){ return DateTime.Now.AddYears(3);} + } +} \ No newline at end of file diff --git a/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_2.txt b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_2.txt new file mode 100644 index 0000000..4fe2eb1 --- /dev/null +++ b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_2.txt @@ -0,0 +1,16 @@ +Um welche Beziehung handelt es sich? + +Auto – Reifen +Pfarrer – Kirche +Körper – Zelle +Hund – Tier +Rechnung - Rechnungsposten +Baum – Blatt +Tulpe – Blume +Vater – Kind +Bauer - Feld +Samen - Pflanze +Fell - Tier +Plastik - Tastatur +Brille - Glas +Elektrogerät - Fernseher \ No newline at end of file diff --git a/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_3.txt b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_3.txt new file mode 100644 index 0000000..25b2b3f --- /dev/null +++ b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_3.txt @@ -0,0 +1,4 @@ +1.) Es gibt ein neues Projekt namens ‚Klassenzimmer Digital‘. In diesem Projekt soll ein komplett digitales Klassenzimmer erstellt werden, in dem Schüler in einer digitalen Welt 1:1 so arbeiten können wie in Präsents. Sie haben die Aufgabe erhalten, ein Klassenzimmer als Klassendiagramm zu modellieren. Bedenken Sie alle Elemente, die in einem Klassenzimmer vorkommen können, für was man diese verwendet und welche Eigenschaften diese haben. +Wundern Sie sich nicht, wenn viele Relationen Ableitungen sind. + +2.) Programmieren Sie jetzt das Klassendiagramm aus Aufgabe 3 aus. Erstellen Sie alle Klassen mit den jeweiligen Attributen und Methoden. Verwenden Sie für die Beziehungen untereinander Listen und Felder. Für Ableitungen verwendet man die klassische Ableitung mit dem Doppelpunkt hinter dem Klassennamen. \ No newline at end of file diff --git a/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_4.txt b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_4.txt new file mode 100644 index 0000000..f221c59 --- /dev/null +++ b/Exercises/E30_Klassendiagramm/Exercise_2/Exercise_4.txt @@ -0,0 +1,4 @@ +//Anlehung an die IHK-Prüfung + +Wir sollen eine Besucherapp modellieren. Dabei gibt es drei verschiedene Typen von Besuchern: Standard (Kein Rabatt), Premium (10% Rabatt) und VIP (20% Rabatt, darf Premiumeingang nutzen). +Implementieren Sie mit Hilfe von Vererbung die drei Klassen. Dabei soll die Klasse Besucher eine Methode besitzen, die das jeweilige Objekt der jeweiligen Klasse zurück gibt. \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_1.cs b/Exercises/E32_Exceptions/Exercise_1.cs new file mode 100644 index 0000000..df47c89 --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_1.cs @@ -0,0 +1,20 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_1 + { + public static void Start() + { + //Rufen Sie die Methode ConvertIt auf, ohne dass das Programm abstürzt. + //Code START + + //Code ENDE + } + + static void ConvertIt() + { + Convert.ToInt32("HAHAHA :)"); + } + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_2.cs b/Exercises/E32_Exceptions/Exercise_2.cs new file mode 100644 index 0000000..b62047a --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_2.cs @@ -0,0 +1,22 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_2 + { + public static void Start() + { + //Sichern sie die Console.ReadLine()-Methode ab, sodass alle Exceptions abgefangen werden. Geben Sie dann die jeweilige Exception aus: + //Code START + + //Code ENDE + Console.ReadLine(); + //Code START + + //Code ENDE + } + + + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_3.cs b/Exercises/E32_Exceptions/Exercise_3.cs new file mode 100644 index 0000000..d20ddd4 --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_3.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; +using System.Net.Http; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_3 + { + public static void Start() + { + //Rufen Sie die Methode ThrowException so lange auf, bis alle Exceptions geflogen und auf der Konsole ausgegeben wurden: + //Code Start + + //Code ENDE + } + + static void ThrowException() + { + Random rand = new Random(); + switch(rand.Next(0,5)) + { + case 0: + throw new FileNotFoundException("Die Datei konnte nicht gefunden werden!"); + case 1: + throw new EntryPointNotFoundException("Leider konnte der Beginn nicht identifiziert werden."); + case 2: + throw new FieldAccessException("Es kann nicht auf die Resource zugegriffen werden."); + case 3: + throw new HttpRequestException("Der Request konnte nicht verarbeitet werden."); + case 4: + throw new Exception("Es ist ein unbekannter Fehler aufgetreten..."); + } + } + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_4.cs b/Exercises/E32_Exceptions/Exercise_4.cs new file mode 100644 index 0000000..ca2382e --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_4.cs @@ -0,0 +1,37 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_4 + { + public static void Start() + { + //Welche Exceptions könnten in der Methode possible fliegen? Fangen Sie alle möglichen Exceptions ab! + try + { + possible(); + } + //Code START + catch + { + + } + //Code ENDE + } + #pragma warning disable CS8602, CS8600 + static void possible() + { + Console.WriteLine("Bitte geben Sie eine Zahl ein:"); + int i = Convert.ToInt32(Console.ReadLine()); + double d = Math.PI / i; + Console.WriteLine("Ihr Ergebnis ist: {0}", d); + Console.WriteLine("Bitte geben Sie nun einen String ein:"); + string s = Console.ReadLine(); + Console.WriteLine("Der dritte Wert ist {0}", s[2]); + Console.WriteLine("Das Wort groß geschrieben lautet {0}", s.ToUpper()); + + } + #pragma warning restore CS8602, CS8600 + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_5.cs b/Exercises/E32_Exceptions/Exercise_5.cs new file mode 100644 index 0000000..e95fe2b --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_5.cs @@ -0,0 +1,37 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_5 + { + public static void Start() + { + //Unten sehen Sie nun wieder die Methode possible wie in der vorherigen Aufgabe. Sorgen Sie nun dafür, dass unten keine Exception mehr fliegen kann. Der Funktionsumfang soll aber der selbe bleiben. Entfernen Sie dann auch die Preprocessordirectives. + try + { + possible(); + } + catch(Exception ex) + { + Console.WriteLine("Aufgabe leider nicht geschafft :("); + Console.WriteLine("Fehler: {0}", ex.ToString()); + } + } + #pragma warning disable CS8602, CS8600 + static void possible() + { + //Code START + Console.WriteLine("Bitte geben Sie eine Zahl ein:"); + int i = Convert.ToInt32(Console.ReadLine()); + double d = Math.PI / i; + Console.WriteLine("Ihr Ergebnis ist: {0}", d); + Console.WriteLine("Bitte geben Sie nun einen String ein:"); + string s = Console.ReadLine(); + Console.WriteLine("Der dritte Wert ist {0}", s[2]); + Console.WriteLine("Das Wort groß geschrieben lautet {0}", s.ToUpper()); + //Code ENDE + } + #pragma warning restore CS8602, CS8600 + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_6.cs b/Exercises/E32_Exceptions/Exercise_6.cs new file mode 100644 index 0000000..4a70446 --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_6.cs @@ -0,0 +1,41 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_6 + { + public static void Start() + { + while(true) + { + try + { + Console.WriteLine("Das Ergebnis: " + Method(Console.ReadLine() ?? "", Console.ReadLine() ?? "")); + } + catch(ArgumentOutOfRangeException ex) + { + Console.WriteLine("Leider wurde ein falscher Wert eingegeben: " + ex.Message); + } + catch(FormatException ex) + { + Console.WriteLine("Leider hatte die Eingabe das falsche Format: " + ex.Message); + } + catch(DivideByZeroException ex) + { + Console.WriteLine("Die Eingabe führte zu einer Teilung durch 0: " + ex.Message); + } + Console.WriteLine("Bitte versuchen Sie es noch einmal..."); + } + } + static int Method(string input1, string input2) + { + //Sie bekommen von einer anderen Methode die Eingabe des Nutzers. Sie wollen zwei Zahlen durcheinander teilen. Dabei darf keine Zahl größer als 10.000 sein. Führen Sie die Berechnungen durch und schmeißen Sie jeweils eine Exception, wenn die Bedingungen nicht erfüllt sind. Erläutern Sie in den Exceptions auch das konkrete Problem. + + //Code START + + return -1; + //CODE ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_7.cs b/Exercises/E32_Exceptions/Exercise_7.cs new file mode 100644 index 0000000..2669dea --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_7.cs @@ -0,0 +1,49 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_7 + { + //Sie sollen diese Methode umschreiben, sodass keine Exceptions mehr benötigt werden. Die Funktionalität soll aber nicht abgeändert werden. + public static void Start() + { + //Code START + int i; + string s; + char c; + while(true) + { + try + { + Console.WriteLine("Bitte Zahl eingeben:"); + i = Convert.ToInt32(Console.ReadLine() ?? ""); + } + catch + { + Console.WriteLine("Falsche Zahl :("); + continue; + } + break; + } + while(true) + { + try + { + Console.WriteLine("Bitte String eingeben:"); + s = Console.ReadLine() ?? ""; + c = s[i]; + } + catch + { + Console.WriteLine("Leider ein Fehler. Bitte String nochmal eingeben..."); + continue; + } + break; + } + + Console.WriteLine("Der extrahierte Char ist " + c); + //Code ENDE + } + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_8.cs b/Exercises/E32_Exceptions/Exercise_8.cs new file mode 100644 index 0000000..3f9f3ca --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_8.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; +using System.Net.Http; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_8 + { + public static void Start() + { + //Rufen Sie die Methode Meth auf und fangen Sie alle Fehler mit einem catch-Block auf. Geben Sie dann die Exception und deren Nachricht auf der Konsole aus. + + //Code START + + //Code ENDE + } + + static void Meth() + { + Random rand = new Random(); + switch(rand.Next(0,6)) + { + case 0: + throw new FormatException("Schlechtes Format..."); + case 1: + throw new FileNotFoundException("Datei ist leider nicht vorhanden..."); + case 2: + throw new Exception("Keine Ahnung was hier passiert sein könnte..."); + case 3: + throw new HttpRequestException("Bei dem Protokoll ist leider ein Fehler aufgetreten. Es tut uns Leid :/", new Exception()); + case 4: + throw new IndexOutOfRangeException("Leider befand sich der Index außerhalb der Größe des Arrays."); + case 5: + throw new UriFormatException("Leider ist das Format des Pfades falsch..."); + } + } + + } +} \ No newline at end of file diff --git a/Exercises/E32_Exceptions/Exercise_9.cs b/Exercises/E32_Exceptions/Exercise_9.cs new file mode 100644 index 0000000..b9a33c5 --- /dev/null +++ b/Exercises/E32_Exceptions/Exercise_9.cs @@ -0,0 +1,28 @@ +using System; + +namespace Exercises_C_Sharp.E32_Exceptions +{ + class Exercise_9 + { + public static void Start() + { + //2. Erstellen Sie ein neue Instanz der Klasse Thing. Lassen Sie dabei den Anwender den Namen des Objekts angeben. Fangen Sie die möglichen Exceptions ab und wenn eine solche fliegt, lassen Sie den Anwender die Eingabe nochmal machen, bis das Objekt erstellt werden kann. + + //Code START + + //Code ENDE + } + } + class Thing + { + private string Name = string.Empty; + public Thing(string name) + { + //1. Diese Klasse representiert irgendeine Sache. Dieser Sache muss im Konstruktor ein Name übergeben werden. Für den Namen gilt: Er muss mindestens 5 Zeichen besitzen, keiner der Zeichen darf eine Zahl sein und natürlich darf der Übergabewert auch nicht null sein. Sollte ein falscher Wert übergeben werden, so schmeißen Sie eine jeweilige Exception mit einer Erläuterung, um was es sich genau handelt. Sollte alles passen, speichern Sie den Wert in die Variable 'Name'. + + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E34_Use_Case_Diagramm/Exercise_1.txt b/Exercises/E34_Use_Case_Diagramm/Exercise_1.txt new file mode 100644 index 0000000..93b507c --- /dev/null +++ b/Exercises/E34_Use_Case_Diagramm/Exercise_1.txt @@ -0,0 +1 @@ +Sie sollen für Ihre nächste Party ein Use Case-Diagramm erzeugen. Dabei sollen sie die Interaktionen von dem Gast, dem Gastgeber und der Polizei implementieren. Achten Sie darauf, dass die Gäst (wie auch der Gastgeber) Tanzen, Essen, Trinken und sich unterhalten können. Achten Sie dabei darauf, dass immer genug Nachschub an Essen und Trinken da ist. Sie als Gastgeber können natürlich die Feier beenden und auch Gäste herausgeleiten. Natürlich kann aber die Polizei auch die Party abrupt beenden. \ No newline at end of file diff --git a/Exercises/E34_Use_Case_Diagramm/Exercise_2.txt b/Exercises/E34_Use_Case_Diagramm/Exercise_2.txt new file mode 100644 index 0000000..01a2286 --- /dev/null +++ b/Exercises/E34_Use_Case_Diagramm/Exercise_2.txt @@ -0,0 +1,2 @@ +Sie sollen für eine Schiffe versenken Software ein Use-Case-Diagramm modellieren. Das Spiel ist auf zwei Spieler ausgelegt. Dabei eröffnet ein Spieler einen Raum und ein zweiter kann dann folgen. Das Spiel kann erst gestartet werden, wenn ein zweiter Spieler gefolgt ist. +Dann darf jeder Spieler abwechselnd setzen. Jeder Spieler kann aber auch das Spiel abbrechen, dann wird die Verbindung getrennt und der Raum geschlossen. \ No newline at end of file diff --git a/Exercises/E34_Use_Case_Diagramm/Exercise_3.txt b/Exercises/E34_Use_Case_Diagramm/Exercise_3.txt new file mode 100644 index 0000000..5a78ba3 --- /dev/null +++ b/Exercises/E34_Use_Case_Diagramm/Exercise_3.txt @@ -0,0 +1,2 @@ +Sie sollen ein Use-Case-Diagramm für einen Login-Bereich schreiben. In diesem soll sich ein Anwender registrieren und anmelden können. Wenn sich jemand registriert hat, dann muss sein Account erst durch einen Admin freigeschalten werden. Nache erfolgreichen login kann der Anwender Posts erstellen und Kommentare dazu schreiben. Diese können von ihm selber und von einem Admin geslöscht werden. +Der gesamte Account kann auch von einem Admin gesperrt werden, dann ist ein Einloggen nicht mehr möglich. \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Ex8/Inventar.cs b/Exercises/E35_Dateizugriffe/Ex8/Inventar.cs new file mode 100644 index 0000000..aae8921 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Ex8/Inventar.cs @@ -0,0 +1,29 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Inventar + { + public Inventar(string companyName) + { + if(string.IsNullOrWhiteSpace(companyName)) + throw new ArgumentNullException("Der übergeben Name für die Fima ist NULL oder leer. Dies ist nicht erlaubt."); + CompanyName = companyName; + } + + public string CompanyName; + + public List Notes = new List(); + + List<(Thing obj, int amount)> objectList = new List<(Thing obj, int amount)>(); + + //Diese Methode soll den Gesamtpreis aller Elemente zurück geben. + public decimal ReturnPriceSum() + { + //Code START + return decimal.Zero; + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Ex8/Thing.cs b/Exercises/E35_Dateizugriffe/Ex8/Thing.cs new file mode 100644 index 0000000..05c6fd5 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Ex8/Thing.cs @@ -0,0 +1,13 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Thing + { + public string? Name; + public decimal Price; + public string? Details; + public double Weight; + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_1.cs b/Exercises/E35_Dateizugriffe/Exercise_1.cs new file mode 100644 index 0000000..2e97ea5 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_1.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_1 + { + public static void Start() + { + Console.WriteLine("Hier ist der Inhalt der Datei 'ex1.ttdx';"); + //Unter Files finden Sie die Datei ex1.ttdx. Geben Sie den Inhalt der Datei aus: + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_2.cs b/Exercises/E35_Dateizugriffe/Exercise_2.cs new file mode 100644 index 0000000..80d432d --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_2.cs @@ -0,0 +1,16 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_2 + { + public static void Start() + { + //Unter Files finden Sie die Datei Animal.txt. Sorgen Sie dafür, dass der Nutzer die Dateiendung beliebig ändern kann: + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_3.cs b/Exercises/E35_Dateizugriffe/Exercise_3.cs new file mode 100644 index 0000000..d052c94 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_3.cs @@ -0,0 +1,16 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_3 + { + public static void Start() + { + //Unter Files finden Sie die Datei 'ex3.num'. In dieser Datei sind Messergebnisse enthalten. Einige dieser Messergebnisse haben Nachkommastellen. Ihre Aufgabe ist nun, alle Zahlen mit Nachkommastellen matehmatisch sauber zu runden, sodass nur noch Integer-Zahlen in der Datei ex3.num stehen. + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_4.cs b/Exercises/E35_Dateizugriffe/Exercise_4.cs new file mode 100644 index 0000000..95d6c5f --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_4.cs @@ -0,0 +1,30 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_4 + { + public static void Start() + { + //Sorgen Sie dafür, dass die stringList bei jedem Ausführen der Aufgabe geladen wird. Achten Sie darauf zu überprüfen, ob die Datei überhaupt schon existiert. + List stringList = new List(); + //Code Start + + + //Code ENDE + Console.WriteLine("Bitte geben Sie den nächsten String ein:"); + stringList.Add(Console.ReadLine() ?? ""); + Console.Clear(); + Console.WriteLine("Hier sind alle Elemente:"); + foreach(var element in stringList) + Console.WriteLine(element); + + //Implementieren Sie die Speicherung der Liste + //Code Start + + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_5.cs b/Exercises/E35_Dateizugriffe/Exercise_5.cs new file mode 100644 index 0000000..ace594d --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_5.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_5 + { + public static void Start() + { + Console.WriteLine("Bitte geben Sie eine Namen ein:"); + string s = Console.ReadLine() ?? ""; + Console.WriteLine("Bitte geben Sie eine Anzahl der Ordner ein:"); + int i = Convert.ToInt32(Console.ReadLine()); + //Sie finden im Dateisystem einen Ordner 'Filecreator'. Der Anwender gibt oben einen Namen und eine Zahl ein. Nun sollen die Anzahl der Ordner erstellt werden. Diese sollen alle den eingegebenen Namen haben (das geht natürlich nicht, suchen Sie nach einer Lösung). + //Code Start + + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_6.cs b/Exercises/E35_Dateizugriffe/Exercise_6.cs new file mode 100644 index 0000000..61c9a12 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_6.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_6 + { + public static void Start() + { + //Sie sehen den Ordner "FileSystem". Geben Sie alle Ordner darin grafisch ansprechend aus: + //Code Start + + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_7.cs b/Exercises/E35_Dateizugriffe/Exercise_7.cs new file mode 100644 index 0000000..94892a2 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_7.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + class Exercise_7 + { + public static void Start() + { + //Schreiben Sie ein Menü, in welchem der Anwender auswählen kann, ob er + // - Die Ordner im Ordner FileSystem anzeigen lassen möchte + // - Einen Ordner davon löschen möchte + // - Einen Ordner hinzufügen möchte + // - Einen Ordner umbenennen möchte + //Code Start + + + //Code ENDE + } + + //Diese Methode soll alle Ordner mit Unterordner aus FileSystem anzeigen. Achten Sie darauf, das sich die Ordnerstrukturen (auch in der Tiefe) ändern können. + static void ShowDirectories() + { + //Code Start + + //Code ENDE + } + //In dieser Methode soll der Anwender die Möglichkeit haben, einen Ordner auszuwählen. Dabei soll der Pfad des Ordners zurück gegeben werden. Als Übergabewert kann man selbst, was bei dem jeweiligen Aufruf angezeigt werden soll. + static string ChooseDirectory(string command = "Bitte wählen Sie einen Ordner:") + { + Console.WriteLine(command); + //Code Start + return string.Empty; + //Code ENDE + } + //In dieser Methode soll ein Ordner gelöscht werden. Dieser Methode soll ein Pfad zu dem zu löschenden Ordner übergeben werden. + static void DeleteDirectory(string path) + { + //Code Start + + //Code ENDE + } + //In dieser Methode soll ein Ordner umbenannt werden. Dabei soll wieder ein Pfad zu dem umbenennenden Ordner übergeben werden. + static void RenameDirectory(string path) + { + //Code Start + + //Code ENDE + } + + //In dieser Methode soll der Anwender einen neuen Ordner erstellen können. Dabei wird der Pfad zu dem Ordner, in dem der neue Ordner erstellt werden soll, übergeben werden. + static void CreateNewDirectory(string path) + { + //Code Start + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_8.cs b/Exercises/E35_Dateizugriffe/Exercise_8.cs new file mode 100644 index 0000000..cd4baf7 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_8.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + //Hierbei sollen Sie die Klassen aus dem Ordner ex8 verwenden. + class Exercise_8 + { + public static void Start() + { + //Erstellen Sie eine Instanz der Klasse Inventar. + //Code Start + + //Code ENDE + + //Füllen Sie die Felder des Inventar-Objekts mit Werten. Schreiben Sie mindestens 5 Notizen und 5 Dinge mit deren Anzahl in die jeweilige Liste. + //Code START + + //Code ENDE + + //Geben Sie nun den Gesamtpreis aller Elemente darin aus. Programmieren Sie dafür in der Inventar.cs die Methode ReturnPriceSum() aus und rufen Sie diese hier auf. + //Code START + + //Code ENDE + + //Spreichern Sie nun das Objekt ab als XML und als JSON in zwei verschiedene Dateien ab. + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Exercise_8b.cs b/Exercises/E35_Dateizugriffe/Exercise_8b.cs new file mode 100644 index 0000000..25f1c46 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Exercise_8b.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E35_Dateizugriffe +{ + //Hierbei sollen Sie die Klassen aus dem Ordner ex8 verwenden. + class Exercise_8b + { + public static void Start() + { + Console.WriteLine("Hier sind die Daten der XML-Datei:"); + ShowXml(); + Console.WriteLine("Hier sind die Daten der JSON-Datei:"); + ShowJson(); + } + //Laden Sie die XML-Datei aus der vorherigen Aufgabe und zeigen Sie sie an: + static void ShowXml() + { + //Code START + + //Code ENDE + } + //Laden Sie die JSON-Datei aus der vorherigen Aufgabe und zeigen Sie sie an: + static void ShowJson() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileFour/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileFour/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileFour/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileOne/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileOne/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileOne/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileThree/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileThree/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileThree/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileTwo/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileTwo/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/FirstFile/FileTwo/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileA/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileA/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileA/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileB/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileB/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileB/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileC/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileC/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileC/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileD/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileD/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileD/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileE/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileE/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileOne/FileE/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileTwo/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileTwo/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/SecondFile/FileTwo/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFive/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFive/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFive/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileA/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileA/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileA/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileB/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileB/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileFour/FileB/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileOne/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileOne/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileOne/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileA/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileA/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileA/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileB/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileB/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileB/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileC/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileC/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileThree/FileC/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileTwo/empty.txt b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileTwo/empty.txt new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/FileSystem/ThirdFile/FileTwo/empty.txt @@ -0,0 +1 @@ + diff --git a/Exercises/E35_Dateizugriffe/Filecreator/dummy.txt b/Exercises/E35_Dateizugriffe/Filecreator/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E35_Dateizugriffe/Files/Animal.txt b/Exercises/E35_Dateizugriffe/Files/Animal.txt new file mode 100644 index 0000000..d90dcff --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Files/Animal.txt @@ -0,0 +1,10 @@ +Hund +Katze +Maus +Kuh +Vogel +Bär +Wolf +Tiger +Elefant +Gepard \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Files/ex1.ttdx b/Exercises/E35_Dateizugriffe/Files/ex1.ttdx new file mode 100644 index 0000000..341dc9e --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Files/ex1.ttdx @@ -0,0 +1,4 @@ +Wiese +Wald +Straße +Steppe \ No newline at end of file diff --git a/Exercises/E35_Dateizugriffe/Files/ex3.num b/Exercises/E35_Dateizugriffe/Files/ex3.num new file mode 100644 index 0000000..f2df040 --- /dev/null +++ b/Exercises/E35_Dateizugriffe/Files/ex3.num @@ -0,0 +1,42 @@ +7463,46 +48374 +3837 +372,84652 +38293 +48374 +372,31215 +382849,548613 +27394 +237492,13511 +298374 +36483 +347834 +234 +23948234,656484 +237423 +49852,138615 +94985345 +9342 +2342384,168151 +23489234,1513 +23482934 +8394 +34934,1546513 +2348934,1351323 +8994 +324 +345345 +546456 +34534,486445132 +4648 +31351 +35451,1 +3326 +313 +151544 +345,8642 +344 +646453 +16464 +16846465 +3478943 \ No newline at end of file diff --git a/Exercises/E36_Dateiformate/Exercise_1.cs b/Exercises/E36_Dateiformate/Exercise_1.cs new file mode 100644 index 0000000..9e30301 --- /dev/null +++ b/Exercises/E36_Dateiformate/Exercise_1.cs @@ -0,0 +1,41 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E36_Dateiforamte +{ + // Wandeln Sie die Liste von Büchern in einen XML und einen JSON String um. Lassen Sie die Strings auf der Konsole ausgeben und vergleichen die Länge der beiden Strings und geben Sie dieses Ergebnis auch auf der Konsole aus. + class Exercise_1 + { + public static void Start() + { + List LibroList; + LibroList = new(){ + new(){ Title = "Andersens Märchen", Author ="Hans Christian Andersen", Pages = 845}, + new(){ Title = "Stolz und Vorurteil", Author ="Jane Austen", Pages = 463}, + new(){ Title = "Vater Goriot", Author ="Honoré de Balzac", Pages = 732}, + new(){ Title = "Das Dekameron", Author ="Giovanni Boccaccio", Pages = 412}, + new(){ Title = "Sturmhöhe", Author ="Emily Brontë", Pages = 735}, + new(){ Title = "Der Fremde", Author ="Albert Camus", Pages = 528} + }; + + //Code START + + //Code ENDE + } + + //Code START + + //Code ENDE + + } + + //Code START + class Libro + { + public string? Title {get;set;} + public string? Author {get;set;} + public int Pages {get;set;} + } + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E36_Dateiformate/Exercise_2.cs b/Exercises/E36_Dateiformate/Exercise_2.cs new file mode 100644 index 0000000..8e073f7 --- /dev/null +++ b/Exercises/E36_Dateiformate/Exercise_2.cs @@ -0,0 +1,40 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E36_Dateiforamte +{ + // Sie sollen ein lokales E-Mail-System entwickeln. Dabei sollen folgende Anforderungen sollen erfüllt werden: + // - Fragen Sie zuerst nach dem Usernamen des aktuellen Users + // - Der User soll eine E-Mail schreiben können. Als Sender und Empfänger dienen die Usernamen + // - Der User soll alle seine E-Mail angezeigt bekommen. + // - Der User soll auf eine E-Mail antworten können. Dabei muss die Mail, auf die geantwortet wird, als MailBefore gesetzt werden. + // - Der User soll sich ausloggen können. + // Speichern Sie dabei die Liste der E-Mails als XML in die Variable XmlData und als JSON in die Variable JsonData. + class Exercise_2 + { + static string XmlData = ""; + static string JsonData = ""; + public static void Start() + { + //Code START + + //Code ENDE + } + + //Code START + + //Code ENDE + } + + //Code START + class Mail + { + public string? Title {get;set;} + public string? Sender {get;set;} + public string? Receiver {get;set;} + public byte[]? Attach {get;set;} + public Mail? MailBefore {get;set;} + } + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E37_Serialisierung/Exercise_1.cs b/Exercises/E37_Serialisierung/Exercise_1.cs new file mode 100644 index 0000000..89f96c4 --- /dev/null +++ b/Exercises/E37_Serialisierung/Exercise_1.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E37_Serialisierung +{ + // Die Klasse Libro kennen Sie aus einen der vorherigen Aufgaben. Speichern Sie diese Liste Serialisiert in ein Byte-Array in die Datei "save.bin". + class Exercise_1 + { + public static void Start() + { + List LibroList = new(){ + new(){ Title = "Andersens Märchen", Author ="Hans Christian Andersen", Pages = 845}, + new(){ Title = "Stolz und Vorurteil", Author ="Jane Austen", Pages = 463}, + new(){ Title = "Vater Goriot", Author ="Honoré de Balzac", Pages = 732}, + new(){ Title = "Das Dekameron", Author ="Giovanni Boccaccio", Pages = 412}, + new(){ Title = "Sturmhöhe", Author ="Emily Brontë", Pages = 735}, + new(){ Title = "Der Fremde", Author ="Albert Camus", Pages = 528} + }; + + + } + + } + + //Code START + class Libro + { + public string? Title {get;set;} + public string? Author {get;set;} + public int Pages {get;set;} + } + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E38_MySQL/Exercise_1.cs b/Exercises/E38_MySQL/Exercise_1.cs new file mode 100644 index 0000000..a980b8b --- /dev/null +++ b/Exercises/E38_MySQL/Exercise_1.cs @@ -0,0 +1,70 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E38_MySQL +{ + //+---------+----------------+ + //| ID | StringValue | + //+---------+----------------+ + class Exercise_1 + { + public static void Start() + { + var connection = CreateDatabase(); + //4. Erstellen Sie ein kleines Menü, in welchem der Anwender Auswählen kann, ob er die Daten angezeigt haben will, ein Datum hinzufügen will, oder ein Datum löschen will. Außerdem soll der Anwender noch nach einem (Sub-)String suchen können. Rufen Sie dann die dafür vorgesehene Methode auf. + //Code Start + + //Code ENDE + + } + + static dynamic CreateDatabase() + { + //1. Stellen Sie im ersten Schritt eine Verbindung zu Ihrer Datenbank her. + //Code Start + + //Code ENDE + + //2. Erstellen Sie dann die Table "Exercise_MySQL_1", sollte sie nicht vorhanden sein. + //Code Start + + //Code ENDE + + //3. Geben Sie dann das MySqlConnection-Objekt zurück. + //Code Start + return -1; + //Code ENDE + } + + //Hier soll der Anwender einen neuen String eingeben. Dieser soll dann in die Datenbank gespeichert werden. + static void AddNewString(dynamic connection) + { + //Code Start + + //Code ENDE + } + + //Hier sollen alle Werte der Datenbank ausgegeben werden. + static void ShowAllString(dynamic connection) + { + //Code Start + + //Code ENDE + } + + //Hier sollen alle Werte ausgegeben werden, auf die der zu suchende Substring passt. + static void SearchForStrings(dynamic connection) + { + //Code Start + + //Code ENDE + } + //Hier soll ein Wert aus der Datenbank gelöscht werden können. + static void DeleteString(dynamic connection) + { + //Code Start + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E38_MySQL/Exercise_2.cs b/Exercises/E38_MySQL/Exercise_2.cs new file mode 100644 index 0000000..b4a0e99 --- /dev/null +++ b/Exercises/E38_MySQL/Exercise_2.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; + +namespace Exercises_C_Sharp.E38_MySQL +{ + // Tabelle 'Human' + //+---------+--------------+-----------+-----------+ + //| ID | GivenName | Surname | Birthday | + //+---------+--------------+-----------+-----------+ + + // Tabelle 'Disease' + // +------+-----------+----------+-----------+--- + // | ID | HumanID | Disease | Duration | + // +------+-----------+----------+-----------+--- + // + // ----+------------------+------------+-----------------+ + // | FirstAppearance | TotalCost | DrHouseEpisode | + // ----+------------------+------------+-----------------+ + class Exercise_2 + { + //Ihre Aufgabe ist es, eine Patientenverwaltung zu schreiben, in der man neue Patienten hinzufügen kann. Diesen Patienten kann man dann beliebig viele Krankheiten hinzufügen. Sie sollen folgende Dinge in die Software implementieren: + // - Erstellen eines Patienten (natürlich mit der Abspeicherung in die Datenbank) + // - Anzeigen aller Patienten + // - Auswahl eines Patienten und hinzufügen einer Krankheit (diese besteht aus dem Namen der Krankheit, der Krankheitsdauer, das erste Auftreten, die Gesamtkosten und der Dr. Hose-Folge, in der diese auftritt) + // - Suchen einer Krankheit und/oder eines Patienten mit der Eingabe eines Strings + // - Ausgabe alles Krankheiten eines Patienten + public static void Start() + { + //Code Start + + //Code ENDE + + } + + static dynamic CreateDatabase() + { + //1. Stellen Sie im ersten Schritt eine Verbindung zu Ihrer Datenbank her. + //Code Start + + //Code ENDE + + //2. Erstellen Sie dann die beiden Tabellen, wie sie oben beschrieben sind, sollten sie nicht schon vorhanden sein. + //Code Start + + //Code ENDE + + //3. Geben Sie dann das MySqlConnection-Objekt zurück. + //Code Start + return -1; + //Code ENDE + } + + + //Code Start + + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E39_Multithreading/Exercise_1.cs b/Exercises/E39_Multithreading/Exercise_1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E39_Multithreading/Exercise_2.cs b/Exercises/E39_Multithreading/Exercise_2.cs new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E39_Multithreading/Exercise_3.cs b/Exercises/E39_Multithreading/Exercise_3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E39_Multithreading/Exercise_4.cs b/Exercises/E39_Multithreading/Exercise_4.cs new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E39_Multithreading/Exercise_5.cs b/Exercises/E39_Multithreading/Exercise_5.cs new file mode 100644 index 0000000..e69de29 diff --git a/Exercises/E40_Vererbung/Exercise_1.cs b/Exercises/E40_Vererbung/Exercise_1.cs new file mode 100644 index 0000000..66e8565 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_1.cs @@ -0,0 +1,27 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + class Exercise_1 + { + public static void Start() + { + Second sec = new(); + + //Sorgen Sie dafür, dass dieser Aufruf funktioniert. Entkommentieren Sie ihn als Überprüfung: + //sec.SayIt(); + + } + } + + class First + { + public void SayIt() + { + Console.WriteLine("Something"); + } + } + + class Second /* CODE START */ /* CODE ENDE */ + { + + } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_2.cs b/Exercises/E40_Vererbung/Exercise_2.cs new file mode 100644 index 0000000..064599b --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_2.cs @@ -0,0 +1,32 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + //Beide Klassen Luv und Lee haben die Methode GetWindSpeed(). Für eine Software ist es aber irrelevant, von wo der Wind kommt. Es ist nur wichtig, wie schnell er ist. Sie sollen also eine neue Klasse schreiben, die diese Methode anbietet und die Klassen Luv und Lee davon ableiten lassen. Ändern Sie dann auch den dynamic-Typ in der Liste ab. + + class Exercise_2 + { + public static void Start() + { + List dynList = new(){ new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee() }; + + int speed = 0; + foreach(var element in dynList) + speed += element.GetWindSpeed(); + + Console.WriteLine("Geschwindigkeit des Windes: " + speed); + } + } + + //Code START + + //Code ENDE + + class Luv + { + + } + + class Lee + { + + } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_3.cs b/Exercises/E40_Vererbung/Exercise_3.cs new file mode 100644 index 0000000..fc1d718 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_3.cs @@ -0,0 +1,99 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + class Exercise_3 + { + public static void Start() + { + // 2. Erstellen Sie eine Liste aus Tree's und befüllen Sie zufällig mit 100 unterschiedlichen Bäumen. + //Code START + + //Code ENDE + + // 3. Produzieren Sie dann mit jedem Baum zwischen 3 und 10 mal Sauerstoff + //Code START + + //Code ENDE + + //4. Zählene Sie, von wie vielen LeafKinds es wie viele gibt und geben Sie das Ergebnis auf der Konsole aus: + //Code START + + //Code ENDE + + //5. Addieren Sie den Sauerstoff aller Bäume und geben Sie den Wert auf der Konsole aus: + //Code START + + //Code ENDE + + //6. Geben Sie den Specialwert (Werte, die nicht zusammengefasst werden konnten) der verschiedenen Bäume auf der Konsole aus. + //Code START + + //Code ENDE + } + } + + // 1. Schreiben Sie eine Klasse "Tree", die alle gemeinsamen Member der unteren Klassen vereint. Leiten Sie dann von dieser ab. + //Code START + class Tree{} + //Code ENDE + + class Birch : Tree + { + public readonly string BarkColor = "White"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + } + + class Oak + { + public readonly string Fruit = "Acorn"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Larch + { + public readonly string SpecialAbility = "Loses Needles in Autumn"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Willow + { + public readonly string Roots = "Very strong and far-reaching"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Fir + { + public readonly string Form = "Pyramid-like"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + enum LeafKind { Leaf, Needle, Blank } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_4.cs b/Exercises/E40_Vererbung/Exercise_4.cs new file mode 100644 index 0000000..f6b46c4 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_4.cs @@ -0,0 +1,82 @@ +using System.Runtime.InteropServices; + +namespace Exercises_C_Sharp.E40_Vererbung +{ + // Sie sind Programmierer in einem Kaufhaus. Das Kaufhaus hatte vor einiger Zeit eine Bonuskarte für Kunden eingeführt. Diese haben zwei Vorteile: Sie bekommen Bonuspunkte, die sie für Rabatte eintauschen können, und sie bekommen zum Geburtstag einen Gutschein per Mail gesendet. + // Jetzt will das Kaufhaus zwei Bonusprogramme einführen: Eins für NormalCustomer und eins für PremiumCustomer. + // Für NormalCustomer gibt es zum Geburtstag nur noch 100 Bonuspunkte, für PremiumCustomer 500 Bonuspunkte und noch einen extra Gutschein von 20% auf den nächsten Einkauf. + // PremiumCustomer bekommen pro Einkauf sogar 50 Bonuspunkte, NormalCustomer nur 5 Bonuspunkte pro Einkauf. + + //Das Kaufhaus hat sich überlegt, alle jungen Leute, die ab 01.01.2000 geboren sind, kostenlos als PremiumCustomer einzustellen. Normalerweise kostet die Mitgliedschaft 39,99 € im Jahr. + + //Ihre Aufgabe ist nun: Den Code so anzupassen, dass das obere Szenario abgebildet werden kann. + + //[In dieser Aufgabe gibt es kein Start und Ende, sie dürfen ändern was Sie wollen. Achten Sie aber bitte drauf, dass die Vererbung nutzen.] + class Exercise_4 + { + public static void Start() + { + WriteCustomerForBirthday(MakeCustomer()); + + } + + //Hier sollen Sie allen Kunden die Nachricht zukommen lassen, dass sie nun Premium für den oben genannten Preis haben können. Alle ab 2000 geborenen soll gesagt werden, dass sie nun PremiumCustomer sind. + static void WriteCustomerForPremium() + { + + } + + static void WriteCustomerForBirthday(List customers) + { + Random rand = new(); + foreach(var element in customers) + { + if(element.Birth.Month == DateTime.Now.Month && element.Birth.Day == DateTime.Now.Day) + element.SendMail("Alles Gute zum Geburtstag! Hier ist ihr Coupon für 15% Rabatt auf den Einkauf: " + rand.Next()); + } + } + + static List MakeCustomer() + { + List customers = new(){ + new(){Name = "Franz Franzner", Birth = new(1988, 1, 8)}, + new(){Name = "Hans Hansner", Birth = new(2000, 12, 7)}, + new(){Name = "Schorsch Schorschner", Birth = new(1968, 11, 15)}, + new(){Name = "Johann Johanner", Birth = new(1999, 2, 27)}, + new(){Name = "Georg Georgner", Birth = new(1952, 7, 2)}, + new(){Name = "Herman Hermanner", Birth = new(2001, 9, 24)}, + new(){Name = "Peter Peterner", Birth = new(1982, 10, 1)}, + new(){Name = "Karl Karlner", Birth = new(1977, 2, 4)}, + new(){Name = "Willy Willner", Birth = new(2003, 8, 30)} + }; + + Random rand = new(); + + for(int i = 0; i < 100; i++) + { + customers[rand.Next(customers.Count)].AddBonusPoints(); + } + + return customers; + } + } + + class Customer + { + public string Name {get; set;} + public DateOnly Birth {get; set;} + public int BonusPoints {get;set;} + + public void SendMail(string message) + { + Console.WriteLine("Wrote mail to " + Name); + } + + public void AddBonusPoints() + { + BonusPoints += 10; + } + } + + +} \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_1.cs b/Exercises/E42_Interfaces/Exercise_1.cs new file mode 100644 index 0000000..30a2b65 --- /dev/null +++ b/Exercises/E42_Interfaces/Exercise_1.cs @@ -0,0 +1,54 @@ +namespace Exercises_C_Sharp.E42_Interfaces +{ + //Sie sehen unten drei verschiedene Klassen aus drei Subsystemen Ihrer Firma. Diese verlangt jetzt von Ihnen, dass alle Namen auf der Konsole ausgegeben werden sollen. Schreiben Sie dafür ein Interface und implementieren Sie dieses bei den Klassen. + //Vergessen Sie nicht, den Typen dynamic auf den Namen Ihres Interfaces zu ändern. + class Exercise_1 + { + public static void Start() + { + List NamesList = new(){ new Person("Matteo"), new Customer("Emilia"), new Human("Noah"), new Person("Emma"), new Customer("Finn"), new Human("Hannah"), new Person("Luca"), new Customer("Sophia"), new Human("Leon"), new Person("Mia"), new Customer("Henry"), new Human("Lina"), new Person("Elias"), new Customer("Ella"), new Human("Paul") }; + + foreach(var element in NamesList) + element.PrintName(); + + } + } + + //Code START + + //Code ENDE + + class Person /*Code START*//*Code ENDE*/{ + string _personName; + public Person(string name) + { + _personName = name; + } + //Code START + + //Code ENDE + + } + class Customer /*Code START*//*Code ENDE*/{ + string _customerName; + public Customer(string name) + { + _customerName = name; + } + //Code START + + //Code ENDE + + } + class Human /*Code START*//*Code ENDE*/{ + string _humanName; + public Human(string name) + { + _humanName = name; + } + //Code START + + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_2.cs b/Exercises/E42_Interfaces/Exercise_2.cs new file mode 100644 index 0000000..08b1921 --- /dev/null +++ b/Exercises/E42_Interfaces/Exercise_2.cs @@ -0,0 +1,48 @@ +namespace Exercises_C_Sharp.E42_Interfaces +{ + //Sie sollen für einen Sondmixer die Klassen Drums, Guitar und Keyboard erstellen. Alle drei sollen von ISound ableiten. Um die Applikation zu testen, geben Sie bei der implementierten Methoden ein zufälliges Byte-Array zurück. Erstellen Sie dann die drei Objekte der jeweiligen Klassen und übergeben diese der Methode MergeSound(). + + class Exercise_2 + { + public static void Start() + { + //Code START + + //Code ENDE + } + + public static void MergeSound(List sounds) + { + List byteList = new(); + foreach(var element in sounds) + { + byte[] bytes = element.MakeSound(); + for(int i = 0; i < bytes.Length; i++) + { + if(byteList.Count <= i) + byteList.Add(bytes[i]); + else + byteList[i] = (byte)(byteList[i] | bytes[i]); + } + } + + foreach(var element in byteList) + { + // 0 0 0 0 0 0 0 0 + // 1 1 1 1 1 1 1 1 + int frequency = element | 0b00001111; + int duration = element | 0b11110000; + Console.Beep(frequency, duration); + Task.Delay(500); + } + } + } + + interface ISound{ + byte[] MakeSound(); + } + + //Code START + + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_3.cs b/Exercises/E42_Interfaces/Exercise_3.cs new file mode 100644 index 0000000..cbb9640 --- /dev/null +++ b/Exercises/E42_Interfaces/Exercise_3.cs @@ -0,0 +1,48 @@ +namespace Exercises_C_Sharp.E42_Interfaces +{ + //Sie sehen unten drei Methoden, die alle drei zu verschiedenen Schnittstellen von der Software führen. Die Schnittstellen haben alle drei fest definierte Interfaces. + //Sie sollen nun eine Klasse schreiben, die von allen drei Interfaces ableitet. Erstellen Sie dann in der Start-Methode ein neues Objekt Ihrer Klasse und rufen Sie die drei Methoden mit dem Objekt auf. + class Exercise_3 + { + public static void Start() + { + //Code START + + //Code ENDE + } + + static void BringerMeth(IBringer bring) + { + bring.Bring("Stuff"); + } + static void GetIt(IGetter getter) + { + Console.WriteLine(getter.Get()); + } + static void Receiver(IReceiver receiver) + { + Console.WriteLine(receiver.Receive()); + } + } + + interface IBringer + { + void Bring(string val); + } + + interface IGetter + { + string Get(); + } + + interface IReceiver + { + string Receive(); + } + + + //Code START + + //Code ENDE + +} \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_4.cs b/Exercises/E42_Interfaces/Exercise_4.cs new file mode 100644 index 0000000..4e2edfe --- /dev/null +++ b/Exercises/E42_Interfaces/Exercise_4.cs @@ -0,0 +1,85 @@ +using System.Reflection.Metadata.Ecma335; + +namespace Exercises_C_Sharp.E42_Interfaces +{ + //Sie sollen eine Aufgabe übernehmen, die eine nicht ganz so begabter Praktikant angefangen hat. + //Diese bestand darin, für jede Wortart eine Klasse zu erstellen, was dieser auch gemacht hat. Jetzt gibt es eine Methode SentenceMaker(), die die Wörter zusammensetzt und einen Text zurück gibt. Leider ist es dort nicht möglich, mehrere Sätze erzeugen zu lassen. + //Ihre Aufgabe ist nun, dass mehrere Wörter übergeben werden können, woraus mehrere Sätze gemacht und zurück gegeben werden sollen. Erstellen Sie dafür ein Interface, von dem alle Klassen ableiten. + + class Exercise_4 + { + public static void Start() + { + //Zum Schluss: Erstellen Sie hier mehrere Objekte der Klassen und rufen Sie die SentenceMaker()-Methode damit auf. + //Code START + + //Code ENDE + } + + //Code START + static string SentenceMaker(Article article, Nomen nomen, Verb verb, Adjective adjective) + { + return string.Format("{0} {1} {2} {3}.", article.BackArticle(), nomen.GiveNomen(), verb.GetVerb(), adjective.ReturnAdjective()); + + } + //Code ENDE + } + + //Hier können Sie das Interface definieren, welches die unteren Klassen implementieren sollen + //Code START + + //Code ENDE + + class Verb + { + string _verb {get;set;} + public Verb(string val) + { + _verb = val; + } + + //Code START + public string GetVerb() => _verb; + //Code ENDE + + } + class Nomen + { + string _nomen {get;set;} + public Nomen(string val) + { + _nomen = val; + } + + //Code START + public string GiveNomen() => _nomen; + //Code ENDE + + } + class Adjective + { + string _adjective {get;set;} + public Adjective(string val) + { + _adjective = val; + } + + //Code START + public string ReturnAdjective() => _adjective; + //Code ENDE + + } + class Article + { + string _article {get;set;} + public Article(string val) + { + _article = val; + } + + //Code START + public string BackArticle() => _article; + //Code ENDE + + } +} \ No newline at end of file diff --git a/Exercises/E44_Kapselung/Exercise_1.cs b/Exercises/E44_Kapselung/Exercise_1.cs new file mode 100644 index 0000000..ed70460 --- /dev/null +++ b/Exercises/E44_Kapselung/Exercise_1.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E44_Kapselung +{ + // Sorgen Sie dafür, dass der Wert in Number immer dreistellig ist. Setzen Sie dann in Start() den Wert und geben Sie diesen auf der Konsole aus. + + class Exercise_1 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } + + class NumberSaver + { + //Code START + public int Number; + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E44_Kapselung/Exercise_2.cs b/Exercises/E44_Kapselung/Exercise_2.cs new file mode 100644 index 0000000..9f1bac0 --- /dev/null +++ b/Exercises/E44_Kapselung/Exercise_2.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E44_Kapselung +{ + //Schreiben Sie eine Klasse ArrayPacker. Lagern Sie die Array-Variable in diese Klasse aus. Sorgen Sie dafür, dass dieses Array niemals null werden kann. + class Exercise_2 + { + //Code START + static int[]? intArray = null; + //Code ENDE + + public static void Start() + { + //Code START + intArray = new int[]{12,23,34,45,56,56}; + //Code ENDE + } + } + + //Code START + + //Code ENDE +} \ No newline at end of file diff --git a/Exercises/E44_Kapselung/Exercise_3.cs b/Exercises/E44_Kapselung/Exercise_3.cs new file mode 100644 index 0000000..09bfeba --- /dev/null +++ b/Exercises/E44_Kapselung/Exercise_3.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E44_Kapselung +{ + // Sie wollen eine Klasse schreiben, in der Sie einen String hinterlegen können. Der String kann im Nachhinein wieder ausgelesen werden. Folgende Eigenschaften sollen erfüllt werden: + // - Kapseln Sie die Felder in der Klasse Wordsaver und implementieren Sie die Logik, die sich jetzt in der Start-Methode befindet, in die Wordsaver-Klasse. + // - Rufen Sie die Klasse Wordsaver mit einem Konstruktor mit dem ersten zu setzenden String auf. + // - Lassen Sie es nicht zu, dass man von außerhalb der Klasse den Counter ändern kann. + // - Alle Werte, die Sie außerhalb der Klasse nicht brauchen, dürfen auch nicht zugänglich sein. + class Exercise_3 + { + public static void Start() + { + //Code START + + + //Erstellen des Objekts + Wordsaver wordsaver = new(); + //Wenn bereits ein Wort darin ist, die die Liste der vergangenen String hineinschreiben + if(!string.IsNullOrWhiteSpace(wordsaver.LastString)) + wordsaver.LastWords.Add(wordsaver.LastString); + //Neuen String setzen + wordsaver.LastString = "Hallo"; + //Anzahl der gesetzten Strings erhöhen + wordsaver.ChangeCounter++; + + + + //Code ENDE + } + + // So sollte die Start-Methode eigentlich (nach Ihren Änderungen) aussehen: + // + //Wordsaver wordsaver = new("Hallo"); + //Console.WriteLine(wordsaver.Word); //Ausgabe: Hallo + //Console.WriteLine(wordsaver.ChangeCounter); //Ausgabe: 1 + //wordsaver.Word = "Hi"; + //wordsaver.Word = "Hey"; + //Console.WriteLine(wordsaver.Word); //Ausgabe: Hey + //Console.WriteLine(wordsaver.ChangeCounter); //Ausgabe: 3 + } + + class Wordsaver + { + //Code START + public List LastWords = new(); + public int ChangeCounter = 0; + public string? LastString; + //Code ENDE + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_0.txt b/Exercises/E46_Designpattern/Exercise_0.txt new file mode 100644 index 0000000..98b26be --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_0.txt @@ -0,0 +1,35 @@ +1. Szenario: Texteditor-Speicheroptionen +Beschreibung: Ein Texteditor soll dem Benutzer ermöglichen, Dokumente in verschiedenen Formaten wie TXT, RTF und DOCX zu speichern. +Lösung: Factory Method Pattern, um für jedes Format eine eigene Speicherlogik zu implementieren. + +2. Szenario: Nachrichten-Update-System +Beschreibung: Eine News-Website möchte ihre Benutzer in Echtzeit über neue Artikel und Updates benachrichtigen. +Lösung: Observer Pattern, um Benutzer zu registrieren und bei neuen Nachrichten zu benachrichtigen. + +3. Szenario: Online-Shop Zahlungsgateway +Beschreibung: Ein Online-Shop muss mehrere Zahlungsmethoden unterstützen, einschließlich Kreditkarten, PayPal und Google Pay. +Lösung: Strategy Pattern, um unterschiedliche Zahlungsalgorithmen austauschbar zu machen. + +4. Szenario: Grafische Benutzeroberfläche für ein Software-Tool +Beschreibung: Ein Software-Tool benötigt eine einheitliche Benutzeroberfläche, die viele komplexe Systemoperationen hinter einfach zu verwendenden Knöpfen und Menüs versteckt. +Lösung: Facade Pattern, um die Komplexität des Systems hinter einer einfachen Schnittstelle zu verbergen. + +5. Szenario: Logging-Framework +Beschreibung: Ein Anwendungsentwicklungsteam möchte ein flexibles Logging-Framework entwickeln, das verschiedene Ausgabeformate wie Konsole, Datei und Netzwerk unterstützt. +Lösung: Decorator Pattern, um verschiedene Logging-Funktionalitäten dynamisch hinzuzufügen. + +6. Szenario: IoT-Gerätesteuerung +Beschreibung: Ein Heimautomatisierungssystem soll verschiedene IoT-Geräte wie Lampen, Thermostate und Sicherheitssysteme über eine einzige Fernbedienung steuern. +Lösung: Command Pattern, um unterschiedliche Gerätesteuerbefehle zu kapseln und auszuführen. + +7. Szenario: Altes CRM-System in eine moderne Webanwendung integrieren +Beschreibung: Ein Unternehmen muss ein veraltetes CRM-System mit einer neuen Webanwendung verbinden, die eine völlig andere Datenstruktur verwendet. +Lösung: Adapter Pattern, um die alte CRM-System-API mit der neuen Webanwendung kompatibel zu machen. + +8. Szenario: Benutzereinstellungen in einer App +Beschreibung: Eine App muss Benutzereinstellungen wie Sprache, Layout und andere Präferenzen über Sitzungen hinweg speichern und verwalten. +Lösung: Singleton Pattern, um eine einzige Instanz der Einstellungsverwaltung zu haben, die überall in der App zentral zugänglich ist. + +9. Szenario: Multi-Channel-Content-Distribution +Beschreibung: Ein Content-Management-System (CMS) muss Content wie Artikel und Videos über verschiedene Kanäle wie Webseite, Mobile App und Social Media automatisch verteilen. +Lösung: Observer Pattern, um verschiedene Kanäle als Beobachter des CMS-Contents zu registrieren, die bei neuen Updates benachrichtigt werden. \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_1.cs b/Exercises/E46_Designpattern/Exercise_1.cs new file mode 100644 index 0000000..1b9a7fb --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_1.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Entwicklen Sie eine Konfigurationsmanager-Klasse, die Anwendungs-Einstellungen lädt und speichert. Die Klasse sollte das Singleton-Pattern verwenden, um sicherzustellen, dass es eine einzige Instanz gibt, die von jeder Stelle im Programm aus zugegriffen werden kann, um Konsistenz der Konfigurationsdaten über die gesamte Anwendung zu gewährleisten. + class Exercise_1 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_2.cs b/Exercises/E46_Designpattern/Exercise_2.cs new file mode 100644 index 0000000..977bc2d --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_2.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Entwickle ein Grafikprogramm, das unterschiedliche Arten von Grafikobjekten wie Kreise, Rechtecke und Dreiecke erstellt. Benutzen Sie das Factory Method Pattern, um eine Schnittstelle zu definieren, die die Erstellung der Grafikobjekte kapselt. Jede konkrete Klasse (z.B. Kreis, Rechteck) implementiert diese Schnittstelle und gibt eine Methode zum Zeichnen des Objekts auf die Konsole zurück. + class Exercise_2 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_3.cs b/Exercises/E46_Designpattern/Exercise_3.cs new file mode 100644 index 0000000..1870765 --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_3.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Implementieren Sie ein Auktionshaus-System, bei dem Bieter sich für Auktionen registrieren können und Benachrichtigungen erhalten, wenn ein neues Gebot für ein Objekt abgegeben wird. Das Auktionshaus fungiert als "Subject", und die Bieter sind "Observers", die über Änderungen (neue Gebote) informiert werden müssen. + class Exercise_3 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_4.cs b/Exercises/E46_Designpattern/Exercise_4.cs new file mode 100644 index 0000000..da965ba --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_4.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Implementieren Sie ein E-Commerce-System, das verschiedene Zahlungsmethoden unterstützt (z.B. PayPal, Kreditkarte, Bitcoin). Verwende das Strategy Pattern, um jede Zahlungsmethode als eine Strategie zu implementieren. Dies ermöglicht es dem System, flexibel neue Zahlungsmethoden hinzuzufügen und die gewählte Methode zur Laufzeit zu wechseln. + + class Exercise_4 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_5.cs b/Exercises/E46_Designpattern/Exercise_5.cs new file mode 100644 index 0000000..cdbcbac --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_5.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Entwickeln Sie eine Anwendung, in der ein User einen String eingibt und diesen dynamisch ändern kann. Verwenden Sie hierbei das Decorator-Pattern, um Funktionalitäten wie beispielsweise das Groß-/Kleinschreiben aller Buchstaben oder einen Substring bilden zu implementieren. + + class Exercise_5 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_6.cs b/Exercises/E46_Designpattern/Exercise_6.cs new file mode 100644 index 0000000..891613c --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_6.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Stellen Sie sich ein System vor, das Wetterdaten von verschiedenen externen Diensten abrufen kann, die unterschiedliche APIs haben (z.B. OpenWeatherMap, Weather.com, AccuWeather). Verwenden Sie das Adapter Pattern, um eine einheitliche Schnittstelle zu schaffen, die es dem System ermöglicht, unabhängig von den spezifischen APIs der externen Dienste Wetterdaten abzurufen. Jeder Dienst wird durch einen Adapter angesprochen, der die spezifische API in die Standard-API des Systems übersetzt. + + class Exercise_6 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_7.cs b/Exercises/E46_Designpattern/Exercise_7.cs new file mode 100644 index 0000000..3465927 --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_7.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Erstellen Sie eine "Computer"-Klasse, die den Startvorgang eines Computers durch verschiedene Systemkomponenten wie CPU, Speicher und Festplatte simuliert. Das Facade Pattern kann genutzt werden, um diese komplexen Interaktionen hinter einer einfachen Methode wie startComputer() zu verstecken. + + class Exercise_7 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises/E46_Designpattern/Exercise_8.cs b/Exercises/E46_Designpattern/Exercise_8.cs new file mode 100644 index 0000000..8bd4c6a --- /dev/null +++ b/Exercises/E46_Designpattern/Exercise_8.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.E46_Designpattern +{ + // Entwickeln Sie eine Smarthome-Steuerung. Jeder Befehl wie "Licht einschalten", "Temperatur einstellen" oder "Alarmanlage aktivieren" kann als Command implementiert werden, das von verschiedenen "Invokern" wie Fernbedienungen oder Sprachassistenten aufgerufen wird. + + class Exercise_8 + { + public static void Start() + { + //Code START + + //Code ENDE + } + } +} \ No newline at end of file diff --git a/Exercises_C_Sharp.sln b/Exercises_C_Sharp.sln new file mode 100644 index 0000000..a2af89c --- /dev/null +++ b/Exercises_C_Sharp.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Exercises_C_Sharp_Lections", "Exercises_C_Sharp_Lections.csproj", "{107CC1B1-8404-4228-B3A1-445797CFEA31}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {107CC1B1-8404-4228-B3A1-445797CFEA31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {107CC1B1-8404-4228-B3A1-445797CFEA31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {107CC1B1-8404-4228-B3A1-445797CFEA31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {107CC1B1-8404-4228-B3A1-445797CFEA31}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Exercises_C_Sharp_Lections.csproj b/Exercises_C_Sharp_Lections.csproj new file mode 100644 index 0000000..f02677b --- /dev/null +++ b/Exercises_C_Sharp_Lections.csproj @@ -0,0 +1,10 @@ + + + + Exe + net7.0 + enable + enable + + + diff --git a/FurtherExercises/Eigenaufgaben/Exercise_1.cs b/FurtherExercises/Eigenaufgaben/Exercise_1.cs new file mode 100644 index 0000000..fd04538 --- /dev/null +++ b/FurtherExercises/Eigenaufgaben/Exercise_1.cs @@ -0,0 +1,43 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Text; + +namespace Exercises_C_Sharp.Eigenaufgaben +{ + // Dotnet bietet eine Möglichkeit, Benchmarks für gewisse Aufgaben zu erstellen. Dieses Tool bzw. diese Klasse heißt "BenchmarkRunner". Das heißt, der Code wird ausgeführt und die Zeit der Ausführung gemessen. Dafür müssen Sie folgende Attribute in der zu prüfenden Klasse setzen: [Params(1000,10_000)], [Benchmark] + + class Exercise_1 + { + public static void Start() + { + //Starten Sie hier den Benchmark: + //Code START + + //Code ENDE + } + } + class StringTest + { + //Setzen Sie die Attribute so, dass ein Vergleich zwischen den Geschwindigkeiten beider Methoden stattfinden kann. + //Code START + public int Amounts {get;set;} + public string WithStringBuilder() + { + StringBuilder sb = new(); + for(int i = 0; i < Amounts; i++) + sb.Append(i); + + return sb.ToString(); + } + public string WithPlusOperator() + { + string result = ""; + for(int i = 0; i < Amounts; i++) + result += i; + + return result; + } + //Code ENDE + } +} \ No newline at end of file diff --git a/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.cs b/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.cs new file mode 100644 index 0000000..85782c4 --- /dev/null +++ b/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Entwicklungsaufgaben.Minispiele +{ + class Step_1 + { + + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.txt b/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.txt new file mode 100644 index 0000000..a18d2d9 --- /dev/null +++ b/FurtherExercises/Entwicklungsaufgaben/Minispiele/Step_1.txt @@ -0,0 +1,7 @@ +Im ersten Schritt sollen Sie sich mit dynamischen Eingaben in Echtzeit auseinandersetzen. Die Grundvoraussetzung dafür ist eine Umgebung, in der beispielsweise ein Männchen (repräsentiert durch einen Char, also beispielsweise einem X), die als Spielfigur agiert, vom Nutzer gesteuert werden kann. Dies wollen wir mit Hilfe der Pfeiltasten realisieren. Dafür kann man sehr gut die Methode Console.ReadKey() verwenden. Dieser gibt (bis auf ein paar ausnahmen) bei jedem Tastendruck die jeweilige Taste mit dem Wert eines Enums zurück. Sie können den Wert dann mit .Key abfragen. + + +Im Kern sind also Ihre Aufgaben folgende: + - Erstellen Sie ein zweidimensionales Array. + - Implementieren Sie ein Objekt, dass der Nutzer mit Hilfe der Pfeiltasten steuern kann. + - Zeigen Sie das 'Spielfeld' an und aktualisieren Sie es bei jeder Änderung. \ No newline at end of file diff --git a/FurtherExercises/Esperanto/First.cs b/FurtherExercises/Esperanto/First.cs new file mode 100644 index 0000000..86d0a0f --- /dev/null +++ b/FurtherExercises/Esperanto/First.cs @@ -0,0 +1,31 @@ +namespace Exercises_C_Sharp.Esperanto +{ + // #1: Nomen enden in Esperanto in der Grundform immer auf 'O'. [libro] + // #2: Will man die Mehrzahl eines Nomens haben, dann hängt man hinten einfach ein 'j' an, welches als 'i' gesprochen wird. [libroj] + // #3: Will (oder braucht) man das Nomen im Akkusativ (Sie erinnern sich: Wen oder was?), dann hängt man hinten ein 'n' an. [libron] + class First + { + + //Der User soll in der Start-Methode einen String eingeben. Wenn dieser String ein Nomen ist, dann soll dies ausgegeben werden und die Methode "WorkWithNomen()" aufgerufen werden. + public static void Start() + { + while(true) + { + //Code START + + //Code ENDE + } + + } + + //Handelt es sich um ein Nomen, fragen Sie den User, ob er das Nomen in der Einzahl oder der Mehrzahl und ob er es in der Nominativ- oder der Akkusativform haben will. Geben Sie das Wort dann aus. + static void WorkWithNomen() + { + //Code START + + //Code ENDE + } + + } + +} \ No newline at end of file diff --git a/FurtherExercises/Esperanto/readme.txt b/FurtherExercises/Esperanto/readme.txt new file mode 100644 index 0000000..8d8d314 --- /dev/null +++ b/FurtherExercises/Esperanto/readme.txt @@ -0,0 +1 @@ +Bei diesen Aufgaben dürfen Sie Sprachkosntrukte in Esperanto ausprogrammieren. Esperanto ist die einzige weltweit erfolgreiche Plansprache. Der Vorteil hierbei ist: Es hat alles seine Regeln. Es gibt keine Sonderformen, sondern ausschließlich feste Regeln, die immer gelten. \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S001_Class.cs b/FurtherExercises/Schulaufgaben/S001_Class.cs new file mode 100644 index 0000000..064f334 --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S001_Class.cs @@ -0,0 +1,50 @@ +//WS2324 -> ITFA_2 + +namespace Exercises_C_Sharp.Schulaufgaben +{ + class S001_Class + { + static List GarbageList = new List(); + + public static void Start() + { + while (true) + { + //Bauen Sie ein kleines Menü, in dem der Anwender aus den unteren drei Methoden auswählen kann + //CODE START + + //CODE ENDE + } + } + //Sorgen Sie dafür, dass der Anwender bei dieser Methode ein neues Garbage-Element erstellen kann. Dieses soll dann der Liste hinzugefügt werden. + public static void AddNewGarbage() + { + //CODE START + + //CODE ENDE + } + //Sorgen Sie hier dafür, dass der Anwender bei einem beliebigen Garbage-Objekt das RemoveDate setzen kann. Sorgen Sie auch dafür, dass ein auf der Konsole falsch eingegebenes Datum nicht zu einem Prorammasturz führt, sondern dass der Benutzer es nochmal eingeben kann. + public static void SetRemoveDate(Garbage garbage) + { + //CODE START + + //CODE ENDE + } + //Sorgen Sie dafür, dass hier alle Garbage-Objekte angezeigt werden. Wird true übergeben, dann werden auch alle Garbage-Objekte angezeigt, bei denen das RemoveDate nicht null ist. Bei Übergabewert false werden nur Garbage-Elemente ausgegeben, bei denen das RemoveDate null ist. + public static void ShowAllGarbage(bool removed = false) + { + //CODE START + + //CODE ENDE + } + } + class Garbage + { + public string? Name; + public decimal Weight; + public GarbageKind Kind; + public DateTime? RemoveDate = null; + } + + enum GarbageKind { Papiermüll, Restmüll, Sondermüll, Recyclingmüll } +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S002_Class.cs b/FurtherExercises/Schulaufgaben/S002_Class.cs new file mode 100644 index 0000000..ec7f609 --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S002_Class.cs @@ -0,0 +1,52 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + class S002_Class + { + //1. Im folgenden Code haben sich 4 Fehler eingeschlichen. Fixen Sie diese, sodass das Programm wieder problemlos funktioniert! + //2. Ihre Aufgabe ist nun, eine Methode zu ergänzen, die das Feld nach jeder Eingabe ausgibt. Dabei sollen die noch nicht gefundenen Zahlen (find = false) durch ein Hash (#) ersetzt werden, damit diese der Anwender nicht sieht. Löschen Sie immer die vorherige Eingabe von der Konsole. + //3. Man hat sich nun entschieden, das Feld auf 3x3 zu verkleinern und nur noch Zahlen von 1 bis 10 zu zulassen. Ändern Sie den Code so ab, dass diese implementiert wird. + + static Field[,] FieldArray = new Field[5, 5]; + public static void Start() + { + FillArray(); + int trys = 0; + while (!TestArray()) + { + MakeUserinput(); + trys++; + } + Console.WriteLine("Das Spiel ist vorbei.Sie haben {0} Versuche benötigt."); + } + static void FillArray() + { + Random rand = new Random(); + for (int i = 0; i < 5; i++) + for (int k = 0; k < 5; k++) + FieldArray[i, i] = new Field() { i = rand.Next(0, 101) }; + } + static void MakeUserinput() + { + Console.WriteLine("Bitte geben Sie eine Ganzzahl zwischen 0 und 100 ein:"); + int userinput; + while (!int.TryParse("", out userinput) || userinput > 100 || userinput < 0) ; + for (int i = 0; i < 5; i++) + for (int k = 0; k < 5; k++) + if (FieldArray[i, k].i == userinput) + FieldArray[i, k].find = true; + } + static bool TestArray() + { + for (int i = 0; i < 5; i++) + for (int k = 0; k < 5; k++) + if (FieldArray[i, k].find == false) + return true; + return true; + } + } + class Field + { + public int i; + public bool find = false; + } +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S003_Tuple.cs b/FurtherExercises/Schulaufgaben/S003_Tuple.cs new file mode 100644 index 0000000..67c0e8f --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S003_Tuple.cs @@ -0,0 +1,39 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + class S003_Tuple + { + public static void Start() + { + while(true) + { + var el = EditNumber(EditString(AskForUserinput())); + Console.Clear(); + Console.WriteLine("Verwandelter String: " + el.Item1); + Console.WriteLine("Verwandelter Integer: " + el.Item2); + Console.WriteLine(); + } + } + + //Diese Methode soll den Integer im Tuple verdoppeln, wenn diese ungerade ist und halbieren, wenn diese gerade ist. + public static Tuple EditNumber(Tuple element) + { + //Code START + return element; + //Code ENDE + } + //Diese Methode soll alle Leerzeichen in dem String durch einen Unterstrich ersetzen. + public static Tuple EditString(Tuple element) + { + //Code START + return element; + //Code ENDE + } + //Diese Methode soll dem Nutzer die Möglichkeit geben, einen String und einen Integer einzugeben. Sorgen Sie dafür, dass beide Werte valide sind, also dass der String nicht null und nicht leer ist und dass der Integer wirklich so einer ist. + public static Tuple AskForUserinput() + { + //Code START + return new Tuple("", 0); + //Code ENDE + } + } +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S004_Enum.cs b/FurtherExercises/Schulaufgaben/S004_Enum.cs new file mode 100644 index 0000000..9d09f18 --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S004_Enum.cs @@ -0,0 +1,54 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + class S004_Enum + { + //1. Ein anderer Programmierer hat den folgenden Code geschrieben. Leider haben sich in dem Code 4 Fehler eingeschlichen. Finden und fixen Sie diese! + //2. Sie sollen nun diesen Code so erweitern, dass wieder Werte gelöscht werden können. Entscheiden Sie selbst, wie der Anwender einzelne Listenelemente löschen kann und implementieren Sie dies. + //3. Jetzt soll der Code so erweitert werden, dass bei 10-maligen Vorkommen von dem Status "Failed" das Programm beendet wird. Implementieren Sie diese Funktion! + static List StateList = new List(); + + public static void Start() + { + Console.WriteLine("Programmstart"); + FirstFill(); + while (!true) + { + #pragma warning disable CS0162 + Console.WriteLine("A -> Werte anzeigen, E -> Neuen Wert erzeugen"); + if (Console.ReadLine() == "A") + { + ShowValues(); + } + else if (Console.ReadLine() == "E") + { + StateList.Add(GetMachineState()); + } + } + } + static void FirstFill() + { + for(int i = 0; i < 12; i++) + { + StateList.Add(GetMachineState()); + } + } + static void ShowValues() + { + int[] countArray = new int[5]; + foreach (var state in StateList) + countArray[(int)state] += 1; + } + + static States GetMachineState() + { + //Zugriff auf die Machine + //Hier werden testweise die Werte zufällig erzeugt + Random rand = new Random(); + return (States)rand.Next(0, 5); + + } + + enum States { Super, Good, Okay, Acceptable, Dreadful, Failed} + } + +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S005_Tuple.cs b/FurtherExercises/Schulaufgaben/S005_Tuple.cs new file mode 100644 index 0000000..9fffddc --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S005_Tuple.cs @@ -0,0 +1,70 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + class S005_Tuple + { + static List> ProductList = new(); + public static void Start() + { + Console.WriteLine("Willkommen!"); + //Bauen Sie hier ein kleines Menü Ihrer Wahl ein, indem der User + // - Ein neues Produkt hinzufügen kann (-> Methode AddNewProduct) + // - Sich die Anzahl der benötigten Trucks anzeigen lassen kann (-> Methode GetAmountOfTrucks) + // - Sich unsere Kosten anzeigen lassen kann (-> Methode GetCosts) + // - Sich die Kosten für die Kunden anzeigen lassen kann (-> Methode GetCosts) + // - Die Liste senden kann (-> Methode SendList) + //Das Programm soll in einer Endlosschleife laufen. + //Code START + + //Code ENDE + } + + + //In dieser Methode soll der User ein neues Produkt zum Transport anmelden können. Dieser muss den Namen des Transports als String und die Größe als Integer angeben. Dann soll das Element in die ProductList gespeichert werden. Der Integer soll dann wie folgt umgewandelt werden: + // <10 -> Tiny + // 10 - 50 -> Small + // 50 - 100 -> Medium + //100 - 1000 -> Big + // >1000 -> Oversize + static void AddNewProduct() + { + //Code START + + //Code ENDE + } + + //Geben Sie hier die Anzahl der Trucks zurück, welche für die obrige Liste an Produkten verwendet werden muss. Ein Truck kann entweder eine Oversize-Lieferung, vier Big-Lieferungen, fünfzehn Medium-Lieferungen, vierunddreißig Small-Lieferungen oder achtzig Tiny-Lieferung beinhalten. Ein Vermischen ist nicht möglich. + static int GetAmountOfTrucks() + { + //Code START + return -1; + //Code ENDE + } + + //Hier sollen die Gesamtkosten für die Trucks UND die Kosten für den einzelnen Kunden zurück gegeben werden. + //Ein Truck kostet durchschnittlich mit Fahrer, Anschaffung, Unterhalt und Benzin 3.485,23 pro Fahrt. + //Rechnen Sie die Kosten pro Produkt aus. Es wird kein Unterschied zwischen der Größe gemacht, jedes Produkt kostet gleich viel. Addieren Sie zusätzlich 25% auf diesen Preis drauf. Dabei handelt es sich um unseren Gewinn. + static dynamic GetCosts(int amountTrucks) + { + //Code START + return -1; + //Code ENDE + } + + //Hier wird die Liste geleert und die einzelnen Trucks beauftragt. + static void SendList() + { + //Leeren Sie die Liste ProductList + //Code START + + //Code ENDE + + //Hier wird später die Schnittstelle aufgerufen, um die Trucks los zu schicken. Hier müssen Sie nichts mehr programmieren, das übernehmen Ihre Kollegen. + //TrucksAPI.SendTrucks(); + } + + + //Dieses Enum bezeichnet die Größe der Ladung + enum Vals {Tiny, Small, Medium, Big, Oversize} + } + +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S006_Multidimensionale_Arrays.cs b/FurtherExercises/Schulaufgaben/S006_Multidimensionale_Arrays.cs new file mode 100644 index 0000000..fda432a --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S006_Multidimensionale_Arrays.cs @@ -0,0 +1,53 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + //Sie sind ITler bei einer Softwarefirma. Ihre Abteilung hat Ihnen vorgefertigten Code gegeben, den Sie vervollständigen bzw. erweitern sollen. Folgende Aufgaben sollen Sie ausführen: + // - Schreiben Sie eine Methode "NormRow", die dafür sorgt, dass in keiner Zeile die selbe Zahl darin steht. Addieren Sie hierfür solange eine 1, bis ein nicht vorhandener Wert in dem Feld steht. + // - Erstellen Sie ein neues 5x5 int-Array in der Start-Methode. + // - Nutzen Sie die Methode "FillList" um Werte in das int-Array hinein zu schreiben. + // - Vertauschen Sie zufällig zwei Werte. Machen Sie den Tausch mit der Methode "ChangeFields". + + class S006_Multidimensionale_Arrays + { + public static void Start() + { + //Code START + + //Code ENDE + } + + //Hier werden die Werte des Arrays mit den Standardwerten befüllt. Die Standardwerte sind die Multiplikation der Indezes. + static int[,] FillList(int[,] field) + { + for(int i = 0; i < field.GetLength(0); i++) + for(int k = 0; k < field.GetLength(1); k++) + field[i,k] = i * k; + + return field; + } + //Hier kann ein User zwei Werte im Array tauschen lassen. Dabei muss das Array und die beiden Koordinaten übergeben werden, die getauscht werden sollen. + static int[,] ChangeFields(int[,] arr, (int x, int y) co1, (int x, int y) co2) + { + if(arr.GetLength(0) > co1.x && arr.GetLength(0) > co2.x && arr.GetLength(1) > co1.y && arr.GetLength(1) > co2.y) + { + var tem = arr[co1.x, co2.y]; + arr[co1.x, co1.y] = arr[co2.x, co2.y]; + arr[co2.x, co2.y] = tem; + } + return arr; + } + + static int[,] SetField(int[,] arr, (int x, int y) field, int value) + { + if(arr.GetLength(0) > field.x && arr.GetLength(0) > field.y) + arr[field.x, field.y] = value; + return arr; + } + + //Code START + + + + //Code ENDE + } + +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S007_Enum.cs b/FurtherExercises/Schulaufgaben/S007_Enum.cs new file mode 100644 index 0000000..9f28538 --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S007_Enum.cs @@ -0,0 +1,61 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + //Sie sind ITler in der Finanzbranche. + class S007_Enum + { + //Schreiben Sie hier eine Liste von MachineOutput. Achten Sie auf das Keyword static. + //Code START + static dynamic MachineOutputList = -1; + //Code ENDE + + public static void Start() + { + Console.WriteLine("Programmtestung Start"); + //Füllen der Liste mit Zufallswerten + FillMachineListWithRandomValues(90); + //Wie viele Fehler sind passiert? + Console.WriteLine("Die Anzahl der Fehler lag bei " + GetPercentsOfMachineValue(MachineOutput.Error).ToString("0.00") + " %."); + //Ausgabe der Gesamtübersicht + ShowListData(); + } + + //Diese Methode füllt die obere Liste mit zufälligen Maschinendaten. + static void FillMachineListWithRandomValues(int amount) + { + for(int i = 0; i < amount; i++) + MachineOutputList.Add(GetRandomMachineData()); + } + + //Diese Methode soll zufällig Maschinendaten erzeugen. Sorgen Sie dafür, dass die Methode immer einen der zufälligen Werte vom Type MachineOutput zurück gibt. + static MachineOutput GetRandomMachineData() + { + //Code START + return MachineOutput.Error; + //Code ENDE + } + + //Dieser Methode kann man ein MachineOutput-Element geben. Wenn man das gemacht hat, dann berechnet diese Methode das prozentuale Erscheinen dieses Werts in der Liste. ((Anzahl des Vorkommens / Gesamtanzahl von Elementen in der Liste) * 100) Implementieren Sie diese Funktion. + static decimal GetPercentsOfMachineValue(MachineOutput mo) + { + //Code START + return -1; + //Code ENDE + } + + //Diese Methode soll das Vorkommen aller Elemente wie folgt ausgeben: + // 3x Perfect + // 12x Good + // 2x Okay + //... usw + //Achten Sie dabei darauf, dass das x immer in der selben Zeile steht, egal ob die Zahl eine oder zwei Stellen hat. Wir gehen nicht davon aus, dass es mehr als zwei Stellen werden. + static void ShowListData() + { + //Code START + + //Code ENDE + } + + enum MachineOutput { Perfect, Good, Okay, Bad, Dreadfull, Error} + } + +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/S008_Enum.cs b/FurtherExercises/Schulaufgaben/S008_Enum.cs new file mode 100644 index 0000000..5627f2b --- /dev/null +++ b/FurtherExercises/Schulaufgaben/S008_Enum.cs @@ -0,0 +1,73 @@ +namespace Exercises_C_Sharp.Schulaufgaben +{ + //Sie sind ITler bei den Wasserwerken + class S008_Enum + { + public static void Start() + { + Console.WriteLine("Wir testen heute die besten Wasseraufbereiter! Unser mega toller Algorithmus wurde extra von einem sehr gut ausgebildeten ITler von den Wasserwerken programmiert!"); + var listOfBestProducts = GetBestOnes(); + Console.WriteLine(); + Console.WriteLine("Hier kommen die besten drei Produkte:"); + //Geben Sie hier die Liste der besten Produkte mit deren Platzierungen aus. Benutzen Sie dafür die Methode GetBestOnes. + //Code START + + //Code ENDE + Console.WriteLine(); + Console.WriteLine("Aber was heißen die Klassen eigentlich? Hier die Übersicht darüber:"); + //Geben Sie hier alle WaterQuality-Elemente aus und geben Sie mit Hilfe der Methode WaterUseful die dazugehörige Beschreibung aus: + //Code START + + //Code ENDE + Console.WriteLine(); + Console.WriteLine("Vielen Dank für die Nutzung unseres tollen Vergleichtools!"); + Console.WriteLine("Wir wünschen Ihnen eine schöne Restwoche! Bleiben Sie uns treu!"); + + + } + + //Dieser Methode kann man eine WaterQuality und ein WaterAdd übergeben. Die Methode berechnet dann die neue Wasserqualität, nachdem das Mittel hinzugefügt wurde und gibt diese zurück. + static WaterQuality MakeBetterWater(WaterQuality wq, WaterAdd wa) + { + return (WaterQuality)(((int)wq * (int)wa) % 9); + + } + + //Diese Methode bewertet die Wasserqualität und gibt diese als String zurück. + static string WaterUseful(WaterQuality wq) + { + if(wq == WaterQuality.AAA) + return "Für jeden uneingeschränkt trinkbar und für Babynahrung geeignet"; + if(wq == WaterQuality.AA) + return "Für jeden uneingeschränkt trinkbar"; + if(wq == WaterQuality.A) + return "Grundlegend für jeden trinkbar, Menschen mit Vorerkrankungen sollten aufpassen"; + if(wq == WaterQuality.B) + return "Für anfällige Menschen mit Vorerkrankungen ungeeignet, in geringen Dosen für normale Menschen geeignet"; + if(wq == WaterQuality.C) + return "Vorsichtiger Genuss von minimalen Mengen, abgekocht (mindestens 60 Sekunden) noch genießbar"; + if(wq == WaterQuality.D) + return "Leicht verunreinigt, nur im äußersten Notfall (Gefahr für Leib und LEben) trinken und Menge minimal halten"; + if(wq == WaterQuality.E) + return "Nicht trinkbar, ab höheren Dosen tötlich"; + if(wq == WaterQuality.F) + return "Nicht trinkbar, ab mittleren Dosen tötlich"; + if(wq == WaterQuality.X) + return "Nicht trinkbar, schon in kleinen Dosen tötlich"; + + return string.Empty; + } + + //Sie sollen nun die Methode "GetBestOnes" schreiben. In dieser Methode sollen sie die Top 3 der besten WaterAdd-Produkte als Liste zurück geben. Dabei ist der Sieger der, der es schafft, aus der schlechtestens Qualität die beste Qualität zu machen. (Also X -> AAA, X -> AA usw.). Bei einem eventuellen Gleichstand nehmen sie die nächste Qualitätsstufe (also F -> AAA, F -> AA usw.) + static List GetBestOnes() + { + //Code START + return new List(); + //Code ENDE + } + + enum WaterQuality {AAA, AA, A, B, C, D, E, F, X } + enum WaterAdd { Micropur, Reents, Yachticon, Tankline } + } + +} \ No newline at end of file diff --git a/FurtherExercises/Schulaufgaben/readme.txt b/FurtherExercises/Schulaufgaben/readme.txt new file mode 100644 index 0000000..a600b5e --- /dev/null +++ b/FurtherExercises/Schulaufgaben/readme.txt @@ -0,0 +1,2 @@ +Achtung! +Hierbei handelt es sich um vorbereitende Aufgaben zur Schulaufgabe. \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_1.cs b/FurtherExercises/Sonderaufgaben/Exercise_1.cs new file mode 100644 index 0000000..59496ef --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_1.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_1 + { + //Schreiben Sie ein Spiel, in dem man gegen den Computer Schere, Stein, Papier, Echse, Spock spielen kann. Die Regeln sind wie folgt: + // - Schere schneidet Papier          + // - Papier bedeckt Stein                 + // - Stein zerquetscht Echse + // - Echse vergiftet Spock + // - Spock zertrümmert Schere + // - Schere köpft Echse + // - Echse frisst Papier + // - Papier widerlegt Spock + // - Spock verdampft Stein + // - Stein schleift Schere + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_1.png b/FurtherExercises/Sonderaufgaben/Exercise_1.png new file mode 100644 index 0000000..0df2161 Binary files /dev/null and b/FurtherExercises/Sonderaufgaben/Exercise_1.png differ diff --git a/FurtherExercises/Sonderaufgaben/Exercise_2.cs b/FurtherExercises/Sonderaufgaben/Exercise_2.cs new file mode 100644 index 0000000..0d2f47d --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_2.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_2 + { + //Schreiben Sie ein Programm, in dem man gegen den PC Schiffe versenken spielen kann. Dabei soll der Anwender immer eine Koordinate (z.B. A7) eingeben und dann wird überprüft, ob sich dort ein Treffer befindet. Dabei hat nur der Computer ein 10x10 Feld, auf dem er Zufällig die Schiffe (Schlachtschiff[5 Felder], Kreuzer [4 Felder], Fregatte [3 Felder], Schnellboot[2 Felder]) platziert. Überlegen Sie sich, wie man das Feld auf der Konsole anzeigen könnte. + + //Gedankengang zu dieser Aufgabe: + //0 -> Wasser -> Ausgabe: O + //1 -> Schiff -> Ausgabe: O (Tipp: Kann auch zum Debuggen geändert werden) + //2 -> Getroffenes Wasser -> Ausgabe: $ + //3 -> Getroffenes Schiff -> Ausgabe: X + + //Hierbei handelt es sich um das Spielfeld (Standardmäßig sind alle Werte 0) + static int[,] GameField = new int[10,10]; + + public static void Start() + { + + } + + //Diese Methode setzt die Schiffe in das Spielfeld + static void SetShips() + { + + } + + //Diese Methode frägt, prüft und wandelt die Eingabe des Nutzers um. Dabei wird die konkrete Koordinate zurück gegeben. + static Tuple GetUserinput() + { + return new Tuple(-1,-1); + } + + //Diese Methode verarbeitet die Eingabe des Nutzers. + static void HandleUserInput(Tuple userinput) + { + + } + + + //Diese Methode zeigt das Spielfeld mit allen weiteren Anzeigeelementen an. + static void ShowField() + { + + } + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_2.png b/FurtherExercises/Sonderaufgaben/Exercise_2.png new file mode 100644 index 0000000..bc21d95 Binary files /dev/null and b/FurtherExercises/Sonderaufgaben/Exercise_2.png differ diff --git a/FurtherExercises/Sonderaufgaben/Exercise_3.cs b/FurtherExercises/Sonderaufgaben/Exercise_3.cs new file mode 100644 index 0000000..4f9fc76 --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_3.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_3 + { + //Schreiben Sie ein eigenes Memory-Spiel! Bei Memory haben Sie eine gerade Anzahl an Karten, die für den Nutzer nicht einsehbar (verdeckt) liegen. Nun darf der Anwender immer zwei Karten nacheinander aufdecken. Besitzen beide Karten dasselbe Symbol, verschwinden diese vom Spielfeld. Sind es zwei unterschiedliche Symbole, so werden diese wieder "umgedreht", also für den Spieler unsichtbar gemacht. Gewonnen hat der Spieler dann, wenn keine Karten mehr übrig sind. Zählen Sie die Versuche mit, die der Spieler bis zum Gewinn gebraucht hat. + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_4.cs b/FurtherExercises/Sonderaufgaben/Exercise_4.cs new file mode 100644 index 0000000..4aab16d --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_4.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_4 + { + //Schreiben Sie eine Software, die sie Minesweeper auf der Konsole spielen lässt. Minesweeper besteht aus einem rechteckigen Feld bestehend aus Quadraten, unter welchem sich eine gewisse Anzahl an Minen verstecken. Der User muss nun ein Quadrat auswählen, danach gibt es folgende Möglichkeiten: + // - Es handelt sich um eine Mine, somit ist das Spiel vorbei und der User hat verloren. + // - Es ist kein Mine, dann erscheint eine Zahl, die die Anzahl der Minen angibt, die dieses Quadrat umgeben + //Hat der User alle Felder ohne Minen aufgedeckt, so hat dieser gewonnen. + + //Natürlich können Sie auch Konfortfunktionen, wei beispielsweise das Markieren von Minen mit einprogrammieren. + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_5.cs b/FurtherExercises/Sonderaufgaben/Exercise_5.cs new file mode 100644 index 0000000..f64fab3 --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_5.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_5 + { + //Schreiben Sie eine Software, mit Hilfe dessen Sie Kniffel auf der Konsole spielen können. Beim Kniffel haben Sie (im Regelfall, Sie können natürlich auch variieren) 5 Würfel und eine Tabelle, in der man Ergebnisse eintragen kann. Der Spielablauf ist wie folgt: + // - Der User würfelt mit allen Würfeln + // - Danach kann dieser sich entscheiden, ob er das aktuelle Ergebnis eintragen möchte, oder nochmal würfelt + // - Würfelt der User nochmal, darf dieser auswählen, mit welchen Würfeln er nochmal würfeln möchte. Die anderen Würfel behalten ihren Wert. + // - Spätestens jetzt muss er das Ergebnis in die Tabelle eintragen. + + // Das Spiel ist vorbei, wenn der User alle Felder in der Tabelle ausgefüllt hat. Folgende Möglichkeiten gibt es für die Tabelle (es steht Ihnen natürlich frei, jegliche Möglichkeiten die Ihnen einfallen zu implementieren): + // - Kniffel: Alle Würfel zeigen die selbe Zahl + // - Chance: Die Summe aller gewürfelten Ergebnisse + // - Große Straße: Alle Würfel ergeben eine Reihe + // - Kleine Straße: Die Hälfte der Würfel ergeben eine Reihe + // - Full House: Die Hälfte der Würfel zeigt die eine, die andere Hälfte eine andere Zahl + // - Einzelne Zahlen: 1er, 2er, 3er usw. (Dabei zählt die aditive Summe dieser Zahlen) + // - usw. + // Sie können selbst entscheiden, wie viel Punkte es worauf gibt. Meistens nimmt man die Summe der Würfelergebnisse. + // Passen die Würfel zu keinem der Elemente in der Tabelle, so muss er ein Feld streichen, d.h. dieses mit 0 Punkte bewerten. + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/Exercise_6.cs b/FurtherExercises/Sonderaufgaben/Exercise_6.cs new file mode 100644 index 0000000..0240cd1 --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/Exercise_6.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp.Sonderaufgaben +{ + class Exercise_6 + { + //Schreiben Sie eine Mensch-ärgere-Dich-nicht. Folgende Regeln sollten beachtet werden: + // - Um eine Figur auf das Spielfeld setzen zu dürfen, muss man eine 6 Würfeln. + // - Beim Würfeln einer 6 darf der Spieler nochmal würfeln + // - Kann der Spieler einen anderen Stein schmeißen, so muss er das auch + // - Programmieren Sie einen Computer-Gegner dazu, gegen den man spielen kann (auch gerne 3 Gegner) + + public static void Start() + { + + } + + } +} \ No newline at end of file diff --git a/FurtherExercises/Sonderaufgaben/ReadMe.txt b/FurtherExercises/Sonderaufgaben/ReadMe.txt new file mode 100644 index 0000000..569d160 --- /dev/null +++ b/FurtherExercises/Sonderaufgaben/ReadMe.txt @@ -0,0 +1,7 @@ +Hinweise zu den Sonderaufgaben: + +In diesen Aufgaben sind Sie komplett frei, was Sie programmieren. Oftmals gibt es auch vorgefertigte Strukturen, diese können Sie nutzen, oder auch komplett verändern. Die Aufgaben sind meistens etwas freier beschrieben, schließen Sie die Aufgabenlücken mit Ihrer eigenen Meinung zum Thema, wie das Programm am besten arbeiten und aussehen sollte. + +Sie finden auch (teilweise) Beispielbilder vom Programm. Diese besitzen den selben Namen wie die Aufgabe. + +Wenn Sie es "professionell" machen wollen, trennen Sie die View von der Logik (Controller). Nutzen Sie dafür die Designpatterns und die anderen vorgestellten Konstrukte, um Ihren Code besser, übersichtlicher und strukturierter zu machen. \ No newline at end of file diff --git a/MenuElements/ExerciseElement.cs b/MenuElements/ExerciseElement.cs new file mode 100644 index 0000000..b5e2f6e --- /dev/null +++ b/MenuElements/ExerciseElement.cs @@ -0,0 +1,17 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp +{ + class ExerciseElement + { + public string Name = string.Empty; + public Action Method = blind; + public bool IsMarked = false; + public bool? FinishState = null; + public int VideoID = -1; + + static void blind(){} + } +} \ No newline at end of file diff --git a/MenuElements/ExerciseGroup.cs b/MenuElements/ExerciseGroup.cs new file mode 100644 index 0000000..2b35904 --- /dev/null +++ b/MenuElements/ExerciseGroup.cs @@ -0,0 +1,13 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp +{ + class ExerciseGroup + { + public string Name = string.Empty; + public List ElementList = new List(); + public int VideoID = -1; + } +} \ No newline at end of file diff --git a/MenuElements/OpenLinkToVideo.cs b/MenuElements/OpenLinkToVideo.cs new file mode 100644 index 0000000..2dbee0f --- /dev/null +++ b/MenuElements/OpenLinkToVideo.cs @@ -0,0 +1,134 @@ +using System; +using System.Text; +using System.Diagnostics; +using System.IO; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Exercises_C_Sharp +{ + class OpenLinkToVideo + { + static List VideoLectionLinks = new List() + { + new VideoElement(){ ID = 4, Name = "Mathematische Operationen"}, + new VideoElement(){ ID = 5, Name = "Bool'sche Operationen"}, + new VideoElement(){ ID = 6, Name = "Variablen"}, + new VideoElement(){ ID = 7, Name = "Arbeiten mit Strings"}, + new VideoElement(){ ID = 8, Name = "Debuggen"}, + new VideoElement(){ ID = 9, Name = "Ein- und Ausgabe mit der Konsole"}, + new VideoElement(){ ID = 10, Name = "Arrays"}, + new VideoElement(){ ID = 11, Name = "Kurzschreibweise Mathematische Operationen"}, + new VideoElement(){ ID = 12, Name = "Kontrollstruktur IF"}, + new VideoElement(){ ID = 13, Name = "Überprüfen von Eingaben (TryParse)"}, + new VideoElement(){ ID = 14, Name = "Short IFs"}, + new VideoElement(){ ID = 15, Name = "Switch Case"}, + new VideoElement(){ ID = 16, Name = "Flowcharts / PAP (Programm Ablauf Plan)"}, + new VideoElement(){ ID = 17, Name = "FOR-Schleife"}, + new VideoElement(){ ID = 18, Name = "Arrays variabler machen"}, + new VideoElement(){ ID = 19, Name = "FOREACH-Schleife"} + }; + + + public static void ShowVideoMenu(ExerciseGroup eg, ExerciseElement ee) + { + Console.Clear(); + var loginData = LoadAccount(); + if(loginData == null) + { + Console.WriteLine("Um Videos zu den einzelnen Übungen und Lektionen anzusehen, benötigt man einen Alumnee-Account. Bitte geben Sie Ihren vollen Namen (Vor- und Nachname) ein:"); + + string name; + do{ + name = Console.ReadLine() ?? ""; + name = name.Trim(); + } while(string.IsNullOrEmpty(name) || !name.Contains(" ") || name.Length < 7); + Console.WriteLine(); + Console.WriteLine("Bitte geben Sie jetzt Ihre Wibizu-E-Mailadresse ein:"); + string mail; + do{ + mail = Console.ReadLine() ?? ""; + mail = mail.Trim(); + } while(string.IsNullOrEmpty(mail) || mail.Contains(" ") || mail.Length < 16); + Console.WriteLine(); + Console.WriteLine("Die Anmeldedaten werden nun gesetzt und gespeichert!"); + loginData = new Tuple(name, mail); + SaveAccount(loginData); + } + + int num = 0; + while(true) + { + Console.Clear(); + Console.WriteLine("Welches Video soll gezeigt werden?"); + Console.WriteLine("[{0}] Video zu dieser Lektion bzw. zu der Unterrichtsstunde, wo das aktuelle Kapitel nochmal erläutert wird.", num == 0 ? "X" : " "); + Console.WriteLine("[{0}] Video zu der Lösung dieser Aufgabe", num == 0 ? "X" : " "); + var el = Console.ReadKey(); + if(el.Key == ConsoleKey.DownArrow || el.Key == ConsoleKey.UpArrow) + { + if(num == 0) num = 1; + else num = 0; + } + if(el.Key == ConsoleKey.Enter) + { + if(num == 0) + Open(loginData.Item1, loginData.Item2, eg.VideoID, "lection"); + else if(num == 1) + Open(loginData.Item1, loginData.Item2, ee.VideoID, "exercise"); + return; + } + + } + + } + static Tuple? LoadAccount() + { + if(!File.Exists("saveFolder/accountData")) + return null; + var lines = File.ReadAllLines("saveFolder/accountData"); + if(lines.Length < 2) + return null; + + return new Tuple(lines[0], lines[1]); + } + static void SaveAccount(Tuple values) + { + if(File.Exists("saveFolder/accountData")) + File.Delete("saveFolder/accountData"); + + List stringList = new List(){values.Item1, values.Item2}; + File.WriteAllLines("saveFolder/accountData", stringList); + } + + static void Open(string name, string mail, int videoID, string videoKind) + { + string tempHTMLLocation = "saveFolder/temp.html"; + string url = @"https://alumnee.de/videoapi.php"; + + // create the temporary html file + using (FileStream fs = new FileStream(tempHTMLLocation, FileMode.Create)) { + using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8)) { + w.WriteLine(""); + w.WriteLine("
"); + w.WriteLine(""); + w.WriteLine(""); + w.WriteLine(""); + w.WriteLine(""); + w.WriteLine("
"); + w.WriteLine(""); + w.WriteLine(""); + } + } + + // launch the temp html file + var launchProcess = new ProcessStartInfo { + FileName = tempHTMLLocation, + UseShellExecute = true + }; + Process.Start(launchProcess); + + // delete temp file but add delay so that Process has time to open file + Task.Delay(1500).ContinueWith(t=> File.Delete(tempHTMLLocation)); + } + } +} \ No newline at end of file diff --git a/MenuElements/VideoElement.cs b/MenuElements/VideoElement.cs new file mode 100644 index 0000000..57e3b07 --- /dev/null +++ b/MenuElements/VideoElement.cs @@ -0,0 +1,13 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp +{ + class VideoElement + { + public string Name = string.Empty; + public int ID = -1; + public string Kind = "lection"; + } +} \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..5dfcbc0 --- /dev/null +++ b/Program.cs @@ -0,0 +1,979 @@ +using System; +using System.IO; +using System.Collections.Generic; + +namespace Exercises_C_Sharp +{ + class Program + { + static List OptionList = new(); + + public static void Main() + { + //Zuerst schauen, ob der Speicherordner existiert + if(!Directory.Exists("saveFolder")) + Directory.CreateDirectory("saveFolder"); + + + //************************ + //*******Einleitung******* + //************************ + ExerciseGroup beginnerElements = new() + { + Name = "1. Einleitung", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E01_Einleitung.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E01_Einleitung.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E01_Einleitung.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E01_Einleitung.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E01_Einleitung.Exercise_5.Start} + } + }; + //************************ + //*******Variablen******** + //************************ + ExerciseGroup variableElements = new() + { + Name = "2. Variablen", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E02_Variablen.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E02_Variablen.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E02_Variablen.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E02_Variablen.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E02_Variablen.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E02_Variablen.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E02_Variablen.Exercise_7.Start}, + new(){Name = "Übung 8", Method = Exercises_C_Sharp.E02_Variablen.Exercise_8.Start}, + new(){Name = "Übung 9", Method = Exercises_C_Sharp.E02_Variablen.Exercise_9.Start} + } + }; + //************************ + //********Strings********* + //************************ + ExerciseGroup stringElements = new() + { + Name = "3. Strings", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E03_Strings.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E03_Strings.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E03_Strings.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E03_Strings.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E03_Strings.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E03_Strings.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E03_Strings.Exercise_7.Start}, + new(){Name = "Übung 8", Method = Exercises_C_Sharp.E03_Strings.Exercise_8.Start}, + new(){Name = "Übung 9", Method = Exercises_C_Sharp.E03_Strings.Exercise_9.Start}, + new(){Name = "Übung 10", Method = Exercises_C_Sharp.E03_Strings.Exercise_10.Start}, + new(){Name = "Übung 11", Method = Exercises_C_Sharp.E03_Strings.Exercise_11.Start} + } + }; + //************************ + //********Konsole********* + //************************ + ExerciseGroup terminalElements = new() + { + Name = "4. Konsole", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E04_Konsole.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E04_Konsole.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E04_Konsole.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E04_Konsole.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E04_Konsole.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E04_Konsole.Exercise_6.Start} + } + }; + //************************ + //********Arrays********* + //************************ + ExerciseGroup arrayElements = new() + { + Name = "5. Arrays", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E05_Arrays.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E05_Arrays.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E05_Arrays.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E05_Arrays.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E05_Arrays.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E05_Arrays.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E05_Arrays.Exercise_7.Start}, + new(){Name = "Übung 8", Method = Exercises_C_Sharp.E05_Arrays.Exercise_8.Start}, + new(){Name = "Übung 9", Method = Exercises_C_Sharp.E05_Arrays.Exercise_9.Start}, + new(){Name = "Übung 10", Method = Exercises_C_Sharp.E05_Arrays.Exercise_10.Start}, + new(){Name = "Übung 11", Method = Exercises_C_Sharp.E05_Arrays.Exercise_11.Start}, + new(){Name = "Übung 12", Method = Exercises_C_Sharp.E05_Arrays.Exercise_12.Start} + } + }; + //************************ + //********Random********** + //************************ + ExerciseGroup randomElements = new() + { + Name = "6. Random", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E06_Random.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E06_Random.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E06_Random.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E06_Random.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E06_Random.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E06_Random.Exercise_6.Start} + } + }; + //************************ + //*******DateTime********* + //************************ + ExerciseGroup datetimeElements = new() + { + Name = "6. DateTime", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E07_DateTime.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E07_DateTime.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E07_DateTime.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E07_DateTime.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E07_DateTime.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E07_DateTime.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E07_DateTime.Exercise_7.Start} + } + }; + //************************ + //********* IF *********** + //************************ + ExerciseGroup ifElements = new() + { + Name = "8. if", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E08_If.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E08_If.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E08_If.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E08_If.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E08_If.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E08_If.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E08_If.Exercise_7.Start}, + new(){Name = "Übung 8", Method = Exercises_C_Sharp.E08_If.Exercise_8.Start}, + new(){Name = "Übung 9", Method = Exercises_C_Sharp.E08_If.Exercise_9.Start}, + new(){Name = "Übung 10", Method = Exercises_C_Sharp.E08_If.Exercise_10.Start}, + new(){Name = "Übung 11", Method = Exercises_C_Sharp.E08_If.Exercise_11.Start}, + new(){Name = "Übung 12", Method = Exercises_C_Sharp.E08_If.Exercise_12.Start}, + new(){Name = "Übung 13", Method = Exercises_C_Sharp.E08_If.Exercise_13.Start}, + new(){Name = "Übung 14", Method = Exercises_C_Sharp.E08_If.Exercise_14.Start}, + new(){Name = "Übung 15", Method = Exercises_C_Sharp.E08_If.Exercise_15.Start}, + new(){Name = "Übung 16", Method = Exercises_C_Sharp.E08_If.Exercise_16.Start}, + new(){Name = "Übung 17", Method = Exercises_C_Sharp.E08_If.Exercise_17.Start}, + new(){Name = "Übung 18", Method = Exercises_C_Sharp.E08_If.Exercise_18.Start} + } + }; + //************************ + //*******Flowchart******* TODO + //************************ + ExerciseGroup flowchartElements = new() + { + Name = "9. Flowcharts", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******SwitchCase******* TODO + //************************ + ExerciseGroup switchcaseElements = new() + { + Name = "10. switch/case", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //***********FOR********** TODO + //************************ + ExerciseGroup forElements = new() + { + Name = "11. for", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //******Resize Array****** TODO + //************************ + ExerciseGroup resizeArrayElements = new() + { + Name = "12. Resize Array", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******FOREACH******* TODO + //************************ + ExerciseGroup foreachElements = new() + { + Name = "13. foreach", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //**********WHILE********* TODO + //************************ + ExerciseGroup whileElements = new() + { + Name = "14. while", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*********DoWhile********* TODO + //************************ + ExerciseGroup dowhileElements = new() + { + Name = "15. switch/case", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******breakcontinue******* TODO + //************************ + ExerciseGroup breakcontinueElements = new() + { + Name = "16. break / continue", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******StructureDiagram******* TODO + //************************ + ExerciseGroup structurediagramElements = new() + { + Name = "17. Strukturdiagramm", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******Methoden******* + //************************ + ExerciseGroup methodsElements = new() + { + Name = "18. Methoden", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E18_Methods.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E18_Methods.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E18_Methods.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E18_Methods.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E18_Methods.Exercise_6.Start} + } + }; + + //************************ + //*******Überladung******* + //************************ + ExerciseGroup ueberladungElements = new() + { + Name = "19. Überladung", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E19_Überladung.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E19_Überladung.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E19_Überladung.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E19_Überladung.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E19_Überladung.Exercise_5.Start} + } + }; + //************************ + //********LISTEN********** + //************************ + ExerciseGroup listElements = new() + { + Name = "20. Listen", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E20_Lists.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E20_Lists.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E20_Lists.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E20_Lists.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E20_Lists.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E20_Lists.Exercise_6.Start}, + new(){Name = "Übung 7", Method = E20_Lists.Exercise_7.Start}, + new(){Name = "Übung 8", Method = E20_Lists.Exercise_8.Start}, + new(){Name = "Übung 9", Method = E20_Lists.Exercise_9.Start}, + new(){Name = "Übung 10", Method = E20_Lists.Exercise_10.Start}, + new(){Name = "Übung 11", Method = E20_Lists.Exercise_11.Start}, + new(){Name = "Übung 12", Method = E20_Lists.Exercise_12.Start}, + new(){Name = "Übung 13", Method = E20_Lists.Exercise_13.Start} + } + }; + //************************ + //*********Sorting********** + //************************ + ExerciseGroup sortingElements = new() + { + Name = "21. Sortieren", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E21_Sorting.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E21_Sorting.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E21_Sorting.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E21_Sorting.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E21_Sorting.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E21_Sorting.Exercise_6.Start}, + new(){Name = "Übung 7", Method = E21_Sorting.Exercise_7.Start}, + new(){Name = "Übung 8", Method = E21_Sorting.Exercise_8.Start} + } + }; + //************************ + //******Dictionary******** + //************************ + ExerciseGroup dictionaryElements = new() + { + Name = "22. Dictionary", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E22_Dictionary.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E22_Dictionary.Exercise_2.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E22_Dictionary.Exercise_3.Start}, + new(){Name = "Aufgabe 4", Method = Exercises_C_Sharp.E22_Dictionary.Exercise_4.Start}, + new(){Name = "Aufgabe 5", Method = Exercises_C_Sharp.E22_Dictionary.Exercise_5.Start} + } + }; + //************************ + //*******ChatGPT******* TODO + //************************ + ExerciseGroup chatgptElements = new() + { + Name = "23. ChatGPT", + ElementList = new() + { + new(){Name = "Übung 1", Method = E323_ChatGPT.Exercise_1.Start} + } + }; + //************************ + //*********Enums********** + //************************ + ExerciseGroup enumElements = new() + { + Name = "24. Enums", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E24_Enumns.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E24_Enumns.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E24_Enumns.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E24_Enumns.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E24_Enumns.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E24_Enumns.Exercise_6.Start}, + new(){Name = "Übung 7", Method = E24_Enumns.Exercise_7.Start}, + new(){Name = "Übung 8", Method = E24_Enumns.Exercise_8.Start}, + new(){Name = "Übung 9", Method = E24_Enumns.Exercise_9.Start}, + new(){Name = "Übung 10", Method = E24_Enumns.Exercise_10.Start}, + new(){Name = "Übung 11", Method = E24_Enumns.Exercise_11.Start}, + new(){Name = "Übung 12", Method = E24_Enumns.Exercise_12.Start}, + new(){Name = "Übung 13", Method = E24_Enumns.Exercise_13.Start} + } + }; + + //************************ + //*********Tuple********** + //************************ + ExerciseGroup tupleElements = new() + { + Name = "25. Tuple", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E25_Tuple.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E25_Tuple.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E25_Tuple.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E25_Tuple.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E25_Tuple.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E25_Tuple.Exercise_6.Start}, + new(){Name = "Übung 7", Method = E25_Tuple.Exercise_7.Start}, + new(){Name = "Übung 8", Method = E25_Tuple.Exercise_8.Start}, + new(){Name = "Übung 9", Method = E25_Tuple.Exercise_9.Start} + } + }; + //************************ + //*Mehrdimensinale Arrays* + //************************ + ExerciseGroup moredimensionalArrayElements = new() + { + Name = "26. Mehrdimensinale Arrays", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E26_Mehrdimensionale_Arrays.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E26_Mehrdimensionale_Arrays.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E26_Mehrdimensionale_Arrays.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E26_Mehrdimensionale_Arrays.Exercise_4.Start}, + new(){Name = "Übung 5", Method = E26_Mehrdimensionale_Arrays.Exercise_5.Start}, + new(){Name = "Übung 6", Method = E26_Mehrdimensionale_Arrays.Exercise_6.Start}, + new(){Name = "Übung 7", Method = E26_Mehrdimensionale_Arrays.Exercise_7.Start} + } + }; + //************************ + //******Jagged Arrays***** + //************************ + ExerciseGroup jaggedArrayElements = new() + { + Name = "27. Jagged Arrays", + ElementList = new List() + { + new(){Name = "Übung 1", Method = E27_Jagged_Arrays.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E27_Jagged_Arrays.Exercise_2.Start}, + new(){Name = "Übung 3", Method = E27_Jagged_Arrays.Exercise_3.Start}, + new(){Name = "Übung 4", Method = E27_Jagged_Arrays.Exercise_4.Start} + } + }; + //************************ + //********Klassen********* + //************************ + ExerciseGroup classElements = new() + { + Name = "28. Klassen", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E28_Classes.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E28_Classes.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E28_Classes.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E28_Classes.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E28_Classes.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E28_Classes.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E28_Classes.Exercise_7.Start} + } + }; + //************************ + //****Konstruktoren******* + //************************ + ExerciseGroup constructorElements = new() + { + Name = "29. Konstruktoren", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E29_Konstruktoren.Exercise_7.Start} + } + }; + + //************************ + //*******Klassendiagram******* TODO + //************************ + ExerciseGroup classdiagramElements = new() + { + Name = "30. Klassendiagram", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******RAM******* TODO + //************************ + ExerciseGroup ramElements = new() + { + Name = "31. RAM", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //******Exceptions******** + //************************ + ExerciseGroup exceptionElements = new() + { + Name = "32. Exceptions", + ElementList = new List() + { + new(){Name = "Übung 1", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_1.Start}, + new(){Name = "Übung 2", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_2.Start}, + new(){Name = "Übung 3", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_3.Start}, + new(){Name = "Übung 4", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_4.Start}, + new(){Name = "Übung 5", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_5.Start}, + new(){Name = "Übung 6", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_6.Start}, + new(){Name = "Übung 7", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_7.Start}, + new(){Name = "Übung 8", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_8.Start}, + new(){Name = "Übung 9", Method = Exercises_C_Sharp.E32_Exceptions.Exercise_9.Start} + } + }; + //************************ + //*******Methodeninformationen******* TODO + //************************ + ExerciseGroup methodinformationElements = new() + { + Name = "33. Methodeninformationen", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + //************************ + //*******UseCaseDiagram******* TODO + //************************ + ExerciseGroup usecasediagramElements = new() + { + Name = "34. Use Case Diagram", + ElementList = new() + { + new(){Name = "Übung 1", Method = E18_Methods.Exercise_1.Start} + } + }; + + //************************ + //***Dateizugriffe******** + //************************ + ExerciseGroup filesystemElements = new() + { + Name = "35. Dateizugriffe", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_2.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_3.Start}, + new(){Name = "Aufgabe 4", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_4.Start}, + new(){Name = "Aufgabe 5", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_5.Start}, + new(){Name = "Aufgabe 6", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_6.Start}, + new(){Name = "Aufgabe 7", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_7.Start}, + new(){Name = "Aufgabe 8", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_8.Start}, + new(){Name = "Aufgabe 8b", Method = Exercises_C_Sharp.E35_Dateizugriffe.Exercise_8b.Start} + } + }; + + //************************ + //******Dateiformate****** + //************************ + ExerciseGroup fileformatsElements = new() + { + Name = "36. Dateiformate", + ElementList = new() + { + new(){Name = "Übung 1", Method = E36_Dateiforamte.Exercise_1.Start}, + new(){Name = "Übung 2", Method = E36_Dateiforamte.Exercise_2.Start} + } + }; + + //************************ + //*****Serialisierung***** + //************************ + ExerciseGroup serializeElements = new() + { + Name = "37. Serialisierung", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E37_Serialisierung.Exercise_1.Start} + } + }; + + //************************ + //***********MySQL******** + //************************ + ExerciseGroup mysqlElements = new() + { + Name = "38. MySQL", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E38_MySQL.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E38_MySQL.Exercise_2.Start} + } + }; + //************************ + //******* Vererbung ****** + //************************ + ExerciseGroup vererbungElements = new() + { + Name = "40. Vererbung", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E40_Vererbung.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E40_Vererbung.Exercise_2.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E40_Vererbung.Exercise_3.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E40_Vererbung.Exercise_4.Start} + } + }; + //************************ + //******* Interfaces ***** + //************************ + ExerciseGroup interfaceElements = new() + { + Name = "42. Interfaces", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E42_Interfaces.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E42_Interfaces.Exercise_2.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E42_Interfaces.Exercise_3.Start}, + new(){Name = "Aufgabe 4", Method = Exercises_C_Sharp.E42_Interfaces.Exercise_4.Start} + } + }; + //************************ + //******* Kapselung ****** + //************************ + ExerciseGroup kapselungElements = new() + { + Name = "44. Kapselung", + ElementList = new List() + { + new(){Name = "Aufgabe 1", Method = Exercises_C_Sharp.E44_Kapselung.Exercise_1.Start}, + new(){Name = "Aufgabe 2", Method = Exercises_C_Sharp.E44_Kapselung.Exercise_2.Start}, + new(){Name = "Aufgabe 3", Method = Exercises_C_Sharp.E44_Kapselung.Exercise_3.Start} + } + }; + //************************ + //******** Pattern ******* + //************************ + ExerciseGroup patternElements = new() + { + Name = "46. Designpattern", + ElementList = new List() + { + new(){Name = "Singleton", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_1.Start}, + new(){Name = "Factory", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_2.Start}, + new(){Name = "Observer", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_3.Start}, + new(){Name = "Strategy", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_4.Start}, + new(){Name = "Decorator", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_5.Start}, + new(){Name = "Adapter", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_6.Start}, + new(){Name = "Facade", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_7.Start}, + new(){Name = "Command", Method = Exercises_C_Sharp.E46_Designpattern.Exercise_8.Start} + } + }; + + + + //************************ + //****Sonderaufgaben****** + //************************ + ExerciseGroup specialElements = new() + { + Name = "Sonderaufgaben", + ElementList = new List() + { + new(){Name = "Schere Stein Papier Echse Spock", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_1.Start}, + new(){Name = "Schiffe versenken", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_2.Start}, + new(){Name = "Memory", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_3.Start}, + new(){Name = "Minesweeper", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_4.Start}, + new(){Name = "Kniffel", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_5.Start}, + new(){Name = "Mensch ärgere Dich nicht", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_6.Start} + } + }; + + //************************ + //*Entwicklungsaufgaben*** + //************************ + ExerciseGroup developElements = new() + { + Name = "Entwicklungsaufgaben", + ElementList = new List() + { + new(){Name = "Dynamische Eingaben in Echtzeit", Method = Exercises_C_Sharp.Entwicklungsaufgaben.Minispiele.Step_1.Start} + } + }; + + //************************ + //****Schulaufgaben******* + //************************ + ExerciseGroup examElements = new() + { + Name = "Schulaufgaben", + ElementList = new() + { + new(){Name = "001 Klassen", Method = Exercises_C_Sharp.Schulaufgaben.S001_Class.Start}, + new(){Name = "002 Klassen", Method = Exercises_C_Sharp.Schulaufgaben.S002_Class.Start}, + new(){Name = "003 Tuple", Method = Exercises_C_Sharp.Schulaufgaben.S003_Tuple.Start}, + new(){Name = "004 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S004_Enum.Start}, + new(){Name = "005 Tuple", Method = Exercises_C_Sharp.Schulaufgaben.S005_Tuple.Start}, + new(){Name = "006 Multidimensionale Arrays", Method = Exercises_C_Sharp.Schulaufgaben.S006_Multidimensionale_Arrays.Start}, + new(){Name = "007 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S007_Enum.Start}, + new(){Name = "008 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S008_Enum.Start} + } + }; + + //************************ + //****Eigenaufgaben******* + //************************ + ExerciseGroup ownExercises = new() + { + Name = "Eigenaufgaben", + ElementList = new() + { + new(){Name = "Benchmark", Method = Exercises_C_Sharp.Eigenaufgaben.Exercise_1.Start} + } + }; + + + + + + //Zusammenführung + OptionList = new List(){ + beginnerElements, + variableElements, + stringElements, + terminalElements, + arrayElements, + randomElements, + datetimeElements, + ifElements, + flowchartElements, + switchcaseElements, + forElements, + resizeArrayElements, + foreachElements, + whileElements, + dowhileElements, + breakcontinueElements, + structurediagramElements, + methodsElements, + ueberladungElements, + listElements, + sortingElements, + dictionaryElements, + chatgptElements, + enumElements, + tupleElements, + moredimensionalArrayElements, + jaggedArrayElements, + classElements, + constructorElements, + classdiagramElements, + ramElements, + exceptionElements, + methodinformationElements, + usecasediagramElements, + filesystemElements, + fileformatsElements, + serializeElements, + mysqlElements, + vererbungElements, + interfaceElements, + kapselungElements, + patternElements, + + specialElements, + developElements, + + examElements + }; + + Menu(); + } + + //ToDo: Einzelne Lektionen nebeneinander anzeigen + //ToDo: Senden, um zu überprüfen, ob alles richtig ist + //ToDo: Element als erledigt markieren + static void Menu() + { + Console.Clear(); + Console.SetCursorPosition(0,0); + LoadMarkedExercises(); + var pos = LoadCurrentElementAndCurrentList(); + int currentElement = pos.Item1; + int currentList = pos.Item2; + + while(true) + { + Console.Clear(); + Console.WriteLine("Navigation: Pfeiltasten nach oben/unten und Enter"); + Console.WriteLine("______________________________"); + for(int k = 0; k < OptionList.Count; k++) + { + var element = OptionList[k]; + //Console.ReadKey(); + if(currentList == k) + { + Console.WriteLine("*****************************"); + Console.WriteLine(element.Name); + Console.WriteLine("*****************************"); + for(int i = 0; i < element.ElementList.Count; i++) + { + //Der erste Wert vorne ist dafür gedacht, dass markiert wird, wenn die Aufgabe abgegeben und korregiert wurde --> ToDo + Console.WriteLine("{2}{1}[{0}] " + element.ElementList[i].Name, currentElement == i && currentList == k ? "X" : " ", !element.ElementList[i].IsMarked ? " " : "#", element.ElementList[i].FinishState == false ? "NO" : element.ElementList[i].FinishState == false == true ? "OK" : " "); + } + Console.WriteLine("______________________________"); + } + else + { + Console.WriteLine(element.Name); + } + } + var key = Console.ReadKey(); + if(key.Key == ConsoleKey.UpArrow) + { + Console.Clear(); + if(currentElement == 0 && currentList == 0) + { + currentList = OptionList.Count -1; + currentElement = OptionList[OptionList.Count -1].ElementList.Count -1; + } + else if(currentElement == 0 && currentList > 0) + { + currentList--; + currentElement = OptionList[currentList].ElementList.Count -1; + } + else + currentElement--; + } + else if(key.Key == ConsoleKey.DownArrow) + { + Console.Clear(); + if(currentElement == OptionList[currentList].ElementList.Count - 1 && currentList == OptionList.Count -1) + { + currentList = 0; + currentElement = 0; + } + else if(currentElement == OptionList[currentList].ElementList.Count - 1 && currentList < OptionList.Count -1) + { + currentList++; + currentElement = 0; + } + else + { + currentElement++; + } + } + else if(key.Key == ConsoleKey.Enter) + { + Console.Clear(); + try + { + SaveCurrentElementAndCurrentList(currentElement, currentList); + OptionList[currentList].ElementList[currentElement].Method(); + } + catch(Exception ex) + { + Console.WriteLine("******************"); + Console.WriteLine("***** Fehler *****"); + Console.WriteLine("******************"); + Console.WriteLine("Bei der Aufgabe ist folgender Fehler aufgetreten:"); + Console.WriteLine(ex.ToString()); + } + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Aufgabe beendet. Zum Weitermachen Taste drücken..."); + Console.ReadKey(); + } + else if(key.Key == ConsoleKey.X) + { + Console.Clear(); + var el = OptionList[currentList].ElementList[currentElement]; + if(el.IsMarked == false) + OptionList[currentList].ElementList[currentElement].IsMarked = true; + else + OptionList[currentList].ElementList[currentElement].IsMarked = false; + + SaveMarkedExercises(); + } + else if(key.Key == ConsoleKey.RightArrow) + { + //ToDo: Absenden und überprüfen + + } + else if(key.Key == ConsoleKey.V) + { + //Zum Videomenu + OpenLinkToVideo.ShowVideoMenu(OptionList[currentList], OptionList[currentList].ElementList[currentElement]); + } + Console.Clear(); + } + } + + + + //Speichert das zuletzt ausgewählte Element + static void SaveCurrentElementAndCurrentList(int currentElement, int currentList) + { + try + { + if(File.Exists("lastPoint")) + File.Delete("lastPoint"); + + File.WriteAllLines("lastPoint", new List(){currentElement.ToString(), currentList.ToString()}); + } + catch(Exception ex) + { + Console.WriteLine("Sorry, habe anscheindend einen Fehler reinprogrammiert. Ihre Aufgabe ist nun, den Fehler in der Program.cs zu finden und zu fixen. Hierfür bekommen Sie folgenden Hinweis:"); + Console.WriteLine(ex.ToString()); + } + } + static Tuple LoadCurrentElementAndCurrentList() + { + try + { + if(!File.Exists("lastPoint")) + return new Tuple(0,0); + + var el = File.ReadAllLines("lastPoint"); + return new Tuple(Convert.ToInt32(el[0]), Convert.ToInt32(el[1])); + } + catch(Exception ex) + { + Console.WriteLine("Sorry, habe anscheindend einen Fehler reinprogrammiert. Ihre Aufgabe ist nun, den Fehler in der Program.cs zu finden und zu fixen. Hierfür bekommen Sie folgenden Hinweis:"); + Console.WriteLine(ex.ToString()); + } + return new Tuple(0,0); + } + + //ToDo: Richtiges Abspeichern implementieren!!! + //Speichert die markierten Aufgaben ab + static void SaveMarkedExercises() + { + List saveList = new List(); + foreach(var element in OptionList) + { + foreach(var item in element.ElementList) + { + if(item.IsMarked == true) + { + saveList.Add(string.Format("{0}{1} {2}", element.Name, item.Name, item.IsMarked.ToString())); + } + } + } + File.WriteAllLines("markingSave", saveList); + } + static void LoadMarkedExercises() + { + if(!File.Exists("markingSave")) + return; + var el = File.ReadAllLines("markingSave"); + Dictionary dic = new Dictionary(); + foreach(var element in el) + { + string str = element.Substring(0, element.LastIndexOf(" ")); + bool b = Convert.ToBoolean(element.Substring(element.LastIndexOf(" ") + 1)); + dic.Add(str, b); + } + + + foreach(var element in OptionList) + { + for(int i = 0; i < element.ElementList.Count; i++) + { + var key = string.Format("{0}{1}", element.Name, element.ElementList[i].Name); + if(dic.ContainsKey(key)) + { + element.ElementList[i].IsMarked = dic[key]; + } + } + } + } + } +} diff --git a/README.md b/README.md index ac7c2a1..7879059 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ -# Uebungsaufgaben_ITFS_3_SS_2025 - +# Exercises_C_Sharp +Hinweise: +- Wichtig: Hierbei handelt es sich um Übungsaufgaben, die oftmals in der Praxis nicht so verwendet werden sollten. Es geht um die konkrete Übung eines spezifischen Sachverhalts. +- Die Aufgaben befinden sich sortiert zu dem jeweiligen Gebiet in den Ordnern. +- Lesen Sie die oben stehende Aufgaben genau durch und fügen Sie Ihre Lösung zwischen 'Code START' und 'Code ENDE' ein. Sollte es keinen Start und kein Ende geben, sollen Sie die Datei wie in der Aufgabenstellung beschrieben bearbeiten. +- Sie können zwischen START und ENDE beliebig viele Zeilen einfügen oder herauslöschen. Beim Löschen könnte es Bedingungen durch die Aufgabenstellung geben. +- Aufgaben sind teilweise so angepasst, dass der gesamte Code kompilierbar bleibt. Löschen Sie unpassende Dinge, oder ändern Sie diese ab, wenn diese zwischen 'Code START' und 'Code ENDE' stehen. Jeglicher anderer Code MUSS so stehen bleiben und darf nicht verändert werden. +- Ausnahmen dafür sind dynamic-Typen. Diese müssen Sie immer durch den korrekten Typen ersetzen, egal ob diese zwischen Start und Ende stehen, oder nicht. +- Auch die Preprocessordirectives können Sie herauslöschen. Dadurch werden Ihnen Warnungen angezeigt.