Will uno para Tests logischer Schaltungen con Computerhilfe sólo todos praktisch vorkommende Signalvarianten durchspielen, restos en el Regel nichts más übrig, como sämtliche mögliche Kombinationen darauf abzuklopfen, si el jeweilige Kombination vorkommt oder no. Como el número grundsätzlich möglicher Konfigurationen bekanntlich con el Zahl el Freiheitsgrade explodiert, stoßen solche Ansätze bastante rápidamente a ihre Grenzen. Como es una continuación froh, el número el Möglichkeiten de los Vorgaben a el Testgenerator her ya deutlich einschränken a puede. Dazu el folgende Demoprogramm - como siempre sin Gewähr!
In XProfan11 scheinen Whileloop-Scheifen sólo a a uno begrenzten Verschachtelungstiefe sin Fehler a trabajo. Überschreitet uno una kritische Zahl, vergisst el Sistema el Stand äusserer Schleifenwerte (qué me aber muy vom verwendeten Betriebssystem y vom freien Auslagerungsspeicher abzuhängen scheint). Um dieses Comportamiento a umgehen, bieten se Arrayvariablen como untere y obere Grenzwerte a, y esta Grenzwerte dienen entonces auch igual a Werte-Einschränkung, como oben gefordert, indem uno z.B. Bajo- y Obergrenze einengt oder gleichsetzt.
Título de la ventana "Aufsteigender Von-Bis-Enumerator sin Stack-Overflow"
'(CL) CopyLeft 2016-07f by P.Pájaro carpintero, Vienna/Austria; OHNE JEGLICHE GEWÄHR!
declarar de$,a$,n&,anz&,tmp$[],u&[],o&[],x&[],v&,nr&
CLS
Goto "Test3"' Welcher Test se dargestellt voluntad?
' 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(a$,","):setsize o&[],n&:o&[]=val(tmp$[n&-1-&index])
clear tmp$[],de$,a$:setsize x&[],n&
anz&=1:whileloop 0,n&-1:anz&=anz&*(o&[&bucle]-u&[&bucle]+1):endwhile
:imprimir "\n Lo voluntad ";anz&;" Konfigurationen producido:\n":waitinput 1500
Start:
x&[]=u&[&index]
Whileloop anz&:Nr&=&Loop
:imprimir " ";Nr&;": ";:whileloop n&-1,0,-1:imprimir x&[&Loop];:endwhile :imprimir
' ... oder algo Nützliches así hacer.
Repeat
if x&[v&]<o&[v&]
x&[v&]=x&[v&]+1
romper
más
x&[v&]=u&[v&]
inc v&
endif
until v&>=n&
v&=0
endwhile
Beep
waitinput 30000
FIN
|