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:15] – [9. Lösungen] 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 725: Zeile 740:
 In dieser ersten Aufgabe geht es darum, möglichst viele, kurze Funktionen zu schreiben. Rufe sämtliche programmierte Funktionen für verschiedene Inputs auf. In dieser ersten Aufgabe geht es darum, möglichst viele, kurze Funktionen zu schreiben. Rufe sämtliche programmierte Funktionen für verschiedene Inputs auf.
    - Schreibe eine Funktion `AnswerToEverything`, die keine Argumente entgegennimmt und nichts zurück gibt. Es soll nur die Zahl $42$ in die Konsole geschrieben werden.    - Schreibe eine Funktion `AnswerToEverything`, die keine Argumente entgegennimmt und nichts zurück gibt. Es soll nur die Zahl $42$ in die Konsole geschrieben werden.
-   - Schreibe eine Funktion `Sum`, die zwei ints entgegennimmt und die Summe von diesen berechnet.+   - Schreibe eine Funktion `Sum`, die zwei ints entgegennimmt und die Summe von diesen berechnet und zurückgibt.
    - Schreibe eine Funktion `isEven` vom Typ Boolean, die einen int entgegen nimmt. Falls dieser gerade (even) ist, wird `true` und ansonsten `false` zurückgegeben.    - Schreibe eine Funktion `isEven` vom Typ Boolean, die einen int entgegen nimmt. Falls dieser gerade (even) ist, wird `true` und ansonsten `false` zurückgegeben.
  
 === 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 1254: Zeile 1270:
  
 <code csharp> <code csharp>
 +// G1
 +AnswerToEverything();
 +Console.WriteLine(Sum(39, 3));
 +Console.WriteLine(isEven(42));
 +
 +static void AnswerToEverything()
 +{
 +    Console.WriteLine(42);
 +}
 +
 +static int Sum(int a, int b)
 +{
 +    return a + b;
 +}
 +
 +static bool isEven(int x)
 +{
 +    if (x % 2 == 0)
 +    {
 +        return true;
 +    }
 +    return false;
 +}
 </code> </code>
  
 <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.1694502905.txt.gz
  • Zuletzt geändert: 2023-09-12 07:15
  • von sca