📘 CodingMarble Learn

Geavanceerd programmeren en toepassingen

Geavanceerd programmeren betekent: de juiste datastructuur kiezen (array, gelinkte lijst, stack, queue), code schrijven en testen in een IDE, grafieken en animaties tekenen, spreadsheetfuncties gebruiken en gegevens veilig bewaren in een relationele database die je bevraagt met SQL.

🎬 Verhaal in stappen

  1. Een array heeft een vast aantal plekken, hier zes. De grootte wordt eerst bepaald. Is hij vol, dan kun je niets meer toevoegen.
  2. Een gelinkte lijst groeit mee als dat nodig is. Elk knooppunt (node) bevat een waarde en een verwijzing naar het volgende. Het laatste wijst naar niets (null). Druk op Toevoegen.
  3. Een stack werkt als een stapel borden. Je legt een bord bovenop (push) en neemt er ook bovenaf een weg (pop). Wat als laatste erin gaat, komt als eerste eruit.
  4. Een queue werkt als een rij bij het loket. Je sluit achteraan aan en vertrekt vooraan. Wie als eerste aansloot, komt als eerste aan de beurt.
  5. Een database bewaart gegevens in tabellen. Twee tabellen worden verbonden met een sleutel, het id. Een SQL-query kiest alleen de rijen die je wilt, hier cijfers van 50 of meer.
  6. Jouw beurt. Kies lijst, stack of queue en druk op de knoppen om items toe te voegen en weg te halen.

Tip: sleep de 3D-scène om hem te draaien. Gebruik twee vingers om te zoomen.

🤔 Veelvoorkomende twijfels, opgehelderd

Waarom kan ik geen zevende item aan de array toevoegen?

De grootte van een array ligt vast als hij wordt gemaakt. In stap 0 zijn alle zes plekken samen de hele array. Gebruik een lijst voor een collectie die groeit.

Waar bewaart de gelinkte lijst de volgorde?

In de verwijzingen. Elk knooppunt kent alleen het volgende knooppunt, dus je loopt langs de pijlen. Zie stap 1.

Waarom geeft pop het laatste item dat ik heb toegevoegd?

Een stack heeft één open kant, de top. Het nieuwste item ligt bovenop, dus dat gaat als eerste weg. Zie stap 2.

Hoe verschilt een queue van een stack?

In een queue voeg je achteraan toe en verwijder je vooraan, dus het oudste item gaat als eerste weg. Druk op de knoppen in stap 3.

Waarom twee tabellen en niet één?

Zo wordt elk feit maar één keer bewaard. De namen staan in de ene tabel en de cijfers in de andere, verbonden door het id. Een naam verbeteren hoeft dan maar op één plek. Zie stap 4.

Welke structuur moet ik gebruiken?

Vaste grootte en snelle toegang via index nodig: array. Groeiende collectie: lijst. Ongedaan maken en terug: stack. Wachtrij: queue. Probeer ze allemaal in stap 5.

Datastructuren: array, gelinkte lijst, stack, queue

Een datastructuur is een manier om gegevens zo te ordenen dat een programma ze snel en gemakkelijk kan gebruiken.

Bibliotheken (libraries) bevatten deze hulpmiddelen al. In Python werkt een list als stack (append, pop) en collections.deque als snelle queue. Gebruik een bibliotheek als die bestaat; schrijf het niet opnieuw.

stack = []
stack.append(5); stack.append(8)
stack.pop()      # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft()      # gives 4

Een IDE gebruiken: schrijven, uitvoeren, testen

Een IDE (integrated development environment, ontwikkelomgeving) brengt een editor, een startknop, een debugger en andere hulpmiddelen samen op één plek. Hij kleurt je code, stelt namen voor en laat fouten zien terwijl je typt.

2D- en 3D-visualisatie en animatie

Plaatjes helpen ons patronen te zien. Programma's kunnen grafieken tekenen (staaf, lijn, spreidingsdiagram), 2D-tekeningen en 3D-scènes. Een animatie is steeds hetzelfde plaatje, telkens met een kleine verandering opnieuw getekend (ongeveer 30 tot 60 keer per seconde). Een eenvoudige aanpak: bewaar een variabele zoals x, tel er bij elk beeld een beetje bij op en teken opnieuw. Het 3D-model op deze pagina is op dezelfde manier gemaakt, met een 3D-bibliotheek.

Geavanceerde spreadsheetfuncties

Spreadsheets kunnen met functies werk doen dat lijkt op programmeren:

Relationele databases en SQL

Een relationele database bewaart gegevens in tabellen met rijen en kolommen. Elke tabel heeft een primaire sleutel, een kolom waarvan de waarden uniek zijn (het id). Een andere tabel gebruikt die waarde als vreemde sleutel om terug te verwijzen. Een goed ontwerp bewaart elk feit één keer, zodat er geen dubbele gegevens zijn.

SQL is de taal om vragen te stellen en gegevens te veranderen:

SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;

INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;

Integriteit betekent dat de gegevens correct blijven: sleutels zijn uniek, een vreemde sleutel moet bij een bestaande rij horen en waarden moeten het juiste type hebben. Beveiliging betekent wachtwoorden voor gebruikers, elke gebruiker alleen de rechten geven die hij nodig heeft, back-ups maken, en nooit SQL opbouwen door tekst van gebruikers aan de query te plakken (gebruik parameters). Dat voorkomt SQL-injectie.

Bijdragen aan open bronnen

Veel hulpmiddelen en bibliotheken zijn open source: iedereen mag ze lezen, gebruiken en verbeteren onder een licentie. Jij kunt helpen door een fout te herstellen, een handleiding te verbeteren, een pagina te vertalen of een voorbeeld toe te voegen. Lees altijd de licentie, vermeld de maker en schrijf duidelijke, beleefde berichten als je een wijziging voorstelt.

Probeer het zelf

Zet in 3D-stap 5 drie items op een stack en haal ze er dan weer af (pop). Schrijf de volgorde op. Doe hetzelfde met een queue. Voorspel daarna eerst en controleer dan: na het toevoegen van 4, 9 en 2 en het verwijderen van één item, welke waarde staat dan vooraan in de queue en bovenaan de stack?

Belangrijke formules en begrippen

Uitgewerkte voorbeelden

1. De items 5, 8 en 2 worden in deze volgorde op een stack gezet (push). Daarna wordt twee keer pop uitgevoerd. Wat staat er nu bovenaan?

Stack na de pushes: 5, 8, 2 (2 bovenaan). Pop haalt eerst 2 weg, dan 8. Over: 5. Bovenaan staat 5.

2. De items 4, 9, 2 sluiten in deze volgorde aan in een queue. Er wordt één keer dequeue uitgevoerd. Welk item staat nu vooraan?

Wie als eerste kwam, vertrekt, dus 4 wordt verwijderd. Vooraan staat nu 9.

3. Tabel met cijfers: id 1 tot 4 met scores 72, 45, 88, 51. Hoeveel rijen geeft WHERE score >= 50?

72, 88 en 51 zijn 50 of meer. Dat zijn 3 rijen.

4. De cellen B2:B5 bevatten 72, 45, 88, 51. Wat geeft =SUMIF(B2:B5,">=50")?

Het telt alleen 72, 88 en 51 op: 72 + 88 + 51 = 211.

5. Waarom gebruik je een stack om haakjes zoals ( [ ] ) in een uitdrukking te controleren?

Zet elk openend haakje op de stack. Komt er een sluitend haakje, haal dan het bovenste weg en controleer of het erbij hoort. Het laatst geopende haakje moet als eerste gesloten worden (LIFO), en dat is precies wat een stack geeft. Is de stack aan het eind leeg, dan kloppen de haakjes.

Veelgemaakte fouten

Oefentoets

1. Welke structuur is LIFO?
2. Welke structuur groeit knooppunt voor knooppunt met verwijzingen?
3. Welk SQL-onderdeel kiest de rijen die aan een regel voldoen?
4. Een kolom met een unieke waarde voor elke rij is een:
5. Wat doet een breekpunt in een debugger?

Oefenen: beantwoord deze zelf

Typ of kies je antwoord en druk op Controleer. Gebruik een hint als je vastzit; de volledige uitwerking verschijnt na je antwoord.

Veelgestelde vragen

Wat is het verschil tussen een array en een gelinkte lijst?

Een array heeft een vaste grootte en laat je met de index naar elk item springen. Een gelinkte lijst kan groeien en krimpen, maar je moet de verwijzingen één voor één volgen om bij een item te komen.

Wat is een primaire sleutel en een vreemde sleutel?

Een primaire sleutel is een kolom die elke rij een unieke waarde geeft, zoals een leerlingnummer. Een vreemde sleutel is een kolom in een andere tabel die die waarde bevat om de twee tabellen te verbinden.

Waarom is SQL-injectie gevaarlijk en hoe voorkomen we het?

Als je tekst van een gebruiker rechtstreeks in een SQL-opdracht plakt, kan een slimme gebruiker zijn eigen opdrachten toevoegen en gegevens lezen of wissen. Gebruik geparametriseerde queries, zodat de tekst altijd alleen als gegevens wordt behandeld.

Leer eerst

Leer hierna