Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
ef_informatik:programmieren_csharp [2023-09-12 07:29] – sca | ef_informatik:programmieren_csharp [2025-09-23 12:21] (aktuell) – [Aufgabe D5] sps | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Programmieren in C# ====== | ====== Programmieren in C# ====== | ||
+ | |||
+ | ++++Lernziele| | ||
+ | |||
+ | * **Grundlagen C#**, alles im Dossier unten: | ||
+ | * Variablen | ||
+ | * Schleifen | ||
+ | * Verzweigungen | ||
+ | * Funktionen | ||
+ | * Arrays | ||
+ | * Listen | ||
+ | * ... | ||
+ | |||
+ | |||
+ | ++++ | ||
**Slides:** | **Slides:** | ||
Zeile 7: | Zeile 21: | ||
* {{ : | * {{ : | ||
* {{ : | * {{ : | ||
+ | * {{ : | ||
{{: | {{: | ||
Zeile 20: | Zeile 35: | ||
==== - Installation & Hello World ==== | ==== - Installation & Hello World ==== | ||
- | Um C# zu programmieren, verwenden wir die IDE **Visual Studio** (kurz: **VS**) von Microsoft. Achtung: Nicht zu verwechseln mit dem *Visual Studio Code*! | + | Verwende eine der beiden Möglichkeiten, |
+ | |||
+ | | ||
+ | 1. **Visual Studio Code** (Windows & Mac) | ||
+ | |||
+ | |||
+ | === C# in Visual Studio === | ||
- Lade die **Community Edition** (gratis) des **Visual Studios** von der Website https:// | - Lade die **Community Edition** (gratis) des **Visual Studios** von der Website https:// | ||
- ... und installiere sie. | - ... und installiere sie. | ||
Zeile 26: | Zeile 48: | ||
- Diese Projekt enthält bereits Code, der wie unten angezeigt aussehen sollte. | - Diese Projekt enthält bereits Code, der wie unten angezeigt aussehen sollte. | ||
- Dieses Programm ist das bekannteste Programm der Welt: **Hello World**. Alles was dieses Programm macht, ist die Nachricht '' | - Dieses Programm ist das bekannteste Programm der Welt: **Hello World**. Alles was dieses Programm macht, ist die Nachricht '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === C# in Visual Code === | ||
+ | |||
+ | 1. .NET SDK installieren: | ||
+ | 1. Check ob hat funktioniert: | ||
+ | dotnet --version | ||
+ | </ | ||
+ | 1. VSCode installieren | ||
+ | 1. C# Extension von Microsoft in VSCode installieren | ||
+ | 1. Neues C#-Projekt: < | ||
+ | dotnet new console -n MyFirstApp | ||
+ | cd MyFirstApp | ||
+ | code . | ||
+ | </ | ||
+ | 1. Programm ausführen:< | ||
+ | dotnet run | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Top-Level Statements === | ||
Seit C# 9.0 werden standardmässig Top-Level Statements verwendet. Damit sieht ein einfaches "Hello World" | Seit C# 9.0 werden standardmässig Top-Level Statements verwendet. Damit sieht ein einfaches "Hello World" | ||
Zeile 493: | Zeile 540: | ||
</ | </ | ||
- Was macht der Code? Versuche es herauszufinden, | - Was macht der Code? Versuche es herauszufinden, | ||
- | - Schreibe nun den Code so um, dass die Schleife das unten angezeigt | + | - Schreibe nun den Code so um, dass die Schleife das unten angezeigte |
<code csharp> | <code csharp> | ||
... | ... | ||
Zeile 508: | Zeile 555: | ||
=== Aufgabe D5 === | === Aufgabe D5 === | ||
- | Schreibe ein einfache | + | Schreibe ein einfaches |
Folgender Code gibt einem $10$ **Zufallszahlen** im Bereich $1$ bis $5$ aus und dient als Beispiel dafür, wie man Zufallszahlen generiert: | Folgender Code gibt einem $10$ **Zufallszahlen** im Bereich $1$ bis $5$ aus und dient als Beispiel dafür, wie man Zufallszahlen generiert: | ||
Zeile 543: | Zeile 590: | ||
=== Aufgabe E2 === | === Aufgabe E2 === | ||
- **Primzahlen** sind positive ganze Zahlen, die nur durch sich selbst und $1$ teilbar sind, also $2, | - **Primzahlen** sind positive ganze Zahlen, die nur durch sich selbst und $1$ teilbar sind, also $2, | ||
- | - Mache eine Kopie deines Programms. Nun soll eine Zahl eingegeben werden und sämtliche kleiner gleich dieser Zahl ausgegeben werden. | + | - Mache eine Kopie deines Programms. Nun soll eine Zahl eingegeben werden und sämtliche |
=== Aufgabe E3 === | === Aufgabe E3 === | ||
Zeile 743: | Zeile 790: | ||
=== Aufgabe G4 === | === Aufgabe G4 === | ||
- | Die meisten Programmiersprachen kommen mit vielen vorprogrammierten Utility-Functions daher, die einem das Leben vereinfachen. Ziel dieser Aufgabe ist es, diese Utility-Functions selbst zu programmieren, | + | Die meisten Programmiersprachen kommen mit vielen vorprogrammierten Utility-Functions daher, die einem das Leben vereinfachen. Ziel dieser Aufgabe ist es, diese **Utility-Functions selbst zu programmieren**, und dabei nur die *rudimentärsten Befehle* wie Schleifen oder if-else zu verwenden. Vordefinierte String-Methoden wie Length, Split usw. dürfen natürlich nicht verwendet werden. Es sollen auch *keine Listen* sondern nur Arrays verwendet werden. Natürlich |
- | | + | |
- | | + | |
- | | + | 1. Funktion `NumberOfChar`, |
- | | + | 1. Funktion `PositionsOfChar`, |
+ | 1. Funktion `Split`, die einen String bei jedem Vorkommen eines bestimmten Zeichens auftrennt und die Teile in einem Array zurückgibt, | ||
Zeile 859: | Zeile 907: | ||
</ | </ | ||
- | < | + | < |
++++Aufgaben D| | ++++Aufgaben D| | ||
Zeile 1118: | Zeile 1166: | ||
if (z >= 2) | if (z >= 2) | ||
{ | { | ||
- | for (int i = 2; i <= Math.Sqrt(33); i++) | + | for (int i = 2; i <= Math.Sqrt(z); i++) |
{ | { | ||
if (z % i == 0) | if (z % i == 0) | ||
Zeile 1189: | Zeile 1237: | ||
} | } | ||
- | WriteArray(naturalNumbers); | + | WriteIntArray(naturalNumbers); |
- | WriteArray(evenNumbers); | + | WriteIntArray(evenNumbers); |
- | WriteArray(squareNumbers); | + | WriteIntArray(squareNumbers); |
// F2 | // F2 | ||
Zeile 1234: | Zeile 1282: | ||
} | } | ||
- | WriteArray(primeNumbers); | + | WriteIntArray(primeNumbers); |
- | WriteArray(fibonacciNumbers); | + | WriteIntArray(fibonacciNumbers); |
// UTILITY FUNCTION | // UTILITY FUNCTION | ||
- | void WriteArray(int[] arr) | + | void WriteIntArray(int[] arr) |
{ | { | ||
if (arr.Length == 0) { return; } | if (arr.Length == 0) { return; } | ||
Zeile 1319: | Zeile 1367: | ||
<code csharp> | <code csharp> | ||
+ | // G4 | ||
+ | Console.WriteLine(Length("" | ||
+ | Console.WriteLine(NumberOfChar(" | ||
+ | WriteIntArray(PositionsOfChar(" | ||
+ | WriteStringArray(Split(" | ||
+ | static int Length(string s) | ||
+ | { | ||
+ | int i = 0; | ||
+ | while (true) | ||
+ | { | ||
+ | try | ||
+ | { | ||
+ | char c = s[i]; | ||
+ | i++; | ||
+ | } | ||
+ | catch (Exception ex) | ||
+ | { | ||
+ | return i; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | static int NumberOfChar(string s, char c) | ||
+ | { | ||
+ | int count = 0; | ||
+ | for (int i = 0; i < Length(s); i++) | ||
+ | { | ||
+ | if (s[i] == c) { count++; } | ||
+ | } | ||
+ | return count; | ||
+ | } | ||
+ | |||
+ | static int[] PositionsOfChar(string s, char c) | ||
+ | { | ||
+ | int count = NumberOfChar(s, | ||
+ | int[] positions = new int[count]; | ||
+ | int j = 0; | ||
+ | for (int i = 0; i < Length(s); i++) | ||
+ | { | ||
+ | if (s[i] == c) { | ||
+ | positions[j] = i; | ||
+ | j++; | ||
+ | } | ||
+ | } | ||
+ | return positions; | ||
+ | } | ||
+ | |||
+ | static string[] Split(string s, char c) | ||
+ | { | ||
+ | int count = NumberOfChar(s, | ||
+ | string[] subStrings = new string[count + 1]; | ||
+ | string sub = ""; | ||
+ | int j = 0; | ||
+ | for (int i = 0; i < Length(s); i++) | ||
+ | { | ||
+ | if (s[i] == c) | ||
+ | { | ||
+ | subStrings[j] = sub; | ||
+ | sub = ""; | ||
+ | j++; | ||
+ | continue; | ||
+ | } | ||
+ | sub += s[i]; | ||
+ | } | ||
+ | subStrings[j] = sub; | ||
+ | return subStrings; | ||
+ | } | ||
+ | |||
+ | // UTILITY FUNCTION | ||
+ | void WriteIntArray(int[] arr) | ||
+ | { | ||
+ | if (arr.Length == 0) { return; } | ||
+ | for (int i = 0; i < arr.Length - 1; i++) | ||
+ | { | ||
+ | Console.Write(arr[i] + "," | ||
+ | } | ||
+ | Console.WriteLine(arr[arr.Length - 1]); | ||
+ | } | ||
+ | |||
+ | void WriteStringArray(string[] arr) | ||
+ | { | ||
+ | if (arr.Length == 0) { return; } | ||
+ | for (int i = 0; i < arr.Length - 1; i++) | ||
+ | { | ||
+ | Console.Write(arr[i] + "," | ||
+ | } | ||
+ | Console.WriteLine(arr[arr.Length - 1]); | ||
+ | } | ||
</ | </ | ||