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.

Teklan

Erfahrener Schreiberling

  • "Teklan" started this thread

Posts: 267

Date of registration: Nov 13th 2004

Location: Hannover

1

Saturday, November 13th 2004, 6:10pm

Scheme blatt 4

Ist ja wieder gigagenial das Blatt.
Mein Problem ist es erstmal dieses Teachpack zu laden, ich glaub bei mir gibts das gar nicht - ich habe version 2.05. Ausserdem kann ich auch nicht die entprechende Seite im Internet finden, wo die Funktionen zu den Graphikkomponenten erläutert sein sollten (also ich mein jetzt den entsprechenden Link dazu).

ausserdem hapere ich mit Aufgabe 2 - wie soll es denn gehen, iterator zu programmieren, ohne "cure" und "n" entsprechend vorzuführen also anstatt

"(define (iterator start next end? cure n) ...)" (oder ähnliches)

nur

"(define (iterator start next end? cure n) ...)"

schreiben zu dürfen?

Danke für jede Hilfe ;)

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

2

Saturday, November 13th 2004, 8:29pm

RE: Scheme blatt 4

Quoted

Original von Teklan
Mein Problem ist es erstmal dieses Teachpack zu laden, ich glaub bei mir gibts das gar nicht - ich habe version 2.05. Ausserdem kann ich auch nicht die entprechende Seite im Internet finden, wo die Funktionen zu den Graphikkomponenten erläutert sein sollten (also ich mein jetzt den entsprechenden Link dazu).


  1. auf die Homepage zur Vorlesung gehen
  2. weiterklicken: Begleitmaterialien zur Vorlesung und Hinweise zur verwendeten Programmierumgebung
  3. unter anderem prog1-turtle.ss herunterladen und in DrScheme als Teachpack laden
  4. PDF über (Dr)Scheme lesen.
  5. Spaß haben (?)
    [/list=1]

    HTH, migu
tar: Anlegen eines leeren Archivs wird feige verweigert.

Teklan

Erfahrener Schreiberling

  • "Teklan" started this thread

Posts: 267

Date of registration: Nov 13th 2004

Location: Hannover

3

Saturday, November 13th 2004, 9:30pm

Danke migu! :)

//-\\//-\\

Trainee

  • "//-\\//-\\" is female

Posts: 62

Date of registration: Oct 31st 2004

Location: Hannover

Occupation: Informatik

4

Monday, November 15th 2004, 2:39pm

hallo!

weiß jemand wie die iterator funktion aussehen soll?

man kann ohne sie die aufg 2 und 4 ja nicht machen.
"Die Größe jedes Menschen lässt sich als ein Bruch darstellen. Im Zähler steht das, was er ist ist und im Nenner das, was er von sich denkt."
Fjodr Dostojewski

blue.sky

Praktikant

Posts: 16

Date of registration: Nov 15th 2004

5

Monday, November 15th 2004, 3:23pm

Korrigiert mich wenn ich falsch liege, aber "next" soll folgendermaßen aussehen: ((lambda (cur n) (+ cur (+ a n 1))),
also arbeitet next mit 2 variablen
Der Tod ist sicher, das Leben jedoch nicht.

//-\\//-\\

Trainee

  • "//-\\//-\\" is female

Posts: 62

Date of registration: Oct 31st 2004

Location: Hannover

Occupation: Informatik

6

Monday, November 15th 2004, 3:58pm

ja,
aber diese prozedur gilt nur für die sum-integers prozedur.
"Die Größe jedes Menschen lässt sich als ein Bruch darstellen. Im Zähler steht das, was er ist ist und im Nenner das, was er von sich denkt."
Fjodr Dostojewski

SUPERDIM

Junior Schreiberling

  • "SUPERDIM" is male

Posts: 171

Date of registration: Oct 7th 2004

Location: Hannover

Occupation: 1. Semester M.Sc. Informatik

7

Monday, November 15th 2004, 6:25pm

Ich steh voll auf dem Schlauch. Keine Ahnung wie ich A2 lösen soll.

blue.sky

Praktikant

Posts: 16

Date of registration: Nov 15th 2004

8

Monday, November 15th 2004, 7:23pm

Quoted

Original von SUPERDIM
Ich steh voll auf dem Schlauch. Keine Ahnung wie ich A2 lösen soll.


Du mußt mit einem named-led arbeiten

(let loop ((cur start) (step 0)), dann sollte es funktionieren
Der Tod ist sicher, das Leben jedoch nicht.

This post has been edited 2 times, last edit by "blue.sky" (Nov 16th 2004, 10:47pm)


Teklan

Erfahrener Schreiberling

  • "Teklan" started this thread

Posts: 267

Date of registration: Nov 13th 2004

Location: Hannover

9

Monday, November 15th 2004, 8:04pm

Dass next und end? mit jeweils zwei Variablen arbeiten soll, steht ja schon in der Aufgabe. Mein Hauptproblem (und vielleicht auch von einigen anderen hier) ist es wirklich, "cur" und "n" in iterator verwenden ohne sie vorher zu deklarieren, wie es auf dem Aufgabenblatt gedruckt aussieht.

blue.sky

Praktikant

Posts: 16

Date of registration: Nov 15th 2004

10

Tuesday, November 16th 2004, 10:48pm

Quoted

Original von Teklan
Dass next und end? mit jeweils zwei Variablen arbeiten soll, steht ja schon in der Aufgabe. Mein Hauptproblem (und vielleicht auch von einigen anderen hier) ist es wirklich, "cur" und "n" in iterator verwenden ohne sie vorher zu deklarieren, wie es auf dem Aufgabenblatt gedruckt aussieht.


so etwa kannst du zwei variablen benutzen (let loop ((cur start) (step 0))
Der Tod ist sicher, das Leben jedoch nicht.

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

11

Wednesday, November 17th 2004, 8:12pm

Let braucht man bei dem Teil der Aufgabe gar nicht.
Du definierst dir im iterator einfach eine Prozedur, die cur und n als Variablen hat. Diese ruftst du mit start und 0 auf.
Die Prozedur ist dann auch nur nen Einzeiler, ein if (end? cur n) und in den then/else-clauses die iteration.
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

SUPERDIM

Junior Schreiberling

  • "SUPERDIM" is male

Posts: 171

Date of registration: Oct 7th 2004

Location: Hannover

Occupation: 1. Semester M.Sc. Informatik

12

Wednesday, November 17th 2004, 10:02pm

Juhu, das iterator Zeugs hab ich jetzt hinbekommen. Danke für die Tips. Was mir noch aufgefallen ist: Kann es sein, dass die vorgegebene sum-integers Prozedur nicht das tut was sie soll? Allein die next Prozedur macht keinen Sinn: (lambda (cur n) (+ cur (+ a n 1)))

Hier addiert man zum aktuellen Wert (am Anfang 5) 5 + 0 + 1. Das wär schon 11 und wir schiessen über das Ergebnis hinaus. Zur end?-Prozedur sag ich lieber nix. :rolleyes:

//-\\//-\\

Trainee

  • "//-\\//-\\" is female

Posts: 62

Date of registration: Oct 31st 2004

Location: Hannover

Occupation: Informatik

13

Wednesday, November 17th 2004, 10:14pm

die sum-integers funktion ist schon richtig.

du hast vielleicht das prinzip der sum-integers funktion nicht verstanden. sie addiert alle zahlen zwischen a und b. also wenn a=5 und b=7, dann 5+6+7=18.

die end?-funktion guckt, ob die anzahl der schritte (n) geich der differenz von a und b ist, also der anzahl der benötigten additionen.
"Die Größe jedes Menschen lässt sich als ein Bruch darstellen. Im Zähler steht das, was er ist ist und im Nenner das, was er von sich denkt."
Fjodr Dostojewski

This post has been edited 1 times, last edit by "//-\\//-\\" (Nov 17th 2004, 10:17pm)


SUPERDIM

Junior Schreiberling

  • "SUPERDIM" is male

Posts: 171

Date of registration: Oct 7th 2004

Location: Hannover

Occupation: 1. Semester M.Sc. Informatik

14

Wednesday, November 17th 2004, 11:58pm

Achso, wegen dem Namen dachte ich sie addiert 2 integer Zahlen. Mein Fehler.

iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

15

Thursday, November 18th 2004, 11:18pm

Grrrrr!

Ich versuche schon seit Stunden, nein eigentlich schon seit Tagen, die Aufgabenstellung der 2. Aufgabe zu verstehen. Keine Ahnung, weder wie die iterator-Prozedur funktioniert oder wie sie aufgebaut werden soll, noch was sie überhaupt leisten soll. Kann mir jemand dabei helfen?
Ohne diesen Teil kann ich ja weder den Rest der 2. noch die 4. Aufgabe lösen!
Mit der Aufgabenstellung im Allgemeinen bin ich nicht gerade "zufrieden". Ich musste jedes Aufgabenblatt (zumindest einige Aufgaben) oft 10-mal und mehr lesen, um überhaupt die Aufgabenstellung zu verstehen; manchmal ist die Aufgabenstellung ziemlich verwirrend. Daher eine Bitte an diejenige Person, die die Aufgabenblätter verfasst: Bitte die Aufgaben etwas klarer formulieren! ( Die tribonacci-Aufgabe im 3. Blatt und die tip/reduce-tip-Aufgabe im ersten Blatt zeigen, was ich mit "verwirrend" meine).
(Übrigens: dies sollte bitte keine "Schimpfkanonade" auslösen, es ist auch nicht als eine gemeint; es ist nur gutgemeinte Kritik!:)
...und sie dreht sich doch!

Dude

Junior Schreiberling

Posts: 181

Date of registration: Oct 11th 2004

16

Thursday, November 18th 2004, 11:33pm

Du sollst im Endeffekt einen allgemeinen Iterator erstellen, mit dem man Iterationen auf Basis verschiedener Startwerte, Rechenoperationen und Abbruchbedingungen durchführen kann.

Die Werte für start, next und end? sollen dann durch andere Prozeduren für den Iterator bereitgestellt werden. Soll heissen, man braucht z.B. bei der Berechnung der Eulerschen Zahl keine eigene Iteration mehr Programmieren, sondern nur noch den Iterator mit den spezifischen Werten für start, next und end? füttern.

Besser kann ich es jetzt leider auch nicht erklären, sorry. Schau doch mal in die HTML-Version des Buches zum Thema, Kapitel 1.3.1, Procedures as Arguments. Dort steht es eigentlich ganz gut beschrieben.

Teklan

Erfahrener Schreiberling

  • "Teklan" started this thread

Posts: 267

Date of registration: Nov 13th 2004

Location: Hannover

17

Friday, November 19th 2004, 12:30am

Mein Gott, ja ich bin zu blöd ... aber irgendwie wills nicht mehr klappen -
Aufgabe 2 - was muss ich denn hier noch ändern, damit es klappt :rolleyes: - bitte direkt korrigieren - "tausendmal dankbar"

(define (iterator start next end?)
(lambda (cur n)
(if (end? (next start n) n) cur
(iterator next next end?))))

Andre@s

Praktikant

Posts: 25

Date of registration: Oct 15th 2004

Location: Hannover

18

Friday, November 19th 2004, 1:04am

Quoted

Original von Teklan
Mein Gott, ja ich bin zu blöd ... aber irgendwie wills nicht mehr klappen -
Aufgabe 2 - was muss ich denn hier noch ändern, damit es klappt :rolleyes: - bitte direkt korrigieren - "tausendmal dankbar"

(define (iterator start next end?)
(lambda (cur n)
(if (end? (next start n) n) cur
(iterator next next end?))))


Ich weiss nicht, wie man deinen Iterator korriegieren kann,
ich blicke da nicht durch.


Aber versuchs mit dem folgenden:

(define (iterator start next end?)
(define (iter start next end? counter)
(if (end? start counter)
start
(iter (next start counter) next end? (+ counter 1)))
) (iter start next end? 0)
)

Wird zB dieser Ausdruck ins next eingesetzt,

(next start counter)
(lambda (cur n) (+ cur (+ a n 1)))

hier werden die parameter start und counter an cur und n dieser lambda funktion übergeben, die funktion sieht dann ungefähr so aus:
(lambda (start counter) (+ start (+ a counter 1)))

genauso mit end?

so habe ich es verstanden