Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
ef_informatik:programmieren_csharp [2023-09-12 07:18] scaef_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:
    * {{ :ef_informatik:efif_jahr_a_03_scope.pdf |}}    * {{ :ef_informatik:efif_jahr_a_03_scope.pdf |}}
    * {{ :ef_informatik:efif_jahr_a_04_git_github.pdf |}}    * {{ :ef_informatik:efif_jahr_a_04_git_github.pdf |}}
 +   * {{ :ef_informatik:efif_jahr_a_05_strings.pdf |}}
  
 {{:ef_informatik:imgoodatcsharp.jpg?300|}} {{:ef_informatik:imgoodatcsharp.jpg?300|}}
Zeile 730: Zeile 745:
 === Aufgabe G2 === === Aufgabe G2 ===
  
-Schreibe eine Funktion `FahrenheitToCelsius`, die eine Temperatur als Gleitkommazahl von Fahrenheit in Celsius umrechnet und zurück gibt.+Schreibe zwei Funktionen `FahrenheitToCelsius` und `CelsiusToFahrenheit`, die eine Temperatur als Gleitkommazahl von zwischen Fahrenheit und Celsius umrechnen und zurückgeben.
 Wieviel Grad sind 212 Fahrenheit? Wieviel Grad sind 212 Fahrenheit?
  
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, und dabei nur die *rudimentärsten Befehle* wie Schleifen oder if-else zu verwenden. Es sollen auch *keine Listen* sondern nur Arrays verwendet werden. Natürlich sollen selbst programmierte Utility-Functions verwendet werden dürfen. +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 darfst du selbst programmierte Utility-Functions wiederverwenden dürfen. Beispiel: Nachdem du deine eigene `Length`-Funktion definiert hast, darfst du diese verwenden für die nächsten Funktionen
-  Funktion `Length`, die die Länge eines Strings bestimmt und zurück gibt. Schaffst du das ohne die Methode Length, die bei jedem String vorhanden ist? + 
-  Funktion `NumberOfChar`, die überprüft, wie oft ein bestimmter Buchstabe (Typ: char) in einem String vorkommt, zB. \\ `int i = NumberOfChar("Nerds sind nicht normal", 'n')` +   1. Funktion `Length`, die die Länge eines Strings bestimmt und zurück gibt. Programmiere dies ohne die Methode Length, die bei jedem String vorhanden ist. Verwende auch kein foreach (verwendet intern wohl auch Length). 
-  Funktion `PositionsOfChar`, die in einem Array sämtliche Positionen eines Buchstaben in einem String angibt, zB. \\ `int[] i = PositionsOfChar("Nerds sind nicht normal", 'n')` +   1. Funktion `NumberOfChar`, die überprüft, wie oft ein bestimmter Buchstabe (Typ: char) in einem String vorkommt, zB. \\ `int i = NumberOfChar("Nerds sind nicht normal", 'n')` 
-  Funktion `Split`, die einen String bei jedem Vorkommen eines bestimmten Zeichens auftrennt und die Teile in einem Array zurückgibt, zB. \\ `string[] a = Split("Ein Satz mit fünf Wörtern", ' ')`+   1. Funktion `PositionsOfChar`, die in einem Array sämtliche Positionen eines Buchstaben in einem String angibt, zB. \\ `int[] i = PositionsOfChar("Nerds sind nicht normal", 'n')` 
 +   1. Funktion `Split`, die einen String bei jedem Vorkommen eines bestimmten Zeichens auftrennt und die Teile in einem Array zurückgibt, zB. \\ `string[] a = Split("Ein Satz mit fünf Wörtern", ' ')`
  
  
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> </code>
  
 <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); j++)
 +    {
 +        if (z % j == 0)
 +        {
 +            return false;
 +        }
 +    }
 +    return true;
 +}
 +</code>
 +
 +<code csharp>
 +// G4
 +Console.WriteLine(Length(""));
 +Console.WriteLine(NumberOfChar("Nerds sind nicht normal", 'n'));
 +WriteIntArray(PositionsOfChar("Nerds sind nicht normal", 'n'));
 +WriteStringArray(Split("Nerds sind nicht normal", ' '));
 +
 +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, c);
 +    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, c);
 +    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]);
 +}
 </code> </code>
  
  • ef_informatik/programmieren_csharp.1694503136.txt.gz
  • Zuletzt geändert: 2023-09-12 07:18
  • von sca