Anfänger Problem mit DIM-Feldern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

robot91

Betreff: Anfänger Problem mit DIM-Feldern

BeitragDo, März 20, 2008 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
also erstmal, ich bin ein totaler Einsteiger in Basic, weshalb ich mir vor längerer Zeit das Buch von René Meyer gekauft habe und jetzt mal anfangen will mit programmieren. Ich versteh soweit eigentlich alles sehr gut, nur mit den Dim-Felder und Daten-Auslesen hab ich so mein Problem, weil ich wahrscheinlich einfach die Logik dahinter nicht verstehe.
René Meyer erklärt das alles an folgendem Beispiel:
Code: [AUSKLAPPEN]

Dim Name$(6,2)
For I=1 To 6
 For J= 1 To 2
  Read Name$(I, J)
 Next
 Print Name$(I,2)+" "+ Name$(I, 1)
 Next WaitKey

Data "may", "karl", "Verne", "Jules", "Fallada", "Hans", "Christie", "Aghata", "Meyer", "Rene", "Dominik", "Hans"



also ausgabe sehe ich dann:

Karl May
Jules Verne
Hans Fallanda
Aghata Chrisite
Rene Meyer
Hans Dominik



Kann mir mal einer(ganz langsam^^) erklären, in welcher Reihenfolge das Programm da vorgeht? Vor allem wie das dann mit der 2. Dimension aussieht?

Es wäre wirklich sehr nett, wenn sich jemand etwas Zeit nehmen würde um das mal kurz zu erklären, weil ich steh da grad echt aufm Schlauch^^
 

0penguin0

BeitragDo, März 20, 2008 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du ein feld

Code: [AUSKLAPPEN]

Dim Feld(3)


hast, dann ist das erste element nit Feld(1) sonder Feld(0) und das letzte nicht Feld(3) sonder Feld(2).
i never finish anyth

BladeRunner

Moderator

BeitragFr, März 21, 2008 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, Dein Dim hat 7 Zeilen (0-6) und 3 Spalten (0-2). Davon werden im Beispiel allerdings nur 5 Zeilen und 2 Spalten genutzt.

Nun folgt eine verschachtelte Schleife Die die Werte aus den Datas (eins nach dem anderen) einliest und in dem Array abspeichert.
Ich mach grade mal die ersten Durchläufe:
I=1,J=1 : May (Read name (1,1))
I=1,J=2 : Karl (Read name (1,2))
Innere Schleife fertig, Name(1,2) und Name(1,1) werden geprintet (also: "Karl May"), äussere erhöht sich, Warte auf Tastendruck, innere beginnt von vorn:
I=2,J=1 : Verne (Read name (2,1))
I=2,J=2 : Jules (Read name (2,2))
Innere Schleife fertig, Name(2,2) und Name(2,1) werden geprintet (also: "Jules Verne"), äussere erhöht sich, Warte auf Tastendruck, innere beginnt von vorn ... etc. etc.


Ich hoffe das hilft Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

The_Nici

BeitragFr, März 21, 2008 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal jeman anderem das mit den 2D Arrays "aufgezeichnet".
Link: https://www.blitzforum.de/foru...955#287955

MfG und viel Spass. Wink
 

robot91

BeitragFr, März 21, 2008 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erst mal danke für eure Hilfe!

Nachdem ichs mir gestern nochmal (ewig lang) angeschaut habe, denke ich dass ich es jetzt verstanden habe. Eure Beispiele habens mir nochmal sehr gut verdeutlicht!
 

Tritium

BeitragFr, März 21, 2008 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
0penguin0 hat Folgendes geschrieben:
wenn du ein feld

Code: [AUSKLAPPEN]

Dim Feld(3)


hast, dann ist das erste element nit Feld(1) sonder Feld(0) und das letzte nicht Feld(3) sonder Feld(2).


Das stimmt aber nicht ganz: Wenn Du obiges Feld erzeugst, hast Du 4 Elemente!

Beispiel:

Code: [AUSKLAPPEN]
Dim feld(3)

For i=0 To 3
   feld(i) = i
Next

For i=0 To 3
   Print feld(i)
Next

WaitKey
End

BladeRunner

Moderator

BeitragFr, März 21, 2008 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Es mag sein dass Penguin das mit BMAX-Arrays verwechselt hat, denn dort ist es in der Tat so wie er es beschrieben hat.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

0penguin0

BeitragFr, März 21, 2008 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm... hab gar nicht gewusst, dass das so ist...

also kann ich auch sowas schreiben?

Code: [AUSKLAPPEN]

Dim feld(0)
feld(0) = 100

print feld(0)


edit: aha, das geht...
i never finish anyth
 

Gast

BeitragFr, März 21, 2008 19:54
Antworten mit Zitat
Aber nicht angewöhnen, mit 0 zu Dimensionieren. Das schluck zuviel Zeit.
Merke in der geschwindigkeit:
Type's ---> sehr langsam
Dim's ---> mittel
Variablen ---> schnell

Dazu must du noch die verschiedenen Typen Interger, Float, und String beachten.

Strngs($) ---> sehr langsam
Floats(#) ---> mittel
Integer(%) ---> schnell

BladeRunner

Moderator

BeitragFr, März 21, 2008 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Zeit mathematischer Coprozessoren sind floats nicht wirklich langsamer.

Und bei wenigen 100 Eintragen / Prüffällen ist der Unterschied zwischen Type und Dim zu vernachlässigen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

0penguin0

BeitragFr, März 21, 2008 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
kann man doppelt verkettete listen und felder wirklich einfach so vergleichen? (types sind doch sowas wie doppeltverkettete listen, oder?)

aber warum sollten dims "schneller" sein als types? musst du mir mal erklären...
i never finish anyth

Tankbuster

BeitragFr, März 21, 2008 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei Arrays ist doch schon von Anfang an der Speicherplatz reserviert Wink

Bei Types ist das nicht so, da man ja immer neue Erstellen kann.
Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group