Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.
  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

21

Monday, August 26th 2002, 3:51pm

Quoted

Original von Yann

Quoted

#|0 s0 |# und jetzt hab ich:

(s0, 0, s1, c, l)

Wie sieht dann die nächste Zeile aus. Wenn ich nach rechts gehe ist mir das klar, aber wie sieht das aus wenn ich nach links gehe?"


Der näste eintrag sieht so aus: #| s1 c |#.

Du betrachtest nur die Zeichen die in der bewehgungs richtung sind... also hier nach links.
Das Zeichen, das sich "unter" dem Lesekopf befindet, ist *immer* das Zeichen, das rechts neben der Zustandsangabe steht.

Wäre also z. B. der aktuelle Zustand
#|0 s0 |#
und gäbe es einen Übergang
(s0, |, s1, c, l),
dann wäre der nächste Zustand der folgende:
#|s0 0 c#

Siehe dazu auch Beispiel 7.11 im Skript.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

22

Monday, August 26th 2002, 4:09pm

Quoted

Original von KreiS
zu 4c) hab ich nun nen Loop programm geschrieben

[Programm]
Ist aber nicht ganz der Algorithmus, der von TM verwendet wird. Du vermindert x2 jeweils blockweise um 3 und prüfst, ob das Ende erreicht ist. TM liest x2 aber in Einzelschritten und verändert dabei zyklisch den aktuellen Zustand. Ist x2 vollständig eingelesen, wird je nach Zustand die Ausgabe geschrieben.

Mein Vorschlag:

Source code

1
2
3
4
5
6
7
8
read(x1, x2);

loop x2 do
  x0 := x0 + 1;
  if x0 = 3 then x0 := 0 endif
end;

write(x0)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

23

Monday, August 26th 2002, 4:23pm

na gut, war klar das es einfacher geht :-)

ich hoffe in der Klausur habe ich nen freien kopf um auf so ne einfache Lösung zu kommen.


zu aufagbe 6)
hat da einer die TM mal gebaut?! im moment habe ich schon 9 zustände und ein endzustand :-p
kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

24

Monday, August 26th 2002, 4:42pm

Quoted



loop x2 do
x0 := x0 + 1;
if x0 = 3 then x0 := 0
end;



zu deinem Vorschlag, vorm end; und endinf kommt kein ; ?!also wie bei Pascal?! ;)



übungs haben will ich hier nun DIV 2 bauen :-D
ist aber sehr grob :-D

f(m,n) = n DIV m ( x2 DIV x1 )

x3 := 0 ; x4 := 0 ;
loop x2 do
x3 := x3 + 1;
if x3 = x1 then x4 := x4 +1;
if x3 = x1 then x4 := 0;
end;
wirte (x4);

In Aufgabe 6 habe ich nun 10 zustände, aber das ding funktioniert :-D ist es egal wo ich es auf dem Tape die 1 oder 0 reinschreibe? hauptsache drumrum blankzeichen?! ;-)
kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"

sebi

Junior Schreiberling

  • "sebi" is male

Posts: 153

Date of registration: Dec 10th 2001

Location: Hannover, Erde

Occupation: lebenskünstler

25

Monday, August 26th 2002, 4:50pm

if x3 = x1 then x4 := x4 +1;
if x3 = x1 then x4 := 0;

das macht ja irgendwie nicht viel sinn, oder ? das ist doch dasselbe wie if x3=x1 then x4=0

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

26

Monday, August 26th 2002, 4:53pm

Quoted

Original von KreiS
In Aufgabe 6 habe ich nun 10 zustände, aber das ding funktioniert :-D ist es egal wo ich es auf dem Tape die 1 oder 0 reinschreibe? hauptsache drumrum blankzeichen?! ;-)

Jau!

Kannst ja (haste bestimmt auch) in die Mitte ein Trennzeichen (n<->m) und dann abgleichen und je nachdem auf welcher Seite du als erstes "ins Leere läufst" das Trennzeichen nach "Clearen" des Bandes zu einer 0 oder 1 machen...
passt so schön
"Fliegenpilze! Löwen!! Das Leben ist gefährlich." -- www.katzundgoldt.de

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

27

Monday, August 26th 2002, 5:04pm

Quoted


if x3 = x1 then x4 := x4 +1;
if x3 = x1 then x4 := 0;

tipfehler
if x3 = x1 then x3 := 0; natürlich, da ich kA habe wie ich hinter then mehrere befehle ausführen darf :-D
dazu wann das ; kommt etc ;)


Also bei aufgabe 6 habe ich es mir einfach gemacht, ich schaue ob links genauso viele wie rechts sind, wenn nicht alles blank machen
wenn ja (gilt auch wenn links mehr sind) dann halt alles Blank machen und ne 1 oder so schreiben :-)

einmal links und rechts wegnehmen, und dann halt mit dem kopf hin und her wandern ;)
habe in jlap herum dedocktert, wie viele übergänge ich habe weiß ich net, weiß nur es funktioniert :-DDDD

kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

28

Monday, August 26th 2002, 6:58pm

Quoted

Original von KreiS

Quoted



loop x2 do
x0 := x0 + 1;
if x0 = 3 then x0 := 0
end;



zu deinem Vorschlag, vorm end; und endinf kommt kein ; ?!also wie bei Pascal?! ;)
Habe leider das endif vergessen. Ist oben jetzt korrigiert. Die Trennung durch Semikolon ist richtig. Ein Semikolon dient nur zur Trennung von Anweisungen, daher muß ans Ende eines Blockes kein Semikolon (es muß ja nichts mehr abgetrennt werden).



Noch zwei allgemeine Hinweise zu LOOP-Programmen:

- Bei if kann AFAIK nur auf Gleichheit mit einer *Konstante* geprüft werden. Statements wie "if x1=x2" sind daher unzulässig!

- Die Ausgabevariable muß immer x0 sein. Die Ausgabe muß also mit write(x0) erfolgen.

(zu beidem siehe Definition 8.4 im Skript)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

29

Monday, August 26th 2002, 8:57pm

gut, dann ist mir viel mehr klar ;)

nun ja, dann definiert man sich vorher die konstanten mit xx = 3 ;

und wegen x0 ist nur so eine kleine frage wie geschickt man es benennt ;)


aber das im Script hatte ich gelesen, aber das kam ich mir vor das es für funktionen gut wäre, aber ist wohl net so.
kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"