ng. Start vandaag nog met leren via praktijkgerichte cursussen." /> /> online ITโ€‘trainingen voor scertificering. Start vandaag nog met leren via praktijkgerichte cursussen." /> /* Course Card Hover Effects */
ass="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
ption value="Expert">Expert mijn rol als IT-supporter. Een echte aanrader voor iedereen die in de IT wil starten."

- Sarah Peeters, IT-Support Medewerker

lass="py-16 px-4">

Code Snippetsremsey.nl"

ne-block bg-blue-600 text-white px-8 py-3 rounded-lg font-semibold hover:bg-blue-700 transition-colors duration-300">
g-gray-900 text-white text-center py-6">

ยฉ 2025 Jouw Online Leeromgeving

ext-sm">
LinkedIn class="w-full px-3 py-2 rounded-md text-sm transition" style="background-color: var(--bg-secondary); color: var(--text-primary); border: 1px solid var(--border-color);" oninput="filterSnippets(this.value)">
====================================================== en.js BESTAND
euwesss functionaliteit te laten werken, moet je je JavaScript-bestand bijwerken.
1. UITGEBREIDE FILTERS: toe voor de nieuwe 'level-filter' dropdown. et favorites = JSON.parse(localStorage.getItem('courseFavorites')) || [];` - Maak een functie `toggleFavorite(courseId)` die: c. De bijgewerkte array opslaat in localStorage:
'courseFavorites', JSON.stringify(favorites));` d. De UI bijwerkt (de `updateUI()` functie aanroept). `button.querySelector('svg').classList.toggle('text-red-500', isFavorite);` b. De favorietenteller in de navigatie bijwerkt. en" link toont of verbergt als er wel/geen favorieten zijn. - Voeg een event listener toe aan de "Mijn Favorieten" link (`#favorites-link`) die de filters zo instelt dat alleen favoriete cursussen worden getoond. const EVALUATION_FORM_URL = "https://forms.gle/jouw-feedback-form-url"; const COMPLETION_SOUND_URL = "https://cdn.jsdelivr.net/gh/remsey/cdn/sounds/success-1-6297.mp3"; // Oefeningen zijn nu hier direct ingebed voor maximale betrouwbaarheid const EXERCISES_DATA = [t --> { id: "module02",r title: "Module 2: Variabelen & Datatypes", description: "Leer de basis van C# datatypes met elektrische grootheden: strings, int, double, bool, char. Inclusief commentaar en code leesbaarheid.", difficulty: "Makkelijk",mentElement.scrollHeight - document.documentElement.clientHeight; xp: 25,nt = (scrollTop / scrollHeight) * 100; steps: `

๐ŸŽฏ Doel: Verstaan en gebruiken van basis C# datatypes met elektrische toepassingen

โšก Focus: Strings, int, double, bool, char - float vs double - commentaar

๐Ÿ“– Wat is programmeren eigenlijk?

Programmeren is het geven van instructies aan de computer. Net zoals je een collega uitlegt hoe hij een schakelschema moet lezen, geef je de computer stap-voor-stap instructies.

๐Ÿงฎ Datatypes: De Bouwstenen van je Programma

In de elektrotechniek werk je met verschillende soorten gegevens: namen van apparaten, metingen, etc. In C# heeft elk soort gegeven een specifiek "datatype".

๐Ÿ“ฆ De belangrijkste datatypes:

๐Ÿ’ก Praktijkoefening: "Transformator Basisgegevens"

Scenario: Registreer de gegevens van een nieuwe transformator.

Stap-voor-stap uitleg:
  1. Maak een nieuw Console Application project in Visual Studio.
  2. Verzamel gebruikersinvoer met Console.ReadLine().
  3. Converteer tekst naar getallen met Convert.ToDouble() of Convert.ToInt32().
  4. Toon de resultaten netjes geformatteerd met string interpolatie: $"Tekst {variabele}".

๐ŸŽฏ Complete voorbeeldcode:

// Transformator gegevens registratie programma
using System;

namespace TransformatorRegistratieatie
{   document.addEventListener('DOMContentLoaded', () => {
    class ProgrameMenuButton = document.getElementById('mobile-menu-button');
    { const mobileMenu = document.getElementById('mobile-menu');
        static void Main(string[] args)utton.querySelector('.hamburger-icon');
        {
            Console.WriteLine("=== TRANSFORMATOR REGISTRATIE SYSTEEM ===");
            t isOpen = mobileMenu.classList.contains('show');
            Console.Write("Transformator naam/ID: ");
            string naam = Console.ReadLine();
            bileMenu.classList.remove('show');
            Console.Write("Vermogen in kVA: "););
            double vermogen = Convert.ToDouble(Console.ReadLine());;
            se {
            Console.Write("Primaire spanning in kV: ");
            double primaireSpanning = Convert.ToDouble(Console.ReadLine());
            mobileMenu.classList.add('show');
            Console.Write("In bedrijf? (true/false): ");
            bool inBedrijf = Convert.ToBoolean(Console.ReadLine());
            
            Console.WriteLine("\\n=== GEREGISTREERDE GEGEVENS ===");
            Console.WriteLine($"Transformator: {naam}");
            Console.WriteLine($"Vermogen: {vermogen:F1} kVA");
            Console.WriteLine($"Primaire spanning: {primaireSpanning:F1} kV");
            Console.WriteLine($"Status: {(inBedrijf ? "In bedrijf" : "Uit bedrijf")}");
        }ink.addEventListener('click', () => {
    }     mobileMenu.classList.remove('show');
}
`rgerIcon.classList.remove('open'); },imeout(() => mobileMenu.classList.add('hidden'), 300); { "id": "module03", "title": "Module 3: Rekenen met Elektrische Grootheden", "description": "Implementeer elektrische formules in C# met operators en type casting. Bereken primaire en secundaire stroom van transformatoren.", "difficulty": "Makkelijk", "xp: 30,ag async blijven, is 3rd party) --> "steps": "

๐ŸŽฏ Doel: Elektrische formules programmeren met C# operators

โšก Formule: I = P / (U ร— โˆš3) voor driefasensystemen

๐Ÿงฎ Rekenkundige Operators

Gebruik +, -, * (vermenigvuldigen), en / (delen) om berekeningen uit te voeren. Voor de wortel van 3 gebruik je Math.Sqrt(3).

โšก Driefasige stroom: De belangrijkste formule

โšก Driefasige stroomberekening:

I = P / (U ร— โˆš3)

๐Ÿ’ก Praktijkoefening: \"Driefasige Stroomberekening\"

Scenario: Bereken de primaire en secundaire stroom van een transformator om de juiste kabeldikte te bepalen.

  1. Verzamel vermogen (kVA), primaire spanning (kV) en secundaire spanning (kV).
  2. Converteer de eenheden naar VA en V (door te vermenigvuldigen met 1000).
  3. Pas de formule toe voor zowel de primaire als secundaire kant.
  4. Toon de resultaten.

๐ŸŽฏ Complete voorbeeldcode:

// Driefasige stroomberekening voor transformatoren\\nusing System;\\n\\nnamespace StroomBerekening\\n{\\n    class Program\\n    {\\n        static void Main(string[] args)\\n        {\\n            Console.WriteLine(\\\"=== DRIEFASIGE STROOMBEREKENING ===\\\");\\n            \\n            Console.Write(\\\"Vermogen in kVA: \\\");\\n            double vermogenKVA = Convert.ToDouble(Console.ReadLine());\\n\\n            Console.Write(\\\"Primaire spanning in kV: \\\");\\n            double primaireSpanningKV = Convert.ToDouble(Console.ReadLine());\\n\\n            Console.Write(\\\"Secundaire spanning in kV: \\\");\\n            double secundaireSpanningKV = Convert.ToDouble(Console.ReadLine());\\n\\n            // Eenheden converteren\\n            double vermogenVA = vermogenKVA * 1000;\\n            double primaireSpanningV = primaireSpanningKV * 1000;\\n            double secundaireSpanningV = secundaireSpanningKV * 1000;\\n\\n            // Stroomberekeningen\\n            double primaireStroom = vermogenVA / (primaireSpanningV * Math.Sqrt(3));\\n            double secundaireStroom = vermogenVA / (secundaireSpanningV * Math.Sqrt(3));\\n\\n            Console.WriteLine(\\\"\\\\n=== BEREKENINGSRESULTATEN ===\\\");\\n            Console.WriteLine($\\\"Primaire stroom: {primaireStroom:F2} A\\\");\\n            Console.WriteLine($\\\"Secundaire stroom: {secundaireStroom:F2} A\\\");\\n        }\\n    }\\n}
` },PI = Tawk_API || {}, Tawk_LoadStart = new Date(); { () id: "module04", title: "Module 4: Beslissingen in Code",cument.getElementsByTagName("script")[0]; description: "Implementeer veiligheidschecks en logica met condities. Controleer transformator overbelasting met if/else statements.", difficulty: "Gemiddeld",cdda8db9993f2ada1525e2/default'; xp: 35,-8'; steps: `

๐ŸŽฏ Doel: Veiligheidscondities en logica implementeren

โšก Scenario: Overbelasting detectie van transformatoren

Conditionele Statements

Met if, else if, en else kan je programma beslissingen nemen op basis van voorwaarden. Gebruik vergelijkings- (>, ==) en logische operators (&& voor EN, || voor OF).

๐Ÿ’ก Oefening: "Overbelasting Check"

  1. Vraag de gebruiker om de nominale stroom (A) en de huidig gemeten stroom (A).
  2. Bereken het belastingspercentage: (gemetenStroom / nominaleStroom) * 100.
  3. Implementeer de volgende logica:
  4. Toon een gepaste statusmelding.

๐ŸŽฏ Voorbeeldcode:

double nominaleStroom = 36.4; // A
double gemetenStroom = 42.0;  // A1, s0);
    })();
double belastingPercentage = (gemetenStroom / nominaleStroom) * 100;
string status;

if (belastingPercentage <= 100){    status = "โœ… Normaal";}else if (belastingPercentage <= 110){    status = "โš ๏ธ Waarschuwing";}else if (belastingPercentage <= 125){    status = "โŒ Overbelast";}else{    status = "๐Ÿ”ฅ KRITIEK: Onmiddellijke actie vereist!";}Console.WriteLine($"Belasting: {belastingPercentage:F1}%");Console.WriteLine($"Status: {status}");
` }, { "id": "module05", "title": "Module 5: Lussen & Gegevens Verwerken", "description": "Gebruik for/while loops en arrays voor meetgegevens analyse. Verwerk meerdere temperatuurmetingen van transformatorwikkelingen.", "difficulty": "Gemiddeld", "xp: 40, "steps": "

๐ŸŽฏ Doel: Meerdere meetgegevens verwerken met lussen en lijsten.

โšก Toepassing: Temperatuuranalyse van transformatorwikkelingen.

Lussen en Collecties

Een for-lus is perfect om een vast aantal keer code te herhalen. Een List<double> is een flexibele lijst om een onbekend aantal metingen op te slaan.

๐Ÿ’ก Oefening: \"Meetwaarden Analyseren\"

  1. Vraag de gebruiker om 6 temperatuurmetingen in te voeren (voor 6 wikkelingen).
  2. Gebruik een for-lus om de invoer te vragen en sla elke meting op in een List<double>.
  3. Gebruik de ingebouwde functies van de Lijst (uit System.Linq) om het volgende te berekenen:
  4. Toon de analyseresultaten.

๐ŸŽฏ Voorbeeld implementatie:

using System;\\nusing System.Collections.Generic;\\nusing System.Linq; // Essentieel voor Average, Max, etc.\\n\\nList<double> temperaturen = new List<double>();\\n\\n// Invoer loop\\nfor (int i = 1; i <= 6; i++)\\n{\\n    Console.Write($\\\"Temperatuur wikkeling {i} (ยฐC): \\\");\\n    double temp = double.Parse(Console.ReadLine());\\n    temperaturen.Add(temp);\\n}\\n\\n// Berekeningen\\ndouble gemiddelde = temperaturen.Average();\\ndouble maximum = temperaturen.Max();\\nint alarmCount = temperaturen.Count(t => t > 75.0);\\n\\nConsole.WriteLine(\\\"\\\\n=== ANALYSE RESULTATEN ===\\\");\\nConsole.WriteLine($\\\"Gemiddelde temperatuur: {gemiddelde:F1}ยฐC\\\");\\nConsole.WriteLine($\\\"Maximum temperatuur: {maximum:F1}ยฐC\\\");\\nConsole.WriteLine($\\\"Aantal wikkelingen boven 75ยฐC: {alarmCount}\\\");
}, { id: "module06", title: "Module 6: Methoden & Code Structureren", description: "Leer functies/methoden gebruiken voor herbruikbare code. Bouw een vermogensberekenings-functie.", difficulty: "Gemiddeld", xp: 45, steps: `

๐ŸŽฏ Doel: Code structureren met herbruikbare methoden (functies).

โšก Focus: Parameters, return values, en code organisatie.

Waarom Methoden Gebruiken?

Methoden (of functies) laten je toe om een stuk code een naam te geven en het steeds opnieuw aan te roepen. Dit voorkomt dubbele code en maakt je programma overzichtelijker.

๐Ÿ’ก Oefening: \"Vermogensberekening als Functie\"

  1. Maak een static methode genaamd BerekenVermogen.
  2. Deze methode accepteert twee double parameters: spanning en stroom.
  3. De methode berekent het driefasig vermogen in kW met de bekende formule.
  4. De methode geeft het berekende vermogen terug met het return sleutelwoord.
  5. Roep deze methode aan vanuit je Main functie en print het resultaat.

๐ŸŽฏ Voorbeeld implementatie:

using System;namespace ElektrischeBerekeningen{    class Program    {        // Hoofdmethode waar het programma start        static void Main(string[] args)        {            // Roep onze eigen methode aan            double vermogen = BerekenDriefasigVermogen(400, 50); // 400V, 50A            Console.WriteLine($\"Berekend vermogen: {vermogen:F2} kW\");        }                // Onze herbruikbare methode voor vermogensberekening        // static: We kunnen het aanroepen zonder een object te maken        // double: Het type waarde dat de methode teruggeeft        // (double spanning, double stroom): De input parameters        public static double BerekenDriefasigVermogen(double spanning, double stroom)        {            // P = โˆš3 ร— U ร— I (in Watt)            double vermogenInWatt = Math.Sqrt(3) * spanning * stroom;                        // Converteer naar kW en geef het resultaat terug            return vermogenInWatt / 1000.0;        }    }}
` }, { "id": "module07", "title": "Module 7: Classes & Objecten", "description": "Introductie objectgeoriรซnteerd programmeren met een Transformator klasse. Leer properties, constructors en berekende waarden.", "difficulty": "Moeilijk", "xp": 55, "steps": "

๐ŸŽฏ Doel: Objectgeoriรซnteerd denken met een praktisch elektro-object.

โšก Focus: Classes, properties, constructors, en automatische berekeningen.

OOP Concepten

๐Ÿ’ก Oefening: \"Maak een Transformator-klasse\"

  1. Maak een nieuwe class Transformator.
  2. Geef het properties voor VermogenKVA, PrimaireSpanningKV en SecundaireSpanningKV.
  3. Maak een 'read-only' property PrimaireStroom die de stroom automatisch berekent op basis van de andere properties. Gebruik de => syntax voor een compacte notatie.
  4. Maak een constructor die de basis-eigenschappen instelt bij het aanmaken van een object.
  5. Maak in Main een nieuw Transformator object en toon zijn berekende stroom.

๐ŸŽฏ Complete implementatie:

using System;\\n\\n// De blauwdruk voor elke transformator\\npublic class Transformator\\n{\\n    // 1. Properties: De data van het object\\n    public double VermogenKVA { get; set; }\\n    public double PrimaireSpanningKV { get; set; }\\n    public double SecundaireSpanningKV { get; set; }\\n    \\n    // 2. Berekende 'read-only' property\\n    // Deze waarde wordt elke keer berekend als je hem opvraagt.\\n    public double PrimaireStroom => VermogenKVA / (PrimaireSpanningKV * Math.Sqrt(3));\\n    public double SecundaireStroom => VermogenKVA / (SecundaireSpanningKV * Math.Sqrt(3));\\n\\n    // 3. Constructor: wordt uitgevoerd bij 'new Transformator(...)'\\n    public Transformator(double vermogen, double primV, double secV)\\n    {\\n        VermogenKVA = vermogen;\\n        PrimaireSpanningKV = primV;\\n        SecundaireSpanningKV = secV;\\n    }\\n}\\n\\n// Hoofdprogramma om de class te testen\\nclass Program\\n{\\n    static void Main(string[] args)\\n    {\\n        // Maak een specifiek transformator object aan\\n        var tr1 = new Transformator(630, 10, 0.4); // 630kVA, 10kV/400V\\n        \\n        Console.WriteLine($\"TR1 Vermogen: {tr1.VermogenKVA} kVA\");\\n        Console.WriteLine($\"TR1 Primaire Stroom: {tr1.PrimaireStroom:F2} A\");\\n        Console.WriteLine($\"TR1 Secundaire Stroom: {tr1.SecundaireStroom:F2} A\");\\n    }\\n}
` }, { id: "module08", title: "Module 8: Foutenafhandeling", "description": "Leer foutafhandeling met try/catch en debugging technieken in Visual Studio. Maak robuuste invoer voor elektrische berekeningen.", "difficulty": "Moeilijk", "xp: 50, "steps": "

๐ŸŽฏ Doel: Robuuste programma's bouwen die niet crashen bij foute invoer.

โšก Focus: Try/catch, exceptions, en input validatie.

Waarom Foutafhandeling?

Een gebruiker kan per ongeluk tekst invoeren waar een getal wordt verwacht. Zonder foutafhandeling crasht je programma. Een try-catch blok laat je dit soort fouten (exceptions) 'opvangen' en netjes afhandelen.

๐Ÿ’ก Oefening: \"Veilige Invoer\"

  1. Maak een methode VraagGeldigGetal(string vraag) die een gebruiker om een getal vraagt.
  2. Gebruik een while(true) lus om te blijven vragen totdat de invoer geldig is.
  3. Plaats de Convert.ToDouble() aanroep binnen een try blok.
  4. Als het converteren lukt, gebruik return om het getal terug te geven en de lus te stoppen.
  5. In het catch (FormatException) blok geef je een foutmelding. De lus zal dan automatisch opnieuw proberen.
  6. Gebruik deze veilige methode in je Main programma om vermogen en spanning te vragen.

๐ŸŽฏ Complete implementatie:

using System;\\n\\nnamespace VeiligeInvoer\\n{\\n    class Program\\n    {\\n        static void Main(string[] args)\\n        {\\n            Console.WriteLine(\"=== VEILIGE BEREKENING ===\");\\n            \\n            // Gebruik onze robuuste methode om invoer te krijgen\\n            double vermogen = VraagGeldigGetal(\"Voer vermogen in kVA in: \");\\n            double spanning = VraagGeldigGetal(\"Voer spanning in kV in: \");\\n\\n            // Controleer op delen door nul\\n            if (spanning == 0)\\n            {\\n                 Console.WriteLine(\"Fout: Spanning mag geen nul zijn.\");\\n            }\\n            else\\n            {\\n                double stroom = vermogen / (spanning * Math.Sqrt(3));\\n                Console.WriteLine($\"Berekend stroom: {stroom:F2} A\");\\n            }            \\n        }\\n\\n        // Een herbruikbare, veilige methode om een getal te vragen\\n        public static double VraagGeldigGetal(string vraag)\\n        {\\n            while (true) // Blijf proberen tot we een geldig getal hebben\\n            {\\n                Console.Write(vraag);\\n                string input = Console.ReadLine();\\n\\n                try\\n                {\\n                    // Probeer de tekst om te zetten naar een getal\\n                    double getal = Convert.ToDouble(input);\\n                    return getal; // Success! Verlaat de methode en geef het getal terug.\\n                }\\n                catch (FormatException)\\n                {\\n                    // Vang de fout op als de invoer geen geldig getal is\\n                    Console.ForegroundColor = ConsoleColor.Red;\\n                    Console.WriteLine(\"Ongeldige invoer. Voer alstublieft een getal in.\");\\n                    Console.ResetColor();\\n                }\\n            }\\n        }\\n    }\\n}
}, { "id": "herhaling01", "title": "๐Ÿ” Herhalingsoefening: Variabelen, Loops & If-statements", "description": "Combineer variabelen, loops en if/else logica in een kwaliteitscontrole systeem voor Royal Smith componenten.", "difficulty": "Gemiddeld", "xp: 40, "steps": "

๐ŸŽฏ Doel: Kernconcepten van C# (variabelen, loops, if/else) toepassen in een praktisch scenario.

โšก Focus: Variabelen declareren, for-loops, conditionele logica combineren.

๐Ÿ“š Vereiste kennis: Module 2 (Variabelen), Module 4 (If/Else), Module 5 (Loops).

๐Ÿ”ง Het Scenario: Kwaliteitscontrole bij Royal Smith

Je werkt bij de kwaliteitscontrole van Royal Smith. Een nieuwe batch van 5 transformatorspoelen is geproduceerd. Jouw taak is om een programma te schrijven dat:

๐Ÿ“‹ Stap-voor-stap Opdrachten

Volg deze stappen nauwkeurig om het programma te bouwen:

๐Ÿ“ STAP 1: Project Setup & Basis Variabelen

Wat ga je doen:

  1. Maak een nieuw Console App project in Visual Studio
  2. Naam: BatchValidator
  3. Definieer drie basis variabelen in Main():
    • double nominaleWeerstand = 50.0; // De ideale weerstand
    • double tolerantiePercentage = 5.0; // Toegestane afwijking in %
    • int aantalSpoelen = 5; // Hoeveel spoelen we gaan testen
  4. Print een welkomstbericht met Console.WriteLine()

๐Ÿ’ก Tip: Gebruik emoji's of box-drawing characters (โ•”โ•โ•—โ•‘โ•šโ•) voor een professionele look!

๐Ÿ“ STAP 2: Bereken Acceptabele Limieten

Wat ga je doen:

  1. Bereken de toegestane afwijking in Ohm:
    double afwijking = (tolerantiePercentage / 100.0) * nominaleWeerstand;
  2. Bereken de minimale acceptabele weerstand:
    double minWeerstand = nominaleWeerstand - afwijking;
  3. Bereken de maximale acceptabele weerstand:
    double maxWeerstand = nominaleWeerstand + afwijking;
  4. Print deze waarden naar de console met 2 decimalen: {waarde:F2}

๐Ÿ’ก Rekenvoorbeeld: 50ฮฉ ยฑ 5% โ†’ afwijking = 2.5ฮฉ โ†’ bereik: 47.5ฮฉ tot 52.5ฮฉ

๐Ÿ“ STAP 3: Maak Tellers voor Statistieken

Wat ga je doen:

  1. Declareer een integer teller voor goedgekeurde spoelen:
    int goedgekeurd = 0;
  2. Declareer een integer teller voor afgekeurde spoelen:
    int afgekeurd = 0;

๐Ÿ’ก Waarom 0? We beginnen altijd bij 0 en verhogen de teller elke keer als we een spoel testen.

๐Ÿ“ STAP 4: Bouw de For-Loop Structuur

Wat ga je doen:

  1. Maak een for-loop die 5 keer herhaalt (voor elke spoel):
    for (int i = 1; i <= aantalSpoelen; i++)
  2. Binnen de loop: print Spoel {i} - Gemeten weerstand (ฮฉ):
  3. Lees gebruikersinvoer: string invoer = Console.ReadLine();
  4. Converteer naar double: double gemeten = Convert.ToDouble(invoer);

๐Ÿ’ก Let op: We starten bij i = 1 (niet 0) zodat we "Spoel 1" t/m "Spoel 5" krijgen.

๐Ÿ“ STAP 5: Implementeer Validatie Logica

Wat ga je doen:

  1. Binnen de for-loop: schrijf een if-statement met deze conditie:
    if (gemeten >= minWeerstand && gemeten <= maxWeerstand)
  2. In het if-block (spoel is GOED):
    • Zet tekstkleur groen: Console.ForegroundColor = ConsoleColor.Green;
    • Print: โœ… GOEDGEKEURD - {gemeten:F2}ฮฉ
    • Reset kleur: Console.ResetColor();
    • Verhoog teller: goedgekeurd++;
  3. In het else-block (spoel is SLECHT):
    • Zet tekstkleur rood: Console.ForegroundColor = ConsoleColor.Red;
    • Print: โŒ AFGEKEURD - {gemeten:F2}ฮฉ
    • Reset kleur: Console.ResetColor();
    • Verhoog teller: afgekeurd++;

๐Ÿ’ก &&-operator: Beide condities moeten waar zijn (groter DAN min ร‰N kleiner DAN max).

๐Ÿ“ STAP 6: Toon Batch Samenvatting

Wat ga je doen:

  1. Na de for-loop (niet erbinnen!): print een mooie header
  2. Toon Totaal getest: {aantalSpoelen} spoelen
  3. Toon โœ… Goedgekeurd: {goedgekeurd}
  4. Toon โŒ Afgekeurd: {afgekeurd}

๐Ÿ’ก Tip: Gebruik box-drawing characters voor een professioneel rapport.

๐Ÿ“ STAP 7: Bereken Succespercentage

Wat ga je doen:

  1. Bereken het succespercentage:
    double succesPercentage = (goedgekeurd / (double)aantalSpoelen) * 100;
  2. Print dit percentage met 1 decimaal: {succesPercentage:F1}%

๐Ÿ’ก Belangrijk: De (double) cast is essentieel! Anders krijg je integer deling en altijd 0.

โš ๏ธ Voorbeeld: 3 / 5 = 0 (integer) maar 3 / 5.0 = 0.6 (double)

๐Ÿ“ STAP 8: Geef Eindoordeel over de Batch

Wat ga je doen:

  1. Schrijf een if/else-if/else keten met 3 scenario's:
    • Scenario 1 - Perfect:
      if (goedgekeurd == aantalSpoelen)
      โ†’ Print: ๐ŸŽ‰ BATCH GOEDGEKEURD - Perfecte kwaliteit! (groen)
    • Scenario 2 - Acceptabel:
      else if (succesPercentage >= 80)
      โ†’ Print: โœ… BATCH GEACCEPTEERD - Binnen kwaliteitsnorm (geel)
    • Scenario 3 - Afgekeurd:
      else
      โ†’ Print: โš ๏ธ BATCH AFGEKEURD - Te veel defecten (rood)
  2. Gebruik Console.ForegroundColor en Console.ResetColor() voor kleuren

๐Ÿ’ก Logica: Als ALLE spoelen OK zijn โ†’ perfect. Anders als โ‰ฅ80% OK โ†’ acceptabel. Anders โ†’ afgekeurd.

๐Ÿ“ STAP 9: Afsluiting en Testen

Wat ga je doen: Je applicatie uitvoeren en testen

  1. Druk op F5 of klik op de groene "โ–ถ Start" knop bovenaan Visual Studio
  2. Je applicatie venster verschijnt!
  3. Test de volgende scenario's:
    • Happy Path: Laat de standaardwaarden staan, klik "Bereken" โ†’ Moet succesvol berekenen
    • Ongeldige spanning: Vul "abc" in bij spanning โ†’ Moet foutmelding tonen
    • Negatieve stroom: Vul "-10" in bij stroom โ†’ Moet foutmelding tonen
    • CosFi te groot: Vul "1.5" in bij cos ฯ† โ†’ Moet foutmelding tonen
    • Reset functie: Klik "Reset" โ†’ Alle velden moeten gereset worden
  4. Verwachte resultaten (standaardwaarden):
    • Schijnbaar Vermogen: 34641.02 VA
    • Werkelijk Vermogen: 27712.81 W
    • Vermogen in kW: 27.713 kW

โš ๏ธ Debugging Tips:

๐ŸŽจ BONUS: Eyeshot 3D Visualisatie Integratie

Voor gevorderde gebruikers: voeg een visuele weergave van het elektrische systeem toe met de Eyeshot library (free mode).

๐Ÿ“ฆ BONUS STAP 1: Eyeshot Library Installeren

Wat is Eyeshot? Een CAD library voor 3D visualisatie in .NET applicaties (free mode beschikbaar voor niet-commercieel gebruik).

  1. Download Eyeshot: Ga naar https://www.devdept.com/products/eyeshot/
  2. Kies: "Free Mode" โ†’ Download de installer
  3. Installeer: Volg de installatiewizard
  4. In Visual Studio:
    • Rechtermuisklik op je project in Solution Explorer
    • Kies "Add Reference..."
    • Browse naar de Eyeshot DLL (meestal: C:\\Program Files\\Eyeshot\\devDept.Eyeshot.dll)
    • Klik "Add"
๐Ÿ“ฆ BONUS STAP 2: 3D Viewer Control Toevoegen
  1. Maak een nieuw tabblad: Sleep een TabControl op je form
  2. Tab 1: "Berekeningen" (plaats hier je huidige controls in)
  3. Tab 2: "3D Visualisatie"
  4. Voeg Eyeshot Control toe:
    • In Toolbox, klik rechts โ†’ "Choose Items..."
    • Browse naar Eyeshot DLL
    • Selecteer devDept.Eyeshot.Model
    • Sleep het control naar Tab 2
    • Dock โ†’ Fill
๐Ÿ“ฆ BONUS STAP 3: Simpele 3D Scene Renderen

Voeg deze methode toe aan je Form class:

using devDept.Eyeshot;using devDept.Eyeshot.Entities;using devDept.Graphics;// In je Form class:private void ToonTransformator3D(double vermogenKW){    // Clear bestaande scene    model1.Entities.Clear();        // Maak een simpele box als transformator representatie    // Grootte is proportioneel aan vermogen    double grootte = Math.Sqrt(vermogenKW) / 2;        Box transformator = new Box(        new Point3D(0, 0, 0),    // Positie        grootte, grootte * 0.8, grootte * 1.2  // Afmetingen    );        // Kleur afhankelijk van vermogen    if (vermogenKW < 20)        transformator.Color = Color.Green;    else if (vermogenKW < 50)        transformator.Color = Color.Yellow;    else        transformator.Color = Color.Red;        // Voeg toe aan scene    model1.Entities.Add(transformator);        // Voeg labels toe    Text label = new Text(        new Point3D(0, 0, grootte * 1.5),        $"{vermogenKW:F1} kW",        0.3    );    label.Color = Color.Black;    model1.Entities.Add(label);        // Zoom om alles in beeld te krijgen    model1.ZoomFit();        // Refresh de view    model1.Invalidate();}
๐Ÿ“ฆ BONUS STAP 4: 3D View Aanroepen bij Berekening

Voeg dit toe AAN HET EINDE van je buttonBereken_Click methode:

    // ... bestaande berekeningen ...        // Roep 3D visualisatie aan    ToonTransformator3D(vermogenKW);        // Switch automatisch naar 3D tab    tabControl1.SelectedIndex = 1;}

๐Ÿ’ก Resultaat: Na elke berekening zie je een 3D representatie van de transformator waarbij de grootte en kleur het vermogen weerspiegelen!

๐ŸŽ“ Wat Heb Je Geleerd?

๐Ÿš€ Extra Uitdagingen

  1. NumericUpDown Controls: Vervang TextBoxes door NumericUpDown voor betere input controle
  2. Progress Bar: Voeg een ProgressBar toe die de belasting t.o.v. max vermogen toont
  3. Save/Load: Implementeer opslaan van berekeningen naar een tekstbestand
  4. Data Logging: Maak een ListBox die alle uitgevoerde berekeningen bijhoudt
  5. Graph Chart: Gebruik een Chart control om vermogen vs cos ฯ† grafiek te tonen
  6. Multi-language: Voeg een dropdown toe om tussen Nederlands/Engels te schakelen
  7. Custom Icons: Voeg een icoon toe aan je applicatie (.ico bestand)
  8. Keyboard Shortcuts: Implementeer Enter voor Bereken, Escape voor Reset

๐Ÿ“š Veelvoorkomende Problemen & Oplossingen

โŒ "Object reference not set to an instance of an object"

โ†’ Je probeert een control te gebruiken die niet bestaat. Check of je de (Name) property correct hebt ingesteld.

โŒ Labels updaten niet

โ†’ Check of je .Text property gebruikt en niet per ongeluk iets anders. Vergeet niet $"..." voor string interpolatie.

โŒ Event handler wordt niet aangeroepen

โ†’ Ga naar Designer, selecteer de control, klik op โšก (Events) in Properties venster, check of de event gekoppeld is.

โœ… Voltooiing Checklist

Check af wat je hebt gedaan: