 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Z2012
Anmeldungsdatum: 03.05.2020 Beiträge: 22 Wohnort: Großdeutschland
|
Verfasst am: 09.05.2020, 17:55 Titel: Ohne Zwischenräume drucken |
|
|
Hallo,
ich möchte ohne Zwischenräume drucken lassen.
Folgender Code:
Code: | Dim As Byte A=0, B=10, C=0
CLS
Print "Inhalt der Variablen A ist", A, "B ist", B, "C ist", C
Sleep 4500
Do 'Beginn Schleife
Cls
A=(A+10)
Print "A=", A
B=(B+10)
C=Sqr(A^2)+(B^2)
Print "Schleife, Inhalt der Variablen A=", A, "B=", B, "C=", C
Sleep 1500
If A<100 Then
Continue Do
Else
Exit Do
End If
Loop 'Ende Schleife
Print "OK End IF"
Sleep |
MfG _________________ Z2012
A C H T U N G Sarkasmus:
Nur nicht hetzen, (Hobby <> Semiprofi oder Profi)-Proggramira brauchen etwas länger.
(frei nach mir)
Es gibt keinen Königsweg zur Mathematik oder Programmierung.
(frei nach Euklid) |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 09.05.2020, 19:19 Titel: |
|
|
Das geht mit Semikolon statt Komma: Code: | Dim As Byte A=0, B=10, C=0
CLS
Print "Inhalt der Variablen A ist"; A, "B ist"; B, "C ist"; C
Sleep 4500
Do 'Beginn Schleife
Cls
A=(A+10)
Print "A="; A
B=(B+10)
C=Sqr(A^2)+(B^2)
Print "Schleife, Inhalt der Variablen A="; A, "B=";B, "C="; C
Sleep 1500
If A<100 Then
Continue Do
Else
Exit Do
End If
Loop 'Ende Schleife
Print "OK End IF"
Sleep |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Z2012
Anmeldungsdatum: 03.05.2020 Beiträge: 22 Wohnort: Großdeutschland
|
Verfasst am: 10.05.2020, 09:50 Titel: Druckausrichtung, Leerzeile und exakte Position |
|
|
Hallo,
dass mit den Semikolons funktioniert prima, Danke für den Tipp.
Eine Frage hätt ich noch:
Ich möchte Links, Mittig und Rechts drucken, aber alles in einer Zeile. Nach einer Leerzeile möchte ich in eine ganz bestimmte Position drucken, sagen wir Zeile 19 Position von Links 54.
Geht dass?
MfG _________________ Z2012
A C H T U N G Sarkasmus:
Nur nicht hetzen, (Hobby <> Semiprofi oder Profi)-Proggramira brauchen etwas länger.
(frei nach mir)
Es gibt keinen Königsweg zur Mathematik oder Programmierung.
(frei nach Euklid) |
|
Nach oben |
|
 |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 10.05.2020, 15:23 Titel: |
|
|
Siehe: Locate |
|
Nach oben |
|
 |
Z2012
Anmeldungsdatum: 03.05.2020 Beiträge: 22 Wohnort: Großdeutschland
|
Verfasst am: 11.05.2020, 10:52 Titel: |
|
|
Achtung - Sarkasmus
Guten Tag,
Danke für den Hinweis.
Das weiß doch jeder, dass man "Locate" suchen muss, um mit der Anweisung LOCATE 10, 5, 0 die Cursorposition zu verändern, damit an einer bestimmten Stelle gedruckt und der Cursor und mit 0 ausgeschaltet wird.
Was gedruckt wird steht dann erst in der nächsten Programm-Zeile, lt. Beispiel.
Ich finde aber keine Erklärung wie die Druck-Ausrichtung (=Alignment) geht. Oder geht das auch mit LOCATE?
MfG[/u] _________________ Z2012
A C H T U N G Sarkasmus:
Nur nicht hetzen, (Hobby <> Semiprofi oder Profi)-Proggramira brauchen etwas länger.
(frei nach mir)
Es gibt keinen Königsweg zur Mathematik oder Programmierung.
(frei nach Euklid) |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 11.05.2020, 16:12 Titel: |
|
|
Z2012 hat Folgendes geschrieben: | Ich finde aber keine Erklärung wie die Druck-Ausrichtung (=Alignment) geht. Oder geht das auch mit LOCATE? | Natürlich geht das, ist aber mit etwas Rechnerei (und vorherigem Nachdenken [sarkasmus] FRECHHEIT! Alles muß man selber machen! [/sarkasmus]) verbunden:
Code: | Dim As Byte A=0, B=10, C=0
Dim As Integer zeile, spalte, zeilenlaenge = 80
Dim As String druck
CLS
Print "Inhalt der Variablen A ist"; A, "B ist"; B, "C ist"; C
Sleep 500
zeile = 2
Do
A=(A+10)
B=(B+10)
C=Sqr(A^2)+(B^2)
zeile += 1
druck = "A = " + Str(A)
spalte = 1 'linksbündig
Locate zeile, spalte
Print druck
druck = "B = " + Str(B)
spalte = zeilenlaenge / 2 - Len(druck) / 2 'zentriert
Locate zeile, spalte
Print druck
druck = "C = " + Str(C)
spalte = zeilenlaenge - Len(druck) 'rechtsbündig
Locate zeile, spalte
Print druck
Sleep 500
If A<100 Then
Continue Do
Else
Exit Do
End If
Loop
Print
Print "OK"
Sleep |
Kleine Hausaufgabe: Schreib das Programm so um, dass alle Gleichheitszeichen sauber untereinander stehen!
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Z2012
Anmeldungsdatum: 03.05.2020 Beiträge: 22 Wohnort: Großdeutschland
|
Verfasst am: 12.05.2020, 11:33 Titel: |
|
|
Hallo,
Kleine Hausaufgabe: Schreib das Programm so um, dass alle Gleichheitszeichen sauber untereinander stehen!
Jetzt verstehe ich erst - es hat ein bisschen gedauert - FB kann kein Alignment, aber ich hab doch was zum Thema gelesen.
Es war in einem früheren Stadium, ich habe es mir nicht gemerkt!
MfG _________________ Z2012
A C H T U N G Sarkasmus:
Nur nicht hetzen, (Hobby <> Semiprofi oder Profi)-Proggramira brauchen etwas länger.
(frei nach mir)
Es gibt keinen Königsweg zur Mathematik oder Programmierung.
(frei nach Euklid) |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 12.05.2020, 20:45 Titel: |
|
|
Es gibt da noch (als Relikt aus der QBasic-Zeit) Dinge wie RSET. Allerdings finde ich, ehrlich gesagt, den Umgang damit nicht einfacher als das "selbst rechnen".
Text bündig zu setzen wäre eine schöne Anwendung einer eigenen Prozedur. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 394
|
Verfasst am: 26.05.2020, 10:31 Titel: PRINT USING |
|
|
https://www.qbasic.net/en/reference/qb11/Statement/PRINT-USING.htm
Ich wollte, wenn es ums Formatieren geht noch USING einwerfen, was für numerische Tabellen eigentlich auch ganz nett ist.
Weiß aber nicht, ob es das in Fb auch gibt. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4688 Wohnort: ~/
|
Verfasst am: 26.05.2020, 15:52 Titel: |
|
|
Oh ja, danke für die Ergänzung: PRINT USING und FORMAT (letzteres ist eine Anleihe von VB), gibt es unter FreeBASIC ebenfalls.
https://www.freebasic-portal.de/befehlsreferenz/print-using-485.html _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 394
|
Verfasst am: 27.05.2020, 14:15 Titel: |
|
|
Wollte mal wieder QB coden, da hab ich gesehen, das ist ja FB, ...runterlad ...ide hol ...kurzindiedokugeschaut
Also definitiv bei Tabellen PRINT USING nutzen.
Du kannst das schön im Quelltext sehen, da sind dann Blöcke mit ###, und jeder Block steht für einen Zahlen-Wert - welcher Wert genau, steht dann dahinter (Drei Blöcke, drei Werte/Variablen dahinter).
Code: | print Using "A = ###### B = ###### C = ######"; a; b; c |
Dann ist mir aufgefallen, dass du fast einen Pythagoras anwendest, aber eben nur fast. Check mal deine Formel.
oder
Daran anknüpfend: A^2 kann bei A = 100 große Werte annehmen, also lieber Integer nehmen statt Byte.
Code: | Dim As Integer A=0, B=10, C=0 |
Und zu guter letzt, wenn du Do..Loop Schleifen benutzt, dann kannst du auf ein If verzichten, indem du das Ende so abänderst, wie ich es gemacht habe.
Code: | Loop Until A >= 100'Ende Schleife |
heißt soviel wie: Wiederhole die Schleife nur, wenn A nicht größer oder gleich 100 ist, sonst verlasse die Schleife.
Code: | Dim As Integer A = 0, B = 10, C = 0
Cls
Print Using "A = ###### B = ###### C = ######"; a; b; c
Print
Print "A = (A + 10) B = (B + 10) C = SQR(A^2 + B^2)"
Sleep 500
Do
'Werte neu berechnen
A = (A + 10)
B = (B + 10)
C = Sqr((A^2) + (B^2))
'Ausgabe der Zeile
Print Using "A = ###### B = ###### C = ######"; a; b; c
Sleep 500
Loop Until A >= 100
Print "OK"
Sleep
End |
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
|
|
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.
|
|