Zie Scherp Scherper - Hoofdstuk 1
Na dit hoofdstuk kan je:
WriteLine, Write en ReadLine$"...")Tip
Blijf volhouden. Blijf oefenen. Vloek gerust af en toe. En vooral: geniet van het ontdekken van nieuwe dingen.
Programmeren = leren praten met die domme computers zodat ze doen wat jij wilt.
Opmerking
Geef je hen de opdracht om te ontploffen, schrik dan niet dat je even later de 112 mag bellen.
Onthoud dit letterwoord: een computer is een DDV, een Domme Data Verwerker.
data erin
toetsenbord, bestand, …
→
jouw programma
exact wat jij zegt
→
data eruit
scherm, bestand, …
Opmerking
De computer bedenkt niets zelf: data in, jouw bewerking, data uit. Niet meer, niet minder.
First, solve the problem. Then, write the code.
Een algoritme is het recept dat je aan de computer geeft: een reeks instructies in de juiste volgorde.
Ook in het echte leven is de volgorde van de stappen belangrijk.
Waarschuwing
Dezelfde drie stappen, andere volgorde: je band blijft plat. Logisch en analytisch leren denken is dus de echte kern.
Een taal die de computer begrijpt is meestal:
Tip
Enkel Yoda mag woorden in de verkeerde volgorde gebruiken. “bal rood jongen is gooit veel”?
Tip
Net als bij talen leren: ken je eenmaal Frans, dan leer je makkelijker Italiaans of Spaans. Zo ook met programmeertalen: na dit boek hebben Python en JavaScript weinig geheimen meer voor je.
De Deen die C# boven de doopvont hield bij Microsoft.
Tip
Als je één poster in je slaapkamer hangt, zou het die van Anders moeten zijn.
Allemaal gebouwd met C#, vaak via de Unity-engine.
Vereenvoudigd compiler-overzicht.
De kern: C#-code omzetten naar een uitvoerbaar bestand in machinetaal.
Opmerking
.NET is een framework: een grote verzameling bibliotheken plus de Common Language Runtime (CLR).
Tip
Waarom deze geschiedenisles? Online bots je vaak op oudere namen. Anders raak je het noorden kwijt bij het opzoeken.
Waarschuwing
Sinds augustus 2024 bestaat VS Community niet meer voor Mac. Mac-gebruikers werken met VS Code of JetBrains Rider, of draaien Windows via een virtuele machine.
Kies “Create a new project” en let op:
Belangrijk
Krijg je code te zien die er totaal anders uitziet? Dan koos je wellicht het verkeerde projecttype, de verkeerde taal, of vergat je de top-level-statements-checkbox.
Tip
Layout om zeep? “Window” - “Reset window layout” zet alles terug.
Je leert ook niet hoofdrekenen door vanaf dag 1 met een zakrekenmachine te werken.
Belangrijk
De programmeur van de toekomst moet béter zijn dan Copilot en ChatGPT. Want waarom zou de sector jouw taak anders niet gewoon door A.I. laten doen? In hoofdstuk 4 kijken we hoe je A.I. wél verantwoord inzet.
IntelliCode vult tijdens het typen hele lijnen voor je aan. Knap, en soms gewoon fout:
Na een lijn commentaar tovert IntelliCode zelf een WriteLine tevoorschijn.
Waarschuwing
Duikt er later toch lichtgrijze tekst op die je zelf niet typte? Dan sprong er na een update een optie terug aan. Loop die instellingen dan opnieuw door.
Een console-applicatie toont alles in een klassiek shell-scherm: enkel tekst, geen afbeeldingen of geluid.
In het begin hebben al je applicaties deze opbouw.
Console.ReadLine() leest invoer van de gebruiker inConsole.WriteLine() zet tekst op het schermBelangrijk
Voorlopig negeren. De keywords namespace, class en static void Main lijken mysterieus. Dat geeft niet: schrijf voorlopig enkel tussen de accolades van Main. We pluizen ze uit vanaf hoofdstuk 7.
Ik gooi je heel even in het diepe deel van het zwembad, maar haal je er op tijd weer uit. Daarna spelen we rustig verder in het babybadje.
Onthoud nu alvast:
Main-accolades;)Console.WriteLine() toont alle tekst tussen de aanhalingstekensDe aanhalingstekens én de puntkomma achteraan zijn cruciaal.
Opmerking
Writeline bestaat niet: C# is hoofdlettergevoelig, het is WriteLineHallo staat zonder aanhalingstekens, dus C# zoekt een variabele met die naamConsole.ReadLine() leest wat de gebruiker typt tot die op enter druktWe maken een geheugenplekje (variabele) naam van het type string en bewaren daarin wat de gebruiker invoert. ReadLine leest tot de gebruiker op enter drukt.
Waarschuwing
Toekenning gebeurt van rechts naar links: naam (links) krijgt de waarde van het stuk rechts van de =.
naam): de inhoud van de variabele"naam"): letterlijk die tekstDe tweede lijn toont dus letterlijk het woord naam, niet wat de gebruiker typte.
WriteLine plaatst een enter aan het einde van de lijnWrite doet dat niet: het volgende komt op dezelfde lijnResultaat: Dagtimhoe gaat het?
Belangrijk
Spaties zijn ook tekens. Zet ze binnen de aanhalingstekens: "Dag ". Spaties buiten de quotes worden genegeerd.
Eén lijn code. Cool? In sommige kringen. Onleesbaar? Zeker.
Zet een $ vóór de string en de variabele tussen accolades:
$ zegt: wat tussen { } staat is code, geen tekst{naam} komt de inhoud van de variabeleBelangrijk
Vergeet je de $, dan staat {naam} letterlijk op het scherm, mét accolades.
Je gaat heel vaak Console.WriteLine schrijven. Gelukkig zit er een snippet in VS:
cw+ tweemaal[tab]
En automagisch verschijnt er een verse lijn Console.WriteLine();.
Je code compileert pas als ze 100% foutloos is: zolang er een fout in staat, komt er geen .exe uit de compiler.
Tip
Veel fouten ineens? Kijk net boven de eerste fout. Vaak ontbreekt daar gewoon een puntkomma.
Waarschuwing
Krijg je deze melding bij het starten? Klik nooit op “Yes” en vink de checkbox nooit aan.
Anders draait VS de laatste werkende versie, niet je huidige code met fouten. Je zit dan uren naar een “spook” te kijken.
Belangrijk
Wees kritisch: VS is niet alwetend en kan niet altijd raden wat je bedoelt.
RaedLine i.p.v. ReadLineReadline i.p.v. ReadLineMain)ForegroundColor = letterkleur, BackgroundColor = achtergrondResetColor() zet alles terug naar de standaardBelangrijk
Hou het leesbaar en denk aan daltonisme: rood op groen las voor sommigen onleesbaar.
WriteLine, Write en ReadLine doe je in- en uitvoer, met $"...{naam}..." zet je een variabele middenin een zinForegroundColor en BackgroundColor, en zet je terug met ResetColor()Tip
Volgende halte: variabelen en datatypes. Daar gaan we het woord “variabele” zo vaak gebruiken dat je oren ervan gaan bloeden.
Kennisclips
Dit programma wil de gebruiker begroeten, maar het compileert niet. Wat loopt er mis?
Opmerking
Twee klassiekers. Readline moet ReadLine zijn, want C# is hoofdlettergevoelig. En op het einde van die lijn ontbreekt de puntkomma.
| Taal | Tekst op het scherm | |
|---|---|---|
| Python | print("C# rules") |
|
| JavaScript | console.log("C# rules"); |
|
| TypeScript | console.log("C# rules"); |
|
| Java | System.out.println("C# rules"); |
|
| C++ | std::cout << "C# rules"; |
In een echt project bots je bijna nooit op één taal: een back-end in C#, een front-end in TypeScript, een scriptje in Python.
Python doet dit zo:
Geen namespace, class of Main, geen accolades en geen puntkomma: één lijn volstaat. Die extra structuur in C# krijgt verderop stuk voor stuk betekenis.
Python doet dit zo:
De vraag staat meteen in input, dus geen aparte print nodig. En je geeft geen type op: Python leidt dat zelf af. C# is sterk getypeerd, dus daar leg je met string result vooraf vast welk soort data erin mag en controleert de compiler dat voor je.
JavaScript wordt niet vooraf gecompileerd maar lijn per lijn geïnterpreteerd terwijl het programma draait.
De eerste lijn wordt netjes uitgevoerd, pas bij de typfout (consle) loopt het mis. C# weigert je programma te starten zolang er ergens een fout staat, dus die fout zie je al voor er één lijn gedraaid heeft.
Een handige samenvattende poster (Opgelet: gemaakt m.b.v. ChatGPT Image Gen 2).