Toevallig zag ik deze post vanwege Petra.Peter van Velzen schreef: ↑02 jul 2018 04:43In een computerprogramma is een dergelijke impasse onnaruurlijk. je vergelijkt twee waarden en springt naar een ander adres als A > B . Niemand is - hopelijk - zo idioot om het volgende algoritme te produceren:Petra schreef: ↑02 jul 2018 04:09
Waar het om gaat is dat je op basis van pure ratio in een impasse raakt. Zou die ezel puur rationeel denken dan kan ie geen keuze maken als beide opties gelijk zijn. Met alleen objectieve data kun je niet kiezen tussen twee gelijke situaties Dát is wat Aristoteles en Buridan met deze paradox bedoelden.
Dat het klopt is pas veel later feitelijk aangetoond m.b.v. electronica. Daar is het een bekend euvel, Metastabiel. genaamd.
KIES.
IF A > B GO TO PAKA
IF B > A GOTO PAKB
GOTO KIES
Men schrijft gewoonweg:
IF A > B GOTO PAKA
PAKB.
Korter en wel zo veilig, Wel bevat het een irrationele vooringenomenheid voor PAKB. Maar wie zit daar mee?
Als A = B heet dit een oneindige loop en gebeurt er precies wat er met die ezel gebeurt. Er wordt iedere keer teruggegaan naar KIES want we kunnen niet kiezen.KIES.
IF A > B GO TO PAKA
IF B > A GOTO PAKB
GOTO KIES
Dit is niet hetzelfde als het eerste algoritme. Als A=B dan wordt PAKB gekozen. Het is maar de vraag of dat de bedoeling is. Uit mijn goeie oude COBOL tijd herinner ik mij nog dat je die GOTO's maar moest vermijden omdat je nooit wist waar je naartoe ging. Met dat in gedachte zou correcte code zijn (uitgaande van het eerste voorbeeld)IF A > B GOTO PAKA
PAKB.
Waarbij de onderste END-IF bij de bovenste IF hoort.IF A>B PERFORM PAKA ELSE
IF A<B PERFORM PAKB ELSE PERFORM ERROR
END-IF
END-IF
.
afgesplitst van Een goede binnenkomer is het halve werk. Maria