PiF 3

  <terug>
WITHIN en HOOFDLETTER


WITHIN ( x a b -- vlag )

WITHIN kijkt of x in het gebied [a,b) ligt.

[ betekent inclusief en ) betekent exclusief.
Zo geven wiskundigen een gebied aan.

Voor gebieden van gehele getallen geldt:

[4,8] bevat 4 5 6 7 8
(4,8) bevat   5 6 7
[4,8) bevat 4 5 6 7       <--
(4,8] bevat   5 6 7 8

Bedenk dat alle getallen die niet in [a,b) liggen, in [b,a) liggen.

In Forth maakt maakt het hierbij niet uit of het om twee signed of twee unsigned getallen gaat.

In het geval van a=b ontstaat er [a,a) wat een ondefinieerbaar gebied is, d.w.z. onzin, want a zit er in en tegelijk ook weer niet.

Als je de drie argumenten van WITHIN als een geheel verschuift, verandert de uitkomst niet. Dat gaat ook op in Forth, want overflow en underflow veroorzaken hierbij geen problemen.

 x     a     b     WITHIN
 x+1   a+1   b+1   WITHIN
 x-100 a-100 b-100 WITHIN
geven alle hetzelfde resultaat.

Dan moet dat ook gelden voor

 x     a     b     WITHIN
 x-a   a-a   b-a   WITHIN
 x-a   0     b-a   WITHIN
wat weer het zelfde is als:
 x-a  b-a  U<          \ Unsigned-kleiner-dan
Omgekeerd:
 p q U<
is het zelfde als
 p 0 q WITHIN

Opdracht 3a

Als WITHIN niet in jouw Forth zou zitten en U< wel, hoe zou je WITHIN dan definiëren? (Hier is een oplossing)


HOOFDLETTER

Een vraag bij KEUS was:

Hoe kun je er voor zorgen dat het niet uitmaakt of de gebruiker hoofdletters of kleine letters intypt als commando?

Een antwoord is:

Maak als programmeur eventuele kleine letters in de input van de gebruiker groot met het woord HOOFDLETTER en werk in het programma uitsluitend met hoofdletters.

HOOFDLETTER ( ch -- CH )
Als ch een kleine letter is wordt CH de corresponderende hoofdletter, in de andere gevallen is ch=CH.

Opdracht 3b

Hoe zal HOOFDLETTER ( ch -- CH ) eruit zien?
(Hier zijn een paar oplossingen)

Sommigen hadden dit woord al bedacht, maar de nadere kennismaking met WITHIN geeft misschien wel aanleiding tot een verbeterde versie?

Van iedereen die op de komenende Forthbijeenkomst (9 juni 2007) mee wil doen aan PiF, verwacht ik weer 'huiswerk'.

 
Groeten,
A.N.
  <terug>