total korrekter Algorithmus < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 22:57 So 10.12.2006 | Autor: | Rudy |
Aufgabe | Entwickeln Sie ein einen total korrekten Algorithmus zur Umrechnung von ganzen Zahlen im Dezimalsystem in die binäre "Betrag und Vorzeichen"-Darstellung. Dabei
soll das niederwertigste Bit der Einfachheit halber zuerst ausgegeben werden. Sie können die div(a, b) und mod(a, b) zur ganzzahligen Division mit Rest verwenden. Zur Ausgabe der Ziffern stehen Ihnen die Funktionen ausgabe0() und ausgabe1() zur Verfügung.
Entwerfen Sie eine Spezifikation für einen solchen Algorithmus. |
Hallo auch.
Was ist hier für eine Spezifikation überhaupt gemeint?
Ein total korrekter Algorithmus hatten wir so definiert, dass er partiell korrekt ist und jede Eingabe terminiert. Nur weiß ich jetzt leider nicht, was partielle Korrektheit ist. Hat da von euch jemand eine Idee?
Habt ihr auch eine Idee, was in der Aufgabe zu tun ist?
Danke euch vielmals!!!
Rudy
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:42 So 24.12.2006 | Autor: | Xabora |
Hallo, ich kann dir vielleicht helfen, doch dazu müsste ich noch einige Antworten auf folgende Fragen haben:
In welcher Sprache soll der Algorithmus realisiert werden?
(Also womit programmiert (pascal, C oder sogar Assembler?) wird)
Bezüglich der Spezifikation kann ich dir Tipps geben:
Eine Spezifikation ist eine Abstrahierung eines Problems, die sich nur noch auf die Problemlösung konzentriert. Also wird in ihr nur noch beschrieben WAS passieren soll, wenn WAS eingegeben wird, jedoch nicht WIE dies programmtechnisch umgesetzt werden soll. Ein kleines Beispiel zur Verdeutlichung:
[B]
|true : B
|false : B
|not : B-->B
|or : B × B-->B
|and : B × B-->B
_ |________________
|
|not(true) = true
|not(false)= true
|and(true,true) = true
|and(true,false) = false
|and(false,true) = false
|and(false,false)= true
[....]
Dies wäre ein Beispiel für eine Spezifikation. B stellt den Datentyp Boolean dar, dieser wird als SORTEN oben in eckigen Klammern geschrieben. Bei Sorten könntest du auch [z] darunter schreiben, um mit ganzen Zahlen zu arbeiten.
Nun folgen die Operationssymbole, die man sich selber definiert.
"true" ist vom Typ boolean, aber nur weil wir es hier so definiert haben!
"not" bekommt einen Boolean und gibt einen Boolean zurück
"and" und "or" bekommen (Boolean x Boolean) rein und geben einen Boolean zurück
nach dem Querstrich folgen nun die Gleichungen:
links steht was reinkommt und rechts steht was rauskommen soll
not(true)=true
dies ist kein Fehler, obwohl man sagen würde, dass (not von true) ja "false " ergeben müsste, aber wir haben es nun mal als true spezifiziert/definiert.
Also wenn dir das hier geschriebene überhaupt nichts sagt, dann gucke doch bitte in deinen Unterlagen nach, wie ihr Spezifikation definiert habt.
Denn es ist schon anspruchsvoll und für Einsteiger sehr schwer umzusetzen.
Wenn ihr den Algorithmus in pascall oder Assembler schreiben sollt, dann kann ich ihn dir eine Vorlage schreiben.
Grüße Xabora
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:20 Mi 10.01.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|