Tellen & Talstelsels (3)

Inhoud:

[1] tellen
[2] modulus rekenen
[3] gekoppelde tellers
[4] een gerobotiseerd onderdelen magazijn
[5] talstelsels
[6] negatieve getallen
[7] som, verschil, complement
[8] antwoorden


Tellers koppelen
Hieronder zie je twee gekoppelde tellers staan.
Met de uitgaande pijl geeft T0 een zg. carry-signaal door als T0 over de kop gaat.
Zodoende wordt T1 elke keer verhoogd als T0 over de kop gaat.



vraag 4



Hieronder tref je drie gekoppelde tellers aan.


vraag 5



stelling:
Je hebt dit waarschijnlijk al zelf beredeneerd.

Toepassingen van telwerken
1.Coderen
Coderen is het verstoppen van eigenschappen of omstandigheden in een getal.

Bij een bepaald merk auto heeft de koper de keuze uit verschillende kleuren,
uitvoeringen of type motor.
We willen die keuzen (de bestelling) in 1, zo klein mogelijk, getal vastleggen.
In het geval van deze auto wordt afgesproken:

Aan de kleur koppelen we een teller, met bereik 0..3
Aan de uitvoering een teller met bereik 0..2 en
de keuze van brandstof wordt met een teller met bereik 0..1 weergegeven.
Die tellers zijn gekoppeld en zijn, voor dit geval, precies gelijk aan het
telwerk boven vraag 5.op deze pagina.
Bij elke stand van dit telwerk (d.i. een bestelling) hoort een waarde van N.

N is de gecodeerde keuze, waarin dus alle eigenschappen zijn opgeborgen.
Opmerking: een code omrekenen naar bestelling heet decoderen.
Dat decoderen is natuurlijk alleen mogelijk als de afspraken bekend zijn.

2.Tabellen
Hieronder zie je een tabel met 5 kolommen (0..4) en 4 rijen (0..3).
Er zijn dus 20 velden, genummerd 0..19.

Door de het kolomnummer (0..4) en het rijnummer (0..3) op te vatten
als een telwerk, is het veldnummer te berekenen.
Omgekeerd kan, uitgaande van het veldnummer, de rij en de kolom worden berekend.

Merk op, dat dit telwerk overeenkomt met het telwerk bovenaan deze pagina.
T0 telt dan de kolommen, T1 de rijen en N is het veldnummer.

Dergelijke omrekeningen komen veel voor. In een computergeheugen liggen de getallen
"achter elkaar", als in een tabel met slechts 1 kolom.
Om toch een tabel met rijen en kolommen weer te geven, moeten berekeningen als
hierboven plaatsvinden.

3.Plaatsbepaling in Computer-Window
Het volgende voorbeeld komt veelvuldig voor bij het programmeren van spelletjes.
In een window is een speelbord afgebeeld, dat is opgedeeld in rechthoeken.
Die rechthoeken zijn vergelijkbaar met de velden in de tabel hierboven.
In sommige velden is het nummer afgebeeld.
Zie het plaatje hieronder: Een computerscherm is opgebouwd uit puntjes, die pixels worden genoemd.
Een schermresolutie van 600*800 wil zeggen, dat er 600 rijen zijn met elk 800 pixels.
Per pixel staat in het video-geheugen een gecodeerd getal, dat de kleur aangeeft.
Merk op, dat coördinaten (0,0) linksboven en (500,300) rechtsonder staan,
zoals gebruikelijk bij computerschermen.
Elk veld is hier 100 pixels breed en 75 pixels hoog.

Nu het probleem:
Als we met de muis over het window bewegen, dan levert het programma (Windows)
per muisbeweging de coördinaten (x,y) van de cursorpijl.
De programmeur wil alleen weten, op welk veld de cursor zich bevindt.
Dat kan al volgt worden bepaald:

stel, dat de programmeur het rechthoekje van veld 17 opnieuw wil tekenen.
Dan moeten eerst de coördinaten (x,y) worden berekend.
Daarvoor moet de kolom K en de rij R worden bepaald. De coördinaten van veld 17 (linksboven) zijn (200,225).

merk op: omzetting van pixelcoördinaten (x,y) naar veldcoördinaten (K,R)
is vergelijkbaar met omlaag afronden op respectievelijk 100- en 75-tallen.

4.Formatteren van output
Een computerprogramma drukt een groot aantal getallen af.
Per regel 12 getallen. En elke vijfde regel moet een iets donkerder achtergrondkleur
krijgen voor de duidelijkheid.
De oplossing is per getal een teller N bij te houden.
Getallen worden per regel achter elkaar afgedrukt.
Na elk getal wordt N verhoogd.
Als N mod 12 = 0, dan wordt naar een nieuwe regel gesprongen.
Als N mod (5*12) = 0, dan wordt de achtergrondkleur iets donkerder gemaakt.