PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QBasic "IF-THEN" Problem!



Black Flame
09.10.2005, 16:56
Also ich hob da ein Problem mit QBasic!
Habe gerade mit QBasic angefangen und deswegen bitte nicht lachen!

Also folgendes:
Zuerst soll der Anwender einen Namen eingeben z.B.: Max
Danach soll er seine maximal Punkte eingeben z.B.: 50
Und dann soll er seine erreichten Punkte eingeben z.B.: 40

Und anhand dessen soll das Prog. die erreichte Schulnote ermitteln.
z.B.:
weniger als 26 punkte = nicht genügend
usw.
Hoffe auf hilfe! THX

LG Black Flame

dadie
09.10.2005, 17:15
Teoretisch währe das ne "einfache" int rechnung.

Maxpunkt / punkt = x% erfüllt.

wobei X immer kleiner als 1 ist und Grösser als 0.

dann ne abfrage

Wenn X gleich oder Grösser als 0,90 ist dann Sehr gut
Wenn X kleiner als 0,90 und groser als 0,80 ist dann Gut
Wenn X kleiner als 0,80 und grosser als 0,75 ist dann Befirdigend
Wenn X kleiner als 0,75 und grosser als 0,50 ist dann Ausreichend
Wenn X kleiner als 0,50 und grosser als 0,30 ist dann Mangelhaft
Wenn X kleiner als 0,30 und grosser als 0,00 ist dann Ungenügent

Das ganze dann in Code uumbauen ob die zahlen stimmen weiss ich leider nicht -.-''
den zum einen hat jede schule ein anderres system und zum anderren bin ich kein schüler mehr und weiss es nett mehr -.-''

edit:

Ich versuche das mal in Qbasic umzubauen kann aber nix versprechen mein gebit ist PHP ^^,






CLS
INPUT X#
INPUT Y#
Z# = X# / Y#
IF Z# => 0,90 THEN
GOSUB Sehr_Gut
IF Z# < 0,90 AND Z# => 0,80 THEN
GOSUB Gut
IF Z# < 0,80 AND Z# => 0,75 THEN
GOSUB Befirdigend
IF Z# < 0,75 AND Z# => 0,50 THEN
GOSUB Ausreichend
IF Z# < 0,50 AND Z# => 0,30 THEN
GOSUB Mangelhaft
IF Z# < 0,30 AND Z# => 0,00 THEN
GOSUB Ungenuegent

Sehr_Gut:
PRINT "Sehr gut",
Gut:
PRINT "gut"
Befirdigend:
PRINT "Befirdigend"
Ausreichend:
PRINT "Ausreichend"
Mangelhaft:
PRINT "Mangelhaft"
Ungenuegent:
PRINT "Ungenuegent"


wenn das klappt hast glück wenn nicht habe ich erwartet ^^,

Whiz-zarD
09.10.2005, 17:46
CLS
INPUT X#
INPUT Y#
Z# = X# / Y#
IF Z# => 0,90 THEN
GOSUB Sehr_Gut
IF Z# < 0,90 AND Z# => 0,80 THEN
GOSUB Gut
IF Z# < 0,80 AND Z# => 0,75 THEN
GOSUB Befirdigend
IF Z# < 0,75 AND Z# => 0,50 THEN
GOSUB Ausreichend
IF Z# < 0,50 AND Z# => 0,30 THEN
GOSUB Mangelhaft
IF Z# < 0,30 AND Z# => 0,00 THEN
GOSUB Ungenuegent

Sehr_Gut:
PRINT "Sehr gut",
Gut:
PRINT "gut"
Befirdigend:
PRINT "Befirdigend"
Ausreichend:
PRINT "Ausreichend"
Mangelhaft:
PRINT "Mangelhaft"
Ungenuegent:
PRINT "Ungenuegent"



optimiere mal deinen Code -.-



CLS
Input "Dein Name"; Name$
Input "Die Max. Punktzahl"; max
Input "Die errieichte Punktzahl"; ist
Wert = max / ist
If Wert > 0.90 then Print "sehr gut"
If Wert < 0.9 and Wert > 0.8 then Print "gut"
If Wert < 0.8 and Wert > 0.75 then Print "Befriedigend"
If Wert < 0.75 and Wert > 0.5 then Print "Ausreichend"
If wert < 0.5 and Wert > 0.3 then Print "Mangelhaft"
If Wert < 0.3 then Print "Ungenügend"

Ich hab jetzt die Werte von Dadie genommen, da ich die richtigen Schulbenotungswerte nicht mehr kenne.
Ich frage mich auch, wozu der Name sein soll?

Ynnus
09.10.2005, 18:08
Der Name ist wohl dazu da, dass man die erreichten Noten einer Person zuordnern kann. Oder wie sollen sonst die nackten Zahlen etwas aussagen? ;)

Whiz-zarD
09.10.2005, 18:25
Der Name ist wohl dazu da, dass man die erreichten Noten einer Person zuordnern kann. Oder wie sollen sonst die nackten Zahlen etwas aussagen? ;)

Das Programm ist nach der Auswertung der Note eh beendet.
Der Name hat also keinen Sinn.

dadie
09.10.2005, 18:27
Das Programm ist nach der Auswertung der Note eh beendet.
Der Name hat also keinen Sinn.

evtl. will er das ganze mit na logdatei erweitern oder eine datenbank aufbauen in der diese 3 Daten gespeichert werden.Es kann aber auch einfach sein das er gernen einen satz als antwort hätte mit einem namen und nicht nur "0,90" oder "Sehr gut"

Ynnus
09.10.2005, 18:38
Das Programm ist nach der Auswertung der Note eh beendet.
Der Name hat also keinen Sinn.
Das ist doch erst der Anfang des Programms. Man fängt ja auch klein an. Da kann er dann weiter anbauen und die Namen + Note in einer Datei abspeichern oder grafisch ausgeben lassen.

Tomsym
10.10.2005, 07:21
Wäre die Select-Case-Reihe nicht eine Alternative?

Whiz-zarD
10.10.2005, 12:29
Wäre die Select-Case-Reihe nicht eine Alternative?

Viele Wege führen zum Ziel.
Aber mit Select Case wäre das mehr Schreibarbeit.

DFYX
10.10.2005, 14:23
Mal ganz davon abgesehen, dass es in QBasic kein Select Case gibt.

Mike
10.10.2005, 16:25
Nicht das jetzt jemand glaubt das Black Flame mein Doppelaccount ist, aber wir gehen in die gleiche Klasse.
Ja, der Name ist einfach nur dazu da, dass man einfach eine Note, dem Schüler zuordnet...glaub ich, jedenfalls haben wir das so machen müssen, und ich bedanke mich im Name von Black Flame und von mir.
Danke.

LG Henry

Manuel
10.10.2005, 19:39
Mal ganz davon abgesehen, dass es in QBasic kein Select Case gibt.Ich bin jetzt zu faul, um den "Wenn man keine Ahnung hat..."-Smilie rauszusuchen, aber...

CLS
INPUT "Dein Name"; Name$
INPUT "Die Max. Punktzahl"; max
INPUT "Die erreichte Punktzahl"; ist
Wert = max / ist
SELECT CASE Wert
CASE IS > .9
PRINT "sehr gut"
CASE IS > .8
PRINT "gut"
CASE IS > .75
PRINT "Befriedigend"
CASE IS > .5
PRINT "Ausreichend"
CASE IS > .3
PRINT "Mangelhaft"
CASE ELSE
PRINT "Ungen?gend"
END SELECT
PRINT Wert

btw, kann es sein, dass "max" und "ist" als Variablennamen vertauscht wurden? Wenn man z.B. eingibt, dass man 1 von 20 möglichen Punkten erreicht hat, spuckt das Programm ein "sehr gut" aus^^.

dadie
10.10.2005, 19:51
btw, kann es sein, dass "max" und "ist" als Variablennamen vertauscht wurden? Wenn man z.B. eingibt, dass man 1 von 20 möglichen Punkten erreicht hat, spuckt das Programm ein "sehr gut" aus^^.

Weil es "ist / max" seinmüsse den 1/20 = 0,05 20/1 = 20 :D

naja aber nur so neben bei kaum gibt es einen Neuen Topic stürzen sich alle druff und irgentwie sind wir sowas von , von der Diskusion abgekommen das man es nichtmal mehr Spam nenen kann das ist schon ein QFRAT Topic :D

DFYX
10.10.2005, 20:31
Ich bin jetzt zu faul, um den "Wenn man keine Ahnung hat..."-Smilie rauszusuchen, aber
Dann verklag den Autor von dem Basicbuch, das ich hier stehen hab. Da wird das nämlich auf stark 600 mit keinem Wort erwähnt.

Ynnus
10.10.2005, 23:12
Was nicht erwähnt wird heißt aber noch nicht, dass es nicht vorhanden ist. Zählt vor Gericht zwar auch als Tatbestand, wenn man die Wahrheit sagen soll aber etwas verschweigt was wichtig wäre, aber hier ist es eben etwas anders. Hätte mich übrigens auch gewundert denn Select und Case ist doch schon ein sehr altes Element der Programmierung oder?

Whiz-zarD
10.10.2005, 23:30
Dann verklag den Autor von dem Basicbuch, das ich hier stehen hab. Da wird das nämlich auf stark 600 mit keinem Wort erwähnt.

Basic ist auch nicht QBasic ;)

Bei Basic gibt es tatsächlich keine Select Case Funktion. Die gibt es aber bei QBasic.

QBasic ist aber eine erweiterte Version von Basic, wo mehrere Funktionen und befehle zur Verfügung stehen.
Mit Basic ist es auch nicht möglich, grafisch etwas zu zeichnen, mit QBasic schon.

AgentJG
11.10.2005, 00:26
Basic ist auch nicht QBasic ;)

Bei Basic gibt es tatsächlich keine Select Case Funktion. Die gibt es aber bei QBasic.

QBasic ist aber eine erweiterte Version von Basic, wo mehrere Funktionen und befehle zur Verfügung stehen.
Mit Basic ist es auch nicht möglich, grafisch etwas zu zeichnen, mit QBasic schon.

Ähm, soweit ich (Hab BASIC das letze mal vor 8 Jahren gesehen) gibt es in BASIC Grafikbefehle. Ich mein es gab da nur eine sehr geringe Auflösung oder das ganze war im Textmode. Jedenfalls gab es Befehle wie Line, Plot, Circle (Oder das war alles selbstgeschrieben).

Whiz-zarD
11.10.2005, 00:48
Ähm, soweit ich (Hab BASIC das letze mal vor 8 Jahren gesehen) gibt es in BASIC Grafikbefehle. Ich mein es gab da nur eine sehr geringe Auflösung oder das ganze war im Textmode. Jedenfalls gab es Befehle wie Line, Plot, Circle (Oder das war alles selbstgeschrieben).

Nein, Basic hat sowas nicht ;)
Wenn du sehen willst, was Basic alles kann, dann kauf dir nen C64 ^^
Alles weitere sind erweiterungen und gehören nicht zum standard Basic.
Beim C64 gab es mal das 1stBasic (von der Fachzeitschrift "Input 64")
Diese Basic Version war eine C64 Adaption von QBasic. (mit line, circle, etc)

DFYX
11.10.2005, 14:20
Das Buch, was ich hier hab, ist über die GW-Basic (Graphics and Window) Familie, zu der laut Kapitel 1 auch QBasic gehört. Und dass ich von dem Buch auf die Realität geschlossen habe, liegt daran, dass es immerhin fast 200 Befehle von A wie ABS(<Ausdruck>) über O wie OPEN "COM<Kanal>:[<Baud-Rate>] [,<Priorität>] [,<Wortbreite>] [,<Stop-Bits>] [,RS] [,CS[<Zeit>]] [,DS[<Zeit>]] [,CD[<Zeit>]] [,BIN] [,ASC] [,LF]"[FOR <Modus>] AS #[<Dateinummer>] bis hin zu X wie XOR - X XOR Y auflistet, was so etwa dem kompletten Funktionsumfang entsprechen sollte.

Wenn man also so ein Buch komplett gelesen und ein ganzes Jahr lang in der Schule mit QBasic gearbeitet hat, ohne dass einem jemals ein SELECT CASE in dieser Sprache untergekommen ist, kann wohl kaum jemand von keine Ahnung sprechen. Wär wohl eher angebracht, freundlich drauf hinzuweisen.

Ynnus
11.10.2005, 14:37
Ich glaube das Problem war mehr, dass du es so als Behauptung dahingestellt hast obwohl du dir nicht zu 100% sicher sein konntest. ;)
Aber was soll's? Sowas merkt man sich für's nächste Mal und dann macht man es anders.

Whiz-zarD
11.10.2005, 23:37
Das Buch, was ich hier hab, ist über die GW-Basic (Graphics and Window) Familie, zu der laut Kapitel 1 auch QBasic gehört. Und dass ich von dem Buch auf die Realität geschlossen habe, liegt daran, dass es immerhin fast 200 Befehle von A wie ABS(<Ausdruck>) über O wie OPEN "COM<Kanal>:[<Baud-Rate>] [,<Priorität>] [,<Wortbreite>] [,<Stop-Bits>] [,RS] [,CS[<Zeit>]] [,DS[<Zeit>]] [,CD[<Zeit>]] [,BIN] [,ASC] [,LF]"[FOR <Modus>] AS #[<Dateinummer>] bis hin zu X wie XOR - X XOR Y auflistet, was so etwa dem kompletten Funktionsumfang entsprechen sollte.


Da haben wir wohl das Problem:

GW Basic hat viele nachteile gegenüber QBasic:
- Weniger Kontrollstrukturen (z.B. keine DO..LOOP, SELECT CASE und mehrzeilige IF-Anweisungen)
- Zeilennummern zwingend erforderlich, menomotechnische Marken für Sprungziele gibt es nicht.
- Es gibt keine Prozeduren (SUBs, FUNCTIONs), sondern nur lokale Subroutinen (GOSUB...RETURN) und einzeilige Funktionen (DEF FN).
- Keine wohlstrukturierte Programmierung möglich. Typische GW-BASIC Programme wimmeln nur so von GOTO und GOSUB-Befehlen ("Spagetti-Code")
- Verbundfelder (TYPE...END TYPE) und Konstanten (DATA) werden nicht unterstützt.
- Der integrierte Editor arbeitet mehr zeilenorientiert und ist kein Ganzseiten-Editor


Aber eigentlich sollte man nach einem Jahr QBasic-Erfahrung auf den Befehl "Select Case" gestoßen sein. Oder merken, dass QBasic anders ist, als GW-Basic.
Aber so kann man sich irren ^^

Black Flame
12.10.2005, 08:02
Ich habe es zwar noch nicht probieren können ob es Funktioniert,
aber das bezweifle ich eh nicht!

Also danke für eure hilfe! http://www.multimediaxis.de/images/smilies/old/sm_12.gif

LG Black Flame