OpenLLM-France/wikimedia huggingface dataset:
# Programmeren in C/Functies

Functies zijn heel belangrijk in C. Dingen zoals printf en scanf zijn functies, rand is een functie en zelfs int main is een functie. Een functie neemt soms parameters met zich mee en geeft soms een waarde terug. Laten we eerst kijken naar hoe functies eruit zien:
Hier is een voorbeeld van het gebruik van een (simpele) functie.
PrintMenu lijkt hier misschien een nutteloze functie, maar als je iets meerdere keren moet printen en het is een behoorlijke lijst, kan het handig zijn. Bovendien gaat het hier niet over het nut van de functie, maar over hoe je functies gebruikt. Nu gaan we een functie maken, die parameters neemt en een 'return-value' heeft. Een functie, die machten regelt.
Dit progje werkt alleen in C++, niet in C, zorg dat je bron-bestand dan ook *.cpp heet! We hebben hier gebruik gemaakt van de functie macht om uit te rekenen wat getal ^ TotDe is. Dit ziet er veel overzichtelijker uit dan wanneer u de code had getypt op de plek waar macht(getal, TotDe) staat. Het is ook makkelijker nog een keer te gebruiken, wanneer u bijvoorbeeld vijf keer in een programma een macht moet uitrekenen, gaat u natuurlijk niet vijf keer dat zelfde stukje code typen. Computers zijn er om het herhalen voor ons te doen.
# Programmeren in C/Struct

Het commando "struct" maakt het mogelijk om variabelen te groeperen. Zo is het mogelijk om bijvoorbeeld complexe getallen voor te stellen en er bewerkingen mee uit te voeren (zie voorbeeld hieronder).
# Programmeren in C/Expressies

Expressies zijn de werkpaarden van C. In het kort is een expressie een berekening of bewerking die tot een resultaat leidt. Een expressie bevat twee hoofdelementen:
* Waarden. Dit kunnen getallen zijn, maar ook pointers, arrays, structures, etc. Technisch gezien zijn het constanten of variabelen.
* Operatoren, zoals +, -, *, e.d.
# Datacommunicatie in informatica/Netwerktopologie
## Topologieën

Een topologie is de manier waarop het netwerk bekeken wordt. Men kan dit onderverdelen in twee categorieën: fysiek en logisch
Fysieke structuur omvat: de bekabeling, de structuur van het netwerk. Logische structuur omvat: werking, functioneren van het netwerk.

## A. Fysieke topologieën
### Stertopologie

Een afleiding hiervan is de hiërarchische stertopologie en de boomstructuur.

### Mesh - topologie

Willekeurig verbinden van punten, wanneer alle pc's met elkaar verbonden zijn spreekt men van een full-mesh-topologie

### Lijn topologie
## B. Logische topologiën
### Bustopologie

Werking volgens busstructuur: één computer zendt en maakt gebruik van het medium. Elke host ontvangt en verwerkt of verwerpt de informatie.

### Ringtopologie

PC kan gegevens lezen en schrijven naar het netwerk wanneer hij een token ontvangt. Het token heeft twee toestanden: - busy: het token is bezet, er volgt een datastroom - free: het token is vrij, klaar om gegevens te verzenden De ontvangende pc neemt een kopie van de datastroom, de source bepaalt de toestand van het token.
Mogelijke problemen - Elke pc moet aanstaan ! Onderbrekingen zijn niet toegelaten.
- Token verdwenen? -> token master controleert de circulatie van het token, wanneer hij een time-out vaststelt maakt hij een nieuwe token aan.
- Tweede token op de ringstructuur. ->Token master grijpt in en verwijdert het nieuwste token.
# Datacommunicatie in informatica/VLAN
## VLAN

Standaard kan elk computersysteem of netwerksegment dat via één van de vier ethernet poorten van de switch is aangesloten ook communiceren met elk ander computersysteem of netwerk apparaat op één van de drie andere ethernet poorten.
Virtual LAN (VLAN) maakt het mogelijk om aan elke ethernet poort een eigen segment toe te wijzen om zo een aparte groep gebruikers te creëren. Hierbij kan dan niet gecommuniceerd worden met gebruikers die zich in een andere VLAN bevinden. Oftewel beide bedrijven kunnen wel gezamelijk op internet, maar kunnen niet op elkaars netwerk.
Voorbeeld 1: Twee aparte bedrijven willen in hetzelfde gebouw dezelfde internet aansluiting delen, maar willen er verzekerd van zijn dat men niet op elkaars netwerk kan komen. Om dit te realiseren dient men twee VLAN groepen aan te maken. Een groep exclusief voor P1 oftewel ethernet poort 1 (VLAN Groep 0) en een groep exclusief voor P2 oftewel ethernet poort 2 (VLAN Groep 1). Beide bedrijven hebben dan wel gezamelijk internet toegang, maar geen toegang tot elkaars netwerk.
Voorbeeld 2: We hanteren hetzelfde scenario als bij voorbeeld 1. In dit geval is er een lokale server die beide bedrijven kan benaderen, nog steeds kan men niet op elkaars netwerk. We sluiten de lokale server aan op P3 oftewel ethernet poort 3 aan de achterzijde van de router en koppelen P3 aan VLAN Groep 1 en VLAN Groep 2. Beide bedrijven kunnen nu beide op de lokale server, maar niet op elkaars netwerk.
# Datacommunicatie in informatica/Media op de datalinklaag

NIC (Network Interface Card):
* Bevindt zich op de 2de laag van het OSI model maar maakt ook gebruik van de 1ste laag.
* één van de belangrijkste componenten binnen een netwerk.
* bevat een mac-adres dat hardwarematig in de kaart wordt ingebracht.
Bridge:
4 aspecten:
* is meer intelligent dan een hub want deze doet analyse van binnenkomende frames waar een hub gewoon in alle richtingen doorgeeft.
* collecteren en doorgeven van frames tussen 2 of meer LAN-segmenten. Een bridge is een koppeling tussen meerdere broadcast domeinen en creëert zo een groot broadcast domein.
* creatie van collision domains (geeft betere performantie, daar een collision op een segment niet noodzakelijk een collision op alle andere segmenten betekent, wat bij een hub wel zo is).
* bijhouden van adrestabellen (het betreft hier layer 2 adressen, bvb MAC adressen, en niet layer 3 adressen zoals IPv4 adressen).
2 fasen van een brug: learn (sourceadres) en switch (destinationadres)
Switch: multiport-bridge
# Datacommunicatie in informatica/Media op de netwerklaag

Router:
schakelen van paketten en gaat naast een fysiek adres (mac-adres), ook rekening houden met een logisch adres( IP-adres). De router schakelt de paketten op basis van de logische adressen, eigenlijk hetzelfde als een switch, maar met paketten ipv frames.
Doelstelling: netwerken met elkaar verbinden
# De Kleine Trekkersgids

De gids voor: reizen * rugzak * inpakken * kamperen * vaccinaties * paspoort * visa * inpakken * liften * reisspullen * vliegen * EHBO * tent opzetten * vuur maken * huisdieren meenemen * kleding * medicijnen meenemen * onderhoud * reisadviezen en meer nuttige informatie.
>> Naar de inhoudsopgave
Goed voorbereid op reis met de rugzak.
# Datacommunicatie in informatica/Media op de fysieke laag

Repeater:
* de functionaliteit is 2-ledig, versterken en retimen
* het gebruik van een aantal repeaters is beperkt in aantal, volgens de 5-4-3-2-1-regel
** 10 mbit -> max 4 repeters
** 100 mbit -> max 2 repeters
** 1 gbit -> max 1 repter
Transceiver: een repeater die overgaat van het ene medium naar het andere, er wordt een conversie gedaan (mediaconversie en versterken)
Mediaconvertor: omschakeling van het ene medium naar het andere zonder re-timing of re-coding
Hub: een multipoortrepeater (verschillende in- en uitgangen)
# Datacommunicatie in informatica/TCP/IP-OSI

Het TCP/IP Model komt ruw weg overeen met het OSI Referentie Model
UDP: User Datagram Protocol SMTP: Simple Mail Transfer Protocol POP3: Post Office Protocol DNS: Domain Name Server TFTP: Trivial Fire Transfer Protocol SIP: Session Initiated Protocol (voorbeeld: VOIP) ATM: Asynchronous Transfer Mode
=> OSI referentiemodel: Typisch educatief model => TCP/IP Typisch Praktisch Model
# Ontwerp en bouw een besturingssysteem/Appendix B/Diskette image maken

Diskettes zijn niet zomaar opstartbaar. Omdat we in dit boek gebruik maken van de gratis open-source bootloader GRUB Legacy, kan deze ervoor zorgen dat de diskette wel opstartbaar wordt.
Je hebt twee mogelijkheden:
* een fysieke diskette, als je een testcomputer gebruikt;
* een diskette image, als je een emulator gebruikt.
De keus is aan jou. Voordelen van de fysieke diskette zijn dat je niks extra hoeft te installeren en het op elke computer met een diskettestation kan gebruiken. Voordeel van een diskette image in combinatie met een emulator is dat het testen veel makkelijker en sneller gaat. En je kan altijd nog die image alsnog op een fysieke diskette zetten.

## Fysieke diskette

Neem een fysieke diskette en maak hem klaar voor gebruik:
* formatteer de diskette;
* controleer op fouten.

## Diskette image
### Linux

Om een image te maken onder Linux kan je gebruik maken van de volgende commando's:
Het mounten van de diskette image gaat net zo:
Als je klaar bent, unmount je de image weer:

### Windows

Voor diverse versies van Windows (officieel tot en met Windows XP, maar Vista werkt ook) is er de handige simpele tool genaamd VFS, welke hier gedownload kan worden. Hiermee kan je een virtueel diskettestation maken en gebruiken.

## GRUB Legacy installeren

Het handigst is om een reeds gemaakte floppy image te zoeken met FAT12 (DOS) bestandssysteem die GRUB (Legacy) opstartbaar is.
Maar om zelf GRUB Legacy op de diskette (image) te installeren heb je twee diskettes nodig. Op de eerste diskette kopieer je de stage1 en stage2 delen van GRUB Legacy naar de eerste twee sectoren van de diskette.
Onder linux kan dit bijvoorbeeld met de volgende commando's, vanuit de directory met de stage1 en stage2 bestanden:
De tweede diskette formatteer je in het FAT12 (DOS) bestandssysteem, en je maakt er de map /boot/grub op aan. In die map /boot/grub plaats je GRUB's stage1 en stage2 bestanden.
Nu start je de (virtuele) PC op met de eerste diskette, zodat GRUB Legacy geladen wordt. Doe nu de tweede diskette in de computer. Bij de prompt voer je het volgende commando uit:
GRUB Legacy installeert zich nu op de tweede diskette, en maakt die opstartbaar.
Belangrijk is nu dat het stage2 bestand op de diskette nooit meer van fysieke plek op de diskette verandert. Maak hem daarom alleen-lezen (en het liefst ook een systeembestand). Vanuit de /boot/grub directory kan dat onder Linux met het volgende commando:
Onder DOS (of Command Prompt cmd.exe) met het volgende commando:
Ten slotte moet je in de map /boot/grub nog een menu.lst bestand maken, waarin het menu van GRUB Legacy komt te staan:
menu.lst
Het menu.lst bestand bevat twee items, zodat het menu weergegeven wordt. Op die manier hebben we nog even 10 seconden voordat onze kernel de computer overhoop haalt. Later kan je hier items voor bijvoorbeeld kernels met verschillende RAM-disks toevoegen.
De diskette is nu klaar voor gebruik.
# Ontwerp en bouw een besturingssysteem/Appendix B/Automake

Steeds weer voor elk bestand die compileeropdracht intypen, wordt een beetje vervelend. Gelukkig is er een oplossing die in de Linux-wereld erg veel gebruikt wordt voor het compileren van applicaties. Die oplossing is make, een hulpmiddel dat zogenaamde makefile scripts kan uitvoeren, en speciaal bedoeld is voor het compileren van applicaties, het genereren van documentatie, en dat soort taken.
Het vereist nogal wat moeite en kundigheid om goede make-files te schrijven. Gelukkig zijn er de Autotools, hulpprogramma's die het schrijven van correcte makefiles en het configureren van het systeem veel makkelijker maken. In dit boek ligt de nadruk op het bouwen van een besturingssysteem, daarom worden make-files en de Autotools niet uitgebreid behandeld.

## Automake bestand in elke map

Met automake kunnen de makefiles gegenereerd worden vanaf een klein bestand met instellingen. Dit automake-bestand heeft de naam makefile.am en moet in vrijwel elke map voorkomen.
Maak in de map /kernel/src een nieuw makefile.am bestand met de volgende inhoud:
/kernel/src/makefile.am
De regels die beginnen met een hekje zijn commentaarregels. Merk ook op dat er achter kernel_SOURCES niks staat. Straks als we de eerste bestanden van de kernel hebben geschreven, moeten de bestandsnamen in een lijst bij deze regel worden gezet.
In alle andere mappen behalve de include mappen, maar inclusief de hoofdmap, moeten ook makefile.am bestanden worden gemaakt. Deze zijn simpeler dan die hierboven.
makefile.am
Vul in elk bestand bij SUBDIRS de namen van de submappen in waarin zich een makefile.am bestand bevindt:
* In /makefile.am: SUBDIRS = kernel doc
* In /doc/makefile.am: SUBDIRS =
* In /kernel/makefile.am: SUBDIRS = arch src
* In /kernel/arch/makefile.am: SUBDIRS = i686
* In /kernel/arch/i686/makefile.am: SUBDIRS = src
* In /kernel/arch/i686/src/makefile.am: SUBDIRS =

## Configuratiebestand

Er is nog een configuratiebestand nodig dat door autoconf gelezen wordt om het compileren van de applicatie in goede banen te leiden.
/configure.ac

## Script

Straks genereren de Autotools allerlei bestanden, en het is handig om die ook weer op te kunnen ruimen. Het volgende scriptje kan dat voor je doen:
/clean.sh

## Bestanden genereren

Nu moet het configure.ac-bestand en de makefile.am bestanden nog gevoerd worden aan de Autotools. Gebruik daarvoor de volgende commando's, vanuit de hoofdmap:
Vanaf nu kan je je code compileren met het volgende commando (ook weer vanuit de hoofdmap):
De bestanden die het resultaat zijn van de compilatie kan je indien nodig (meestal hoeft het niet) weer verwijderen met het volgende commando:
Alle gegenereerde en gecompileerde bestanden verwijderen doe je door het volgende commando in de hoofdmap uit te voeren:
# Ontwerp en bouw een besturingssysteem

Ontwerp en bouw een besturingssysteem
Naar de inhoudsopgave >>

## Introductie

Tegenwoordig hebben veel mensen de beschikking over een computer, met het bijbehorende besturingssysteem. Nog steeds gebruikt het merendeel van de computergebruikers Microsoft Windows, maar Linux varianten zoals Ubuntu en Apple's Mac OS X beginnen terrein te winnen. Als je wat programmeerervaring hebt met Assembler en C of C++, en je vroeg je wel eens af hoe je nou zélf een besturingssysteem voor een PC kan schrijven, dan is deze Wikibook voor jou. Je leert hierin een klein 32-bits besturingssysteem te bouwen, dat voornamelijk gebruikt maakt van een tekst-gebaseerde interface (à la DOS). Het boek zal dieper ingaan op de werking en achterliggende gedachten van onderdelen zoals de processor, het geheugen, bestandssystemen, toetsenbord en het scherm.
Verwacht niet dat dit boek je alle code al voorkauwt; je zult zelf wat van je eigen creativiteit en programmeerervaring moeten aanwenden om dit boek helemaal te kunnen door werken. Aan het einde heb je dan je eigen Unix-achtige besturingssysteem gemaakt, wat als goed startpunt kan dienen om bijvoorbeeld drivers te schrijven voor randapparatuur, of om een Grafische User Interface (GUI) te bouwen.
# Ontwerp en bouw een besturingssysteem/Appendix B/IDT descriptors
## Descriptors
### Interrupt-gate descriptor

| 63 | 56 |
| Offset (bits 24-31) ||||||||
| 55 | 48 |
| Offset (bits 16-23) ||||||||
| 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
| P | DPL | DPL | 0 | D | 1 | 1 | 0 |
| 39 | 38 | 37 | 36 | 32 |
| 0 | 0 | 0 | | |
| 31 | 24 |
| Segment selector (bits 8-15) ||||||||
| 23 | 16 |
| Segment selector (bits 0-7) ||||||||
| 15 | 8 |
| Offset (bits 8-15) ||||||||
| 7 | 0 |
| Offset (bits 0-7) ||||||||

### Task-gate descriptor

| 63 | 56 |
| 55 | 48 |
| 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
| P | DPL | DPL | 0 | 0 | 1 | 0 | 1 |
| 39 | 32 |
| 31 | 24 |
| TSS Segment selector (bits 8-15) ||||||||
| 23 | 16 |
| TSS Segment selector (bits 0-7) ||||||||
| 15 | 8 |
| 7 | 0 |

### Trap-gate descriptor

| 63 | 56 |
| Offset (bits 24-31) ||||||||
| 55 | 48 |
| Offset (bits 16-23) ||||||||
| 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
| P | DPL | DPL | 0 | D | 1 | 1 | 1 |
| 39 | 38 | 37 | 36 | 32 |
| 0 | 0 | 0 | | |
| 31 | 24 |
| Segment selector (bits 8-15) ||||||||
| 23 | 16 |
| Segment selector (bits 0-7) ||||||||
| 15 | 8 |
| Offset (bits 8-15) ||||||||
| 7 | 0 |
| Offset (bits 0-7) ||||||||
# HTML/Overzicht attributen/rowspan
## Functie

Dit attribuut zorgt ervoor dat een cel in een tabel meerdere rijen kan overspannen en is de tegenhanger van colspan.

## Waarde

Een getal. "1" is de standaardwaarde en zorgt ervoor dat de cel geen andere cellen overspant. "0" zou er normaal voor zorgen dat alle cellen van een kolom worden overspant door de cel, maar dit wordt niet door browsers ondersteund. Alle getallen hoger dan 1 geeft aan hoeveel cellen je overspant.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van de rowspan attribuut
| Wikipedia | Wikibooks |
| Wikiquote | Wikibooks |

## Wordt gebruikt bij

td, th

## Meer informatie

w3 (Engels)
# HTML/Overzicht attributen/link
## Functie

Hiermee geef je een kleur aan hyperlinks die nog niet bezocht zijn geweest. Dit attribuut is verouderd en er wordt aangeraden om CSS of het attribuut style in de plaats te gebruiken.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het link attribuut

## Wordt gebruikt bij

body

## Meer informatie

w3c (Engels)
# HTML/Overzicht attributen/media
## Functie

Wanneer er een stylesheet wordt gebruikt, kan je met dit attribuut bepalen voor welk soort apperatuur het is. Zo kun je aangepaste stylesheets bepalen voor verschillende apperatuur. Bijvoorbeeld een zeer gedetailleerde stylesheet voor een computerscherm of een basis stylesheet voor een klein zwart-wit scherm.

## Waarde

Dit attribuut kan verschillende waardes hebben:
* gebruik all wanneer de stylesheet voor alle mogelijke apperatuur goed is,
* aural voor spraaksynthesizers,
* braille voor apperatuur die gebruik maakt van braille,
* handheld voor kleine apperatuur die waarschijnlijk niet krachtig zijn, een klein (zwart-wit) scherm hebben,
* print voor wanneer het document wordt afgedrukt of wanneer het wordt bekeken in print preview mode,
* projection voor wanneer de pagina wordt geprojecteerd,
* screen voor normale computerschermen (is ook standaardwaarde),
* tty voor een apparaat die alleen tekst weergeeft,
* tv voor tv's, tv's hebben meestal een slechte resolutie.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het attribuut media

## Wordt gebruikt bij

link , style

## Meer informatie

w3c (Engels)
# HTML/Overzicht attributen/noresize
## Functie

Zorgt ervoor dat de gebruiker de grootte van een frame niet meer kan veranderen.

## Waarde

Je moet het attribuut geen waarde meegeven en kun je gewoon "noresize" typen in de tag. Maar XHTML zegt wel dat ieder attribuut dat je gebruikt een waarde moet hebben. Hierdoor moet je het als waarde "resize" geven.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het noresize attribuut

## Wordt gebruikt bij

frame

## Meer informatie

w3c (Engels)
# HTML/Overzicht attributen/rel
## Functie

Hiermee kun je de relatie bepalen tussen het huidige document en het doel van de link.

## Waarde

Document relaties. Zie hoofdstuk links voor meer informatie.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van de rel attribuut

## Wordt gebruikt bij

a, link

## Meer informatie

* w3c (Engels)
# HTML/Overzicht attributen/method
## Functie

Het attribuut method wordt alleen gebruikt bij het element form. Dit attribuut geeft aan op welke manier de gegevens van een formulier worden verstuurd.

## Waarde

De waarden kunnen de sleutelwoorden get of post zijn. Bij get worden de gegevens via de url doorgestuurd. Bij post worden ze doorgestuurd via een apart bericht.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het method attribuut

## Wordt gebruikt bij

form

## Meer informatie

* w3 (Engels)
# HTML/Overzicht attributen/multiple
## Functie

Met dit attribuut kun je meerdere opties kiezen bij het select element

## Waarde

Je hoeft de attribuut geen waarde te geven. Echter XHTML zegt dat ieder attribuut een waarde moet hebben, dus is het aangeraden om er toch één te geven en dit dient dan het woordje multiple te zijn.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het multiple attribuut

## Wordt gebruikt bij

select

## Meer informatie

* w3 (Engels)
# HTML/Overzicht attributen/longdesc
## Functie

Hiermee kun je een webpagina kopelen met een afbeelding of frame. Deze webpagina moet dan een lange omschrijving bevatten van de afbeelding of frame. Dit is vooral handig bij browsers die ze niet ondersteunen.

## Waarde

Een uri van een webpagina die een lange omscrhijving bevat van de afbeelding of frame.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het text attribuut

## Wordt gebruikt bij

frame, iframe, img

## Meer informatie

* w3c voor frames en iframes (Engels)
* w3c voor afbeeldingen(img) (Engels)
# HTML/Overzicht attributen/maxlength
## Functie

Met dit attribuut kun je bepalen hoeveel tekens dat er maximaal mag worden ingevoerd in het invoerveld. Dit attribuut geldt alleen wanneer het attribuut type als waarde text of password heeft.

## Waarde

Een getal. Het getal mag hoger zijn dan de waarde van het attribuut size.

## Voorbeeld

HTML-code: Een voorbeeld van het gebruik van het attribuut maxlength attribuut.

## Wordt gebruikt bij

input

## Meer informatie

w3c (Engels)
# HTML/Overzicht attributen/rows
## Functie
### frameset

Hier bepaalt het attribuut rows hoe de horizontale frames in een frameset eruit gaan zien en hoeveel het er zijn.

### textarea

Met dit attribuut geef je aan hoe hoog de textarea moet zijn.

## Waarde
### frameset

Je kunt één of meerdere waarde geven aan dit attribuut in frameset. De waarde kan in pixels, percentages of * zijn. Met pixels geef je een vaste waarde op en met percentage geef je op hoeveel percent een frame van het totale scherm in beslag moet nemen. Meerdere waardes scheid je met een komma (cols="25%,75%"). De standaard waarde is 100% en betekent dat de frame het hele scherm in beslag neemt.

### textarea

Een gewoon getal.

## Voorbeeld
### frameset

HTML-code: Een voorbeeld van het gebruik van de rows attribuut bij frameset

### textarea

HTML-code: Een voorbeeld van het gebruik van de rows attribuut bij textarea

## Wordt gebruikt bij

frameset, textarea

## Meer informatie

* w3c voor frameset (Engels)
* w3c voor textarea (Engels)
# Rekenen/Aftrekken

Als ergens 19 kruisjes staan en we halen er 7 af, dan kunnen we door opnieuw te tellen ontdekken dat er nu 12 kruisjes overblijven.
    x x x x x x x x x x x x x x x x x x x  12345678910111213141516171819 7654321 xxxxxxxxxxxx 123456789101112
Dat is nogal omslachtig, we kunnen daar sneller achter komen door van het eerste getal (aantal) het tweede af te trekken:
    19 — 7 = 12 (negentien min zeven is twaalf).
We krijgen weer een natuurlijk getal als uitkomst als er genoeg kruisjes stonden. Die uitkomst noemen we het verschil van de getallen 19 en 7, het getal 19 heet wel het aftrektal en 7 de aftrekker. Aftrekken kunnen we opvatten als herhaald terugtellen: nadat we met tellen bij 19 zijn aangekomen moeten we weer 7 terug tellen: (... 19), 18, 17, 16, 15, 14, 13 , 12, waardoor we bij 12 aankomen. Niet al te grote getallen kunnen we nog uit het hoofd van elkaar aftrekken, maar voor grotere hebben we een algemene methode nodig. Die berust weer op ons decimaal talstelsel.
Net als bij het optellen voeren we berekeningen eerst uit voor de eenheden, dan voor de tientallen, enz.
Nu voor de tientallen, maar er zijn er 3 en we moeten er 4 aftrekken. Dat gaat niet, daarom "lenen" we er 10 van de 7 100-tallen
In een keer opgeschreven: