Allgemeines
- Abgaben der Aufgabenlösungen ab sofort
pünktlich!
- Ausgedruckte Quelltexte etc.:
- sehr gut: alles für Test 1 ausdrucken, für die
folgenden nur die Unterschiede (übersichtlich +
erlüutert)
- auch gut: alles separat drucken (das Tool a2ps
verwenden!); klarmachen, welche Datei zu welchem Test gehört
- nicht gut: alles in einer Datei zusammenkopieren
und Drucken
- nicht gut: ausserhalb des druckbaren Bereichs
drucken, so dass (grosse) Teile der schriftlichen Lösung
nicht lesbar sind
- schriftliche Abgaben sollen mindestens das enthalten, was auf Seite
5 angegeben wurde
- elektronische Abgaben sollen mindestens das enthalten, was auf
Seite 5 aufgeführt wurde, das beinhaltet auch die
Log-Files
- Übersichtlichkeit der Abgaben:
- Dokumentation/Kommentare in den Testspezifikationen können die
Lesbarkeit deutlich erhöhen
- In den boolschen Formeln sollte man mit den (füur die
jeweilige Testprozedur) festen Parametern anfangen und dann
die (variablen) Kontrollvariablen überprüfen
- Zeilenumbruch sollte in Dateien, die ausgedruckt werden,
immer nach ca. 80 Zeichen erfolgen. Sonst
wird es automatisch umgebrochen und das ist unleserlich!
- Kommentare zur Korrektur:
- es müssen pro Testprozedur immer alle Parameter initialisiert
(d.h. auf einen bestimmten Wert gesetzt) werden, auch wenn
der konkrete Wert für die Testfälle egal ist
- der Checker muss die ganze Zeit über aktiv sein
- Zusatzpunkte gab es, wenn aufgedeckte Fehler dokumentiert und
beschrieben wurden
- Abgabe für Aufgabenserie 3 per http (s. Aufgabenzettel unten)!
Vorbereitung Übungsblatt 3
Mengenimplementierung
- Elemente sind Ganzzahlen (besser: natürliche Zahlen)
- für jede potentiell enthaltene Zahl ein Bit (1 bedeutet enthalten,
0 bedeutet nicht enthalten)
- der Index des Bits gibt die Zahl an
- Anzahl der Bits in der Mengekodierung bestimmt, welche natürlichen
Zahlen enthalten sein können;
um z.B. die Elemente 0,...,63
speichern zu können,
benötigt man 6 = log2 64 Bits.
- Bemerkung: für PLS brauchen wir 7 Bits
- um die Obergrenze skalieren zu können, verwenden wir nicht nur
einen
Integer
zur Mengenkodierung, sondern ein Feld davon
- Dann bekommt man Mengen für die Werte
2bitsProInteger*feldGröße.
- Beachte: für manche Obergrenzen gibt es also zu
viele Bits - das muß in der Implementierung
berücksichtigt werden.
todo-Abbildung
- Abbildung
u:IN --> P(IN)
implementieren
- als Feld (Array)
- Feldindex über alle i aus IN
- Feldinhalte: jeweils eine Menge, codiert gemäß
Aufgabe 1
- zusätzliches Attribut: Menge von Indizes, die auf eine
leere Menge verweisen (also Quelleingabevektoren, für die kein
Übergang mehr übrig ist).
Datentypen
-
- Standard-C-Typen sind:
int
, unsigned int
,
short int
, unsigned short int,
long int
, unsigned long int
- Problem: Anzahl der intern verwendeten Bits ist nicht festgelegt
- deswegen: Standardbibliotheken definieren
uint64_t
,
uint32_t
, etc.
- einbinden durch
#include <rtt_test_types.h>
-
bool
ist kein Standard-Typ:
in C verwendet man int
, wobei i==0
false
bedeutet und i!=0
true.
- Beachte: Die Abfrage
if (i==1) ...
ist
demnach nicht gut genug, besser: if(i) ...
bool_t
wird in den Standard-Bibliotheken definiert,
dahinter verbirgt sich einer der Ganzzahltypen. Die Konstanten
FALSE==0
und TRUE==1
sind dort auch
definiert; beachte: auch hier ist if (b==TRUE)
...
nicht gut genug.
- Inkonsistenz: in
plsenv.h
ist
bool
mit true==1
und
false==0
definiert (sorry). Sollte aber kompatibel
sein.
Zufallszahlen
- 1. Idee: Abgucken beim Hashing: Gleichverteilung von ganzzahligen
Schlüsseln auf m Plätze:
index = key % m
- Problem: wir haben
MAXKEY == m ==> index =
key
, somit keine gute Verteilung
- (pragmatische) 2. Idee: Zufallszahlen aus den Standardbibliotheken
Im "laufenden Betrieb":
#include <stdlib.h>
rn = random();
index = rn % m;
Beachte: wir wollen Pseudozufallszahlen - zwar bei belieben
unterschiedliche Folgen von Zahlen, aber ggf. wollen wir auch eine
bestimmte Reihenfolge wiederherstellen
Lösung: "Zufallssaat" steuert, welche Folge von
Pseudozufallszahlen generiert wird:
Testprozeduren
- Tip: Zeitintervalle im Generator kleiner wählen
bool *h[]
- Ausführung in der Kommandozeile:
cd ../ta-project2/
export RTT_TESTCONTEXT=`pwd`
rtt-run-test PLS test1 "<name>"
- Rahmen:
- Wo ist todolib?
- Checker in /specs/, schon vordefiniert
- Ausgaben:
@tag
- weglassen
@description
- weglassen
- @condition
- einmal am Anfang der Testprozedur
- @event
- Übergang der Eingabevektoren, z.B.: "1110101" -->
"0101010" (Einmal eingangs klarmachen, welches Bit zu welcher
Eingabe gehört)
- @expected
- einmal am Anfang der Testprozedur reicht - "gemäß
boolescher Formel" oder so
Last modified: Juni 07, 2004 17:48:24 (cest)
Stefan Bisanz stefan@bisanz-online.de