Probleme mit Scheme-Programmierung

hothouse
Neuling
Neuling
Beiträge: 5
Registriert: 31. Aug 2006 12:16

Probleme mit Scheme-Programmierung

Beitrag von hothouse » 27. Okt 2006 21:15

Ich machs kurz:
ich hab folgenden Code

(define (showplane flugzeug)
(
(display (airplane-carrier flugzeug))(newline)
(display (airplane-type flugzeug))(newline)
(display (airplane-engines flugzeug))(newline)
(display (airplane-maxrange flugzeug))
)
)

und kriege folgende Fehlermeldung:
procedure application: expected procedure, given: (void); arguments were: (void) (void) (void) (void) (void) (void)

wie sage ich jetzt Scheme, dass ich KEINE Prozedur erwarte.

(Das display etc funktioniert. Nur haut mir Scheme danach diese fehlemeldung rein)

a_nickol
Mausschubser
Mausschubser
Beiträge: 100
Registriert: 27. Okt 2005 10:33
Kontaktdaten:

Beitrag von a_nickol » 28. Okt 2006 12:25

du darfst nur 1 befehl in den defineblock schreiben .... ihr lernt noch später wie man sowas umsetzt....

Benutzeravatar
dEeP-fRiEd
Kernelcompilierer
Kernelcompilierer
Beiträge: 432
Registriert: 19. Okt 2005 00:58
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von dEeP-fRiEd » 28. Okt 2006 13:27

Genau, wenn ich mich richtig erinnere geht das mit (begin ...)
oder man kann den sprachlkevel umstellen, ich glaub da gabs einen wo man auch so mehrere Befehle ausführen kann...
NOSCE TE IPSUM
visit: http://www.flicknetwork.net.tc

Can
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 223
Registriert: 17. Okt 2006 15:14
Kontaktdaten:

Beitrag von Can » 28. Okt 2006 20:06

hmm, wir sollten bei dieser Aufgabe den AnfängerLevel haben....
Cogito ergo sum

The One and Only Markus
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 169
Registriert: 10. Nov 2005 19:28
Wohnort: Darmstadt

Beitrag von The One and Only Markus » 28. Okt 2006 21:33

Könnt ihr die einzelnen (display ...) nicht mir einem UND verknüpfen? So haben wir damals das (begin ...) umgangen.

Can
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 223
Registriert: 17. Okt 2006 15:14
Kontaktdaten:

Beitrag von Can » 28. Okt 2006 22:28

außerdem reicht es doch, wenn wir hier mit symbolen arbeiten?
Cogito ergo sum

Benutzeravatar
Tapion
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 220
Registriert: 14. Okt 2006 19:16
Wohnort: Darmstadt

Beitrag von Tapion » 29. Okt 2006 00:16

Wir haben bisher weder display noch newline gelernt. Dementsprechend werden diese Befehle für die Hausaufgaben benötigt.

Bei and-Verknüpfung müsste man aber sichergehen, dass immer true zurückgegeben wird. einmal false und schon wird der Rest nicht mehr ausgeführt. Auch andere Rückgabewerte sind dann nicht mehr möglich

Benutze doch (string-append <expr1>...<exprN>)
Damit kannst du beliebig viele Ausgaben aneinanderketten.

Scheme erfordert Vorausschauendes Programmieren, da die äußerste Klammer für den Ausdruck steht, der als letztes Ausgewertet wird, während der innerste als erstes ausgewertet wird. Scheme wirkt damit effektiv dem "mal-eben-drauflos"-Stil entgegen. Es wird verlangt, dass man sich zuerst gedanken über das macht, was man schreiben will (-> templates wirken wunder!).

Mir hat es übrigens sehr geholfen, die vielen verschiedenen Themen, zu denen Herr Schiele uns etwas erklärt, zu trennen und in einer für mich verständlich Form neu zu strukturieren und aufzuschreiben. Ich hab den Text als pdf hier. Wenn Bedarf besteht, kann ich das gerne irgendwo hochladen.

hothouse
Neuling
Neuling
Beiträge: 5
Registriert: 31. Aug 2006 12:16

Beitrag von hothouse » 29. Okt 2006 11:38

Also, erstmal danke, für den Hinweis mit (begin...).
Hab jetzt alles in eien begin Block reingetan.

Ich hab leider das Problem, dass ich Scheme schonmal hatte und deshalb schon mehr Befehle weiß als ich wissen sollte. Und selbstverständlich geht man einen Problem so an, dass man alle Werzeuge die man hat auch benutzt.
Sprachlevel hab ich auf Fortgeschrittene/r (aus dem oben genannten Grund).

@trostensillus
ich komm vielleicht später mal auf deine PDF zurück.

Benutzeravatar
bruse
Kernelcompilierer
Kernelcompilierer
Beiträge: 412
Registriert: 2. Aug 2006 22:42

Beitrag von bruse » 29. Okt 2006 13:32

Hallo,

das Problem, dass du zu viel weisst, kannst du relativ einfach umgehen, indem du den Sprachlevel so einstellst, wie in der Vorlesung angegeben. :mrgreen:
Wenn du mit Hilfe von begin iterativ programmierst wo das nicht bekannt ist, hätte ich Schwierigkeiten zuzugestehen, dass du dich mit der Aufgabenstellung beschäftigt hast wie gefordert. Wie weiter oben schon erwähnt fordert und fördert Scheme das Aufsplitten und Rekombinieren in kleinere Teilprobleme, das ist auch der Grund, warum zu Anfang funktional programmiert wird und eben nicht in Java.
Nun scheint deine showplane-Funktion nicht direkt zur Lösung der Hausaufgabe zu gehören, insofern ist es relativ egal, zuhause kannst du ja machen was du willst. In einer Hausübung hätte ich allerdings Probleme, eine mit Hilfe von begin und ähnlichen Späßen programmierte Lösung zu akzeptieren bzw. mit der MuLö in Kongruenz zu bringen. Ich nehme an, dass andere Tutoren das ähnlich sehen und zumindest Punkte abziehen. Insofern würde ich dir den Tipp geben, dich auf den Anfängerlevel einzulassen. Ist ja irgendwie auch doof, wenn man sich die Mühe macht und dann doch keine Punkte bekommt, weil man zu schlau ist ;-)

Hinweis: Das war kein Versuch, dir an den Karren zu pinkeln, sondern die Dinge klarzustellen.

Benutzeravatar
Alarion
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 159
Registriert: 18. Mai 2005 12:09
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Alarion » 29. Okt 2006 14:57

bruse hat geschrieben:Ich nehme an, dass andere Tutoren das ähnlich sehen und zumindest Punkte abziehen.
Definitiv. Eine der Arbeitsanweisungen ist: "Stellen sie den Anfänger-Level ein." Wird diese Arbeitsanweisung nicht umgesetzt, ist das streng genommen keine Bearbeitung der Hausübung...

( Diesmal weiß ich, daß Du auch Tutor bist... ;) )
Tutor "Grundlagen der Informatik 1" im WS06/07

Antworten

Zurück zu „Archiv“