Skip to content

Cs math samples #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion csharp/ZahlenSumme/.vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"args": [],
"cwd": "${workspaceRoot}/src/ZahlenSumme",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
"console": "internalConsole",
"console": "externalTerminal",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart"
},
Expand Down
19 changes: 15 additions & 4 deletions csharp/ZahlenSumme/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@

In diesem Beispiel wirst du verschiedene Algorithmen entwickeln mit welchen die Summe von natürlichen Zahlen berechnet werden kann. Dabei wirst du auch einige Konzepte der Programmierung mit C# kennen lernen, wie zum Beispiel _Interfaces_, _Enums_ und _Rekursion_.

Um das Beispiel zu lösen benötigst du ein Hauptprogramm, in dem die Ein- und Ausgabe passiert sowie die weiteren Bestandteile des Projekts miteinander verbunden werden. Außerdem werden noch mehrere Klassen (```class```) für die unterschiedlichen Algorithmen benötigt. Im weiteren skizzieren was diese Bestandteile ausmacht.

---
**Was ist ein Algorithmus**

Ein _Algorithmus_ ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen. Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. Damit können sie zur Ausführung in einem Computerprogramm implementiert, aber auch in menschlicher Sprache formuliert werden. Bei der Problemlösung wird eine bestimmte Eingabe in eine bestimmte Ausgabe überführt.

Quelle: [Wikipedia][wikipedia-algorithmus]
---

## Neues .NET Core Projekt
Zu Beginn lege dir ein neues .NET Core Projekt an. Dazu kannst du in einer Konsole folgende Befehle ausführen. Du kannst in der [Dokumentation der .NET Core CLI Tools][dotnet-cli-tools] nachlesen was die einzelnen Befehle bewirken.

Expand Down Expand Up @@ -53,7 +63,7 @@ switch (meinObst)

### Die Algorithmen

Für dein Programm benötigst du noch die verschiedenen Berechnungsalgorithmen. Sie haben alle etwas gemeinsam, das können wir auch in C# ausdrücken. Für dieses Beispiel verwenden wir dazu ein ```interface``` Algorithmus in dem du beschreibst was eine ```class``` anbieten muss um von unserem Hauptprogramm als Algorithmus verwendet werden zu können.
Für dein Programm benötigst du noch die verschiedenen Berechnungsalgorithmen. Sie haben alle etwas gemeinsam, das können wir auch in C# ausdrücken. Für dieses Beispiel verwenden wir dazu ein ```interface``` in dem du beschreibst was eine ```class``` anbieten muss um von unserem Hauptprogramm als Algorithmus verwendet werden zu können.

Ein ```interface``` für zweidimensionale geometrische Formen kann zum Beispiel so aussehen:

Expand All @@ -77,6 +87,7 @@ Du kannst nun ein ```interface``` erzeugen in dem du beschriebst welche Methoden
Die Ausgabe des fertigen Programms sieht dann zum Beispiel so aus:
![Konsole](images/Console.png)

[dotnet-cli-tools]: https://docs.microsoft.com/en-us/dotnet/core/tools/?tabs=netcore2x
[dotnet-csharp-enum]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
[dotnet-csharp-interface]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interface
[dotnet-cli-tools]: https://docs.microsoft.com/de-de/dotnet/core/tools/?tabs=netcore2x
[dotnet-csharp-enum]: https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/enum
[dotnet-csharp-interface]: https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/interface
[wikipedia-algorithmus]: https://de.wikipedia.org/wiki/Algorithmus
28 changes: 15 additions & 13 deletions csharp/ZahlenSumme/src/ZahlenSumme.sln
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZahlenSumme", "ZahlenSumme\ZahlenSumme.csproj", "{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZahlenSumme", "ZahlenSumme\ZahlenSumme.csproj", "{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -14,21 +13,24 @@ Global
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x64.ActiveCfg = Debug|x64
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x64.Build.0 = Debug|x64
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x86.ActiveCfg = Debug|x86
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x86.Build.0 = Debug|x86
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x64.ActiveCfg = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x64.Build.0 = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x86.ActiveCfg = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Debug|x86.Build.0 = Debug|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|Any CPU.Build.0 = Release|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x64.ActiveCfg = Release|x64
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x64.Build.0 = Release|x64
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x86.ActiveCfg = Release|x86
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x86.Build.0 = Release|x86
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x64.ActiveCfg = Release|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x64.Build.0 = Release|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x86.ActiveCfg = Release|Any CPU
{F8C9EA59-CEE1-4C0C-AF14-ABF5505B5DBA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CFFF3964-9D59-4B73-992E-84609CF5E2E6}
EndGlobalSection
EndGlobal
2 changes: 1 addition & 1 deletion csharp/ZahlenSumme/src/ZahlenSumme/GaussAlgorithmus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace SumOfNumbers
namespace ZahlenSumme
{
public class GaussAlgorithmus : IAlgorithmus
{
Expand Down
2 changes: 1 addition & 1 deletion csharp/ZahlenSumme/src/ZahlenSumme/IAlgorithmus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace SumOfNumbers
namespace ZahlenSumme
{
interface IAlgorithmus
{
Expand Down
57 changes: 30 additions & 27 deletions csharp/ZahlenSumme/src/ZahlenSumme/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System;

namespace SumOfNumbers
namespace ZahlenSumme
{
enum Algorithmus
{
Expand All @@ -13,40 +13,43 @@ class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcher Algorithmus?");
Console.WriteLine(" Schleife ( {0} )", (int)Algorithmus.Schleife);
Console.WriteLine(" Gauss'sche Formel ( {0} )", (int)Algorithmus.Gauss);
Console.WriteLine(" Rekursion ( {0} )", (int)Algorithmus.Rekursion);
while(true)
{
Console.WriteLine("Welcher Algorithmus?");
Console.WriteLine(" Schleife ( {0} )", (int)Algorithmus.Schleife);
Console.WriteLine(" Gauss'sche Formel ( {0} )", (int)Algorithmus.Gauss);
Console.WriteLine(" Rekursion ( {0} )", (int)Algorithmus.Rekursion);

Console.Write("? ");
Algorithmus algorithmus = (Algorithmus)Convert.ToInt32(Console.ReadLine());
Console.Write("? ");
Algorithmus algorithmus = (Algorithmus)Convert.ToInt32(Console.ReadLine());

Console.Write("Zahl: ");
int zahl = Convert.ToInt32(Console.ReadLine());
Console.Write("Zahl: ");
int zahl = Convert.ToInt32(Console.ReadLine());

IAlgorithmus algorithm = null;
IAlgorithmus algorithm = null;

// Algorithmus Objekt erzeugen
switch (algorithmus)
{
case Algorithmus.Schleife:
algorithm = new SchleifenAlgorithmus();
break;
// Algorithmus Objekt erzeugen
switch (algorithmus)
{
case Algorithmus.Schleife:
algorithm = new SchleifenAlgorithmus();
break;

case Algorithmus.Gauss:
algorithm = new GaussAlgorithmus();
break;
case Algorithmus.Gauss:
algorithm = new GaussAlgorithmus();
break;

case Algorithmus.Rekursion:
algorithm = new RecursionAlgorithmus();
break;
}
case Algorithmus.Rekursion:
algorithm = new RecursionAlgorithmus();
break;
}

// Berechnung
int summe = algorithm.Summe(zahl);
// Berechnung
int summe = algorithm.Summe(zahl);

// Ausgabe
Console.WriteLine($"Summe der Zahlen bis {zahl} ist {summe}");
// Ausgabe
Console.WriteLine($"Summe der Zahlen bis {zahl} ist {summe}");
}
}
}
}
2 changes: 1 addition & 1 deletion csharp/ZahlenSumme/src/ZahlenSumme/RecursionAlgorithmus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace SumOfNumbers
namespace ZahlenSumme
{
public class RecursionAlgorithmus : IAlgorithmus
{
Expand Down
2 changes: 1 addition & 1 deletion csharp/ZahlenSumme/src/ZahlenSumme/SchleifenAlgorithmus.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace SumOfNumbers
namespace ZahlenSumme
{
public class SchleifenAlgorithmus : IAlgorithmus
{
Expand Down