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:

Morgen Info Klausur HILLFFFEEEEEEEEEE

 
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
marco-bormann



Anmeldungsdatum: 11.12.2006
Beiträge: 4

BeitragVerfasst am: 11.12.2006, 19:57    Titel: Morgen Info Klausur HILLFFFEEEEEEEEEE Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 11.12.2006, 20:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
marco-bormann



Anmeldungsdatum: 11.12.2006
Beiträge: 4

BeitragVerfasst am: 11.12.2006, 21:35    Titel: ? Antworten mit Zitat

was ist der unterschied von "sum" und "summe" ??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Key



Anmeldungsdatum: 03.10.2006
Beiträge: 95

BeitragVerfasst am: 11.12.2006, 22:09    Titel: Antworten mit Zitat

wo steht denn da was von summe? lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
marco-bormann



Anmeldungsdatum: 11.12.2006
Beiträge: 4

BeitragVerfasst am: 11.12.2006, 22:14    Titel: ja Antworten mit Zitat

ja da net aber in meinem anderen programm hier

was heißt denn sum?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 11.12.2006, 22:21    Titel: Re: ? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
marco-bormann



Anmeldungsdatum: 11.12.2006
Beiträge: 4

BeitragVerfasst am: 11.12.2006, 22:27    Titel: ja Antworten mit Zitat

also wie gesagt verstehe von for k bis next k nicht allzuviel.. ..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 11.12.2006, 23:04    Titel: Re: ja Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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
Seite 1 von 1

 
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