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:

Arrays und Schleifen

 
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
Alpha



Anmeldungsdatum: 01.05.2005
Beiträge: 6

BeitragVerfasst am: 05.05.2005, 01:06    Titel: Arrays und Schleifen Antworten mit Zitat

Hallo,
Kann mir jemand ein paar beispiele für die Sinnvolle verwendung von Arrays und Schleifen erklären?(bitte keine eingaben) Ich kenn nur das Beispiel aus den Tutorials, aber mit dem kann man sich das schlecht einprägen find ich......ein paar Beispiele wären nett happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.05.2005, 02:13    Titel: Antworten mit Zitat

ähm, zb?

*wasausnfingernsaug*
Code:
DIM spieler(4) AS STRING
spieler(0)="Hans"
spieler(1)="Klaus"
spieler(2)="DerInderInDerInderin"
spieler(3)="BismarckBisMarckBisMarckBismarckBis"
spieler(4)="ober-b00n"

PRINT "Hier sind alle Spieler:"
PRINT "======================="
FOR n = 0 TO 4
 PRINT STR$(n)+") "+spieler(n)
NEXT n

END

_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 05.05.2005, 12:53    Titel: Antworten mit Zitat

Oder mit Zahlen, z.B. ein einfacher Lottozahlengenerator.
Einfach daher, weil Zahlen mehrmals auftreten können.

Code:

DIM Lottozahlen(1 TO 6) AS INTEGER, Zusatzzahl

FOR i = 1 TO 6
 Lozzozahlen(i) = INT(RND * 49) + 1
NEXT i
Zusatzzahl = INT(RND * 49) + 1

PRINT " Die heutigen Lottozahlen: "
FOR i = 1 TO 6
 PRINT LTRIM$(STR$(i)) + ".  " + LTRIM$(STR$(Lottozahlen(i))
NEXT i
PRINT " Und die Zusatzzahl ist die " + LTRIM$(STR$(Zusatzzahl))) + "."


PS: So hab ich auch mit Arrays und Schleifen angefangen lächeln

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Alpha



Anmeldungsdatum: 01.05.2005
Beiträge: 6

BeitragVerfasst am: 06.05.2005, 00:31    Titel: Antworten mit Zitat

aha, also braucht man arrays und schleifen nur wenn man lotto spielen will durchgeknallt , scherz....ich meinte eher beispiele von kompliziertem zeugs lachen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 06.05.2005, 08:03    Titel: Antworten mit Zitat

Moin,
also komplizierter is das mit den Arrays nicht.

Du kannst das höchstens noch anspruchsvoller machen, wenn du deine eigene Datenstruktur für ein Array erstellts. Dann kann das schon mal ganz lustig werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 06.05.2005, 15:36    Titel: Antworten mit Zitat

Das einzige, was noch dazu kommt, is die verwaltung dynamischer arrays.
Klingt jetz kompliziert, is aber genauso einfach.
Angenommen, du hast ein Array, und die Zahl der Elemente ändert sich im Programmverlauf. Dann musst du es redimensionieren, und evtl neu befüllen.
Unter QBX geht dass ganz einfach per REDIM PRESERVE, ansonsten musst du's zuvor in ein Temp-Array kopieren.
Könnte so aussehn:
Code:

'QBX-Variante:
'$DYNAMIC

DIM Array(2, 3 TO 7)

'... Code, der das Array befüllt)

REDIM PRESERVE (3, 3 TO 7)



'------------------------
'QB 4.5-Variante:

DIM Array(2, 3 TO 7)

'... Code, der das Array befüllt)

DIM TmpArray(2, 3 TO 7)
FOR i = 0 TO 2
 FOR j = 3 TO 7
  TmpArray = Array(i, j)
 NEXT
NEXT

REDIM Array (3, 3 TO 7)
FOR i = 0 TO 2
 FOR j = 3 TO 7
  Array = TmpArray(i, j)
 NEXT
NEXT


Noch was zum Einsatz: Arrays brauchst du immer dann, wenn du beim Programmieren nicht genau sagen kannst, wie viele Speicherstellen (Variablen) du genau brauchst, oder wenn du dir selbst zusammenhänge deutlich machen willst. (Sieht man gut am ersten Beispiel)

Anspruchsvoller wäre nur noch die Koppelung eines Arrays mit einem UDT (User Defined Type):
Code:

TYPE PlayerType
 PlName AS STRING
 PlScore AS INTEGER
 PlLevel AS STRING
END TYPE

DIM Player(10) AS PlayerType

...



Ansonsten bleibts wohl eher auf dieser Höhe:
(Beispiel aus einem aktuellen Projekt: Ein Level soll in eine Datei gespeichert werden. Neben dem Level selbst müssen auch Headerdata mit. Das sind Dinge wie Startposition, Name des Levels, ...)
Code:

sub SaveLvl (FileName as string, Map() as string, Info() as string, Groesse as Vektor)
   dim f as ubyte
   dim headersize as long
   dim Elements   As SHORT
   
   f = freefile
   Elements = Ubound(Info, 0)
   open FileName for binary as #f
   
   headersize = 1
   for i = 0 to Elements
      headersize = headersize + len(Info(i, 0)) + 2
      headersize = headersize + len(Info(i, 1)) + 1
   next
     
   Print "Erstelle Header"
   put #f, 1, headersize
   put #f, 5, Elements
   for i = 0 to Elements
      Put #f, , chr$(255) + Info(i, 0) + chr$(255)
      put #f, , Info(i, 1) + chr$(13)
   next
   
   Print "Speichere Dimensionen"
   Put #f, headersize + 6, Groesse.y
   Put #f, headersize + 8, Groesse.x
   
   Print "Speichere Karte"
   for y = 0 To Groesse.y - 1
      for x = 0 to Groesse.x - 1
         put #f, , Map(y, x)
      next
   next
   
   close #f
end sub

Etwas in der Art hat wohl auch Jan gemeint, als er von einer eigenen Datenstruktur für ein Array gesprochen hat.


Have a nice day
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.05.2005, 18:31    Titel: Antworten mit Zitat

Voriges Beispiel funktioniert nur in PDS (QB7.1), in QB4.5 gibt es PRESERVE nicht.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 06.05.2005, 20:48    Titel: Antworten mit Zitat

Deswegen hab ich ja auch im ersten Codebeispiel abgetrennt; der erste Teil als QBX-Variante, und nach dem Trennstrich das QB45-Äquivalent. Der dritte Codeauszug (die SUB) sollte QB-Kompatibel sein, auch wenn ich nicht ganz sicher bin, weil sie aus einem FB-Prog ist. Aber abgesehen von dem DIM elements AS SHORT sollte alles QB sein.
(SHORT entspricht dem QB-Integer)
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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