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:

Rechnen in FB immer Rechts neben dem = Zeichen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muecke
Gast





BeitragVerfasst am: 14.01.2014, 18:14    Titel: Rechnen in FB immer Rechts neben dem = Zeichen? Antworten mit Zitat

Hallo miteinander,

ich habe da mal eine echt Doofe Frage.

Rechnen Tut FB doch immer Rechts neben dem "=" zeichne und nicht Links daneben. !!

also so z.B.

Code:
i = 100 + 5
Print i   ' Ausgabe 105


warum schreibt man wenn man i um eins erhöhen möchte das "+" Zeichen dann auf die Linksseite?

also so?
Code:
i = 100
i + = 1
Print i   ' Ausgabe 101


und warum nicht so
Code:
i = 100
i = + 1
Print i   ' Ausgabe 1


wie man hier sieht kommt bei dem was ich Logisch finden würde 1 und nicht 101 heraus traurig

Kann mir da jemand eine Erklärung geben? ist das irgend wie Logisch aufgebaut? oder ist das halt so?
Nach oben
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.01.2014, 18:19    Titel: Antworten mit Zitat

Ein + oder - auf der "rechten Seite" ist eben ein Operator, der auf die Zahlen dort angewendet wird, sprich in deinem Beispiel kannst du dir das als Vorzeichen für die 1 vorstellen. "+=", "-=", "*=" usw. sind einfach nur Abkürzungen, die das lästige Eintippen von "i = i +"... erleichtern sollen. Der Operator "+" ist dabei einfach auf der linken Seite, damit er syntaktisch nicht mit Operatoren auf der rechten Seite in Konflikt gerät. In anderen Programmiersprachen gibt es auch noch "i++", was (vereinfacht gesagt) dasselbe wie "i+=1" ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muecke
Gast





BeitragVerfasst am: 14.01.2014, 18:24    Titel: Antworten mit Zitat

ah OK, das klingt Logisch,

damit ich aufgrund von Vorzeichen (z.B. Negativzahlen) nicht in Konflikt komme wird es hier Links geschrieben.

wobei ich natürlich auch

Code:
i = i + 1


Schreiben könnte was aber mal wider mehr Schreibarbeit ist.

Cool danke für die Kurze Erklärung.
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 14.01.2014, 23:12    Titel: Antworten mit Zitat

naja.... also, so pauschal würde ich das mti dem rechnen jetzt nicht sagen.

es gibt da z.B. auch so fälle wie

Code:

dim a as integer
dim aptr as integer ptr
aptr = @a
cast(short, aptr + 2) = 2


sogesehen rechnet er durchaus auch auf der anderen seite.

das = ist hier eher der ausschlaggebene "verknüpunfsfaktor" ... er besagt das der wert rechts nach links geschrieben werden soll ... bzw. bei vergleiche eine prüfung volziehen soll und das ergebniss nach links zurückliefert.

z.B.
Code:

dim a as integer
a = (1 = 2)



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.01.2014, 23:17    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:
sogesehen rechnet er durchaus auch auf der anderen seite.

Der Unterschied ist, dass das eine ein L-Wert und das andere ein R-Wert ist (wiki). R-Werte wie "x + 1" können, wie der Name vermuten lässt, nur auf der rechten Seite einer Zuweisung auftauchen. Die Dereferenzierung oder das Casten eines Pointers mit Offset (zusammengerechnet ist das wieder ein R-Wert) gibt natürlich einen L-Wert zurück.

Muecke: Ich glaube beim Upload deines Avatars ist da was schief gelaufen, da ist irgendwie das falsche Tier drauf lachen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 14.01.2014, 23:18    Titel: Antworten mit Zitat

Die Kurzformen wie +=, -=, *= usw. hat FreeBasic aus den C-ähnlichen Sprachen (C, C++, Java, PHP usw.) übernommen. Hat für den Compiler natürlich den Vorteil, dass er optimieren kann. Hierbei an Array-Variable mit kompliziert berechnetem Index denken:
Code:
' Herkömmlich
a(7 * x - 2 * j(2 + 3 * k) + 55) = a(7 * x - 2 * j(2 + 3 * k) + 55) + 2
' Kurzform
a(7 * x - 2 * j(2 + 3 * k) + 55) += 2

In der herkömmlichen Form kann es ohne Weiteres passieren, dass zur Laufzeit der Indexausdruck 7*x-2*j(2 + 3 * k)+55 aus diesem Beispiel 2x berechnet wird, während die Kurzform wirklich auf die auf Maschinensprache üblichen ADD/SUB/INC/DEC-Befehle optimiert werden kann.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Muecke
Gast





BeitragVerfasst am: 14.01.2014, 23:33    Titel: Antworten mit Zitat

OK jetzt muss ich echt passen, ich haeb überhaupt keinen Plan mehr was Ihr da versucht mir zu zeigen oder klar zu machen, ...

angefangen beim
ThePuppetMaster hat Folgendes geschrieben:
Code:

dim a as integer
dim aptr as integer ptr
aptr = @a
cast(short, aptr + 2) = 2
...

geschockt ??? HÄÄÄ ??? geschockt

oder das hier
Jojo hat Folgendes geschrieben:
Der Unterschied ist, dass das eine ein L-Wert und das andere ein R-Wert ist
?? ömm ja genau

hmm? *nicht nur der Kaffee Raucht jetzt, ...

dreael hat Folgendes geschrieben:
Code:
' Herkömmlich
a(7 * x - 2 * j(2 + 3 * k) + 55) = a(7 * x - 2 * j(2 + 3 * k) + 55) + 2
' Kurzform
a(7 * x - 2 * j(2 + 3 * k) + 55) += 2


ich möchte wirklich nicht unhöflich sein oder irgend wem beleidigen doch ich verstehe gerade echt nur Bahnhof, ich habe leider keine Höhere Mathematik gehabt traurig


@Jojo: an was für ein Tier hast du denn bei mir gedacht??
Jojo hat Folgendes geschrieben:
Muecke: Ich glaube beim Upload deines Avatars ist da was schief gelaufen, da ist irgendwie das falsche Tier drauf lachen

an eine Süße unschuldige Katze?
Nach oben
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.01.2014, 23:46    Titel: Antworten mit Zitat

Muecke hat Folgendes geschrieben:
Jojo hat Folgendes geschrieben:
Der Unterschied ist, dass das eine ein L-Wert und das andere ein R-Wert ist
?? ömm ja genau

Hast du verpasst, dass da ein blauer Link dahinter stand? Den anklicken. zwinkern
Ein R-Wert ist praktisch ein Ausdruck, dem man nichts zuweisen kann. Ein Funktionsaufruf liefert z.B. (im Allgemeinen) ein R-Wert zurück, d.h. du kannst nicht sagen "MalZwei(3) = x", sondern nur "x = MalZwei(3)", um einen Zahl mal zwei zu nehmen.

Zitat:

an eine Süße unschuldige Katze?
Wie wär's mit einem Elefanten? durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 14.01.2014, 23:51    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
... Ein Funktionsaufruf liefert z.B. (im Allgemeinen) ein R-Wert zurück, d.h. du kannst nicht sagen "MalZwei(3) = x", sondern nur "x = MalZwei(3)", um einen Zahl mal zwei zu nehmen. ...


naaaajaaaaa ......


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 14.01.2014, 23:54    Titel: Antworten mit Zitat

deinen Link habe ich gesehen und auch angeschaut (Überfolgen) werde mir das aber noch genauer anschauen, denn wenigstens etwas möchte ich verstehen wenn ich schon mit den Thema anfange auch wenn mehr dabei raus kommt wie ich mir manchmal vorstellen kann.

Jojo hat Folgendes geschrieben:
Wie wär's mit einem Elefanten? durchgeknallt

he he, ich weis nicht ob ein Elefanten so wirklich zu mir passt, den Elefanten vergessen nichts traurig ich ich kann meinen Kopf zum Nudeln abschütten benutzen zwinkern
wenn dann würde ich eine Schildkröte nehmen die ist so schnell wie ich die Sachen verstehe zwinkern

finde es aber sehr Nett das man mich mit einen Elefanten vergleicht zwinkern
Nach oben
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.01.2014, 01:23    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:
Jojo hat Folgendes geschrieben:
... Ein Funktionsaufruf liefert z.B. (im Allgemeinen) ein R-Wert zurück, d.h. du kannst nicht sagen "MalZwei(3) = x", sondern nur "x = MalZwei(3)", um einen Zahl mal zwei zu nehmen. ...


naaaajaaaaa ......


MfG
TPM


Ich glaube, wenn ich jetzt mir Referenzen komme, steigt er gar nicht mehr durch. Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muecke
Gast





BeitragVerfasst am: 15.01.2014, 01:33    Titel: Antworten mit Zitat

grinsen darfst du gerne, ich kapiere jetzt schon nichts mehr grinsen

ist jedoch kein grund zum weinen für mich ich kann einstecken durchgeknallt

werde mir das Thema die Tage noch mal durchlesen und schauen ob ich da was von verstehe.

Jedoch eine Frage vorab mal so am Rande wie wichtig ist das denn das ich das Prinzip was Ihr da gerade besprecht und ich nicht verstehe für mich und die Programmierung?
Nach oben
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 15.01.2014, 03:15    Titel: Antworten mit Zitat

Muecke hat Folgendes geschrieben:
wie wichtig ist das denn das ich das Prinzip was Ihr da gerade besprecht und ich nicht verstehe für mich und die Programmierung?
Lass es mich mal so ausdrücken:
Code:
If verstanden_was_da_erklaert_wurde Then
   funktionierendes_Programm
Else
   kein_funktionierendes_Programm
EndIf
Aber keine Sorge: Wenn du dich damit beschäftigst, kriegst du mit der Zeit schon raus, wie es geht (es sei denn, du wärst in Bezug auf logisches Denken völlig talentfrei), denn auch Fehler sind eine wertvolle Informationsquelle. Also immer dranbleiben! Übung kriegt man nur durch Üben. zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 15.01.2014, 11:25    Titel: Antworten mit Zitat

Nunja ... um dem ganzen nochmal etwas mehr "informationsgehalt" zu liefern ...


Wenn du schreibst
Code:
dim a as integer
a = + 1


Dann ist das vergleichbar mit der angabe:
Code:
dim a as integer
a = -1


Du spezifizierst hier folglich einen Wert.
Das + und - gibt in diesem falle einfach an, ob der darauffolgende Wert positiv oder negativ ist.

Sobald du einen weiteren Wert hinzufügst, "rechnest" du folglich.

Code:
dim a as integer
a = 1-2
a = 1+2
a = -1-2
a = -1+2


Im ersten falle ziehst du von 1 den wert 2 ab.
In nächsten fall fügst du zum wert 1 den wert 2 hinzu.
Danach ziehst du wieder vom wert -1 den wert 2 ab.
usw.

Angenommen du möchtest von einer Variable einen wert hinzufügen. Dann gehst du typischer weise wie folgt vor:
Code:
dim a as integer = 5
a = a + 2

Hierbei schreibst du in das ziel "a" (linke seite) einen wert hinein. Dieser Wert ergibt sich aus dem wert, welcher in "a" enthalten ist, pus dem wert "2".

Es gibt natürlich auch die möglichkeit das selbe mit einem Array zu machen.
Code:
dim a(1 to 10) as integer
a(3) = A(3) + 2

Hierbei greifst du mit "A(3)" auf den dritten eintrag des array zu.

Angenommen du berechnest diesen eintrag aus irgend einem schwindeligem algorythmus:
(nicht funktionsfähiges beispiel)
Code:
dim a(1 to 10) as integer
a(x * y + z * f * g) = a(x * y + z * f * g) + 2

dann benötigst du recht viel schreibarbeit und speicherplatz für diesen quellcode.

In diesem fall gibt es in freebasic die möglichkeit eine einfache rechenoperation zu verkürzen, indem man wie folgt vorgeht.
Code:
dim a(1 to 10) as integer
a(x * y + z * f * g) += 2

Dies ist genau das selbe ergebniss wie zuvor. Nur etwas gekürzt, und spart damit einiges an schreibarbeit.

dieses vorgehen funktioniert mit so gut wie allen operatoren.
Code:
dim a += 2
a -= 2
a /= 2
a *= 2
a xor= 2
a and= 2
'...


Zu deiner "links / rechts rechnet fb" frage:
nun ... Hierfür muss man wissen, das es prinzipiel 2 dinge gibt, die beim "rechnen" wichtig sind.
Einmal ist dies das "ZIEL" und einmal die "QUELLE".

In unseren obrigen fällen ist das ZIEL links vom = und die QUELLE rechts davon.

Das Ziel ist etwas, das den wert aus der QUELLE aufnimmt.
Code:
dim a as integer = 5
a = a + 2

a ist in unserem Fall das ziel und die quelle. Wir spezifizieren folglich das erste a um dem compiler zu sagen, das der als nächstes berechnete wert dort hinein geschrieben werden soll.
Diesen zu berechnenden wert holen wir uns auf der rechten seite, bzw. setzen ihn aus rechenoperationen zusammen.

Sofern dir Pointer noch nichts sagen, eine kurze info hierzu:
Ein Pointer ist eine Adresse zu einem Speicherbereich.
Code:
dim a as integer

Hier erzeugst du eine variable namens a. Diese variable ist ein speicherbereich auf dem RAM.

Mit einem Aufruf wie:
Code:
dim a as integer
a = 1

teilst du dem compiler mit, das er den wert 1 in die variable a schreiben soll.

Bei Arrays ist dies ebenfalls möglich
Code:
dim a(0 to 9) as integer
a(4) = 1


Hier führt der Compiler im hintergrund jedoch eine kleine rechenoperation aus, um die variable a(4) zu finden.
Um das zu verstehen muss man wissen, das eine variable im RAM durch eine adresse definiert wird. Das ist vergleichbar mit der befölkerung in einem Hochhaus.
Das Hochhaus ist das RAM und die Zimmer sind die speicherstellen.

Wenn du eine variable erzeugst, dann hat sie für uns als programierer nur einen namen. z.B. A.
Der Computer sucht beim erzeugen der Variable ein freies zimmer. Dieses zimmer hat eine Adresse (stock5 raum 4) .. im Computer ist dies ein Integer bei 32bit betriebssysteme und ein longint bei 64bit betriebssysteme.

Mit der Adresse kann der computer anschliessend daten in das zimmer / auf das ram packen.
"A" ist dann quasi nur das Namensschild an der Tür. zwinkern

Bei dem Zugriff auf ein Array wid dem computer mitgeteilt, das er einen Speicherbereich erzeugen soll, der 0-9 gross sein soll. Folglich muss es aus 10 Variablen bestehen. Eine Besonderheit bei Arrays ist, das diese Variablen (bzw. Zimmer) alle aufeinanderfolgend sein müssen. a(1) ist daher genau neben a(2) und dieses genau neben a(3). Sie dürfen folglich nicht irgend wo im haus sein, wie es der computer aus geschwindigkeitsgründen sonst machen würde.

Mit dieser "vorgabe" ist es jetzt jedoch genau den obrigen code auszuführen.
Code:
dim a(0 to 9) as integer
a(4) = 1

Der Computer erzeugt hierfür einen speicher der 10x so gross ist wie ein integer. also 10*4 Byte bzw. 40Byte

Die "startadresse" "a(0)" wird hierbei in A gespeichert.
Greift der programmierer nun auf A(4) zu, dann führt der compiler eine kleine rechnung aus:
Code:
StartadresseVonA + 4


damit weis der computer, welches zimmer gewählt wurde. UND, man kann das Zimmer durch eine Rechnung spezifizieren, was sonst nicht möglich wäre.

Das ganze kann man auch von Hand tun, indem man sogenannte Pointer (Zeiger / zeigt auf einen speicherbereich) einsetzt.
Code:
dim a as integer
dim aptr as integer ptr
aptr = @a


hierbei wird die adresse von a in die variable aptr geschrieben. Damit der Compiler (freebasic) weis, das es sich hierbei um einen pointer handelt, mit dem gearbeitet wird, muss die variable als "ptr" oder "pointer" definiert werden.

Gibt man jetzt den wert von aptr aus, so erhält man eine zahl, welche die adresse im RAM wiederspiegelt.
Code:
Print aptr


Freebasic erlaubt uns auch eigene speicherbereiche zu erzeugen, die wir beliebig groß gestalten können.
Code:
dim aptr as integer ptr
aptr = callocate(40)

dies erzegt uns einen speicherbereich der 40 byte gross ist. Er ist quasi genauso gross wie unser vorheriges array. (so macht das auch freebasic)

Der zugriff auf die daten erfolgt über die adresse
Code:
aptr[4] = 1

das ist genau das gleiche wie
Code:
dim a(0 to 9) as integer
a(4) = 1

mit dem unterschied, das wir es von "hand" gemacht haben, und uns freebasic die arbeit der speichererzeugens und der verwaltung nicht abgenommen hat.

Um zum rechnen bzw. zum thema zurück zu kommen.
freebasic rechnet folglich auch auf der linken seite. Z.B. wenn wir die adresse des ZIEL's berechnen.
Code:
aptr[4 + 1] = 2

4 + 1 ist das ziel und 2 der wert der in das ziel geschrieben werden soll.

Jetzt greifen wir man das "HÄÄÄ" von dir zu meinem beispiel auf:
Code:
dim a as integer
dim aptr as integer ptr
aptr = @a
cast(short, aptr + 2) = 2


bis zum "cast sollte jetzt alles verständlich sein.
Zuerst eine variable erzeugen
dann eine weitere welche die adresse bzw. einen pointer speichern wird.
anschliessend schreiben wir in die aptr variable die adresse von a hinein.
zum schluss "casten" wir die adresse zu einem anderen datentyp und schreiben den wert 2 hinein.

hier muss ich noch anführen, das mein beispiel nicht funktionsfehig ist, da ich 2 kleinen fehler gebaut habe.
es muss nämlich heisen:
Code:
cast(short ptr, aptr)[1] = 2

was hier passiert ist folgendes.
die variable aptr ist als integer definiert. sie ist folglich 4 byte gross. Das "cast" ändert diesen datentyp in einen anderen datentyp. Ich habe hier "short" (2 byte) angegeben. Dadurch wird quasi das eine integer zu 2 short variablen.
auf dieses können wir jetzt zugreifen, indem wir angeben, welches dieser short's wir haben möchten. Ich tue dies hier mit [1]. Dies ist der 2. element.

Das ist zwar jetzt recht kompliziert, und für einen anfänger vieleicht ganz schön viel information, aber ich wollte es nicht auslassen.

Was @Jojo mit "referenz" meinte ist prinzipiel genau das, was "Pointer" tuen .. sie "referenzieren" einen speicherbereich. Bzw. anders ausgedrückt, Sie zeigen auf einen Speicherbereich.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 15.01.2014, 13:46    Titel: Antworten mit Zitat

Wow, das ist mal echt gut, .... DANKE DANKE.

OK für mich bedeutet das FB Rechnet Rechts zwinkern mein Ergebnis
und Rechnet Links den Speicherplatz
jeweils vom = gesehen

Jetzt machen für mich auch die Formeln die ich da gesehen habe "Sinn" ist vielleicht noch zufiel doch ich kann mir nun vorstellen was das alles ist was Ihr da gespottet habt.

Für mich stellt sich nun jedoch die Frage warum soll ich die Speicheradresse von Hand berechnen wenn FB das für mich machen kann?

OK das ich einen Neuen Speicher Definieren kann den ich in meiner Gewünschten Größe anlegen kann, könnte ich mir noch vorstellen das dies Sinn machte, (Wird dieser eigentlich vom RAM abgezogen dann? oder wird dieser Speicher aus Festplatten Speicher Temporär generiert?)
Nach oben
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 15.01.2014, 15:57    Titel: Antworten mit Zitat

sowohl als auch ... generell rechnet der computer nur im ram / cache ... aber, durch modernisierte betriebssysteme gibt es das sogenante "swap" .. hierbei schaufelt das betriebssystem gelegentlich daten aus dem ram auf die festplatte, wenn darauf länger nicht zugegriffen wurde ... andersherum, wen es benötigt wird, wird es von der disk zurück ins ram geschaufelt.

aber das is betriebssystemabhängig, und auch nicht relevant für ein programm. Das wird alles im hintergrund gemacht, und der programmierer bzw. das programm bekommt davon nichts mit. für das app ist alles im ram.

Pointer bzw. adressen braucht man z.B. wenn man eine sogenannte LinkedList aufbauen möchte. Das ist sowas ähnliches wie ein Array, allerdings viel schneller bei häufigen änderungen der listengrösse und des aufbaus.

stell dir z.B. einmal vor, du möchtest in der mitte einer liste einen eintrag löschen. dann musst du alle darauffolgende einträge um 1 nach vorn verschieben, und dann die liste entsprechend um 1 verkleinern.

bei einer LinkedList wird das anders gemacht. Dafür jedoch kann man nicht direkt auf einen eintrag zugreifen, sondern muss sich von einem eintrag zum nächsten hangeln.

Beides hat vor und nachteile, und ist entsprechend für den anwendungsfall auszuwählen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
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 FreeBASIC. 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