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:

Elegant programmieren...was ist Elegant?
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

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

Natürlich war das nicht ganz ernst gemeint, aber irgendwie ist da schon was dran. Man sieht immer wieder Leute, die dann irgendwelche total bescheuerten Konstrukte bauen, nur weil der dumme alte QB-Interpret (und auch der Compiler) dann einen Tick schneller laufen. Das ordentliche Compiler das hunderfache herausholen, obwohl man sauber und ordentlich arbeitet wissen sie gar nicht.
Und wenn man ein paar Jahre mit QB gearbeitet hat, gewöhnt man sich solche albernheiten irgendwann so fest an, das es schwer sein wird davon los zu kommen.
Natürlich zwingt QB nicht dazu so zu programmieren, aber es verleitet dazu, da es nunmal gähnen langsam ist und man so zmindest ein winzig kleines Bischen an Geschwindigkeit erhält.
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 14.01.2005, 21:12    Titel: Antworten mit Zitat

Vorwarnung: meine letzte antwort ist wiedermal etwas extrem forumliert durchgeknallt
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 16.01.2005, 18:50    Titel: Wieso eigentlich immer schnell schnell? Antworten mit Zitat

Wieso Optimieren Leute Programme die für Dos und 100 Mhz Rechner kozipiert sind, eigentlich krampfhaft wenn sie Windows XP mit 2Ghz benutzten?
Da stimmt doch das Verhältnis nicht!
Ich bin der Meinung das man Programme die unter eine Sekunde pro Durchlauf "verbrauchen" gar nicht durch irgendwelche Tricks beschleunigen soll! (Optimierungen sind aber denoch erlaubt wenn sie die Übersichtlichkeit nicht verringern oder gar erhöhen)
Und die Theorie möglichst wenig Zeilen=schneller Code
geht eh nicht auf oder schreibt ihr jemand zwanzig Befehle mit Doppelpunkt verbunden auf eine Zeile und meint dann das sei schnell?

Michael Frey

P.S. wer immer schnellst möglich Code braucht, kann ja alle frei verfügbaren Basic Compiler bei jedem einzelem Projekt durch Probieren welcher nun 10% Prozent (von 0.1 Sekunden) schneller ist.
Oder gleich passend: man nehme ein Dos Bootdisk und starte damit ein QB Programm auf einem übertakten 2 GHz rechner ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 17.01.2005, 12:05    Titel: Antworten mit Zitat

Dusky_Joe hat Folgendes geschrieben:
statt
IF a <> 0 THEN
PRINT "Wert wird geprüft..."
CALL TESTWERT
END IF

ist es in dieser Bedeutung eleganter, zu schreiben

IF a THEN PRINT "Wert wird gerprüft": TESTWERT

Ich lasse auch gerne mal das <> 0 weg. Vor allem wenn ich in der Variable nur TURE(-1) oder FALSE(0) gespeichert habe. Bei anderen Werten kann es aber zu Fehlern kommen, wenn man mehrere Bedingungen verknüpfen will:
Code:
CLS
a = 4
b = 8

IF a AND b THEN PRINT "1"
IF a <> 0 AND b <> 0 THEN PRINT "2"

Obwohl auf den ersten Blick die beiden IF-Bedingungen das gleiche machen, wird die Bedingung der ersten IF-Abfrage nicht erfüllt und die Ausgabe daher nicht gemacht.

Solche Sachen führen dann zu Fehlern, die nur hin und wieder mal auftauchen, wenn mal zufälligerweise solche unglücklichen Werte in den Variablen stehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 17.01.2005, 17:10    Titel: Antworten mit Zitat

klar, denn 4 AND 8 = 0 (0100 AND 1000 = 0000)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 22.01.2005, 08:40    Titel: Antworten mit Zitat

aber es gilt wieder:
IF a OR b THEN PRINT "1"
IF a <> 0 OR b <> 0 THEN PRINT "2"

Was viele nicht wissen:
AND OR etc. liefern gar nicht 0 & -1 zurück, sondern das Resultat der Bit-Weisen "AND" beziehungsweise "OR" Verknüpfung
Also wie ChemicalWarfare es angedeutet hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


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

BeitragVerfasst am: 22.01.2005, 10:50    Titel: Antworten mit Zitat

In C/C++ ist es besser als in QB gelöst: Will man bitweises AND und OR, so verwendet man "&" und "|". Soll es dagegen Boolean sein, so schreibt man "&&" und "||".

Einen gewichtigen Unterschied gegenüber QB hat C/C++ doch noch: Ist bei && der erste Ausdruck bereits FALSE, so wird der zweite gar nicht mehr ausgeführt. Umgekehrt bei || wird der zweite Ausdruck nicht mehr ausgeführt, wenn der erste bereits TRUE ist. Hat durchaus Konsequenzen: In C/C++ ist so etwas erlaubt und funktioniert problemlos:
Code:
int a[10], i;
i=0;
while(i < 10 && a[i] != 22) {
  i++;
}

In QBasic dagegen geht dies nicht:
Code:
DIM a%(9)
i% = 0
WHILE i% < 10 AND a%(i%) <> 22
  i% = i% + 1
WEND

Begründung: QB führt im Fall von i%=10 (=die Bedingung i%<10 wäre bereits nicht mehr erfüllt => Rest von diesem AND-Ausdruck irrelevant!) stur immer noch den a%(i%)<>22-Vergleich aus, obwohl man es nicht mehr müsste, was zwangsweise mit einem "Index ausserhalb des zulässigen Bereichs" endet. In QB musste ich deswegen nicht selten schon aus einem
Code:
IF bedingung1% AND bedingung2% THEN
  ' ..
END IF

ein
Code:
IF bedingung1% THEN
  IF bedingung2% THEN
    ' ..
  END IF
END IF

machen, um ein C/C++-mässiges Auswerteverhalten zu bekommen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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