Wie viele Verschachtelte IF abfragen kann PB ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ja, das weiß ich, das das kleienr wird. Mir gings nur darum, ob meine variante nicht kleiner/kompakter/komfortabler ist als dein 2. beitrag in diesem thread, z. B.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Warum labert ihr denn immernoch doch darüber? Es gibt keine Grenze und fertig ist. Das irgendwann der Speicher voll ist, gilt ja nicht nur für Ifs sondern allgemein für den ganzen Code.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Danke für eure Bemühungen :lol:

Ich bin nun genauso schlau wie vorher... /:->

Ein normales IF, ist ja ein normaler Programmvorgang.

Code: Alles auswählen

IF......
Endif
IF......
Endif
IF......
Endif
IF......
Endif
IF......
Endif
Dies sollte natürlich immer funktionieren, sonnst wäre die ganze Programmiererei = :freak: !!
Eine Schleife, mit einem IF, macht ja genau das! Es kann also nicht durch eine Schleife simuliert werden.

Ich meinte verschachtelte IF´s:

Code: Alles auswählen

IF......
  IF......
    IF......
      IF......
        IF......
        Else
        Endif
      Else
      Endif
    Endif
  Endif
Endif
Da muss PB sich nämlich Rücksprung Adressen und Labels merken.
Deeem2031 hat geschrieben:
ts-soft hat geschrieben:Man kann nicht soviel If machen, wie Speicher da ist, die EndIf müssen ja auch noch passen :mrgreen:
Ein Endif ist aber nur ein Label, es braucht im fertigen Programm also überhaupt keinen Speicher.
Ich dachte immer ein Label ist eine (Programmrelative) Speicher-Adresse. Sich Speicher-Adressen zu merken kostet mindestens 4Byte!
Und wenn man sich die Rücksprungadresse auch noch merken muss wann ist der Stack voll???

/:-> :roll: :?
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Deem2031 hats doch schon oben geschrieben, es gibt keine Grenze in diesem Sinne. Diese Grenze findet man normallerweise nur in interpretierten Sprachen. Die Grenze ist erreicht, wenn Windows keinen Speicher mehr zur Verfügung stellen kann. Hängt also von der verwendeten OS-Version, RAM und Festplattenkapazität ab. Das ganze ist aber eigentlich unwichtig, weil diese Grenze gilt nicht nur für If usw. sondern diese Grenze gilt immer.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Den spaß musste ich aber auch mal mit machen :D
also mein letztes "EndIf" ist auf zeile 7465 ich habe die If's nicht gezählt auf jedenfall stürtzt der compiler immer ab egal ob ich testen möchte oder eine exe machen möchte. wie es aus sieht gibt es doch eine grenze :D
das ganze sieht bei mir si aus:

Test.l=0
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
If Test.l = 0
Test2.l+1
<<<Und so weiter>>>
EndIf
EndIf
EndIf
EndIf
Debug Test2
End
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Wie funktioniert denn das If überhaupt ?
Irgendwie So?

Code: Alles auswählen

if A = B
 debug "bla"
endif

->

0 If A = B = 0 : Adresse Zeile 3 
1
2 sachen die nur bei nicht erfüllter Bedingung ausgeführt werden.
3 ; Endif benötigt keinen Speicher
Edit: Stürzt eigentlich mein Code (der mit den vielen Ifs) bei euch auch ab?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

darum sagte ich ja
ich denke er kann solange verschachteln bis RAM voll is, denn ich glaube der merkt sich ja das :wink:
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

bei dem test den ich gemacht habe war mein ram nicht voll ... aber der compiler ist abgestürtzt
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

PAMKKKKK hat geschrieben:
Deeem2031 hat geschrieben:
ts-soft hat geschrieben:Man kann nicht soviel If machen, wie Speicher da ist, die EndIf müssen ja auch noch passen :mrgreen:
Ein Endif ist aber nur ein Label, es braucht im fertigen Programm also überhaupt keinen Speicher.
Ich dachte immer ein Label ist eine (Programmrelative) Speicher-Adresse. Sich Speicher-Adressen zu merken kostet mindestens 4Byte!
Das stimmt zwar, allerdings merkt sich nicht das "Endif" selber die Adresse sondern das "If". Die 4 Byte gehören also zum Speicherbereich des "If"s
PAMKKKKK hat geschrieben:Und wenn man sich die Rücksprungadresse auch noch merken muss wann ist der Stack voll???

/:-> :roll: :?
Welche Rücksprungadresse? Wieso sollte der Stack voll sein? Bei If-Abfragen wird der Stack überhaupt nicht belastet.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

@Deem2031: Also so ähnlich wie ich es geschrieben habe?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Antworten