Befehle die man schon als Neuling meiden sollte.

Übersicht BlitzBasic Beginners-Corner

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

BladeRunner

Moderator

Betreff: Befehle die man schon als Neuling meiden sollte.

BeitragSo, Jan 10, 2010 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal!
Ich möchte euch hier einige Befehle vorstellen deren Nutzung man nicht (mehr) empfehlen kann.
Dies soll euch helfen schon zu Beginn eurer 'Karriere' häufig auftretende Sackgassen zu vermeiden.

All diese Befehle hatten in den Kindertagen der Computer ihre Daseinsberechtigung, teils weil es noch nichts besseres gab, teils weil Arbeitsspeicher sehr teuer war und man um jedes Byte kämpfen musste.

Da BlitzBasic ein BASIC-Dialekt ist sind diese Befehle auch heute noch enthalten um eine Kompatibilität zu alten Programmen zu gewährleisten.

Moderne Rechner sind jedoch weit von dem entfernt was in den Anfangstagen so existierte, und einige Konzepte haben sich grundlegend gewandelt, und so sind die im folgenden vorgestellten Befehle meist nicht nur sinnfrei sondern oft sogar kontraproduktiv.


Delay:
Delay wird verwendet um den Computer eine gewisse Zeit lang 'anzuhalten'. Wird oftmals von Beginnern sehr ausführlich benutzt um Texte eine bestimmte Zeit lang anzuzeigen.
Das Problem liegt in der Funktionsweise von Delay: Es hält euer Programm komplett an und beschlagnahmt in der Zwischenzeit alle zur Verfügung stehende Rechnerkapazität da es in einer Schleife ständig prüft ob die Pausenzeit denn schon vorbei ist. Ihr belastet also euren Rechner und euer Programm kann in der Zwischenzeit nichts weiteres mehr unternehmen.
Lösung:
Schaut euch MilliSecs und die Timerbefehle, also z.B. CreateTimer an, mit ihnen kann man Pausen einlegen ohne das Programm komplett zu stoppen.
Ihr könnt also euren Text anzeigen, aber im Hintergrund laufen trotzdem alle Animationen etc. weiter.



Print, Locate, Write, Input:
Die Rechner früher hatten keine Grafikausgabe oder aber Sie war extremst begrenzt. Aus dieser Zeit stammen diese Befehle: Programme bestanden im Wesentlichen aus Text, alle Eingaben wurden über Tastatur vorgenommen und danach erst lief das Programm weiter.
Heute sieht das selbstredend anders aus, moderne Programme sind in der Regel graphikbasiert und laufen weiter, auch wenn Eingaben vorgenommen werden.
Daher sind auch diese Befehle Relikte aus vergangenen Tagen.
Print, Locate und Write lassen sich ohne Weiteres durch Text ersetzen.
Input ist ein klein wenig komplizierter, aber auch machbar. Sucht mal im Codearchiv nach Inputroutinen, dort gibt es einige die im Graphikmodus Eingaben erlauben ohne euer Programm auszubremsen.
Ein Beispiel wäre *HIER*



Goto und Gosub:
Werden gern und immer wieder herangezogen um den Programmfluß zu steuern. Leider bergen Goto als auch Gosub das Risiko in sich, unübersichtlichen Code zu erzeugen. Zudem wird das Handling von Variablen ein wenig erschwert da man für Berechnungen keine Datentrennung hat (es ist also leichter Fehler zu produzieren weil man aus Versehen einen Namen für zwei eigentlich verschiedene Variablen nimmt).

Exit ist zum Beispiel eine gute Alternative, um eine Schleife vorzeitig zu verlassen. Denn oft gesehen, aber schlecht umgesetzt, wird das gerne mal mit einer Goto-Anweisung gemacht, was möglicher Weise auch noch ein 'Stack Overflow' verursacht.

Code: [AUSKLAPPEN]
For Count=0 To 99
   Text 20,20+Count*20,Count

   ;WENN COUNT=5 IST, WIRD DIE SCHLEIFE VORZEITIG VERLASSEN
   If Count=5 Then Exit
Next


Mit Exit lassen sich folgende Schleifen vorzeitig beenden:
- For/Next
- For/Each/Next
- Repeat/Until
- Repeat/Forever
- While/Wend

Goto ist daher in der Regel absolut unnötig, über ein Gosub könnte man in seltenen Fällen noch streiten, aber normalerweise wird euer Programm deutlich von der Benutzung von Function profitieren.
Eine Function ist wie ein kleines Programm im Programm, welches einen besonderen Zweck erfüllt und nur die Daten kennt die es für das Ausführen dieses Zweckes benötigt.
Praktisch gesehen kann man mit Function seine eigenen BB-Befehle erstellen und benutzen wie diese auch.
Der Vorteil an Funktionen liegt daran dass man sie einmal definiert, im gesamten Programm so oft benutzen kann wie man will und dass sie einen eigenen Datenraum haben, d.h. die Berechnungen in der Funktion verändern normalerweise ausserhalb nichts, es sei denn man benutzt Globale Variablen, welche man aber normalerweise vermeiden sollte.



ImagesCollide und ImageRectCollide:
Eigentlich ein aktueller und auch recht sinnvoller Befehl.
Leider ist er jedoch nicht mit aller Hardware kompatibel, bei einigen Grafikkarten kommt es zu Abstürzen des Programms. Daher solte man diesen Befehl vermeiden.
Eine Alternative gibt es *HIER*

Ich hoffe das hilft euch ein wenig bei euren ersten Schritten.

Edit:
Beitrag von Hectic eingepflegt. Danke. (10.01.10. 17:15)
Nach Hinweis von NicDel ImagesRectColide eingepflegt. Danke. (10.01.10. 17:33)
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
  • Zuletzt bearbeitet von BladeRunner am So, Jan 10, 2010 18:15, insgesamt einmal bearbeitet

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group