Dienstag, 8. Oktober 2013

 

C# programmieren (POS1: 4BHIF)

Abgabename: 2013_4bhif_aufgabe2_name_vorname.zip
Verwenden Sie eine Projektmappe und teilen Sie die Aufgaben in Projekte oder machen Sie ein einziges Projekt, bei dem man aber irgendwie auswählen kann, welche Teilaufgabe gestartet wird.

Sie haben nun schon zwei Jahre Java und ein Jahr Python programmiert. Nun geht es darum das bereits erworbene Können möglichst schnell auf die Sprache C# zu übertragen. Dazu sind kurze einfache Aufgabenstellungen gut geeignet. Es folgt nun eine Liste von Aufgabenstellungen für Konsolenprogramme. Sie dürfen Ihre Progrämmchen auch mit einer GUI versehen, gefordert ist das jedoch nicht.

  1. Hello World
    Richten Sie Ihr Visual Studio so ein, dass alle Ihre Dateien automatisch einen Header mit Ihrem Namen, Klasse usw. enthalten.
    Erstellen Sie dann ein "Hello World"-Programm. Dieses Programm soll "Hello World!" ausgeben, wenn keine Kommandozeilenparameter angegeben wurden, anderenfalls sollen die Parameter als Namen interpretiert werden, die dann gegrüßt werden. Dabei sollen immer zwei Namen paarweise ausgegeben werden (siehe Beispiel).
    Aufruf
    hello.exe Toni Barbara Klaus
    
    Ausgabe
    Hello Toni und Barbara!
    Hello Klaus!
    
  2. ISBN/EAN
    Schreiben Sie eine Methode, welche die Prüfziffern von ISBN (Internationale Standardbuchnummer) bzw. EAN (European Article Number) prüfen kann. Dabei wird die Prüfziffer (als String) eingegeben, von welcher die Prüfziffer als Rückgabewert ausgegeben wird.
    int GetCheckDigit(string isbnWithoutCheckDigit);
    
    Daraus leitet sich eine zweite Methode ab, welche einen String inklusive Prüfziffer prüft:
    bool CheckISBN(string isbn);
    
    Diese Methode entfernt alle Trennzeichen (Leerzeichen, Bindestriche).
    Algorithmus:
    1. s = z1 + z2 * 2 + z3 * 3 + ... + z9 * 9
    2. p = s mod 11
    3. Falls p gleich 10, dann ist die Prüfziffer "X" sonst die Ziffer selbst.
    Schreiben Sie analoge Methoden für EAN, ISBN-13 und EAN-13. Informationen zur Berechnung finden Sie im Internet ;-)
  3. Römische Zahlen
    Schreiben Sie Methoden zum Umrechnen von ganzen Zahlen (1 bis 3000) in Römische Zahlen und umgekehrt. Die römischen Ziffern haben folgende Bedeutung:
    I ...    1
    V ...    5
    X ...   10
    L ...   50
    C ...  100
    D ...  500
    M ... 1000
    
    Beachten Sie, dass nur jeweils drei gleiche Ziffern hintereinander geschrieben werden. Stattdessen wird die nächst größere Einheit benutzt und eine Einheit abgezogen (XC = 90, XCIX = 99, IX = 9, VIII = 8).
    Die Prototypen sollen sein:
    string IntToRoman(int number);
    int RomanToInt(string romanNumber);
    
  4. Unit Tests
    Erstellen Sie für die obigen beiden Aufgaben Unit-Tests. Lesen Sie dazu Verifying Code by Using Unit Tests.
  5. Wörter suchen
    Laden Sie sich die gepackte Wortliste herunter. Die Datei enthält nur eine Textdatei deutsch.txt, welche eine sortierte Liste von Wörtern, jeweils ein Wort in einer Zeile enthält (stammt von Firefox). Achtung: der Zeilenumbruch besteht nur aus '\n' (Unix) und die Kodierung ist UTF-8.
    Schreiben Sie eine Methode GetWordList(string word), welche eine Liste von Worten liefert, die mit dem String word beginnen.
    Implementieren Sie sowohl lineare als auch binäre Suche und vergleichen Sie diese.
    Verwenden Sie unterschiedliche Datenstrukturen (die zwei Typen von C#-Arrays und Collections) und vergleichen Sie die Lösungen punkto Laufzeit und Speicherbedarf.
    Schreiben Sie eine weitere Methode GetWordListEnding(string ending), welche eine Liste von Worten liefert, die mit ending endet. Ist hier binäre Suche möglich?
  6. Unit Tests
    Erstellen sie für die obige Aufgabe passende Unit Tests.
  7. Laufzeitmessungen
    Schreiben Sie ein Programm runtime, welches die Laufzeiten der unterschiedlichen Implementierungen von GetWordList(string word) und GetWordListEnding(string ending) ermittelt. Verwenden Sie die Wortanfänge "Distanz", "Erdbi" und "Finanzind" und die Endungen "gulierung", "dcomputer" und "chsdor".
    Das Programm soll bei jedem Test folgende Informationen ausgeben:
    Anzahl der gefundenen Worte und die Laufzeit.
    Bilden Sie die Mittelwerte für die einzelnen Methoden (binäre/sequentielle Suche) bzw. die Implementierungen mit Arrays oder Collections.
    Wie sind die Ergebnisse zu interpretieren?
  8. 25 im Quadrat
    Auf zwölf quadratischen Kärtchen sind die Zahlen 1 bis 12 gedruckt. Diese Kärtchen sollen so in einem Quadrat angeordnet werden, sodass ein 4x4-Quadrat in der Mitte frei bleibt (die Kantenlänge beträgt also 4).
    1. Ermitteln Sie eine Anordnung der Karten, sodass die Summe aller Karten einer Kante (4 Karten) jeweils den Wert 25 ergibt.
    2. Ermitteln Sie die Anzahl der Lösungen.
    3. Ermitteln Sie alle Lösungen (es sind sehr viele!).
    Hinweis: es gibt 12! (~480.000.000) Möglichkeiten, die Kärtchen anzuordnen. Dennoch sollte es in wenigen Minuten möglich sein.

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]