 |
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 |
marco-bormann
Anmeldungsdatum: 11.12.2006 Beiträge: 4
|
Verfasst am: 11.12.2006, 19:57 Titel: Morgen Info Klausur HILLFFFEEEEEEEEEE |
|
|
Hallo,
schreibe morgen eine Informatik Klausur über Schleifen in Qbasic. Ich verstehe das überhaupt nicht. Weis nur, dass wir fornext,do loop until und while wend Schleifen können müssen. Also hier mal eines unserer Programme:
Code: | REM ***Würfel***
cls
randomize timer
input "Wieviele Durchgänge:", a
sum = 0
For k = 1 to a
v = 0
do v = v + 1
s = 0
for i = 1 to 3
w = int(rnd * 6) + 1
s = s + w
next i
loop until s = 18
sum = sum + v
next k
mittel = sum / a
print "mittlere Anzhl der Versuche:"; Mittel |
Ich weis nur das es sich hier um eine "loop until" Schleife in einer "for next" Schleife handelt und den Rest mit "sum" und so verstehe ich alles nit. Habe keine Ahnung was das bedeutet. Bitte kann mir das einer erklären? |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 11.12.2006, 20:04 Titel: |
|
|
Zunächst sollte man sich die Mühe machen und das ganze Einrücken, damit man weiß, was wozu gehört:
Code: | REM ***Würfel***
Cls
randomize timer
Input "Wieviele Durchgänge:", a
sum = 0
For k = 1 To a
v = 0
do v = v + 1
s = 0
For i = 1 To 3
w = Int(Rnd * 6) + 1
s = s + w
Next i
loop Until s = 18
sum = sum + v
Next k
mittel = sum / a
Print "mittlere Anzhl der Versuche:"; Mittel |
Jetzt sollte es schon wesentlich leichter fallen da durch zu steigen. Wenn man kapieren will, was so ein Programm macht, sollte man es mit ein zwei Beispieln durchrechnen... Falls es da noch Probs gibt, weiterfragen.... _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
marco-bormann
Anmeldungsdatum: 11.12.2006 Beiträge: 4
|
Verfasst am: 11.12.2006, 21:35 Titel: ? |
|
|
was ist der unterschied von "sum" und "summe" ?? |
|
Nach oben |
|
 |
Key

Anmeldungsdatum: 03.10.2006 Beiträge: 95
|
Verfasst am: 11.12.2006, 22:09 Titel: |
|
|
wo steht denn da was von summe?  |
|
Nach oben |
|
 |
marco-bormann
Anmeldungsdatum: 11.12.2006 Beiträge: 4
|
Verfasst am: 11.12.2006, 22:14 Titel: ja |
|
|
ja da net aber in meinem anderen programm hier
was heißt denn sum? |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 11.12.2006, 22:21 Titel: Re: ? |
|
|
Hallo
marco-bormann hat Folgendes geschrieben: | was ist der unterschied von "sum" und "summe" ?? |
Da gibt es keinen Unterschied, das ist nur die Bezeichnung einer Variablen, die kannst du - abgesehen von reservierten Worten wie Befehlen, Operatoren etc. - frei wählen. Du könntest sie anstatt sum auch versuche nennen, was hier vielleicht verständlicher wäre. Weisst du denn, was eine Variable ist und wie und warum man sie benutzt? Schreib doch mal etwas genauer, was von dem Programm du verstehst und was nicht.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
marco-bormann
Anmeldungsdatum: 11.12.2006 Beiträge: 4
|
Verfasst am: 11.12.2006, 22:27 Titel: ja |
|
|
also wie gesagt verstehe von for k bis next k nicht allzuviel.. .. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 11.12.2006, 23:04 Titel: Re: ja |
|
|
Also das Programm soll wohl ausprobieren, wie oft man im Schnitt mit 3 Würfeln würfeln muss, bis man drei Sechser auf einmal bekommt.
FOR...NEXT benutzt man in der Regel, wenn die Anzahl der Schleifendurchläufe festgelegt ist. Dazu gibt man einen Startwert, einen Endwert und wahlweise die Schrittgrösse an.
Code: | FOR variable = startwert TO endwert STEP schrittgroesse
...
NEXT |
Das Programm läuft durch bis zum NEXT. Dann wird zur Zählvariablen der Wert von schrittgroesse dazuaddiert und verglichen, ob der Endwert schon erreicht oder überschritten ist. Ist das nicht der Fall, wird zur Zeile nach dem FOR-Befehl zurückgesprungen und die Schleife erneut durchlaufen. Ist der Endwert erreicht, wird das Programm nach dem NEXT fortgesetzt. Die Schrittgrösse kann auch negativ sein, dann wird rückwärts gezählt. Wird STEP und die Schrittgrösse (wie in eurem Programm) weggelassen, wird automatisch immer eins dazugezählt.
Code: | FOR variable = 1 TO 5
PRINT "Hallo"
NEXT |
Schreibt also fünf mal Hallo. Man kann die Zählvariable auch in der Schleife benutzen. Wenn du dir z.B. eine Wertetabelle für eine Funktion (Parabel o.ä.) ausrechnen lassen willst kannst du x als Zählvariable benuten und zu jedem x den entsprechenden y-Wert anzeigen. Da kann dann auch eine andere Schrittgrösse als eins sinnvoll werden.
DO...LOOP und WHILE...WEND benutzt man dagegen eher, wenn die Schleife solange wiederholt werden soll bis (=until) oder solange (=while) eine bestimmte Bedingung erfüllt wird. Wenn diese Bedingung am Anfang der Schleife steht, wie bei WHILE...WEND oder DO UNTIL...LOOP, dann wird eben zu Beginn der Schleife geprüft, ob diese Abbruch- bzw. Weitermachbedingung erfüllt ist, Steht sie am Ende, also z.B. DO...LOOP UNTIL, wird sie auch erst am Ende geprüft. In deinem Beispiel steht sie am Ende, weil ja in der Schleife erst gewürfelt und dann überprüft wird, ob es drei Sechser waren oder nicht. Im Gegensatz zu FOR...NEXT ist dabei nicht unbedingt festgelegt, wann die Bedingung erfüllt ist bzw. wie lange. So kann man damit z.B. auf einen Tastendruck wartenn, oder eben darauf, dass eine bestimmte Kombination aus Zufallszahlen generiert wird.
Zum Programm: An Anfang gibt man an, wieviele 3x6-Versuche bzw. Treffer man probieren möchte. Dieser Wert wird in a abgelegt. Das wird der Endwert der äusseren FOR...NEXT-Schleife, k ist die Zälvariable und 1 der Startwert. Da kein STEP angegeben ist, wird k bei jedem Durchgang um eins erhöt, bis k = a ist. Wenn k=a ist, wird die Schleife noch einmal Durchlaufen und dann aber bei NEXT k verlassen. Die Variable sum zählt die Gesamtzahl der Würfelversuche. Sie wird zu Beginn auf Null gesetzt, was eigentlich unnötig ist, da neue Variable automatich immer 0 sind, aber es stört auch nicht.
Dann sind wir also in der ersten Schleife. Die Variable v zählt die Versuche die "gewürfelt" werden, bis die drei Sechser kommen. Hier muss man sie mit v=0 auf null setzen, weil dieser Teil ja mehrfach durchlaufen wird und v immer neu anfangen soll zu zählen. Dann kommt di DO...LOOP-Schleife. Hier kommt bei jedem Durchgang eins zu v dazu, um die Durchläufe zu zählen. Die Variable s steht für die Summe der drei Zufallszahlen zwischen 1 und 6, die in der inneren FOR...NEXT-Schleife ermittelt werden. Diese drei Zahlen werden in s zusammenaddiert und bei s=6+6+6=18 ist die Bedingung erfüllt um die DO...LOOP-Schleife zu verlassen. Die Anzahl der Versuche, die bis dahin nötig waren steht ja in v. Dieser Wert wird zu der Gesamtsummer der Versuche in sum addiert. Wurden a mal drei Sechser gewürfelt, wird noch die Gesamtzahl der Versuche sum durch die Zahl der "Treffer" a geteilt und das Ergebnis aus sum/a in der Variablen mittel abgelegt und diese zuletzt mit PRINT ausgegeben.
Schon etwas klarer?
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
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.
|
|