| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 02.01.2015, 21:30    Titel: Kurvendiskussion |   |  
				| 
 |  
				| Hallo, mein Name ist BOB. Bin der neue hier. Ich probiere mich seit einigen Monaten ein wenig in QBASIC. Im Moment arbeite ich an einem Programm für eine Kurvendiskussion. Ich hoffe ihr könnt mir in den folgenden Wochen ein wenig unter die Arme greifen.
 Im Moment habe ich folgendes Problem.
 Ich möchte 4 Variablen eingeben. Sie heißen a, b, c und d.
 Die Variablen sie normale Zahlen.
 Jetzt so folgendes passieren:
 -wenn a und c mit einer einer Variablen (nicht 0) belegt werden (b und d also 0) soll eine eine Antwort kommen.
 -wenn b und d mit jeweils einer Variablen (nicht 0) belegt werden (a und c also 0) soll eine andere Antwort kommen.
 
 Ich hoffe ihr versteht was ich meine. Wie kann ich mehrere Variablen überprüfen? Habe schon mit dem MOD Befehl probiert. Da bekomme ich ja immer den Rest.
 Gruß BOB
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| St_W 
 
  
 Anmeldungsdatum: 22.07.2007
 Beiträge: 958
 Wohnort: Austria
 
 | 
			
				|  Verfasst am: 02.01.2015, 21:58    Titel: |   |  
				| 
 |  
				| Ich verstehe dein Problem nicht ganz, aber vielleicht hilft dir das: 
  	  | Code: |  	  | if a<>0 and c<>0 and b=0 and d=0 then ...
 elseif a=0 and c=0 and b<>0 and d<>0 then
 ...
 endif
 | 
 Wenn du FreeBasic verwendest (was ich in jedem Fall anstatt des veralteten QB empfehlen würde) kann man auch Kurzschlussauswertung verwenden (in diesem Fall wird dies aber wohl keinen Vorteil bringen):
 
  	  | Code: |  	  | if a<>0 andalso c<>0 andalso b=0 andalso d=0 then ...
 elseif a=0 andalso c=0 andalso b<>0 andalso d<>0 then
 ...
 endif
 | 
 _________________
 Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
 http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 02.01.2015, 22:33    Titel: |   |  
				| 
 |  
				| super Danke für deine Antwort:-) Mein Problem hast du voll verstanden:-) Mein Code dazu
 
  	  | Code: |  	  | CLS DIM a!, b!, c!, d!
 INPUT "Variable a "; a!
 INPUT "Variable b "; b!
 INPUT "Variable c "; c!
 INPUT "Variable d "; d!
 
 IF a <> 0 AND c <> 0 AND b = 0 AND d = 0 THEN
 PRINT "Die Funktion ist Punktsymmetrisch"
 ELSE a = 0 AND c = 0 AND b <> 0 AND d <> 0
 PRINT "Die Funktion ist Achssymmetrisch"
 END IF
 | 
 
 Jetzt kann ich weiterarbeiten:-)
 hoffe ich kann mich mit dem ein oder anderen Problem noch an euch wenden
 Gruß BOB
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 30.01.2015, 20:41    Titel: |   |  
				| 
 |  
				| Mein Programm schreitet langsam voran. Ich möchte jetzt gerne ein Menü programmieren. Dabei möchte ich zwischen 3 Menüs auswählen können und beenden. Habe jetzt folgendes geschrieben:
 
 
  	  | Code: |  	  | DECLARE SUB FENSTER (lox%, loy%, rux%, ruy%) declare sub prog (x, y, txt$)
 
 DIM mentxt$(4)
 DIM i%, auswahl%
 
 mentxt$(1) = "Menue 1"
 mentxt$(2) = "Menue 2"
 mentxt$(3) = "Menue 3"
 mentxt$(4) = "Ende"
 CLS
 DO
 CALL FENSTER   (6,8,40,72)
 LOCATE 11, 36
 PRINT "Menue"
 FOR i% = 1 TO 4
 LOCATE 11 + i%, 11
 PRINT mentxt$(i%)
 NEXT i%
 LOCATE 19, 11
 PRINT " Bitte Auswahl treffen:_ "
 DO
 auswahl% = VAL(INKEY$)
 LOOP UNTIL auswahl% > 0 AND auswahl% < 5
 
 CLS
 call Fenster (6,8,40,72)
 Select case auswahl%
 case 1
 call prog (30,11, "Menue 1 ")
 case 2
 call prog (30,11, "Menue 2 ")
 case 3
 call prog (30,11, "Menue 3 ")
 case else
 end select
 cls
 loop until auswahl%=4
 cls
 | 
 
 Leider läuft es nicht.
 Die Zeile 11:
 
  	  | Code: |  	  | CALL FENSTER   (6,8,40,72) | 
 ist rot hinterlegt und unten zeigt mir qb folgendes an:
 Exepted call sub-name ....
 
 Wo liegt mein  Fehler?
 Gruß BOB
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4710
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 30.01.2015, 23:45    Titel: |   |  
				| 
 |  
				|  	  | Zitat: |  	  | Exepted call sub-name .... | 
 Vielleicht "Expected call sub-name ...'? Das würde darauf hinweisen, dass er mit dem übergebenen Namen der SUB nichts anfangen kann. Existiert die mit CALL aufgerufene SUB? Die SUBs werden ja im QBasic-Editor in eigenen Fenstern dargestellt, deswegen kann ich das bei dem Quellcode nicht erkennen; jedenfalls wäre das eine mögliche Ursache für den Fehler.
 
 Ich weiß leider nicht genau, ob es bei CALL selbst zu Problemen kommen kann; dann könntest du mal probieren, CALL wegzulassen und nur
 
  	  | Code: |  	  | FENSTER (6,8,40,72) | 
 aufzurufen.
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 31.01.2015, 17:01    Titel: |   |  
				| 
 |  
				| Hallo, danke  für deine Antwort. Ich habe in der der Fehlermeldung wohl zwei Buchstaben vergessen. Was meinst du mit Sub in einem eigenen Fenster? Wo und was müsste ich da schreiben? Leider habe ich über Google nicht wirklich was brauchbares zu meinem Problem gefunden. Habe zwar was mit dein Pfeiltasten zur Auswahl gefunden aber das ist mir programmiertechnisch zu hoch. |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4710
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 31.01.2015, 20:37    Titel: |   |  
				| 
 |  
				| Ich habe hier leider keine QBasic-IDE, deshalb kann ich nicht nachschauen, aber irgendwo im Menü gibt es einen Punkt, mit dem man zwischen Hauptprogramm, den SUBs und den FUNCTIONs wechseln kann. Die SUB 'Fenster' muss natürlich existieren, damit sie aufgerufen werden kann. _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| dreael Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 2530
 Wohnort: Hofen SH (Schweiz)
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 31.01.2015, 23:41    Titel: |   |  
				| 
 |  
				| Hallo BOB_BOB! 
 Falls du es noch nicht selber herausgefunden hast: In das SUB-Auswahlmenü kommst du mit Ansicht --> SUBs... bzw. mit einem Druck auf F2.
 
 Wenn du eine neue Sub oder Function erstellen möchtest, geht das mit Bearbeiten --> Neue SUB bzw. Bearbeiten --> Neue FUNCTION.
 
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 01.02.2015, 11:37    Titel: |   |  
				| 
 |  
				| Danke für eure vielseitigen Antworten. Ich habe da mich jetzt auch eingelesen. Aber verstehen tu ich leider nicht so viel. Ich habe jetzt herausgefunden das ich unter F2 Sub-Programme rein bekomme. Aber wie ich damit zu arbeiten habe weiß ich leider nicht. Was müsste ich den bei mir da jetzt verändern??
 Gruß
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4710
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 01.02.2015, 12:54    Titel: |   |  
				| 
 |  
				| Es wundert mich etwas, dass du 'DECLARE Fenster' und 'CALL Fenster' verwendest, wenn du gar nicht mit SUBs arbeitest ... Hast du das aus einem anderen Programm? Wenn ja, dann schau doch dort mal rein, wie die SUB 'Fenster' aussieht. 
 Wie man mit Prozeduren arbeitet, ist nicht so schnell in zwei Sätzen erklärt, aber wir haben im Portal eine gute Einführung zu dem Thema. Sie passt auch weitestgehend für QBasic, nur ein paar kleinere Details werden da anders sein. Es ist auch zu beachten, dass die Quellcodes nicht komplett am Stück (inklusive Prozeduren) stehen, sondern die Prozeduren eben in eigenen Fenstern stehen.
 
 Möglicherweise gibt auch die im QBasic-Editor integrierte Hilfe wertvolle Informationen; ich empfand sie immer als sehr hilfreich.
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 04.02.2015, 04:52    Titel: |   |  
				| 
 |  
				| So ich war dem Rätsel der Sub Funktion auf der Spur:-) Ich hatte die oben gezeigte Menüsteuerung aus einem Skript für eine QB Schulung. Nach langen hin und her habe ich gemerkt das es noch eine Seite 2 zu dem Skript gibt. Dort war natürlich noch der Sub Fenster und Sub Prog versteckt. Das Sub Fenster diente nur zur optischen Aufwertung. Es sollten dort Ränder usw gezeichnet werden. Dies habe ich erstmal raus geschmissen. Werde Später über Screen 12 was basteln. Im Moment geht es nur um Funktionalität. Habe mir jetzt das Programm ein wenig umgestrickt auf meine Bedürfnisse. Hier mal ein kurzer Zwischenstand. Anregungen zur Verbesserung gerne gewünscht. Vllt versuche ich mich an den Hoch/Runter Tasten zur Auswahl mal.
 
 
  	  | Code: |  	  | CLS 
 declare sub prog (x, y, txt$)
 
 DIM mentxt$(4)
 DIM i%, auswahl%
 
 mentxt$(1) = "(1) Funktion 3. Grades"
 mentxt$(2) = "(2) Funktion 2. Grades"
 mentxt$(3) = "(3) Funktion 1. Grades"
 mentxt$(4) = "(4) Ende"
 CLS
 DO
 
 LOCATE 6, 36
 PRINT "Menue"
 FOR i% = 1 TO 4
 LOCATE 7 + i%, 11
 PRINT mentxt$(i%)
 NEXT i%
 LOCATE 14, 8
 PRINT " Bitte w„hlen sie eine zu berechnende Funktion oder Ende aus "
 DO
 auswahl% = VAL(INKEY$)
 LOOP UNTIL auswahl% > 0 AND auswahl% < 5
 
 CLS
 
 SELECT CASE auswahl%
 CASE 1
 CALL Prog(5, 11, "Funktion 3. Grades")
 CASE 2
 CALL Prog(5, 11, "Funktion 2. Grades")
 CASE 3
 CALL Prog(5, 11, "Funktion 1. Grades")
 CASE ELSE
 END SELECT
 CLS
 LOOP UNTIL auswahl% = 4
 CLS
 
 
 
 SUB Prog (x, y, txt$)
 DIM a$
 LOCATE x, y
 PRINT txt$; "  : Beliebige Taste betaetigen"
 a$ = INKEY$
 WHILE a$ = ""
 a$ = INKEY$
 WEND
 END SUB
 | 
 
 Ich danke euch für eure Mühe und Ausdauer. In manch anderem Forum wäre ich schon bespuckt werden. Ich seid Klasse:-)
 Gruß Bob
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 04.02.2015, 11:35    Titel: |   |  
				| 
 |  
				| Wir sind hier halt ein kleines Häufchen von hoffnungslosen Idealisten. 	  | BOB_BOB hat Folgendes geschrieben: |  	  | Ich danke euch für eure Mühe und Ausdauer. In manch anderem Forum wäre ich schon bespuckt werden. Ich seid Klasse:-) | 
   Du könntest zunächst einmal das CLS am Anfang entfernen (es ist komplett überflüssig), damit du beim Programmstart keine Fehlermeldung bekommst. 	  | Zitat: |  	  | Anregungen zur Verbesserung gerne gewünscht. | 
 
 Aber einmal ganz generell: Wenn du keinen ernsthaften Grund hast, ausgerechnet in QBasic zu programmieren, würde ich dir empfehlen, auf FreeBasic umzusteigen. Die Syntax ist fast identisch, aber die Möglichkeiten sind ungleich größer, du bekommst "echte" Programme (.exe) und auch die gängigen Editoren sind wesentlich komfortabler als der QB-Editor.
 
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| dreael Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 2530
 Wohnort: Hofen SH (Schweiz)
 
 | 
			
				|  Verfasst am: 04.02.2015, 20:55    Titel: |   |  
				| 
 |  
				|  	  | grindstone hat Folgendes geschrieben: |  	  | Die Syntax ist fast identisch, aber die Möglichkeiten sind ungleich größer, du bekommst "echte" Programme (.exe) und auch die gängigen Editoren sind wesentlich komfortabler als der QB-Editor. | 
 Und auch noch wichtig: Die .EXE-Dateien laufen auf aktuellen Windows-Betriebsystemen (32-Bit und 64-Bit) nativ, ohne dass man die NTVDM bemühen muss, welches es nur noch bei den 32-Bit-Versionen gibt (heutige PCs ab der Stange besitzen mittlerweilen durchgehend Windows immer in der x64-Version!) und ausserdem von Microsoft nur noch sehr stiefmütterlich gepflegt wird.
 _________________
 Teste die PC-Sicherheit mit www.sec-check.net
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 04.02.2015, 21:10    Titel: |   |  
				| 
 |  
				| Im Moment bleibe ich erstmal bei Qbasic. Dazu habe ich jetzt einige Unterlagen zusammen. Vllt steige ich später mal um:-) Mit dem CLS Befehl am Anfang bekomme ich keine Fehlermeldung.
 
 Andere kleine Frage. Wie kann ich PRINT USING und CHR$ in einer Zeile verwenden?
 Vor das CHR$ muss ich ja PRINT setzen. Aber in einer Zeile kommt das nicht klar. Würde gerne einige von den ASCII Symbolen nutzen. Im Moment arbeite ich mit Locate und kriege so das ASCII Symbol in meine PRINT USING Zeile.
 
 Gruß BOB
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4710
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 04.02.2015, 23:50    Titel: |   |  
				| 
 |  
				| Du kannst die einzelnen Strings mit + verketten: 
  	  | Code: |  	  | PRINT "123" + CHR$(254) + "456" | 
 Damit sollte es auch mit PRINT USING problemlos funktionieren.
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 04.02.2015, 23:50    Titel: |   |  
				| 
 |  
				| Einfach anstelle eines "normalen" Buchstabens in die Zeile schreiben, wie bei jedem anderen String auch: 
  	  | Code: |  	  | PRINT USING "\        \"; ">" + CHR$(16) + CHR$(173) + "Hallo" + CHR$(254) + "Welt!" | 
 
 Gruß
 grindstone
 
 EDIT: Da war nemored jetzt schneller!
  _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| BOB_BOB 
 
 
 Anmeldungsdatum: 02.01.2015
 Beiträge: 13
 
 
 | 
			
				|  Verfasst am: 05.02.2015, 09:40    Titel: |   |  
				| 
 |  
				| Ich möchte folgendes machen. xe1 und xe2 wurden vorher berechnet und haben in der Regel mehr als 2 Nachkommastellen. Jetzt möchte ich mit xe1 und xe2 in in einem Print Using auf 2 Nachkommastellen anzeigen lassen. 
 DIM xe1!, xe2!
 xe1! = 2.1112
 xe2! = 4.4321
 
 PRINT USING "von +00 > ##.## m. fallend, von ##.## > ##.## m. wachsend und von ##.## > -00 m. fallend"; xe2!; xe2!; xe1!; xe1!
 
 Das funktioniert auch soweit. Jetzt möchte ich aber das anstelle der Wörter "fallend" und "steigend" jeweils ein Pfeil nach oben oder unten angezeigt wird. Dazu kann ich ja CHR$(24) bzw CHR$(25) benutzen. Aber wenn ich das ich die Print Using Zeile reinschreibe mahnt mich QB immer ab
   Mit meinem sehr beschränkten QB Wissen würde jetzt mit locate den Pfeil ich die Print Using Zeile schieben. Aber nicht sehr Komfortabel.
 Jetzt seid ihr gefragt:-)
 
 Problem selber gelöst:-)
 DIM xe1!, xe2!
 xe1! = 2.1112
 xe2! = 4.4321
 
 PRINT USING "von +00 > ##.## "; xe2!;
 PRINT CHR$(25);
 PRINT USING " ,von ##.## > ##.## "; xe2!; xe1!;
 PRINT CHR$(24);
 PRINT USING " und von ##.## > -00 "; xe1!;
 PRINT CHR$(25)
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4710
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 05.02.2015, 16:11    Titel: |   |  
				| 
 |  
				| Abschnittsweise schreiben geht natürlich immer  und es sollte auch klappen, erst den Foramtstring zu definieren (wie gesagt, unter QB kann ich es nicht testen): 
  	  | Code: |  	  | DIM formatstring$ formatstring$ = "von +00 > ##.## " + CHR$(25) + ", von ##.## > ##.## " + CHR$(24) + " und von ##.## > -00 " + CHR$(25)
 PRINT USING formatstring$; xe2!; xe2!; xe1!; xe1!
 | 
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 06.02.2015, 02:55    Titel: |   |  
				| 
 |  
				| Es funktioniert.   
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |