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:

Rekursive Programmierung
Gehe zu Seite Zurück  1, 2, 3 ... , 12, 13, 14  Weiter
 
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
nemored



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

BeitragVerfasst am: 20.01.2025, 23:00    Titel: Antworten mit Zitat

Mit DEFINT definierst du noch keine Varable. Du legst lediglich fest, welchen Datentyp Variablen standardmäßig haben sollen, wenn ihnen kein Suffix beigegeben wird.
Code:
DEFINT A-C       ' Variablen, die mit A, B oder C beginnen, sind jetzt standardmäßig INTEGER
kommazahl = 1.5  ' implizit definiert als SINGLE, da das der Standard ist
ganzzahl% = 5    ' implizit definiert als INTEGER, wegen des Suffix
a  = 12345       ' implizit definiert als INTEGER wegen DEFINT (Anfangsbuchstabe A-C)
a$ = "Hallo"     ' impliziert definiert als STRING wegen des Suffix (trotz DEFINT)
DIM z AS INTEGER ' explizit definiert als INTEGER

Der Sinn der verschiedenen Möglichkeiten besteht meines Erachtens schlichtweg in der Wahlmöglichkeit für den Programmierer. Ich würde mich für eine der Methoden entscheiden, z. B.
  • alle Variablen immer mit Suffix, oder
  • DEFINT A-Z (oder ein alternativer Datentyp) und alle Nicht-Integerzahlen mit Suffix, oder
  • alle Variablen explizit definieren

Verschiedene Formen zu mischen sorgt meiner Meinung nach nur für Verwirrung und schwer(er) verständlichen Code.
_________________
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 21.01.2025, 12:01    Titel: Antworten mit Zitat

Revilo hat Folgendes geschrieben:
Wenn es drei Möglichkeiten gibt, wird jede wohl auch ihren eigenen speziellen Sinn und Zweck haben. Sonst bräuchte man ja nur eine dieser drei.


DEFtyp ist der ungarischen Notation nachempfunden, bei der ein bestimmter Buchstabe als Präfix einen bestimmten Datentyp repräsentiert. Also beispielsweise
DEFINT I für Integervariablen
DEFSTR S für Strings
DEFLNG L für LongInteger usw.

Die Typenfestlegung per Suffix ist eine BASIC-Eigenart. Der Vorteil ist, daß man -genau wie bei der ungarischen Notation- am Namen den Typ einer Variablen erkennen kann.

Bei der Deklaration mit DIM bist du nicht an irgendwelche Notationen gebunden, dafür musst du dir selber merken, welchen Typ die Variable hat. Außerdem ist DIM die einzige Möglichkeit, selbstdefinierte Datentypen zu deklarieren.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 21.01.2025, 22:47    Titel: Antworten mit Zitat

Wenn wir hier schon an den QB-Grundlagen am Diskutieren sind (Nebenbei: Auch der Vorgänger GW-BASIC kannte dies alles bereits!): Default (Vorgabewert) sind einfach genaue Flieskommazahlen. Anders ausgedrückt: Wenn kein explizites DEFxxx zu Beginn erscheint, dann macht QB immer implizit ein
Code:
DEFSNG a-z

zu Beginn. Hat logischerweise die Konsequenz, dass ein Programm wegen den relativ langsamen Fliesskomma-Operationen entsprechend langsamer werden kann, wenn so unbeabsichtigt Fliesskommavariablem für Dinge verwendet werden, wo eigentlich Integer auch ausreicht.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 22.01.2025, 10:51    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:
...wenn so unbeabsichtigt Fliesskommavariablem für Dinge verwendet werden, wo eigentlich Integer auch ausreicht.
Und man fragt sich eventuell auch, wo die Rechenfehler beim Addieren großer Zahlenmengen herkommen. Man hat beim Programmieren doch alles richtig gemacht...!? verwundert

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 04.02.2025, 20:00    Titel: Antworten mit Zitat

Hallo Spionatom,
vielen Dank für deinen Link, auf dem ich dein Programm SUDOSOl2.BAS
kennenlernen durfte.
Ich habe es einerseits zum lernen und natürlich auch zum ausprobieren
ausgedruckt und dann von Papier Buchstabe für Buchstabe, Zeile für Zeile, Zeichen für Zeichen exakt so abgetippt.

In der Annahme, mir wäre dabei ein Tippfehler unterlaufen, habe ich mir diese Mühe dreimal gemacht, immer noch gewissenhafter als zuvor.
Leider völlig vergebens.

Ich bekomme immer die Fehlermeldung :
"END SUB oder END FUNCTION muss letzte Zeile sein."
Die Hilfefunktion ist "Fachchinesisch", das mir nicht weiterhilft.

In deiner Zeile 187 steht doch völlig regelkonform END SUB.
Warum wird es trotzdem "bemeckert"? Sorry, kapiere ich nicht.

Dein Programm scheint doch exakt in dem mir gewohnten QBasic - Code geschrieben zu sein, zumindest traf ich nicht auf Überraschungen.
Was ich las, war mir zumindest vom hörensagen bekannt. traurig

Gruß Revilo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 04.02.2025, 21:19    Titel: Antworten mit Zitat

Soweit ich das von QBasic noch richtig in Erinnerung habe, kannst du im Editor nicht den gesamten Code hintereinander tippen, sondern musst die SUBs bzw. FUNCTIONs gesondert in eigenen Bereichen für die Unterprogramme verteilen.
_________________
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 04.02.2025, 22:33    Titel: Antworten mit Zitat

Der QB-Editor speichert das in dieser Form ab:
Code:
DECLARE SUB up ()
DIM SHARED x AS INTEGER
DIM y AS INTEGER
PRINT
y = 10
x = 5
PRINT x
up
PRINT x

SUB up
  DIM x AS INTEGER
  PRINT "up1 "; x
  x = x + 1
  PRINT "up2 "; x
  PRINT "upy "; y
END SUB


Im Editor wird das dann getrennt nach Hauptprogramm und SUBs angezeigt.

Revilo hat Folgendes geschrieben:
Ich habe es einerseits zum lernen und natürlich auch zum ausprobieren
ausgedruckt und dann von Papier Buchstabe für Buchstabe, Zeile für Zeile, Zeichen für Zeichen exakt so abgetippt.
Ja... Warum einfach, wenn's auch kompliziert geht? mit den Augen rollen Kleiner Tip: Geh auf die Seite von SUDOSOl2.BAS und klicke dort auf Raw (ganz rechts, etwa in der Mitte). In dem folgenden Dialog kannst du die Datei auf deinem Rechner abspeichern. Diese Datei kannst du anschließend direkt mit dem QB-Editor öffnen. Bei mir läuft sie ohne Fehlermeldung.

Gruß
grindstone

EDIT: @SpionAtom:
"S1Unloesbar" ist wirklich unlösbar. Wenn du in der letzten Zeile die 2 durch eine 5 ersetzt, dann geht es. Obwohl - Ich nehme mal an, die Unlösbarkeit ist Absicht. lächeln
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 390

BeitragVerfasst am: 05.02.2025, 12:04    Titel: Antworten mit Zitat

Die aktuelle Version ist nun immer hier zu finden:
https://github.com/SpionAtom/QBasic/blob/main/SUDOSOLV.BAS

Zum verinnerlichen hilft vielleicht hier und da Teile vom Code abtippen, ansonsten kannst du dir die Datei herunterladen:
Bild zum Download-Knopf in github
(oder den Raw-Knopf wie bereits angemerkt wurde)

Wenn du eine SUB abtippen willst, musst du zunächst ins Hauptprogramm (also außerhalb einer SUB/FUNCTION sein) und die Zeile
Code:
Sub PrintSudoku

schreiben und Enter drücken, dann wird die SUB-Ansicht geöffnet, und das END SUB wird dir automatisch hinzugefügt, ebenso die DECLARE SUB am Anfang des Programms.


Das unmögliche Sudoku ist tatsächlich so entstanden, dass ich da Ziffern vertauscht hatte. Das war Absicht, um zu schauen, ob das Programm dann nicht in eine Endlosschleife gerät.
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 05.02.2025, 17:25    Titel: Antworten mit Zitat

Hallo SpionAtom,
vielen Dank für die Erlaubnis, dein Programm SODOSOLV.BAS downloaden zu dürfen. Das hat auch geklappt. In meinem Textverarbeitungsprogramm (LibreOffice) konnte ich es auch öffnen und sah die korrekte Q-Basic -Notation.

Ich hätte es gern geöffnet um mal zu sehen, wie es funktioniert.
Das ist mir, aber nicht gelungen, obwohl es ja eigentlich hätte gelingen müssen.
Zitat:
Diese Datei kannst du anschließend direkt mit dem QB-Editor öffnen.


Mein Q-Basic, das nur über die DOS-BOX (quasi als Vermittler) läuft,
kriegt es offenbar nicht hin, einen "Draht" zu LibreOffice zu legen.

Der Versuch, ein einzelnes Wort von LibreOffice mit Strg+C und Strg+V in mein Q-Basic zu kopieren, scheiterte ebenfalls, also auch in der
entgegengesetzten Richtung.

Oder ich bin, wieder mal zu dämlich, es richtig zu machen.
Nur der Wissende hat Erfolg, der Unwissende muss sich quälen und scheitert letztlich dennoch, trotz aller Mühe. Ist wohl ein Naturgesetz.

Kannst du mir, (möglichst doppelt "idiotensicher") ein Verfahren beschreiben, wie ich diesen o.g. "Draht" zwischen Q-Basic und LibreOffice legen kann? Idealerweise genau so eindeutig und unmissverständlich, wie du es für das Downloaden deines Programms getan hast.
Das war ein sauberer, für mich nachvollziehbarer, "Fahrplan".
Genau deshalb hat es ja auch geklappt.

Gruß Revilo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 05.02.2025, 20:48    Titel: Antworten mit Zitat

Revilo hat Folgendes geschrieben:
Mein Q-Basic, das nur über die DOS-BOX (quasi als Vermittler) läuft,
kriegt es offenbar nicht hin, einen "Draht" zu LibreOffice zu legen.

Hier noch einmal zur Erinnerung: Die virtuelle Festplatte C: von DOS-Box mappt man in der Regel mit einem regulären Ordner auf dem Hostsystem (ganz normal NTFS-formatiertes Laufwerk). Und genau dort drin solltest Du ausserhalb von DOS-Box die .BAS-Datei ablegen. Mit Vorteil noch bei Bedarf kurzer 8+3-Zeichen-Name verpassen, danach sollte sie sich innerhalb von QB dann ganz normal öffnen lassen.

Sinnvolerweise auch noch beachten: Codierung der Zeichen, denn QB erwartet natürlich noch so etwas wie MS-DOS-Codepage 437, während Windows inwischen auch UTF-8 verwendet. Also bei Bedarf noch passend umwandeln. Sonst stimmen Umlaute und grafische Rahmenzeichen nicht.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 390

BeitragVerfasst am: 06.02.2025, 10:44    Titel: Antworten mit Zitat

Möchtest du von uns einen Fahrplan, wie du eine Datei vom Download-Ordner in deinen QBasic-Ordner bekommst peinlich
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 06.02.2025, 13:25    Titel: Antworten mit Zitat

Hallo SpionAtom
ja so etwas in dieser Richtung.
Ich habe mal darüber nachgedacht. Mein Rechner ist sehr alt und daher langsam. Könnte es sein, daß es geklappt hätte, wenn ich ihm etwas mehr Zeit gelassen hätte . Vielleicht war ich einfach zu ungeduldig.
Sollte es tatsächlich so einfach sein, dass man diese Datei vom Downloadordner einfach in meinen QBasic-Ordner verschieben/kopieren muss?
Gruß Revilo verlegen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 06.02.2025, 13:42    Titel: Antworten mit Zitat

Revilo hat Folgendes geschrieben:
Sollte es tatsächlich so einfach sein, dass man diese Datei vom Downloadordner einfach in meinen QBasic-Ordner verschieben/kopieren muss?
Ja. lächeln

Das Programm muss in einen Ordner, der für den QB-Editor sichtbar ist, der also bei Datei --> Öffnen... angezeigt wird.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 06.02.2025, 14:19    Titel: Antworten mit Zitat

Hallo grindstone,
vielen Dank für die Bestätigung meiner Vermutung. Es war tatsächlich so einfach. peinlich Gnade, Gnade!

Gruß Revilo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 06.02.2025, 15:39    Titel: Antworten mit Zitat

Hallo SpionAtom,
ebenfalls Abbitte an dich Gnade, Gnade! .

In deinem Programm steht sinngemäß: "Bitte geben Sie einen Dateinamen ein"
Was für einen Dateinamen? Doch nicht etwa für jedes Sudoku ein extra Name?
1000 Sudokus - 1000 Dateien?

Bei meinen anfänglichen Versuchen, an dein Programm heranzukommen,
versuchte ich es in QBasic mit Öffnen C:\ ......
Also mit ALTGR + ?. Mir wurde aber statt \ immer ein ß angezeigt.
Offenbar scheint die Drittbelegung der Tasten nicht immer zu funktionieren.
Da ich hier aber problemlos einen \ eingeben kann, ist es offenbar kein mechanisches Problem meiner ALTGR-TASTE (Staubkorn).
[ } ² @ ~ | funktionieren auch in QBasic, ³ \ € aber nicht, werden aber dennoch gebraucht.

Aber gerade \ braucht man doch auch in QBasic z.B. für Pfadangaben oder
zur Ganzzahldivision. ³ für mathemat. Darstellungen usw.
Muss man hier wirklich über den ASCII-Code gehen oder gibt es eine Tasten-Alternative, die diese Zeichen in QBasic aufruft?
Gruß Revilo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 06.02.2025, 19:26    Titel: Antworten mit Zitat

Das ist das, was dreael mit der Codepage meinte. Ich weiß nicht, ob DOSbox so eingerichtet werden kann, daß es das übersetzt. Ansonsten könnte es schwierig werden.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 06.02.2025, 20:36    Titel: Antworten mit Zitat

@Revilo:
Die Datei von SpionAtom ist übrigens soweit korrekt CP437 codiert. Vorhin bei mir ausprobiert (ein Samba-Server unter Linux läuft bei mir immer): Datei auf Netzlaufwerk gespeichert. Mache ich in PuTTY ein
Code:

$ recode cp437..utf-8 <SUDOSOLV.BAS

so erscheinen die Umlaute in PuTTY (verwendet wie heutzutage üblich auch UTF-8) richtig. Die Datei sollte also in einem Ordner abgelegt werden, der in der DOS-Box gemappt wurde. Dort sollte es sich ohne Fehler in QB öffnen lassen, d.h. Umwandlung sollte also nicht nötig sein. Wichtig ist einfach im Browser direktes "Speichern unter...".
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1276
Wohnort: Ruhrpott

BeitragVerfasst am: 10.02.2025, 16:03    Titel: Antworten mit Zitat

Entschuldigung, das ist jetzt off topic, aber Stichwort Samba Server: Ich würde gerne meine WinXP-Installation (ich meine damit meine bestehende und zu meiner vollen Zufriedenheit eingerichtete Installation, nicht ein neu aufgesetztes XP) unter Linux laufen lassen, so daß ich nicht jedesmal neu booten muss, um das Betriebssystem zu wechseln. Ist sowas möglich?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 10.02.2025, 20:14    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Entschuldigung, das ist jetzt off topic, aber Stichwort Samba Server: Ich würde gerne meine WinXP-Installation (ich meine damit meine bestehende und zu meiner vollen Zufriedenheit eingerichtete Installation, nicht ein neu aufgesetztes XP) unter Linux laufen lassen, so daß ich nicht jedesmal neu booten muss, um das Betriebssystem zu wechseln. Ist sowas möglich?

Siehe separat angelegtes Thema hier
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 178

BeitragVerfasst am: 16.02.2025, 00:14    Titel: Antworten mit Zitat

Hallo SpionAtom,
ich habe dein Programm Sudosolv erfolgreich heruntergeladen,
und habe es auch hinbekommen, dass es durch mein Qbasic aufgerufen werden kann. Der Daten - Transfer von euch zu mir scheint also offenbar zu funktionieren.
Ich muss also nur meinen Texteditor (LibreOffice) quasi als "Dolmetscher",
als "Zwischenbahnhof" benutzen. Richtig?

Ich versuche es jetzt mal in der entgegengesetzten Richtung, also von mir zu dir und sende dir mal folgendes:
Zitat:

'Wurden alle gltigen Ziffern geprft und keine passt, so wurde
'eine 10 eingetragen'


Falls das geklappt hat, komme ich mit dem hier üblichen Handling bestimmt schon mal etwas besser klar, weil ich es dann so halbwegs verstanden habe.
Bitte sende mir mal eine Rückmeldung dazu.
Muss ich bei einem Daten-Transfer zwischen uns noch irgend etwas beachten? Ich möchte auf Nummer sicher gehen. Wenn o.g. Zitat bei dir angekommen ist, wäre es schade, wenn es nur ein Zufallstreffer war.
Gruß Revilo
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 QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3 ... , 12, 13, 14  Weiter
Seite 13 von 14

 
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