LF06.3 - Anwendungsentwicklung

Nutzen Sie den C# Online Compiler. Alternativ können sie auch eine andere, bereits installierte IDE nutzen.

Speichern Sie den Quellcode der erstellten Programme ab.

1 Kurze Wiederholung C#

Hier ein kleines Programm, das ein Gerüst enthält auf dem die Aufgaben aufgebaut werden können. Siehe auch [1], [2], [3].

using System;

namespace HelloWorld
{
   public class Program
   {
      public static void Main(string[] args)
      {
         int iZahl1, iZahl2, iErgebnis;	// int-Variablen deklariert
         int[] aiZahlen = { 1, 2, 3, 4, 5, 6 };	// int-Array deklariert und gefuellt
         string sEingabe;	// für die Eingabe

         Console.Write("Geben Sie die erste  Zahl ein: ");
         sEingabe = Console.ReadLine();	// Eingabe durch Benutzer
         iZahl1 = Convert.ToInt32(sEingabe);	// konvertiert in int

         Console.Write("Geben Sie die zweite Zahl ein: ");
         iZahl2 = Convert.ToInt32(Console.ReadLine());	// hier beides zusammen

         iErgebnis = iZahl1 + iZahl2;

         Console.WriteLine("Die Summe von " + iZahl1 + " und " + iZahl2 + " ist " + iErgebnis);
			
         foreach (int i in aiZahlen)	// Array ausgeben
         {
            Console.Write(i + " ");
         } 
      }
   }
}

2 Suchalgorithmen

2.1 Lineare Suche

Die Lineare Suche ist der einfachste Suchalgorithmus, der eine Liste durchläuft, bis er das gesuchte Element gefunden hat.

2.2 Binäre Suche

Bei der Binären Suche wird die Zahl der Suchschritte gegenüber der Linearen Suche deutlich reduziert.

Arbeitsauftrag:

  1. In einem sortierten Array mit zwanzig ganzen Zahlen soll die Position einer gesuchten Zahl ermittelt werden.
    1. Stellen Sie die Suche mit Hilfe eines Struktogramms dar.
    2. Erstellen Sie eine Kopie des Struktogramms und ersetzen Sie die Funktionen durch umgangssprachliche Formulierungen.
    3. Erstellen Sie eine Funktion in C#, die die gesuchte Zahl als Parameter übergeben bekommt und die Position als Rückgabewert zurückgibt. Geben Sie die Anzahl der Schleifendurchläufe aus.
  2. Stellen Sie die Lineare und die Binäre Suche vergleichend gegenüber, nennen Sie dabei jeweils Vor- und Nachteile.

3 Sortieralgorithmen

3.1 Minsort

Ist ein sehr einfach Sortieralgorithmus[4]. Er sucht das bisher kleinste Element einer Liste und vertauscht es mit dem aktuellen Element. Dannach wird die Liste verkleinert.

Arbeitsauftrag:

  1. Stellen Sie den Suchalgorithmus mit einem Programmablaufplan[5] dar. (Z.B.: PapDesigner[6], Draw.io oder auf Papier)
  2. Erstellen Sie eine Kopie des PAPs und ersetzen Sie die Funktionen durch umgangssprachliche Formulierungen.
  3. Erstellen Sie ein Programm, dass ein nicht sortiertes Array mit zwanzig Zahlen mit Hilfe des Minsorts soriert und das sortierte Array sowie die Anzahl der benötigten Schleifendurchläufe ausgibt.
  4. Erweitern Sie das Programm, das nach jedem Schleifendurchlauf das Array ausgegeben wird.
    Kommentieren Sie den Quelltext ausführlich.

3.2 Bubblesort

Beim Bubblesort werden immer zwei nebeneinander liegende Zahlen verglichen. Ist die linke Zahl kleiner, werden die beiden vertauscht. Die Liste wird so oft durchlaufen, bis alle Elemente sortiert sind.

Arbeitsauftrag:

  1. Sehen Sie sich die Funktionsweise des Bubblesort an und bilden Sie diese mit einem Programmablaufplan ab. Setzten Sie hierbei genau den Quelltext aus dem Demo um.
  2. Erstellen Sie eine Kopie des PAPs und ersetzen Sie die Funktionen durch umgangssprachliche Formulierungen.
  3. Erstellen Sie ein Programm, dass ein nicht sortiertes Array mit zwanzig Zahlen mit Hilfe des Bubblesorts soriert und das sortierte Array sowie die Anzahl der benötigten Schleifendurchläufe ausgibt.
  4. Erweitern Sie das Programm, das nach jedem Schleifendurchlauf das Array ausgegeben wird.
    Kommentieren Sie den Quelltext ausführlich.

3.3 Quicksort

Quicksort ist ein schneller, rekursiver[7], [8] Sortieralgorithmus[9].

Arbeitsauftrag:

  1. Erstellen Sie ein Programm, dass ein nicht sortiertes Array mit zwanzig Zahlen soriert und das sortierte Array sowie die Anzahl der benötigten Schleifendurchläufe ausgibt.
  2. Variieren Sie das Array und beobachten Sie das Ergebnis.

3.4 Mergesort

Mergesort[10] teilt eine unsortierte Liste in zwei Teillisten, die dann sortiert und anschließend zusammengeführt werden. Dieser Algorithmus eignet sich besonders für verkettete Listen.

Arbeitsauftrag:

  1. Erstellen Sie ein Programm, dass ein nicht sortiertes Array mit zwanzig Zahlen soriert und das sortierte Array sowie die Anzahl der benötigten Schleifendurchläufe ausgibt.
  2. Variieren Sie das Array und beobachten Sie das Ergebnis.

4 Softwaretest

Zwölf Testregeln nach Georg Erwin Thaller
(Thaller, G. E.: Software-Test. Verifikation und Validation. Heise Heinz, 2002, ISBN: 3-88229-198-2)

  1. Ein Programmierer sollte nie versuchen, sein eigenes Programm zu testen.
  2. Die mit Entwurf und Programmierung betreute Gruppe sollte nie versuchen, ihr eigenes Programm zu testen.
  3. Planen Sie keine Tests unter der Annahme, dass doch keine Fehler gefunden werden.
  4. Testen ist das Ausführen eines Programms, um Fehler zu finden.
  5. Das Testen von Software ist eine kreative und intellektuell herausfordernde Tätigkeit.
  6. Die Ergebnisse der Tests müssen gründlich untersucht werden.
  7. Vor dem Test müssen die erwarteten Ergebnisse definiert werden.
  8. Die Suche nach nicht verlangten Funktionen ist Teil der Tests.
  9. Neben gültigen Eingaben sind auch immer ungültige Eingaben zu testen.
  10. Testfälle sind eine Investition.
  11. Fehler sind meist heterogen verteilt.
  12. Das Testen von Software ist immer ein Experiment.

Überblick über Testverfahren


Arbeitsauftrag:

  1. Lesen Sie zunächst die Testregeln durch.
  2. Diskutieren Sie deren Sinn und Hintergrund innerhalb einer kleinen Gruppe (3-4 Personen maximal) und notieren Sie zu jeder Regel in kurzen Stichpunkten:
    • Warum ergibt die Regel Sinn?
    • Was folgt aus der Regel für den Test bzw. die Testplanung oder Testdurchführung?
  3. Was versteht man unter einem BlackBox-Tests und was ist seine Zielsetzung?
    Erstellen Sie ein Formular zur Durchführung.
  4. Was versteht man unter einem WhiteBox-Tests und worin besteht der Unterschied zum BlackBox-Test? Grenzen Sie die beiden Testarten voneinander ab.
    Erstellen Sie ein Formular zur Durchführung.
  5. Führen Sie beide Tests bei einem Sortieralgorithmus Ihrer Wahl, den Sie nicht selbst programmiert haben, vollständig durch. Wählen Sie sinnvolle Testfälle und Daten aus, planen und dokumentieren Sie die Test. Verwenden Sie hierzu die erstellten Formulare.

5 Netzwerk-Anbindung mit ESP8266

Der in diesem Abschnitt verwendete ESP8266 lässt sich weitgehend mit den gleichen Befehlen programmieren wie der ATmega328. Zusätzlich enthält der Chip ein WiFi-Modul, mit dem sich umfangreiche Möglichkeiten ergeben auf die Ein- und Ausgänge zuzugreifen.

Zum Kapitel Netzwerk-Anbindung mit ESP8266...