Seite 1 von 2

Kleine Fragen

Verfasst: 10.04.2006 19:26
von PureBaser
Hi!
Es sind Ferien und will das Programmieren nun endlich durchziehen!!! Und im Eiltempo entwickeln sich immer einige Fragen, die mir die Hilfe oder die Logik nicht beantworten kann...

1.

Code: Alles auswählen



Procedure Prozedur1(Var1.s,Var2.s)
PrintN(Var1)
PrintN(Var2)
EndProcedure

OpenConsole()
Prozedur1("Eins","Zwei")
CloseConsole()
End
Das seltsame ist, dass die Konsole die Erste Variable in der zweiten Zeile darstellt und die zweite Variable in der Ersten Zeile darstellt, das dürfte es nicht geben!!!

2.

Warum kann ich

Code: Alles auswählen

"Ergebnis.f = ValF(Zahl1$) / ValF(Zahl2$)"
schreiben aber nicht

Code: Alles auswählen

ValF(Zahl1$) / ValF(Zahl2$) = Ergebnis
?

3.

Was sind schneller bzw. bessere Entscheidungen - IF-Entscheidungen oder Select-Case - Entscheidungen ? Wenn Sie die gleiche Funktion bewirken ist die Auswahl doch beliebig?

4.

In der Hilfe wird nicht erklärt, ob der Debugger beim "Executable erstellen" auch eingefügt ist oder nicht? Ist diese Option unabhängig von den Compilereinstellung ("Debugger aktiviert"), d.h. garantiert ein Release?

Thx!!

Verfasst: 10.04.2006 19:35
von Green Snake
1)

kann ich nicht bestätigen

2)
weil du nicht einen wert funktionen zuweisen kannst, der compiler weis ja nicht was du willst und weil es in PB _leider_ kein "==" gibt

3)
gibt schon einige threads dazu, ich glaube auber, dass ifs schneller sind

4)
doch, irgendwo in der hilfe steht das.
alle befehle wie z.B. Debug "MOIN" werden _nicht_ in die exe mitcompiliert

Re: Kleine Fragen

Verfasst: 10.04.2006 19:43
von ts-soft
PureBaser hat geschrieben:Hi!
Es sind Ferien und will das Programmieren nun endlich durchziehen!!! Und im Eiltempo entwickeln sich immer einige Fragen, die mir die Hilfe oder die Logik nicht beantworten kann...

1.

Code: Alles auswählen



Procedure Prozedur1(Var1.s,Var2.s)
PrintN(Var1)
PrintN(Var2)
EndProcedure

OpenConsole()
Prozedur1("Eins","Zwei")
CloseConsole()
End
Das seltsame ist, dass die Konsole die Erste Variable in der zweiten Zeile darstellt und die zweite Variable in der Ersten Zeile darstellt, das dürfte es nicht geben!!!
Bei mir wird es in korrekter Reihenfolge dargestellt!
PureBaser hat geschrieben: 3.

Was sind schneller bzw. bessere Entscheidungen - IF-Entscheidungen oder Select-Case - Entscheidungen ? Wenn Sie die gleiche Funktion bewirken ist die Auswahl doch beliebig?
Den Geschwindigkeitsunterschied kannste ausser Acht lassen, ist minimal. Der Rest ist eine Frage des Stils
PureBaser hat geschrieben: 4.

In der Hilfe wird nicht erklärt, ob der Debugger beim "Executable erstellen" auch eingefügt ist oder nicht? Ist diese Option unabhängig von den Compilereinstellung ("Debugger aktiviert"), d.h. garantiert ein Release?

Thx!!
Der Debugger wird lediglich in der Exe, die temporär im Compilers-Verzeichnis entsteht eingefügt, wenn aktiviert. Die normal erstellte Exe enthält diesen nicht!

Verfasst: 10.04.2006 20:39
von MVXA
@PureBaser
Warum suchst du den Fehler immer bei PureBasic und nicht bei dir?

> Den Geschwindigkeitsunterschied kannste ausser Acht lassen, ist minimal. Der Rest ist eine Frage des Stils
Nunja, bei 500000 Abfragen oder so zeigt sich ein Unterschied von etwa
einer Sekunde...

Verfasst: 10.04.2006 20:42
von Deeem2031
MVXA hat geschrieben:> Den Geschwindigkeitsunterschied kannste ausser Acht lassen, ist minimal. Der Rest ist eine Frage des Stils
Nunja, bei 500000 Abfragen oder so zeigt sich ein Unterschied von etwa
einer Sekunde...
Aha, und was ist deiner Meinung nach schneller? (Achtung, Fangfrage)

Verfasst: 10.04.2006 20:44
von PureBaser
Zu 1. Wieder mal den falschen Code gepostet....
Dies passiert bei zwei Input() - Anfragen:

Code: Alles auswählen

Procedure Prod(Var1$,Var2$)
PrintN("")
Print(Var1$)
PrintN(Var2$)
EndProcedure

OpenConsole()

Prod(Input(),Input())

Input()
CloseConsole()
End
Wo ich mich gerade mit den Prozeduren beschäftige, der Code gehr hier nicht:

Code: Alles auswählen

Procedure Beispiel(Var1,Var2)
PrintN("")
PrintN(Val(Var1))     ; hier wird ein String erwartet, obwohl es long-Variablen sind
PrintN(Val(Var2))
EndProcedure

OpenConsole()

Beispiel(1,2)

Input()
CloseConsole()
End
Desweiteren wird die Prozedurenliste nicht aktualisiert, wenn eine Prozedur gelöscht wird oder neukompiliert wird...

Verfasst: 10.04.2006 20:50
von MVXA
PrintN erwartet einen String.... Val gibt allerdings eine Long zurück

Verfasst: 10.04.2006 20:51
von PureBaser
@ MVXA: Naja, mir erscheint der Eindruck, dass PureBasic in Verhältnis zu anderen Programmiersprachen sehr viel mehr buggy ist, wenn ich mir so die Foren-Beiträge anschaue. Ich kenne PB und dieses nun seit gut 2 Jahren aber fange erst jetzt richtig an. Da PB relativ zum Lernaufwand wohl das mächtigste Basic für fensterorientierte Windows-Anwendungen ist und vor allem die Community hier tatkräftig unterstützt, kann ich über die Bugs hinwegsehen, zumal pausenlos gefixt wird. Aber du hast auch Recht: Ich bemühe mich um fehlerfreiere Codes bzw. um mehr Vorausdenken! Btw, wo steht das mit 4.) unter der Hilfe?

Danke für eure Mühen :allright:

EDIT: Was für ein DUMMER Fehler von mir im letzten Code :oops:

Verfasst: 10.04.2006 20:54
von ts-soft
Zu 1: wurde bereits gesagt, wird alles korrekt ausgegeben
Zu 2: Für Print wird ein String erwartet.

Code: Alles auswählen

Procedure Beispiel(Var1,Var2)
PrintN("")
PrintN(Str(Var1))     ; hier wird ein String erwartet, obwohl es long-Variablen sind
PrintN(Str(Var2))
EndProcedure

OpenConsole()

Beispiel(1,2)

Input()
CloseConsole()
End 
Frage: Was hast Du die letzen 2 Jahre mit PB gemacht? :mrgreen:

Verfasst: 10.04.2006 20:58
von PureBaser
Ok ich hab das Beispiel nochmal editiert
(Ich hab den falschen Code durch den selben falschen Code ersetzt und nun endlich (!!) ist er richtig) Bin wohl etwas übermüdet :freak:

Die letzten zwei Jahre, das war so ein Hin und Her bei den Programmiersprachen zwischen PB, Freebasic, C#, Delphi, Quickbasic et cetera und den Entschluss bis zum Abi nicht proggen zu wollen. Aber mir fehlte Abwechslung im Schullalltag und so ist das Programmieren doch nen guter Streßabbaufaktor!

Code: Alles auswählen

Procedure Prod(Var1$,Var2$) 
PrintN("") 
Print(Var1$) 
PrintN(Var2$) 
EndProcedure 

OpenConsole() 

Prod(Input(),Input()) 

Input() 
CloseConsole() 
End