Seite 1 von 1

Akkordrechner aus QBasic (war: Brauche mal Hilfe!)

Verfasst: 02.11.2004 18:50
von Peddawing
Hallo Leute.

Brauche mal Hilfe da ich ein paar Sachen nicht so ganz blicke.
Habe sonst nur in Qbasic kleine Progis geschrieben.
Kann mir mal einer das folgende Listing aus Qbasic
in PB umschreiben?
Ich habe schon nach ähnlichen Sachen gesucht aber leider vergebens.
10 cls
20 print"akkordrechner"
30 input"ruestzeit(j/n)";q$
40 if q$="j" then goto 200
50 if q$="n" then goto 100
100 input"vorgabezeit";a
110 input"anzahl teile";b
120 c=a*b
130 d=c/75
140 print"ausgabe in std. bei 75 min. verrechnung!"
150 prind d
160 goto 300
200 input"ruestzeit;a
210 input"vorgabezeit";b
220 input"anzahl teile";c
230 d=b*c
240 e=d+a
250 f=e/75
260 print"ausgabe in std. bei 75 min. verrechnung!"
270 print f
280 goto 300
300 input"neue rechnung(j/n)";v$
310 if v$="j" then goto 30
320 if v$="n" then end

Schon mal Danke.
Peddawing

Verfasst: 02.11.2004 18:57
von Andre
Du willst doch lernen, oder nicht ? :wink:

Dafür schaust Du Dir mal die Befehle der Console Library in der Anleitung an, da findest Du analog den QBasic-Befehlen die fast identischen Befehle in PB.

Goto (wenn's denn sein muss) findest Du auch in der Anleitung, statt Zeilennummern (gibt's in PB wie in den meisten anderen aktuellen Programmiersprachen nicht) verwendest Du Sprungmarken.

Verfasst: 02.11.2004 19:02
von freedimension
und nächstes Mal versuchen wir's dann mal mit sinnvollen Überschriften (noch hast du die Chance dazu das selber schnell zu ändern, dazu einfach den Edit-Knopf über deinem Post betätigen)

cu
3dim

Verfasst: 02.11.2004 19:06
von Rob
> Brauche mal Hilfe!

1. Klar brauchst du Hilfe. Jeder hier braucht Hilfe, das ist der Zweck des Forums. Wähle einen aussagekräftigen Post-Titel.

2. Es gibt Code-Tags: [code] dein code [/code]. Pack deinen Code dort rein, ist besser zu lesen.

3. Da es in deinem Thread um QBasic geht, kommt er besser ins "Andere Sprachen"-Forum.

Und viel übersetzen musst du da eigentlich nicht, diese simplen QBasic-befehle gibts in ähnlicher Form auch in PB. Siehe Hilfe.

Und willkommen im PureBoard :allright:

Schreibweise der Befehle unklar!

Verfasst: 02.11.2004 22:06
von Peddawing
Hi Leute.

Versuche seit 3 Tagen das oben gelistete Progi in PB ans laufen zu bekommen.
Leider ist mir die j/n abfrage immer noch Schleierhaft.
Die korekte Schreibweise der Befehle würde mir schon weiterhelfen.
Habe mir schon etliche Tutotials angesehen, leider war nichts
passendes dabei.

Peddawing

Verfasst: 02.11.2004 23:05
von Deeem2031
Ich habs ma versucht:

Code: Alles auswählen

OpenConsole()
PrintN("akkordrechner")
Line30:
PrintN("ruestzeit(j/n)")
q.s = Input():PrintN("")
If q="j":Goto Line200:EndIf
If q="n":Goto Line100:EndIf
Line100:
PrintN("vorgabezeit")
a = Val(Input()):PrintN("")
PrintN("anzahl teile")
b = Val(Input()):PrintN("")
c=a*b 
d=c/75 
PrintN("ausgabe in std. bei 75 min. verrechnung!")
PrintN(Str(d))
Goto Line300 
Line200:
PrintN("ruestzeit")
a = Val(Input()):PrintN("")
PrintN("vorgabezeit")
b = Val(Input()):PrintN("")
PrintN("anzahl teile")
c = Val(Input()):PrintN("")
d=b*c 
e=d+a 
f=e/75 
PrintN("ausgabe in std. bei 75 min. verrechnung!")
PrintN(Str(f))
Goto Line300
Line300:
PrintN("neue rechnung(j/n)")
v.s = Input():PrintN("")
If v="j":Goto Line30:EndIf
If v="n":End:EndIf
Zwar versteh ich paar Zeilen nich, z.B. "Goto Line300" wenn danach gleich Line300 kommt, aber is ja egal ;)
Hab außerdem nach jedem Input() ein :PrintN("") gehängt damit in die nächste Zeile gesprungen wird.

Verfasst: 03.11.2004 09:38
von ts-soft
Aus diesen 80'er Spaghetti-Code kann man doch eine Batch-Datei machen. Dazu Bedarf es doch keiner Programmiersprache :lol:

Verfasst: 03.11.2004 09:51
von freedimension
So, Chance vertan. Die Extraarbeit die ich damit hatte den Titel zu ändern stelle ich Dir dann in Rechnung :twisted: ;-) ;-)

Achja: Willkommen im Club. Wenn du Fragen hast kannst du sie gerne stellen und lass Dich nicht von so ein paar Forenregeln (also sinnvoller Titel usw.) erschrecken oder gar verjagen, die sind schnell gelernt und wir sind eigentlich (fast) alle ganz lieb und beißen nicht :allright:

Verfasst: 03.11.2004 16:02
von Falko
Ich würde eher sagen, aus Beispielen kann jeder lernen :mrgreen:

Hab das mal in einer Windowsausgabe gemacht.
Kommastellen bei VorgabeZeit bitte mit den Punkt angeben.

Am Einfachsten geht das mit dem in PB enthaltenen VisualDesigner.
Man braucht dann in den Optionen nur noch die Hauptschleife und
die jeweiligen Anpassungen machen. Falls da noch in der Rechnung
falsch ist kann du das ja in der Procedure rechne() abändern.
Wir arbeiten schon seit langen nicht mehr mit Akkord sondern mit
Prämie. Deshalb kann ich nicht über die Genauigkeit garantieren :mrgreen:
MfG Falko

Code: Alles auswählen

; PureBasic Visual Designer v3.90 build 1360


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Text_1
  #String_0
  #Text_2
  #String_1
  #String_2
  #Text_4
  #CheckBox_0
  #Text_5
  #Text_6
  #String_3
  #Button_1
  #Button_2
  #Text_7
  #Text_8
  #Text_9
  #String_4
  #Text_10
EndEnumeration

;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Arial", 14)
Global FontID2
FontID2 = LoadFont(2, "Arial", 8, #PB_Font_Bold)
Global VorgabeZeit.f
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 360, 19, 351, 262, #PB_Window_SizeGadget | #PB_Window_TitleBar , "Akkordberechnung created by Falko")
    If CreateGadgetList(WindowID())
      TextGadget(#Text_0, 80, 10, 190, 29, "Akkordrechner", #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_0, FontID1)
      TextGadget(#Text_1, 30, 60, 68, 20, "Vorgabezeit")
      SetGadgetFont(#Text_1, FontID2)
      StringGadget(#String_0, 38, 80, 50, 20, "")
      TextGadget(#Text_2, 140, 60, 58, 14, "Anz. Teile")
      SetGadgetFont(#Text_2, FontID2)
      StringGadget(#String_1, 135, 80, 60, 20, "")
      StringGadget(#String_2, 230, 80, 32, 20, "75")
      TextGadget(#Text_4, 230, 59, 82, 14, "Akkord-Faktor")
      SetGadgetFont(#Text_4, FontID2)
      CheckBoxGadget(#CheckBox_0, 91, 111, 14, 15, "")
      TextGadget(#Text_5, 40, 111, 41, 13, "Rüsten")
      SetGadgetFont(#Text_5, FontID2)
      TextGadget(#Text_6, 32, 150, 227, 14, "Ausgabe in std. bei 75 min. Verrechnung:")
      SetGadgetFont(#Text_6, FontID2)
      StringGadget(#String_3, 264, 147, 46, 20, "")
      ButtonGadget(#Button_1, 40, 180, 120, 50, "Berechnen")
      SetGadgetFont(#Button_1, FontID1)
      ButtonGadget(#Button_2, 200, 180, 110, 50, "Beenden")
      SetGadgetFont(#Button_2, FontID1)
      TextGadget(#Text_7, 93, 88, 20, 13, "min.")
      TextGadget(#Text_8, 270, 87, 19, 13, "min.")
      TextGadget(#Text_9, 166, 111, 47, 15, "Rüstzeit")
      SetGadgetFont(#Text_9, FontID2)
      StringGadget(#String_4, 220, 104, 42, 20, "")
      TextGadget(#Text_10, 270, 110, 19, 14, "min.")
      
    EndIf
  EndIf
EndProcedure

Procedure.s rechne(Vorgabe.f, Anz_Teile, Faktor, Ruestzeit,Checked)
   If Checked=0
      Ergebnis.f=(Vorgabe*Anz_Teile)/Faktor
      Debug Ergebnis
   Else
      Ergebnis.f=((Vorgabe*Anz_Teile)+Ruestzeit)/Faktor
   EndIf
   ProcedureReturn StrF(Ergebnis,2)
EndProcedure

;------- Mainfile
Open_Window_0()

Repeat
  
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    
    ;Debug "WindowID: " + Str(EventWindowID())
    
    GadgetID = EventGadgetID()
    
    If GadgetID = #String_0
      ;Debug "GadgetID: #String_0"
      VorgabeZeit = ValF(GetGadgetText(#String_0))
    ElseIf GadgetID = #String_1
      ;Debug "GadgetID: #String_1"
      Anz_Teile = Val(GetGadgetText(#String_1))
    ElseIf GadgetID = #String_2
      ;Debug "GadgetID: #String_2"
      Faktor = Val(GetGadgetText(#String_2))
    ElseIf GadgetID = #CheckBox_0
      ;Debug "GadgetID: #CheckBox_0"
      If GetGadgetState(#Checkbox_0)=1
         Checked=1
      Else
         checked=0
      EndIf
    ElseIf GadgetID = #String_3 ; Da dieses nur für die Ausgabe ist bleibt es hier offen
      ;Debug "GadgetID: #String_3"
      
    ElseIf GadgetID = #Button_1
      ;Debug "GadgetID: #Button_1"
     SetGadgetText(#String_3,rechne(VorgabeZeit, Anz_Teile, Faktor, Ruestzeit,Checked))
    ElseIf GadgetID = #Button_2
      ;Debug "GadgetID: #Button_2"
      End ; Beenden
    ElseIf GadgetID = #String_4 
      ;Debug "GadgetID: #String_4"
      Ruestzeit = Val(GetGadgetText(#String_4))
    EndIf
    
  EndIf
  
Until Event = #PB_EventCloseWindow

End
;

Verfasst: 03.11.2004 18:47
von Peddawing
Hallo Leute.

Ich möchte mich ganz Herzlich für eure Hilfe bedanken.
Anhand der Listings verstehe ich schon mal den einen oder anderen Fehler den ich beim Versuch des umscheibens gemacht habe.
Habe so zumindest einen Anfang auf den ich aufbauen kann.

Gruss aus Dortmund.

Peddawing