Programmeren met C#: wat kun je ermee?

18 augustus 2021

Als je een blik werpt in de richting van het concept van programmeren, weet je soms niet waar je moet beginnen. Er zijn tientallen programmeertalen, ieder met eigen toepassingen en functionaliteiten. In dit artikel richt ik me op een taal waarvan ik denk dat het een goede is om mee te beginnen (niet de enige goede, maar wél een goede). Dat is C#, uitgesproken als “C-sharp” in het Engels. Zelf ben ik met deze taal begonnen toen ik development-werk ging doen voor het bedrijf Vaanster, een klant van Ciratum. Vaanster richt zich op duurzame energie-oplossingen en gebruikt onder andere systemen die in C# zijn gebouwd en draaien in de cloud-service Microsoft Azure.

Toen ik voor het eerst iets had geprogrammeerd dat werkte, was ik dolgelukkig. Het was maar een eenvoudig Memory-spelletje in Java, maar toen het eenmaal werkte had ik hetzelfde “Eureka!”-gevoel dat je wellicht hebt wanneer je een moeilijke puzzel oplost. Dat was tijdens een IT-traineeship en tot op deze dag vind ik programmeren het leukste werk om te doen. Wil je het zelf eens proberen? Onderaan dit artikel staat een voorbeeldopdracht!

Ontstaan van C#

C# is een programmeertaal die in 2002 door Microsoft werd uitgebracht als onderdeel van het .NET-framework. Het .NET-framework is een development framework. Je zou dit kunnen zien als een gereedschapskist met tools om software te ontwikkelen. Met .NET kun je websites, services en applicaties ontwikkelen voor Windows.
Wat kun je programmeren in C#?

Volgens het bovenstaande schema is C# een goede taal om te leren als je in de bedrijfswereld wil werken én een fan bent van Microsoft. Als je dit artikel aan het lezen bent op een Mac, ben je nu wellicht geneigd om Safari weer af te sluiten. Maar niets is minder waar! C# kan voor iedereen heel handig zijn. Met de komst van .NET Core heeft de programmeertaal veel nieuwe toepassingsmogelijkheden gekregen.

Het .NET-framework, waar C# dus bij hoort, is voor een belangrijk deel gebaseerd op het compilen (i.e. het vertalen naar de computer) van de code die je schrijft. In eerste instantie kon je met .NET alleen iets voor op Windows-machines maken. Het kon dus alleen naar Windows compilen. Maar .NET Core is als het ware een vervolg op het .NET-framework, waarmee je de code kunt compilen naar alle verschillende platformen (Windows, Apple, en Linux). Je kunt nu dus programmeren in C# voor alle platformen.

Een taal als C# is continu in ontwikkeling. Op dit moment wordt C# nog wel het meeste gebruikt in combinatie met Microsoft / Windows, maar het heeft dus steeds meer mogelijkheden. De beste en populairste toepassingen van C# op dit moment zijn:

  • Windows-applicaties: Windows Forms en WPF zijn toepassingen binnen .NET die het je heel makkelijk maken om desktop-applicaties voor Windows in elkaar te zetten. Als je met C# aan de slag wil gaan is het sowieso goed om Microsoft Visual Studio te installeren. Dat is een IDE (Integrated Development Environment, i.e. software waarin je code kunt schrijven) die vooral gericht is op .NET en de toepassingen die daarbij horen. Je kunt hiermee gemakkelijk een applicatie ontwerpen, en bij elk ontwerp in de code erachter bepalen wat er precies moet gebeuren (bijv. als er op een knop wordt gedrukt). Op basis van .NET bouwt je computer zo’n ontwerp gemakkelijk om in een .exe-applicatie.
  • Websites: ASP.NET is een toepassing waarmee je gecombineerd met HTML en JavaScript-code websites kunt bouwen. Het wordt veel gebruikt, ook voor de meest grote en complexe webapplicaties. Je kunt C#-code hier gebruiken om aan de server-kant van de website dingen uit te voeren (bijvoorbeeld informatie ophalen, opslaan, enz.).
  • Mobiele apps: Xamarin is een toepassing binnen .NET om mobiele apps te ontwikkelen. Het handige van Xamarin is dat het ook cross-platform is. Dus je kunt dezelfde app bouwen en deze uitbrengen op zowel iOS als Android. Dat is erg handig, want de meeste mobiele apps worden nog steeds verschillend ontwikkeld voor verschillende apparaten (bijv. in Java voor Android, en in C voor Apple).
  • Games: Je kunt met de game-engine Unity ook games bouwen in C#. C++ is nog steeds de populairste programmeertaal voor het maken van games, maar je kunt ook veel met C#. Games voor de Nintendo Wii U worden in C# Unity gemaakt.

Zelf proberen?

Als afsluiter zou ik je heel graag meenemen in het programmeren in C#. Zoals ik noemde was ik dolblij toen ik zelf mijn eerste spelletje had gemaakt in Java. Dat zelfde gevoel hoop ik je mee te geven met behulp van C#.
Geen zorgen, zelfs als je nog nooit iets hebt geprogrammeerd, gaat dit lukken. Ik zal alles stap voor stap uitleggen.
Hieronder zie je alle stappen die je moet doorlopen. Controleren of het gelukt is? Klik op de pijltjes hier rechtsonder om naar de oplossing te gaan.

1.

Ga naar https://dotnetfiddle.net/.

Op deze website kun je C# code runnen. Er staat al wat standaard code. Het enige wat hiervan relevant is, is hetgeen tussen de curly haakjes { } onder public static void Main(). Hier staat de regel:

Console.WriteLine(“Hello World”);

Console.WriteLine is een commando dat je kunt aanroepen om tekst te schrijven. Na elk commando in C# zet je altijd een puntkomma ;

Als je bovenin op “Run” klikt zie je onderin in de output de aangegeven tekst verschijnen. In ons spelletje zullen we dit commando ook gebruiken.

Iets anders wat belangrijk is om van te voren te weten, is hoe je een variabele kunt declareren. Simpel gezegd is dat het aanduiden van een bepaalde waarde, zodat de computer die waarde opslaat en elders in je programma weer kan gebruiken. Dit wordt genoteerd als:

<type variabele> mijnVariabele = <waarde>;

Er zijn verschillende typen variabelen, maar ik wil er twee noemen. Dat zijn string en intString is voor tekst, en dit duid je aan tussen aanhalingstekens. Int is voor een getal. Bijvoorbeeld:

  • string tekst = “Hello world”;
  • int getal = 25;

2.

Maak een nieuwe regel boven Console.WriteLine(“Hello World”);, en zet hier:

string tekst = “Hello world”;

Verander de 2e regel in:

Console.WriteLine(tekst);

en Run je code.

Zoals je ziet gebruikt hij nu de variabele tekst, waarnaar je verwijst.

3.

Welnu, het spelletje dat we gaan maken is het raden van een getal onder de 10. Eerst zullen we dus een int-variabele moeten declareren, die het getal zal zijn dat we moeten raden. We kunnen van tevoren een specifiek getal aangeven, bijv. int getal = 7;, maar dat zou wel een beetje saai zijn. Dan weten we zelf al wat het goede antwoord is. Een willekeurig getal tussen bijvoorbeeld 1 en 10 is leuker. Dat kun je aanduiden op de volgende manier:

int answer = new Random().Next(1,10);

Je kunt de twee regels om “Hello World” te schrijven verwijderen en bovenstaande daar neerzetten.

Vervolgens moeten we nog een tweede int-variabele hebben, namelijk het getal dat de speler raadt. Dan kunnen we vergelijken of de twee hetzelfde zijn. Maar die waarde kunnen we nu natuurlijk nog niet aanduiden, die krijgen we later van de speler. Later zullen we deze variabele een waarde geven, dus zet voor nu op de volgende regel:

int guess = 0;

4.

Tijd om met het spelletje te beginnen. Eerst moeten we de speler instrueren om een getal in te typen. Dit kunnen we doen met Console.WriteLine. Je kunt neerzetten:

Console.WriteLine(“Guess a number between 1 and 10:”);

De speler kan iets invoeren in dezelfde console als waar deze tekst wordt weergegeven. Maar hoe lezen we wat de gebruiker heeft intypt?

Dat kan met het commando Console.ReadLine();. Met dat commando krijgen we de waarde terug als string. Je kunt neerzetten:

string input = Console.ReadLine();

5.

Nu willen we natuurlijk die input als int-waarde opslaan in de eerder gedeclareerde variabele guess. Maar hoe zet je een string om naar een int?

Een waarde omzetten naar een ander type variabelen heet “parsen”. We kunnen dit met een handig trucje doen. Zet op de volgende regel:

int.TryParse(input, out guess);

guess zal nu worden veranderd naar de waarde die de speler heeft ingevoerd (tenzij hij/zij geen geldig getal heeft ingevuld!).

6.

Nu komt het belangrijkste gedeelte: we willen vergelijken of guess hetzelfde is als getal. Wat ten eerste handig is om te weten, is dat als je verschillende scenario’s wilt behandelen in je code, kun je daarvoor een if-statement kunt gebruiken. Dat noteer je zo:

if (<conditie>) {
code om uit te voeren >
}

Eventueel kun je eronder nog het statement else { … } gebruiken, met code die juist alleen uitgevoerd wordt als de conditie niet waar is. Maar dat is voor nu niet aan de orde.

Om verschillende variabelen met elkaar te vergelijken, zijn er vergelijkings-operaters. Bijvoorbeeld:

  • ==(gelijk aan)
  • !=(niet gelijk aan)
  • >(groter dan)
  • <(kleiner dan)

De conditie wordt dan getest.

Je kunt nu misschien zelf het if-statement al wel schrijven. Als het antwoord gelijk is aan guess, kunnen we bijvoorbeeld “Well done!” tegen de gebruiker zeggen:

if (guess == answer) {
Console.WriteLine(“Well Done”);
}

  1. Maar wat als het antwoord fout is?

Dan moet de speler opnieuw een getal raden. De code die hierbij hoort moet opnieuw worden uitgevoerd. Wat we zouden kunnen doen is deze code kopiëren naar een else-statement. Als het goed is: “well done!”, maar als het fout is kun je het nog een keer proberen. Maar wat als de volgende gok ook weer fout is?

Voor zoiets kunnen we heel goed een loop gebruiken. Loops zijn heel handig bij programmeren. Er zijn verschillende typen loops, maar voor nu is alleen de zogeheten while-loop relevant voor ons. We willen namelijk iets blijven herhalen zolang (of: while) de gebruiker het antwoord nog niet goed heeft geraden. We willen dat de loop eindigt als de gebruiker het getal goed heeft geraden.

Een while-loop noteer je als volgt:

while (<conditie>) {

<code om uit te voeren>

}

Het lijkt dus enorm op een if-statement, alleen wordt de code in een if-statement maar één keer uitgevoerd, en een while-loop blijft herhalen zolang de conditie waar blijft.

We willen de code die we hebben geschreven vanaf het instrueren, tot aan het complimenteren als het goed is geraden, blijven herhalen in deze loop. Jouw opdracht is om deze loop nu zelf te programmeren!

Als je dit is gelukt en je de code nu runt, kun je testen of je spel goed werkt.

  1. Bonus-opdracht

Laat met behulp van een if-statement de Console-instructie de eerste keer zijn zoals de huidige (“Guess a number between 1 and 10:”), maar bij pogingen daarna, als de speler het dus fout heeft geraden, zijn: “False, try again:”.

  1. Check de oplossing!

Het laatste nieuws