veux on pour Tests logischer Schaltungen avec Computerhilfe seulement alle pratique vorkommende Signalvarianten durchspielen, bleibt dans qui règle rien d'autre übrig, comme sämtliche mögliche Kombinationen puis abzuklopfen, si qui jeweilige Kombination vorkommt ou bien pas. là le nombre grundsätzlich möglicher Konfigurationen bekanntlich avec qui numéro qui Freiheitsgrade explodiert, stoßen solche Ansätze droite vite à ses Grenzen. voilà on ensuite froh, le nombre qui Opportunités de den Vorgaben à den Testgenerator her déjà deutlich einschränken trop peut. en supplément cela folgende Demoprogramm - comment toujours sans Gewähr!
dans XProfan11 sembler Whileloop-Scheifen seulement jusque einer begrenzten Verschachtelungstiefe sans faute trop travailler. Überschreitet on une kritische numéro, vergisst cela System den Stand äusserer Schleifenwerte (quoi mir mais très vom verwendeten Betriebssystem et vom freien Auslagerungsspeicher abzuhängen scheint). Um cet Verhalten trop tourner autour de, bieten sich Arrayvariablen comme untere et obere Grenzwerte à, et cet Grenzwerte dienen ensuite aussi juste zur Werte-Einschränkung, comment dessus gefordert, indem on z.B. sous- et Obergrenze einengt ou bien gleichsetzt.
Titre de la fenêtre "Aufsteigender de-jusqu'à-Enumerator sans Stack-Overflow"
'(CL) CopyLeft 2016-07f by P.Specht, Vienna/Austria; OHNE JEGLICHE GEWÄHR!
declare de$,jusqu'à$,n&,anz&,tmp$[],u&[],o&[],x&[],v&,nr&
CLS
Goto "Test3"' quel Test soll dargestellt volonté?
' DER ENUMERATOR MIT INDEX v&= ... ZÄHLT ...
' v&= 20__19____16__15_____12__11_____8____7____...___2_1_0"
von$=" 0, 0,0,0,0, 0,0,0,0, 4,0,0,0, 8,6,2,0, 3,1,0,9"
bis$=" 1, 9,0,0,0, 0,0,0,0, 4,0,0,0, 9,7,4,1, 5,2,1,9"
Goto "Init"
Test2:
' DER ENUMERATOR MIT INDEX v&=... ZÄHLT ...
' v&=_2_1_0"
von$="0,1,0"
bis$="2,2,0"
Goto "Init"
Test3:
' DER ENUMERATOR MIT INDEX v&= ... ZÄHLT ...
' v&= 20__19____16__15_____12__11_____8____7____...___2_1_0"
von$=" 0, 0,0,0,0, 0,0,0,0, 4,0,0,0, 8,6,2,5, 6,7,8,9"
bis$=" 1, 9,0,0,0, 0,0,0,0, 4,0,0,0, 9,7,4,5, 6,7,8,9"
Goto "Init"
'==========================================================
Init:
tmp$[]=explode(de$,»):n&=sizeof(tmp$[]):setsize u&[],n&:u&[]=val(tmp$[n&-1-&index])
clear tmp$[]:tmp$[]=explode(jusqu'à$,»):setsize o&[],n&:o&[]=val(tmp$[n&-1-&index])
clear tmp$[],de$,jusqu'à$:setsize x&[],n&
anz&=1:whileloop 0,n&-1:anz&=anz&*(o&[&loop]-u&[&loop]+1):endwhile
:imprimer "\n Es volonté ";anz&;" Konfigurationen erzeugt:\n":waitinput 1500
Start:
x&[]=u&[&index]
Whileloop anz&:Nr&=&Boucle
:imprimer " ";Nr&;": ";:whileloop n&-1,0,-1:imprimer x&[&Boucle];:endwhile :imprimer
' ... ou bien quelque chose Nützliches avec cela faire.
Repeat
si x&[v&]<o&[v&]
x&[v&]=x&[v&]+1
pause
d'autre
x&[v&]=u&[v&]
inc v&
endif
until v&>=n&
v&=0
endwhile
Beep
waitinput 30000
FIN
|