hilfe hausaufgabe python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
KlaliB
User
Beiträge: 50
Registriert: Mittwoch 13. Mai 2009, 13:28

Mittwoch 13. Mai 2009, 14:15

was sol ich denn lernen"?"
da steht irgendwas mit string , variablen und so "."
und ich kann nciht alles lernen soviel zeit hab ich nicht. dann bin ich vieleicht in 2 jahren so weit das zu programmieren aber was nützt es mir dann.
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 13. Mai 2009, 14:18

Das solltest du alles lernen.
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Mittwoch 13. Mai 2009, 14:21

KlaliB hat geschrieben:was sol ich denn lernen"?"
da steht irgendwas mit string , variablen und so "."
und ich kann nciht alles lernen soviel zeit hab ich nicht. dann bin ich vieleicht in 2 jahren so weit das zu programmieren aber was nützt es mir dann.
2 Jahre braucht man nicht. Ein paar Tage sollte man sich für die Grundlagen aber schon nehmen.

Vielleicht macht es dir ja spaß zu programmieren, dann wird es dir nützlich sein.
KlaliB
User
Beiträge: 50
Registriert: Mittwoch 13. Mai 2009, 13:28

Mittwoch 13. Mai 2009, 14:23

najahhhh
ich gebs auf
ich sags einem freund au smeinem kurs einfach das ers machen soll











IHR SEIT GEIZIG! :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 13. Mai 2009, 14:26

Jau, das wird es sein. Ich gehe gleich mal duschen ...
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Mittwoch 13. Mai 2009, 14:28

Aufgeben, so lernt man es am besten.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mittwoch 13. Mai 2009, 14:35

KlaliB hat geschrieben:ich sags einem freund au smeinem kurs einfach das ers machen soll
Geniale Idee. Hättest du gleich so machen sollen ...
BlackJack

Mittwoch 13. Mai 2009, 15:18

Ich habe gerade folgendes auf meinem C64 gehackt:

Code: Alles auswählen

   10 rem
   20 rem geldautomat
   30 rem -----------
   40 rem
   50 rem nw() - notenwerte
   60 rem az() - anzahl scheine im automaten
   70 rem z() - anzahl scheine fuer die ausgabe
   80 rem gs - gesamtsumme im automaten
   90 rem
  100 rem notenwerte
  110 data 500,200,100,50,20,5
  120 dim nw(6):for i=1 to 6:read nw(i):next
  130 dim az(6):for i=1 to 6:az(i)=1000:next
  140 dim z(6)
  150 rem
  160 rem hauptschleife
  170 rem
  180 print:print:print "geldautomat":print "-----------":print
  190 gs=0:for i=1 to 6:gs=gs+az(i)*nw(i):next:print "inhalt =";gs;"euro":print
  200 input "auszahlbetrag";b
  210 if b>gs then print "nicht genug geld vorhanden":goto 180
  220 for i=1 to 6:z(i)=0:next
  230 for i=1 to 6
  240 n=int(b/nw(i)):if n>az(i) then n=az(i)
  250 az(i)=az(i)-n:z(i)=n:b=b-n*nw(i)
  260 next i
  270 if b>0 then print "kann nicht passend auszahlen":goto 180
  280 print "auszahlung:"
  290 for i=1 to 6
  300 if z(i)>0 then print " ";z(i);"x";nw(i)
  310 next i:goto 180
:-)

@KlaliB: Wenn Du etwas programmieren willst, solltest Du von den *Grundlagen* der Programmiersprache auch alles lernen. Objektorientierung könnte man für diese Aufgabe weglassen, obwohl sich das für's modellieren eines Bankautomaten natürlich auch anbietet.

Wieso weisst Du nicht *was* Du programmieren sollst? Gibt's keine schriftliche Aufgabenstellung? Keine Vereinbarung mit dem Lehrer was den Umfang des Referats angeht?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 13. Mai 2009, 19:15

BlackJack, in einem echten Basic-Programm hätte man niemals so umfangreich kommentiert und mit Leerzeichen so um sich geschmissen ;) Ein "10FORI=1TO6:PRINTI:NEXT" wäre realistischer. Leerzeichen landen IIRC beim C64 nämlich (im Gegensatz z.B. zum Schneider CPC, der das bessere Basic hatte) im Programm und müssen jedes Mal mit interpretiert werden.

Schließlich muss ich sagen, dass das Basic-Programm auf triviale Weise in ein Python-Programm konvertiert werden kann. Eine Lösung in Factor wäre hier besser gewesen ;)

Stefan
BlackJack

Mittwoch 13. Mai 2009, 19:43

@sma: Ich hätte auch in einem "echten" C64-BASIC-Programm so mit den Leerzeichen um mich geworfen. Ich hatte damals immer zwei Varianten von meinen Programmen -- eine zum bearbeiten und eine, bei der mit einem Programm alle überflüssigen Leerzeichen und Kommentare entfernt wurden und auch so viel wie möglich zu laaaangen Zeilen zusammengefasst wurden.

Ausserdem habe ich absichtlich (*hust*) einen Fehler eingebaut. ;-)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 13. Mai 2009, 23:10

sma hat geschrieben:Schließlich muss ich sagen, dass das Basic-Programm auf triviale Weise in ein Python-Programm konvertiert werden kann. Eine Lösung in Factor wäre hier besser gewesen ;)
Ach, eine Whitespace-Lösung wäre optimal, insbesondere wenn der Quelltext dann auch noch auf die Handouts soll.

Letztendlich geht doch so ein Programm ganz einfach, lieber KlaliB, ist sogar ein Einzeiler:

Code: Alles auswählen

print 'U29ycnksIGljaCBnZWJlIGF1Zg==\n'.decode('base64')
Da programmieren ja immens schwer ist erkläre ich dir mal was das Programm tut:
  • Zuerst wird der Speicher mit dem Unsigned Integer Wert 29 überschrieben (U29)
  • Dann wird mit 'y' ein Speicherabbild angelegt.
  • 'cnks' steht für Current Next Key Sequence erstellt eine Liste der Sequenzen die nun noch weiterverarbeitet werden muss.
  • 'I' steht für Integer, also Ganzzahlen. Wie N in der Mathematik
  • 'G' definiert Geldbeträge. Nun weiß der Computer dass es um Geldbeträge geht und er kann die nun besser berechnen.
  • 'lj' ist eine recht alte Funktion, die stand ursprünglich für LaserJet, das ist sind alte Laserdrucker von HP, die ist nicht zwingend nötig, ist aber Aufgrund der Kompatibilität zu älteren Programmen dringend angeraten!
  • 'CB' ist 'Change Binary', damit wechselt der Computer vom Binärmodus (du weißt schon, 01011101, wie in den ganzen Filmen) in den Dezimalmodus. Deine Geldbeträge werden automatisch konvertiert.
  • 'n' sagt aus dass es 'n' Zahlen sind. Wir wollen ja eine allgemeine Lösung.
  • 'ZWJ' sind die Initialen von JWZ einem recht bekannten Programmierer rückwährts geschrieben. Er hat beim Optimieren geholfen, und diese Optimierunen werden nun eben durch 'ZWJ' aktiviert.
  • 'l' schaltet die Ausgabe auf 'Lang' um (englisch 'long')
  • 'IGF' steht für "Identity Governance Framework" und stellt sicher dass die Ausgabe des Programms in einer für ihn verständlichen Weise ausgegeben wird.
  • '1Z' ist die Anzahl von Stellen.
  • 'g' ist 'go' und bedeutet dass die Eingabe abgeschlossen ist, und dass der Computer nun losrechnen soll.
  • '==' bedeutet, dass die Korrektheit des Ergebnisses zweimal geprüft werden soll. Passiert ja ab und zu dass Software falsche Werte ausgibt, das kommt davon wenn man die Daten nicht mindestens doppelt nachprüfen lässt.
  • '\n' bedeutet dass eine neue Zeile angefangen werden soll.
  • 'print' zeigt schließlich das Ergebnis auf dem Bildschirm an.
Falls du den Quelltext nicht auf Anhieb verstehst ist das ok, aber die Ergebnisse sind auf jeden Fall richtig, da doppelt geprüft!!!

So, und nun ist höchste Zeit zum Duschen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Mittwoch 13. Mai 2009, 23:32

Leonidas hat geschrieben: [*]Dann wird mit 'y' ein Speicherabbild angelegt.
Daran erkennt man übrigens auch gut, dass Python von vi abstammt.
So, und nun ist höchste Zeit zum Duschen.
Wasser marsch!
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Mittwoch 13. Mai 2009, 23:59

@birkenfeld: Naja, Python stammt nicht direkt von vi ab, sondern wohl eher von dem Emacs-Mode, der den vi emuliert. Der heisst viper. ;-)
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 14. Mai 2009, 06:27

Oh, nein. BlackJack ein Ketzer :? Welch schrecklicher Tag.
KlaliB
User
Beiträge: 50
Registriert: Mittwoch 13. Mai 2009, 13:28

Donnerstag 14. Mai 2009, 15:48

BlackJack hat geschrieben:Ich habe gerade folgendes auf meinem C64 gehackt:

Code: Alles auswählen

   10 rem
   20 rem geldautomat
   30 rem -----------
   40 rem
   50 rem nw() - notenwerte
   60 rem az() - anzahl scheine im automaten
   70 rem z() - anzahl scheine fuer die ausgabe
   80 rem gs - gesamtsumme im automaten
   90 rem
  100 rem notenwerte
  110 data 500,200,100,50,20,5
  120 dim nw(6):for i=1 to 6:read nw(i):next
  130 dim az(6):for i=1 to 6:az(i)=1000:next
  140 dim z(6)
  150 rem
  160 rem hauptschleife
  170 rem
  180 print:print:print "geldautomat":print "-----------":print
  190 gs=0:for i=1 to 6:gs=gs+az(i)*nw(i):next:print "inhalt =";gs;"euro":print
  200 input "auszahlbetrag";b
  210 if b>gs then print "nicht genug geld vorhanden":goto 180
  220 for i=1 to 6:z(i)=0:next
  230 for i=1 to 6
  240 n=int(b/nw(i)):if n>az(i) then n=az(i)
  250 az(i)=az(i)-n:z(i)=n:b=b-n*nw(i)
  260 next i
  270 if b>0 then print "kann nicht passend auszahlen":goto 180
  280 print "auszahlung:"
  290 for i=1 to 6
  300 if z(i)>0 then print " ";z(i);"x";nw(i)
  310 next i:goto 180
:-)

@KlaliB: Wenn Du etwas programmieren willst, solltest Du von den *Grundlagen* der Programmiersprache auch alles lernen. Objektorientierung könnte man für diese Aufgabe weglassen, obwohl sich das für's modellieren eines Bankautomaten natürlich auch anbietet.

Wieso weisst Du nicht *was* Du programmieren sollst? Gibt's keine schriftliche Aufgabenstellung? Keine Vereinbarung mit dem Lehrer was den Umfang des Referats angeht?


was ist mit diesen zahlen? und was heist rem?
Antworten