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:22] – sca | ef_informatik:programmieren_csharp [2023-10-03 14:42] (aktuell) – sca | ||
---|---|---|---|
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 743: | Zeile 758: | ||
=== 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 1189: | Zeile 1205: | ||
} | } | ||
- | WriteArray(naturalNumbers); | + | WriteIntArray(naturalNumbers); |
- | WriteArray(evenNumbers); | + | WriteIntArray(evenNumbers); |
- | WriteArray(squareNumbers); | + | WriteIntArray(squareNumbers); |
// F2 | // F2 | ||
Zeile 1234: | Zeile 1250: | ||
} | } | ||
- | 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 1280: | Zeile 1296: | ||
<code csharp> | <code csharp> | ||
+ | // G2 | ||
+ | Console.WriteLine(FahrenheitToCelsius(212.0)); | ||
+ | |||
+ | static double FahrenheitToCelsius(double fahrenheit) | ||
+ | { | ||
+ | return (fahrenheit - 32.0) * 5.0/9.0; | ||
+ | } | ||
+ | |||
+ | static double CelsiusToFahrenheit(double celsius) | ||
+ | { | ||
+ | return celsius * 9.0/5.0 + 32.0; | ||
+ | } | ||
</ | </ | ||
<code csharp> | <code csharp> | ||
+ | // G3 | ||
+ | for (int i = 2; i <= 100; i++) | ||
+ | { | ||
+ | if (isPrime(i)) | ||
+ | { | ||
+ | Console.Write(i + "," | ||
+ | } | ||
+ | } | ||
+ | |||
+ | static bool isPrime(int z) | ||
+ | { | ||
+ | if (z < 2) { return false; } | ||
+ | for (int j = 2; j <= Math.Sqrt(z); | ||
+ | { | ||
+ | if (z % j == 0) | ||
+ | { | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | return true; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <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]); | ||
+ | } | ||
</ | </ | ||