Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fragen zu mehreren Befehlen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 05.06.2014, 09:12    Titel: Fragen zu mehreren Befehlen Antworten mit Zitat

Hallo
wollte mir mal als kleiner Amateur, alle für mich brauchbaren Befehle zusammenschreiben. Bei einigen hab ich einige Fragen an euch:

• Was ist besser Gosub-Return oder Sub-SubEnd und warum?

• Welchen Variablen-Typ benutzt man am sinnvollsten, alle oder beschrängt man sich nur auf 3 wegen dem Überblick. normal reichen doch Integer und String, oder?

• Ist bei FB sowas möglich "If A <> 4 then" (ist A ungleich 4) wie bei BasicV2.0 ? oder muss man das so machen "If Not A=4 then" oder muss man dann UNTIL statt WHILE nehmen ?

• Erfahrungswerte von euch, wieviel Variablen Shared ihr so (%) oder nutzt ihr mehr lokale Variablen ?

• hab gelesen das FB kein Sound/Musik (im Hintergrund) spielen kann. ist das richtig, bzw nur mit lib ?,

• und was ist eigentlich der Unterschied von LTRIM und RTRIM ? so wie ich gelesen habe steht in der FB-Hilfe die gleiche Funktion?

• Welche typ von Variablen macht VAR bei Ganzzahlen? Integer oder LongInteger ? in der FB-Hilfe steht Integer, aber als Beispiel dazu steht LongInteger


Danke für die Antworten
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 05.06.2014, 10:59    Titel: Re: Fragen zu mehreren Befehlen Antworten mit Zitat

C64-Fan hat Folgendes geschrieben:
Was ist besser Gosub-Return oder Sub-SubEnd und warum?

SUB, da Code schön in einem Block gekapselt - GOSUB hingegen erlaubt Sprung zu einer beliebigen Sprungmarke (-> schlechte Strukturierung)

C64-Fan hat Folgendes geschrieben:
Welchen Variablen-Typ benutzt man am sinnvollsten, alle oder beschränkt man sich nur auf 3 wegen dem Überblick. normal reichen doch Integer und String, oder?

Nein, so würde ich das keinesfalls sagen. Welchen Datentyp man verwendet hängt immer vom Anwendungsfall ab. Wenn z.B. sehr große Zahlen gespeichert werden sollen wirst du Long brauchen; bei Gleitkommaberechnungen Single oder Double, etc. Oft spielen auch Performanz-Überlegungen eine Rolle.

C64-Fan hat Folgendes geschrieben:
Ist bei FB sowas möglich "If A <> 4 then" (ist A ungleich 4) wie bei BasicV2.0 ? oder muss man das so machen "If Not A=4 then" oder muss man dann UNTIL statt WHILE nehmen ?

FreeBasic orientiert sich syntaktisch an Q(uick)Basic und nicht an C64 Basic. In QBasic sind sowohl der "<>" Operator als auch die Schlüsselwörter UNTIL und WHILE verfügbar - daher ebenso in FreeBasic.

C64-Fan hat Folgendes geschrieben:
Erfahrungswerte von euch, wieviel Variablen Shared ihr so (%) oder nutzt ihr mehr lokale Variablen ?
0% bzw. so wenige wie möglich, wenn das Programm damit nicht unverhältnismäßig komplexer wird. Globale Variablen machen dein Programm durch deren globale Verfügbarkeit fehleranfälliger und schwerer zu verstehen.

C64-Fan hat Folgendes geschrieben:
hab gelesen das FB kein Sound/Musik (im Hintergrund) spielen kann. ist das richtig, bzw nur mit lib ?
Zumindest ist keine solche Funktionalität in die rtlib integriert (da sind die Standardfunktionen von FB drin), das heißt du musst das selber implementieren. Wie du den Code in dein Programm integrierst ist deine Entscheidung bzw. richtet sich nach dem Code, den du verwenden willst - sei das als externe Bibliothek oder als Include File.

C64-Fan hat Folgendes geschrieben:
und was ist eigentlich der Unterschied von LTRIM und RTRIM ? so wie ich gelesen habe steht in der FB-Hilfe die gleiche Funktion?
Nein, tut es nicht; schau noch mal genauer:
http://www.freebasic-portal.de/befehlsreferenz/ltrim-353.html hat Folgendes geschrieben:
LTRIM (Left TRIM) entfernt bestimmte führende Zeichen aus einem String.
http://www.freebasic-portal.de/befehlsreferenz/rtrim-432.html hat Folgendes geschrieben:
RTRIM (=right trim) entfernt bestimmte angehängte Zeichen aus einem String.

Sprich: LTRIM entfernt Zeichen auf der linken Seite; RTRIM entsprechend auf der rechten.

C64-Fan hat Folgendes geschrieben:
Welche typ von Variablen macht VAR bei Ganzzahlen, Integer oder LongInteger ? in der FB-Hilfe steht Integer, aber als Beispiel dazu steht LongInteger
Bitte ließ dir die Doku noch einmal. VAR deklariert implizit typisierte Variablen, d.h. der Typ wird aus der Instanz abgeleitet und kann daher sowohl Integer als auch LongInteger oder ein beliebiger anderer Typ sein.
//edit: fallst du meintest welchen Typ eine Ganzzahl als literal hat: Solang sich die Zahl als Integer abbilden lässt, standardmäßig integer, wenn sie diese Größe überschreitet, LongInt
Ein Beispiel:
Code:
Var a = 1
#Print TypeOf(a)

Var b = 2ll
#Print TypeOf(b)

Var c = 123456789012345
#Print TypeOf(c)
Wenn du den code compilierst, gibt der Compiler die abgeleiteten Typen aus. Also nochmal zur Sicherheit: das "#print" gibt meldungen beim compilieren aus, nicht zur Laufzeit (wie "print") - wenn das obige Programm ausgeführt wird passiert gar nichts (sichtbares).

a wird Integer, weil standardmäßig jede Ganzzahl Integer wird, sofern sie nicht zu groß ist.

b wird LongInt, weil dies explizit bei der Zahl angeben ist, dass diese vom Typ LongInt ist (Suffix "ll"). Beachte dass das die Zahl 2 ist mit zwei kleinen "L" hinten dran, nicht etwa 211.

c wird LongInt, weil die Zahl zu groß ist für den Integer Datentyp.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 05.06.2014, 14:27    Titel: Re: Fragen zu mehreren Befehlen Antworten mit Zitat

St_W hat das Wesentliche ja schon gesagt, von mir nur ein paar Ergänzungen:
C64-Fan hat Folgendes geschrieben:
• Was ist besser Gosub-Return oder Sub-SubEnd und warum?

In FreeBASIC heißt der Block SUB ... END SUB. Einer der vielen Vorteile von SUB ist die Übergabe von Parametern, die man bei GOSUB relativ umständlich und mit viel Aufmerksamkeit verwalten muss. Umgekehrt bietet GOSUB keinen mir bekannten Vorteil, den man mit SUB nicht ebenfalls erreichen kann (sieht man mal von einem Unter-Unterprogramm ab, das nur vom aufrufenden Unterprogramm aus sichtbar sein soll). Ich würde es so formulieren: GOSUB ist ein Vorläufer von SUB und so lange eine gute Erfindung, solange es noch kein SUB gibt. happy
C64-Fan hat Folgendes geschrieben:
• Welchen Variablen-Typ benutzt man am sinnvollsten, alle oder beschrängt man sich nur auf 3 wegen dem Überblick. normal reichen doch Integer und String, oder?

Wenn ich "mal eben schnell" eine Variable brauche, verwende ich INTEGER (schnellster Ganzzahlen-Datentyp), SINGLE (oder ggf. DOUBLE) und STRING. Im Detail kann es dann aber durchaus Sinn machen, sich genauer anzusehen, ob ein anderer Ganzzahlen-Datentyp sinnvoller ist. Wenn ich kleine Ganzzahlen in rauen Mengen auf die Festplatte zu speichern habe, nehme ich dann doch lieber kleinere Datentypen, TB-Festplatten hin oder her.
St_W hat Folgendes geschrieben:
Wenn z.B. sehr große Zahlen gespeichert werden sollen wirst du Long brauchen

Gemeint war sicherlich LONGINT (ggf. sogar ULONGINT, wenn es nicht negativ werden kann und du doppelt so große positive Zahlen zur Verfügung haben willst).
C64-Fan hat Folgendes geschrieben:
• Ist bei FB sowas möglich "If A <> 4 then" (ist A ungleich 4) wie bei BasicV2.0 ? oder muss man das so machen "If Not A=4 then" oder muss man dann UNTIL statt WHILE nehmen ?

Zu letzter Frage: Ob du
Code:
DO WHILE A <> 4

oder
Code:
DO UNTIL A = 4

schreibst, ist hauptsächlich Geschmackssache.

C64-Fan hat Folgendes geschrieben:
• Erfahrungswerte von euch, wieviel Variablen Shared ihr so (%) oder nutzt ihr mehr lokale Variablen ?

Ich gehöre vermutlich zu denen hier im Forum, die relativ viel SHARED einsetzen. lachen
Das liegt an meinem Programmierstil, da ich SUB sehr gerne verwende, um das Programm zu strukturieren, andererseits dadurch eine ganze Reihe an Variablen habe (Spielfeld-Daten usw.), die ich in fast jeder SUB brauche. Nun könnte ich entweder immer eine große Liste an Parametern übergeben oder (mache ich auch manchmal) alle allgemeinen Daten in ein großes UDT packen und dieses übergeben, was dann letztlich aber kein großer Unterschied mehr zu globalen Variablen darstellt ...
Nichtsdestotrotz: Selbst wenn ich recht viel SHARED einsetze, nutze ich es (für meinen Programmierstil) so wenig wie möglich und ausschließlich für Variablen, die ich wirklich in den allermeisten Prozeduren brauche.
C64-Fan hat Folgendes geschrieben:
• Welche typ von Variablen macht VAR bei Ganzzahlen?

Ich halte VAR persönlich für keinen erstrebenswerten Befehl - bei DIM AS Datentyp weiß man sofort, was Sache ist und muss nicht noch Nachforschungen anstellen was bei
Code:
VAR a = b

für ein Datentyp gemeint ist. VAR scheint mir was für faule Leute zu sein, die keine Kontrolle über ihre Datentypen haben. grinsen
(Vielleicht macht es im Zusammenhang mit Vererbung Sinn?)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 05.06.2014, 15:50    Titel: Antworten mit Zitat

FreeBasic bietet mittlerweilen sogar Objektorientierung, also Konzepte aus der professionellen Software-Entwicklerwelt.

Für einen Anfänger sinnvoll: Schritt um Schritt, idealerweise Erfahrung sammeln: Nachdem Du im ersten Programm mit GOSUB den ersten "Stolper" aufgrund eines Side-Effekts gemacht hast, wirst Du SUB und FUNCTION mit lokalen Variablen schätzen wissen.

Und sobald eines Tages ein Programmierprojekt derart komplett wird, dass eine grosse Sammlung loser SUBs und FUNCTIONs nicht mehr handhabbbar wird, wirst Du TYPE mit sog. Methoden (=auch SUBs und FUNCTIONs, die aber unmittelbar mit einer Variable Deines TYPEs "verheiratet" sind) und damit die Objektorientierung schätzen lernen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 06.06.2014, 00:48    Titel: Re: Fragen zu mehreren Befehlen Antworten mit Zitat

nemored hat Folgendes geschrieben:
St_W hat Folgendes geschrieben:
Wenn z.B. sehr große Zahlen gespeichert werden sollen wirst du Long brauchen

Gemeint war sicherlich LONGINT (ggf. sogar ULONGINT, wenn es nicht negativ werden kann und du doppelt so große positive Zahlen zur Verfügung haben willst).
Ja; Danke für die Richtigstellung lächeln

in FreeBasic hab ich VAR auch noch nicht benutzt, aber in C# benutzte ich das gern für komplexe Datentypen. Also nicht etwa für Integers o.ä. sondern für komplexere Strukturen. Ich verwende es hautpsächlich (in C#) um Strukturen (Objekte) als Rückgabewert eines Funktionsaufrufs zwischenzuspeichern - also quasi für temporäre Variablen, die nur in einem begrenzten Bereich benötigt werden/gültig sind.
Man erspart sich im Grunde nur etwas Schreibaufwand und der Code wird etwas kürzer - manche argumentieren der Code würde dadurch besser lesbar; andere genau das Gegenteil. Ich weiß nicht genau wie es in FB ist, aber ich denke dass ebenso wie in C# weder ein Vorteil noch ein Nachteil hinsichtlich Performance entsteht. Darum ist es rein geschmackssache, ob man VAR verwendet oder nicht. Zu viel sollte man es jedoch trotzdem keinesfalls verwenden; das verwirrt dann eher und macht ein Programm sicherlich unleserlicher (wenn man z.b. für primitive Datentypen wie Integer oder String VARs verwendet).
In C# gibts übrigens einen Anwendungsfall, wo VAR benötigt wird, und zwar für anonyme Typen. Ich wüsste jedoch nicht, dass es sowas in FB gibt, wo es ja leider nichtmal anonyme Funktionen gibt traurig
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 06.06.2014, 10:21    Titel: Antworten mit Zitat

man, danke erstmal für die raschen und guten Antworten von euch lächeln

- das mit VAR werd ich vermeiden.

- mit dem Sound muss ich mich reinarbeiten, kann weder mit include files noch mit bibl. umgehn.
(wär nen Anreiz an die Weiterentwickler von FB die Sound und Play-Funktion miteinzubaun zwinkern


mach mir so ne kleine 4-6 Seiten-Anleitung wo alles notwendige, einfach geschrieben drinsteht und ich mal schnell nachschaun kann. die leg ich mir dann neben den PC und los gehts.
Die Idee für "Amtsvogt 3" steht schon zwinkern
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 06.06.2014, 13:05    Titel: Antworten mit Zitat

Zitat:
- mit dem Sound muss ich mich reinarbeiten, kann weder mit include files noch mit bibl. umgehn.

Das funktioniert insgesamt nicht anders als mit den FreeBASIC-eigenen Befehlen. Du brauchst einmal ein #INCLUDE, um die Bibliothek einzubinden, und dann eine Übersicht der neuen Befehle, die dir zur Verfügung stehen.
Vieleicht hilft dir Kapitel 9.2 im Spieleprogrammier-Buch weiter.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 07.06.2014, 20:23    Titel: Antworten mit Zitat

danke nemored

und:
sch.... mit dem Kopf durch die Mauer wollen hab grad gemerkt das das in "Allgemeine Fragen zu QBasic " steht. mein Beitrag sollte in "Allgemeine Fragen zu FreeBasic" stehn.
hatte die befehle ja aus fb rausgeschrieben und will mit fb arbeiten

sorry, Gnade, Gnade!
wenn einer der Mods so lieb wäre das dahin zu verschieben.
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz