Informatik 1 - Praktikumsaufgabe - Was wird verlangt?

Diskussionen rund um Themen und Veranstaltungen des 2. Bachelor-Semesters

Moderator: (M) Mod.-Team Allgemein

IIWler

Informatik 1 - Praktikumsaufgabe - Was wird verlangt?

Beitrag von IIWler » Sa, 05. Jul. 03, 13:20

Hallo,

Nach der Informatikübung, die gestern (04.07) um 17 Uhr stattfand (in der ich leider nicht anwesend sein konnte) die Fragen zur Praktikumsaufgabe geklärt werden, doch wie ich gehört habe, wurde danach den meisten weiterhin nicht klar, was nun genau verlangt wird, außer der Implementierung von Quine-McCluskey! Auch ich habe es immer noch nicht ganz verstanden!

Hier ist meine Interpretation, die ihr dann korrigieren könnt:

- Die Befehlsliste, die auf dem Aufgabenblatt gegeben ist, bezieht sich überhaupt nicht auf die Implementierung von Quine-McCluskey.

- Der Quine-McCluskey soll so implementiert werden, dass man eine Tabelle (wie unter http://logik.phl.univie.ac.at/~chris/qmo.html unten auf der Seite) eingeben und als Ergebnis eine vereinfachte Tabelle bekommt. Diese vereinfachte Tabelle kann mit einem getrennten Algorithmus in eine logische Gleichung (A AND B OR A AND B AND NOT C...) umgeformt werden.

- Nun soll die vereinfachte Tabelle in eine Stapelverarbeitung für den virtuellen Rechner umgeformt werden, und die Befehle sind auf dem Aufgabenblatt vorgegeben. Doch wie diese Befehle genau genutzt werden sollen, und vor allem wo man die Stapelverarbeitung auf die richtige Funktion prüfen kann, ist nicht klar.

Nehmen wir am Besten den Beispiel aus dem Buch, Seite 35:

Ursprüngliche Tabelle:

0000
0001
0010
0011
1000
1001
1011
1100

Vereinfachte Tabelle:

00**
*0*1
1*00

Logische Aussage (& = AND; ~ = NOT):

a & ~c & ~d v
~a & ~b v
~b & d

Und nun soll die Stapelverarbeitung für den virtuellen Rechner kommen.

Benutzeravatar
HerrSultan
Exzellenter Poster
Exzellenter Poster
Beiträge: 3115
Registriert: Mo, 07. Okt. 02, 13:12
Wohnort: Hamburg-Altona
Kontaktdaten:

Beitrag von HerrSultan » So, 06. Jul. 03, 13:49

Also eigentlich ist das schon ganz richtig.
Es soll ja nun mal ein Prozessor simuliert werden, der eine Funktion ausführen kann. Und eben diese Funktion wird in Form einer Wertetabelle eingegeben.
Die wird dann in die DNF überführt, mit QMC vereinfacht und dann in die Instruktionen überführt, so daß dieser Instruktionsstapel für jede Zeile der ursprünglichen Wertetabelle das richtige Ergebnis liefert. Damit könnte man das ganze dann auch auf Richtigkeit üebrprüfen, wenn man denn noch Zeit und Lust hat.

IIWler

Kannst Du einen Eingabe-/Ausgabebeispiel geben?

Beitrag von IIWler » Mi, 09. Jul. 03, 19:49

Hi und danke für die Antwort!

Kannst Du vielleicht einen Eingabe-/Ausgabebeispiel noch geben?

Benutzeravatar
HerrSultan
Exzellenter Poster
Exzellenter Poster
Beiträge: 3115
Registriert: Mo, 07. Okt. 02, 13:12
Wohnort: Hamburg-Altona
Kontaktdaten:

Beitrag von HerrSultan » Mi, 09. Jul. 03, 20:19

Was meinst du jetzt? Die INPUT/OUTPUT-Instruktionen?
Das ist ganz einfach: INPUT liest die Variablen der Funktion ein und OUPUT gibt den Funktionswert aus.

Anonymous gibts nicht

Hilfe

Beitrag von Anonymous gibts nicht » Mo, 01. Sep. 03, 14:00

Ich komm mit den Befehlen nicht so ganz klar:

Was bedeutet AND i, j, k

k=i & j oder i=j & k :?:

Und was macht INPUT i, bzw OUTPUT i??? :?: Da wird doch nur von einem 1bit Register geschreiben oder daraus gelesen. Soll mein C-Programm über diese Schnittstellen die Daten an den Virtuellen Rechner übergeben? (Input: erstmal wie breit die Wörter der booleschen Funktion sind und dann die Tabelle; output: Ausgabe der vereinfachten Tabelle )

Verstehe ich das richtig :?: : LOAD i,m liest von einer der 256 1bit Speicherstellen ins Register i

und

STORE j,m schreibt j in eine Speicherstelle.

Benutzeravatar
HerrSultan
Exzellenter Poster
Exzellenter Poster
Beiträge: 3115
Registriert: Mo, 07. Okt. 02, 13:12
Wohnort: Hamburg-Altona
Kontaktdaten:

Beitrag von HerrSultan » Mo, 01. Sep. 03, 14:09

AND i,j,k bedeutet, daß die Werte aus dem Register i und j gelesen werden und daraus die logische UND-Verknüpfung erstellt wird. Das Ergebnis wird dann ins Regsiter k geschrieben. Also k = i & j.

INPUT i liest ein Bit vom Benutzer ein und schreibt es in den Register i. OUTPUT i liest ein Bit aus dem Register i und gibt es (in diesem Falle) auf dem Bildschirm aus. INPUT und OUTPUT gelten nicht für Tabellen, sondern für einzelne Bits. Es wird ja ein sehr einfacher Rechner simuliert. OUTPUT gibt als Ergebnis nur ein einziges Bit aus und INPUT liest maximal 8 Bits ein.

Mit LOAD und STORE wird nur zwischen Speicher und Register hin und her geschoben.

Anonymous gibts nicht

Beitrag von Anonymous gibts nicht » Mo, 01. Sep. 03, 18:09

Ich galaub jetzt versteh ich mein Problem:

Mit i, j, und k habe ich Zugriff auf die gleichen( :idea: ) acht 1bit Register :!: :!: :!:

Danke Alex, aber bist du dir bei AND i,j,k :k = i & j gaaanz sicher, da z.B. bei der Mips Assembler-Programmierung das nicht so ist. Da ist AND i,j,k(Name ist natürlich anders): i=j&k.

Das wär nicht so schlimm wenn ich das falsch implementiere, aber ein paar Prozent mehr können nicht schaden... :D

Bitte um Antwort

Benutzeravatar
NightStalker
TalkING. Champion
TalkING. Champion
Beiträge: 891
Registriert: Mo, 21. Okt. 02, 20:40
Wohnort: Downloadbereich

Beitrag von NightStalker » Mo, 01. Sep. 03, 18:24

Also, ich denke das ist völlig schnuppe, ob man das Ergebnis nach i, j oder k schreibt solange man sich nicht verzettelt und das überall im Programm gleich macht. Ich hab's wie Alex gemacht, aber selbst wenn man's anders machen würde, müßte ja immer noch dasselbe Ergebnis rauskommen.
Da sie es scheinbar nicht für nötig hielten, ein paar Worte mehr über die Befehle zu verlieren, werde ich denen gehörig auf's Dach steigen, wenn sie das als Fehler werten.

Weiß überhaupt jemand, ob's bei dieser Aufgabe Prozente gibt oder nur "bestanden" und "nicht bestanden" ?

Nebenbei, mich hat das Format auch schon genervt, ich bin's vom x86-Assembler-Code nämlich auch anders gewöhnt.
-- Chrząszcz brzmi w trzcinie w Szczebrzeszynie.
-- 好好学习,天天向上!

Anonymous blabla

Beitrag von Anonymous blabla » Mo, 01. Sep. 03, 18:44

Auf:http://www.tu-harburg.de/ti6/lehre/infing.html steht das eszu 25%mit der Klausur verrechnet wird.

@Nightstalker: Beim x86er gibts ja nur 2 Register in den Befehlen und es ist allgemein üblich das Ziel zuerst anzugeben (3-Register Beispiele: die meisten Risc Architekturen zB IA64, Mips, Alpha).

Benutzeravatar
HerrSultan
Exzellenter Poster
Exzellenter Poster
Beiträge: 3115
Registriert: Mo, 07. Okt. 02, 13:12
Wohnort: Hamburg-Altona
Kontaktdaten:

Beitrag von HerrSultan » Mo, 01. Sep. 03, 20:42

Ich dachte auch zuerst, ich hätte 3*8 Register. :)

Habe keine Ahnung von Assembler, aber ich hab mir das in der Freitag-Nachmittagsstunde mal aufgeschrieben, und da haben wir ein Beispiel gehabt. Dummerweise war das AND 0 1 0.
Das kann man nun auffassen wie man will. Ich hab das jetzt einfach so gemacht wie oben beschrieben. Aber ich glaube auch kaum, daß das irgend einen Unterschied macht. Ich glaube trotzdem, daß es ach so erklärt wurde.

Ich fand die Betreuung sowieso extrem schlecht. Bzw. die Planung. Da ist es den Verantwortlichen wohl ein wenig zu spät eingefallen, mal einen Blick in die IIW-DPO zu werfen. :(


Zur Bewertung, da habe ich es so verstanden, daß man zwei Noten bekommt. Eine für das Programm und eine für die Klausur, und die werden dann 1:3 verrechnet.

Antworten