arrow-left

All pages
gitbookPowered by GitBook
1 of 7

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Input verwerken en omzetten

hashtag
Input van de gebruiker verwerken

Dit hoofdstuk zal niet lang zijn, maar het is wel een zeer belangrijk aspect van console-applicaties!

En applicatie die geen input van de gebruiker vergt kan even goed een screensaver zijn. We hebben reeds gezien hoe we met Console.ReadLine() de gebruiker tekst kunnen laten invoeren en die we dan vervolgens kunnen verwerken om bijvoorbeeld z'n naam op het scherm te tonen.

De uitdaging met ReadLine is dat deze ALTIJD een string teruggeeft:

Willen we dat de gebruiker een getal invoert, bijvoorbeeld z'n leeftijd, dan zullen dit nog steeds als string moeten opvangen en vervolgens CONVERTEREN.

User input verwerken (dat een andere type dan string moet zijn) bestaat dus uit 3 stappen:

  • Input uitlezen met Console.ReadLine()

  • Input bewaren in een string variabele

  • De variabele converteren met Convert.

hashtag
Input converteren

Om strings naar een ander type te converteren gebruiken we best de Convert.-bibliotheek (maar .Parse() kan ook). De volgende code zal je dus erg vaak moeten schrijven. Stel dat we aan de gebruiker z'n gewicht vragen, dan moeten we dus doen:

hashtag
Foutloze input

Voorgaande code veronderstelt dat de gebruiker géén fouten invoert. De conversie zal namelijk mislukken indien de gebruiker bijvoorbeeld IKWEEG10KG invoert in plaats van 10,3.

De komende hoofdstukken moet je er altijd van uitgaan dat de gebruiker foutloze input geeft.

Opgelet: de invoer van kommagetallen door de gebruiker is afhankelijk van de landinstellingen van je besturingssysteem. Staat deze in Belgisch/Nederlands dan moet je kommagetallen met een KOMMA(,) invoeren (dus 9,81), staat deze in het Engels dan moet je een PUNT(.) gebruiken (9.81).

Opgelet 2: In je C# code moet je doubles ALTIJD met een punt schrijven. Dit is onafhankelijk van je taalinstellingen.

hashtag
Fouten in input

En wat als je toch foute invoer wilt opvangen? Dan is TryParse je vriend. We zullen dit bespreken wanneer we aan Methoden komen. Ongeduldig? .

Random

hashtag
Random getallen genereren

Random getallen genereren in je code kan leuk zijn om de gebruiker een interactievere ervaring te geven. Beeld je in dat je monsters steeds dezelfde weg zouden bewandelen of dat er steeds op hetzelfde tijdstip een orkaan op je stad neerdwaalt. SAAI!

hashtag

bibliotheek naar het gewenste type
Lees hier alles over TryParsearrow-up-right
string userInput= Console.ReadLine();
Console.WriteLine("Geef je gewicht");
string inputGewicht= Console.ReadLine();
double gewicht= Convert.ToDouble(inputGewicht);
Random generator

De Random-klasse laat je toe om eenvoudig willekeurige gehele en komma-getallen te maken. Je moet hiervoor twee zaken doen:

  1. Maak eenmalig een Random-generator aan: Random randomgen= new Random(); (wat dit juist wil zeggen zien we in Semester 2arrow-up-right).

  2. Roep de Next methode aan telkens je een nieuw getal nodig hebt, bijvoorbeeld: int mijnGetal= randomgen.Next(); De aanroep van de methode Next() zal een geheel getal willekeurig genereren.

De eerste stap dien je dus maar 1 keer te doen. Vanaf dan kan je telkens aan de generator een nieuw getal vragen m.b.v. Next.

Volgende code toont bijvoorbeeld 3 random getallen op het scherm:

hashtag
Next mogelijkheden

Je kan de Next methode ook 2 parameters meegeven, namelijk de grenzen waarbinnen het getal moet gegenereerd worden. De tweede parameter is exclusief dit getal zelf. Wil je dus een getal tot en met 10 dan schrijf je 11, niet 10.

Enkele voorbeelden:

hashtag
Genereer kommagetallen met NextDouble

Met de NextDouble methode kan je kommagetallen genereren tussen 0.0 en 1.0 (1.0 zal niet gegenereerd worden).

Wil je een groter kommagetal dan zal je dit gegenereerde getal moeten vermenigvuldigen naar de range die je nodig hebt. Stel dat je een getal tussen 0.0 en 10.0 nodig hebt, dan schrijf je:

hashtag
Ik krijg dezelfde random getallen :(

Zie hier voor meer informatie indien je dezelfde random nummers genereert.arrow-up-right

hashtag
Kennisclip

  • Random toepassenarrow-up-right

Random mygen= new Random();
int getal1= mygen.Next();
int getal2= mygen.Next();
int getal3= mygen.Next();
Console.WriteLine(getal1);
Console.WriteLine(getal2);
Console.WriteLine(getal3);
Random somegenerator = new Random();

int a= somegenerator.Next(0,10);  //getal tussen 0 tot en met 9
int b= somegenerator.Next(5,101);  //getal tussen 5 tot en met 100
int c= somegenerator.Next(0,b);  //getal tussen 0 tot en met het getal dat de lijn ervoor werd gegenereerd.
Random myran= new Random();
double randomgetal= myran.NextDouble() * 10.0;

H3: Werken met data

Math-library en berekeningen

hashtag
Berekeningen

Een groot deel van je leven als ontwikkelaar zal bestaan uit het bewerken van variabelen in code. Meestal zullen die bewerkingen voorafgaan van berekeningen. De Math bibliotheek zal ons hier bij kunnen helpen.

hashtag
De Math bibliotheek

De Math bibliotheek bevat aardig wat handige methoden. Deze bibliotheek bevat methoden voor een groot aantal typische wiskundige methoden (sinus, cosinus, vierkantswortel, macht, afronden, etc.) en kan je dus helpen om leesbaardere expressies te schrijven.

Stel dat je de derde macht van een variabel getal wenst te berekenen. ZONDER de Math-bibliotheek zou dat er zou uitzien:

MET de bibliotheek kunnen we schrijven:

hashtag
De Math bibliotheek ontdekken

Als je in Visual Studio Math schrijft, gevolgd door een punt . krijg je alles te zien wat de Math-bibliotheek kan doen:

Een doosje voor een naam wil zeggen dat het om een Methode gaat (zoals Console.ReadLine()). Een vierkantje met twee streepjes in zijn constanten (zoals Pi(Ï€) en e).

hashtag
Methoden gebruiken

De meeste methoden zijn zeer makkelijk in gebruik en werken op dezelfde manier. Meestal moet je 1 of meerdere "argumenten" tussen de haken meegeven en het resultaat moet je altijd in een nieuwe variabele opvangen. Enkele voorbeelden:

Twijfel je over de werking van een methode, gebruik dan de help als volgt:

  1. Schrijf de Methode zonder argumenten. Bijvoorbeeld Math.Pow() (je mag de rode error negeren).

  2. Plaats je cursor op Pow.

  3. Druk op F1

hashtag
PI (Ï€)

Ook het getal Pi (3.141...) is beschikbaar in de Math-library. Het witte icoontje voor PI bij Intellisense toont aan dat het hier om een ‘field’ gaat; een eenvoudige variabele met een specifieke waarde. In dit geval gaat het zelfs om een const field, met de waarde van Pi van het type double.

Je kan deze als volgt gebruiken in berekeningen:

hashtag
Lopende som

Een vaak voorkomende oefening is deze waarbij je een bepaalde variabele continue moet bijpassen. Stel bijvoorbeeld dat je aan de gebruiker de temperatuur van iedere dag vraagt om zo vervolgens het gemiddelde te berekenen. Dit kan je doen door middel van een lopende som: je gaat telkens het ingevoerde getal toevoegen aan wat je reeds hebt bewaard. Meestal dus met behulp van de += operator.

Wanneer we met loops leren werken zullen lopende sommen zéér nuttig worden.

hashtag
Kennisclip

Debuggen

hashtag
Debuggen

Debugging is een ESSENTIËLE SKILL. Zorg dat je vlot breakpoints kunt plaatsen om zo tijdens de uitvoer te pauzeren om de inhoud van je variabelen te bekijken (via het zogenaamde watch-venster). Gebruik vervolgens de "step"-buttons om door je code te 'stappen', lijn per lijn.

Neem volgende korte demonstratie van debugging door: Debugging in Visual Studioarrow-up-right.

hashtag
Kennisclip

Casting, conversie en parsing

Wanneer je de waarde van een variabele wil toekennen aan een variabele van een ander type mag dit niet zomaar. Volgende code zal bijvoorbeeld een dikke error geven:

Je kan geen appelen in peren veranderen zonder magie: in het geval van C# zal je moeten converteren of casten.

Dit kan op 3 manieren:

  • Via casting: de (klassieke) manier die ook werkt in veel andere programmeertalen.

  • Via de Convert bibliotheek van .NET. Deze staat omzettingen toe die handig zijn, maar niet op het niveau van de taal zijn vastgelegd.

  • Via parsing die we enkel terloops bespreken, maar die niet bij de leerstof van deze cursus hoort. Parsing betekent dat je tekst met een bepaalde vorm omzet naar data en werkt dus alleen op strings.

hashtag
Casting

Het is uiteraard onmogelijk om een kommagetal aan een geheel getal toe te wijzen zonder dat er informatie verloren zal gaan. Toch willen we dit soms doen. Van zodra we een variabele van het ene type willen toekennen aan een variabele van een ander type en er dataverlies zal plaatsvinden dan moeten we aan casting doen.

Hierbij dien je aan de compiler te zeggen: "Volgende variabele die van het type x is, moet aan deze variabele van het type y toegekend worden. Ik besef dat hierbij data verloren kan gaan, maar zet de variabele toch maar om naar het nieuwe type, ik draag alle verantwoordelijkheid voor het verlies.".

hashtag
Wat is casting

Casting heb je nodig om een variabele van een bepaald type voor een ander type te laten doorgaan. Stel dat je een complexe berekening hebt waar je werkt met verschillende types (bijvoorbeeld int, double en float). Door te casten voorkom je dat je vreemde resultaten krijgt. Je gaat namelijk bepaalde types even als andere types gebruiken.

Het is belangrijk in te zien dat het casten van een variabele naar een ander type enkel een gevolg heeft TIJDENS het uitwerken van de expressie waarbinnen je werkt. De variabele in het geheugen zal voor eeuwig en altijd het type zijn waarin het origineel gedeclareerd werd.

Je dient voornamelijk aan casting te doen wanneer je aan narrowing doet: een datatype omzetten naar een ander datatype dat een verlies aan data met zich zal meebrengen.

Casting duid je aan door voor de variabele of literal het datatype tussen haakjes te plaatsen naar wat het omgezet moet worden:

of

hashtag
Narrowing

Casting doe je dus wanneer je een variabele wilt toekennen aan een andere variabele van een ander type dat daar eigenlijk niet inpast. We moeten dan aan narrowing doen, letterlijk het versmallen van de data.

Bekijk eens het volgende voorbeeld:

Dit zal niet gaan. Je probeert namelijk een waarde van het type double in een variabele van het type int te steken. Dat gaat enkel als je informatie weggooit. Je moet aan narrowing doen.

Dit gaat enkel als je expliciet aan de compiler zegt: het is goed, je mag informatie weggooien, ik begrijp dat en zal er rekening mee houden. Dit proces van narrowing noemen we casting.

En je lost dit op door voor de variabele die tijdelijk dienst moet doen als een ander type, het nieuwe type, tussen ronde haakjes te typen, als volgt:

Het resultaat in var2 zal 20 zijn (alles na de komma wordt bij casting van een double naar een int weggegooid).

Merk op dat var1 nooit van datatype is veranderd; enkel de inhoud ervan (20.4) werd eruit gehaald, omgezet ("gecast") naar 20 en dan aan var2 toegewezen dat enkel int aanvaardt.

hashtag
Narowing in de praktijk

Stel dat temperatuurGisteren en temperatuurVandaag van het type int zijn, maar dat we nu de gemiddelde temperatuur willen weten. De formule voor gemiddelde temperatuur over 2 dagen is:

Test dit eens met de waarden 20 en 25. Wat zou je verwachten als resultaat? Inderdaad: 22,5 (omdat (20+25)/2 = 22.5) Nochtans krijg je 22 op scherm te zien en zal de variabele temperatuurGemiddeld ook effectief de waarde 22 bewaren en niet 22.5.

Het probleem is dat het gemiddelde van 2 getallen niet noodzakelijk een geheel getal is. Omdat de expressie enkel integers bevat (temperatuurGisteren, temperatuurVandaag en 2) zal ook het resultaat een integer zijn. In dit geval wordt alles na de komma gewoon weggegooid, vandaar de uitkomst.

Hoe krijgen we de correctere uitslag te zien? Door temperatuurGemiddeld als kommagetal te declareren (bijvoorbeeld door het type double):

Als we dit testen zal nog steeds de waarde 22 aan temperatuurGemiddeld toegewezen worden. De expressie rechts bevat enkel integers en de computer zal dus ook de berekening en het resultaat als integer beschouwen (). We moeten dus ook de rechterkant van de toekenning als double beschouwen. We doen dit, zoals eerder vermeld, door middel van casting, als volgt:

Nu zal temperatuurGemiddeld wel de waarde 22.5 bevatten.

hashtag
Widening

Casting is echter niet nodig als je aan widening doet (een kleiner type in een groter type steken), als volgt:

Deze code zal zonder problemen gaan. var2 zal de waarde 20.0 bevatten. De inhoud van var1 wordt verbreed naar een double, eenvoudigweg door er een kommagetal van te maken. Er gaat geen inhoud verloren echter. Je hoeft dus niet expliciet de casting-notatie zoals (double)var1 te doen, de computer ziet zelf dat hij de inhoud van var1 zonder dataverlies kan toekennen aan var2.

hashtag
Conversie

Casting is een in de taal ingebakken manier van data omzetten, die vooral zeer nuttig is daar deze ook werkt in andere C#-related programmeertalen zoals C, C++ en Java.

Echter, .NET heeft ook ingebouwde conversie-methoden die je kunnen helpen om data van het ene type naar het andere te brengen. Het nadeel is dat ze iets meer typwerk (en dus meer code) verwachten dan bij casting. Al deze methoden zitten binnen de Convert-bibliotheek van .NET.

Het gebruik hiervan is zeer eenvoudig. Enkele voorbeelden:

Je plaatst tussen de ronde haakjes de variabele of literal die je wenst te converteren naar een ander type. Merk op dat naar een int converteren met .ToInt32() moet gebeuren. Om naar een short te converteren is dit met behulp van .ToInt16().

Convert.ToBoolean verdient extra aandacht: Wanneer je een getal, eender welk, aan deze methode meegeeft zal deze altijd naar True geconverteerd worden. Enkel indien je 0, (int) of 0.0 ingeeft, dan krijg je False. In quasi alle andere gevallen krijg je altijd True.

Opgelet: de convert zal zelf zo goed mogelijk de data omzetten en dus indien nodig widening of narrowing toepassen. Zeker bij het omzetten van een string naar een ander type kijk je best steeds de documentatie na om te weten wat er intern juist zal gebeuren.

Je kan .

hashtag
Ter info: Parsing

Voorlopig zullen we parsing niet nodig hebben. Voor de volledigheid plaatsen we deze informatie hier echter.

Naast conversie en casting bestaat er ook nog parsing.

Parsing is anders dan conversie en casting. Parsing zal je enkel nodig hebben dit jaar om tekst naar getallen om te zetten.

Ieder ingebouwd type heeft een .Parse() methode die je kan aanroepen om strings om te zetten naar het gewenste type. Parsing zal je echter minder vaak nodig hebben. Gebruik deze enkel wanneer

  1. Je een string hebt waarvan je weet dat deze altijd van een specifiek type zal zijn, bv een int, dan kan je Int32.Parse() gebruiken.

  2. Je input van de gebruiker vraagt (bv via Console.ReadLine) en niet 100% zeker bent dat deze een getal zal bevatten, gebruik dan Int32.TryParse(). ()

Er zijn nog subtiele verschillen die we hier niet behandelen ().

Voorbeeld van parsing:

Oefeningen

Gebruik je kennis van debuggen om vanaf dit hoofstuk problemen op te lossen. Gebruik niet Console.WriteLine() om de waarde van een variabele te controleren at-runtime, maar gebruik daarentegen breakpoints!

hashtag
Oefening: H3-geometric-fun

hashtag
Leerdoelen

  • gebruik van de Math namespace

hashtag
Functionele analyse

Je moet verschillende vaakgebruikte meetkundige berekeningen uitvoeren. Vraag aan de gebruiker een hoek in graden. Zet deze om naar radialen. Gebruik vervolgens de verschillende geometrische functies in de Math namespace om de sinus, cosinus en tangens van de hoek aan de gebruiker te tonen. Je moet eerst omzetten naar radialen omdat deze functies dat formaat verwachten. Toon alle resultaten tot twee cijfers na de komma.

hashtag
Technische analyse

Omzetting van graden naar radialen werkt als volgt, als rad een aantal radialen is en deg een aantal graden: rad=deg * (Π/180). De verschillende wiskundige functies die je nodig hebt, vind je (zie "Methods" in de linkerbalk). Het getal Π vind je (bij benadering) onder Math.PI. Zie het hoofdstuk rond werken met tekst om twee cijfers na de komma te tonen.

hashtag
UI

console applicatie

hashtag
voorbeeldinteractie(s)

hashtag
H3-BMI-berekenaar

hashtag
Leerdoelen

  • gebruik van de Math namespace

  • je programma's delen met anderen

  • kommagetallen parsen

hashtag
Functionele analyse

Maak een programma dat aan de gebruiker z'n lengte en gewicht vraagt en vervolgens z'n berekende BMI (Body Mass Index) toont.

hashtag
Technische analyse

De formule voor de BMI is BMI = kg / m², waarbij kg het de massa van een persoon voorstelt en m zijn lengte in meter (dus typisch als kommagetal tussen 1 en 2). Je vindt een functie om getallen af te ronden in de Math namespace. Je kan hieraan als eerste waarde aan getal meegeven dat je wil afronden en als tweede een aantal cijfers na de komma.

hashtag
UI

console applicatie

hashtag
voorbeeldinteractie(s)

Bekijk de volgende en geef je uitvoerbaar bestand van het programma aan een klasgenoot. Kijk of hij het kan uitvoeren.

hashtag
Oefening: H3-op-de-poef

hashtag
Leerdoelen

  • tussenresultaten bijhouden

  • werken met de Math namespace

hashtag
Functionele analyse

Een vaste klant in je café bestelt altijd "op de poef". Dat wil zeggen dat hij niet betaalt en dat z'n rekeningen worden neergeschreven. Ooit zal de klant dan gevraagd worden de hele som te betalen. Schrijf een programma dat 5 keer na elkaar aan de barman vraagt om een bedrag in te voeren. Het ingevoerde bedrag wordt opgeteld bij wat er reeds op de rekening staat. Na 5 keer wordt de totale som getoond alsook hoeveel weken het duurt indien de klant wekelijks 10 euro afbetaalt.

hashtag
Technische analyse

Gebruik een variabele om de totale som van de rekeningen bij te houden. De bedragen zullen "vrij klein" zijn, dus nooit meer dan €100. Het zijn ook gehele getallen. Je hoeft geen interest aan te rekenen.

hashtag
UI

console applicatie

hashtag
voorbeeldinteractie(s)

hashtag
Oefening: H3-feestkassa

hashtag
Leerdoelen

  • tussenresultaten bijhouden

hashtag
Functionele analyse

De plaatselijke voetbalclub organiseert een mosselfestijn. Naast mosselen met frietjes (20 EUR) bieden ze voor de kinderen de mogelijkheid om een koninginnehapje (10 EUR) te kiezen. Verder is er een ijsje als nagerecht voorzien (3 EUR). Om het gemakkelijk te maken kosten alle dranken 2 EUR.

Ontwerp een applicatie zodat de vrijwilliger aan de kassa alleen maar de juiste aantallen moet ingeven ,lijn per lijn. (frietjes, koninginenhapje, ijsje, drank) om de totaal te betalen prijs te berekenen.

Het resultaat wordt als volgt weergegeven: Het totaal te betalen bedrag is x EURO.

hashtag
Technische analyse

Je gebruikt best een variabele om de voorlopig som bij te houden. Zo moet je minder code herhalen.

hashtag
UI

console applicatie

hashtag
voorbeeldinteractie(s)

hashtag
H3-orakeltje

hashtag
Leerdoelen

  • werken met willekeurige getallen

hashtag
Functionele analyse

Maak een orakel/waarzegger, namelijk de kleine broer of zus van het . Het programma zal aan de gebruiker vertellen hoe lang deze nog zal leven. Bijvoorbeeld: "Je zal nog 15 jaar leven.".

Het orakel zal enkel realistische getallen geven. Maw, getallen tussen de 5 en 125 jaar (onder de 5 zou grof zijn).

We gaan geregeld een oefening in een later hoofdstuk verder uitbreiden. Het orakeltje van Delphi is er zo eentje.

hashtag
Technische analyse

Je moet hier een willekeurig getal bepalen en dat dan in een mooie vorm presenteren aan de gebruiker. Gebruik hiervoor de klasse Random.

hashtag
UI

console applicatie

hashtag
voorbeeldinteractie(s)

hashtag
Oefening: H3-random-invoer

Pas oefening H3-op-de-poef aan zodat de gebruiker vervangen wordt door een randomgenerator en de gebruiker op de hoogte brengt van de gegenereerde getallen (tussen 1 en 50 inclusief). Dit levert een output als volgt:

int age = 4.3;
lees hier hoe dit nu weer zat
alle conversie-mogelijkheden hier bekijkenarrow-up-right
infoarrow-up-right
ziearrow-up-right

stringinterpolatie en formattering

hierarrow-up-right
kenniscliparrow-up-right
Orakel van Delphiarrow-up-right
int mijngetal = (int)3.5;
double kommagetal = 13.8;
int kommaNietWelkom = (int)kommagetal;
double var1;
int var2;

var1 = 20.4;
var2 = var1;
double var1;
int var2;

var1 = 20.4;
var2 = (int)var1;
int temperatuurGemiddeld = (temperatuurGisteren + temperatuurVandaag)/2;
double temperatuurGemiddeld = (temperatuurGisteren + temperatuurVandaag)/2;
double temperatuurGemiddeld = ((double)temperatuurGisteren + (double)temperatuurVandaag)/2;
int var1;
double var2;

var1 = 20;
var2 = var1;
int getal= Convert.ToInt32(3.2); //double to int
double anderGetal= Convert.ToDouble(5); //int to double
bool isWaar= Convert.ToBoolean(1); //int to bool
int userAge= Convert.ToInt32("19"); //string to int
int ageOther= Convert.ToInt32(anderGetal); //double to int
int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
Geef een hoek, uitgedrukt in graden.
> 45
45 graden is 0.79 radialen.
De sinus is 0.71.
De cosinus is 0.71.
De tangens is 1.00.
Hoe veel weeg je in kg?
> 69.0
Hoe groot ben je in m?
> 1.78
Je BMI bedraagt 21.78.
Voer bedrag in?
> 12
De poef staat op 12 euro
Voer bedrag in?
> 14
De poef staat op 26 euro
Voer bedrag in?
> 3
De poef staat op 29 euro
Voer bedrag in?
> 8
De poef staat op 37 euro
Voer bedrag in?
> 2
De poef staat op 39 euro
*************************
Het totaal van  de poef is 39 euro.
Dit zal 4 afbetalingen vragen.
Mosselen met frietjes?
> 3
Koninginnenhapjes?
> 5
Ijsjes?
> 2
Dranken?
> 5
Het totaal te betalen bedrag is 126 EURO
Je zal nog 7 jaar leven.
Je zal nog 64 jaar leven.
Voer bedrag in?
Automatisch gegenereerd: 12
De poef staat op 12 euro
Voer bedrag in?
Automatisch gegenereerd: 14
De poef staat op 26 euro
Voer bedrag in?
Automatisch gegenereerd: 3
De poef staat op 29 euro
Voer bedrag in?
Automatisch gegenereerd: 8
De poef staat op 37 euro
Voer bedrag in?
Automatisch gegenereerd: 2
De poef staat op 39 euro
*************************
Het totaal van  de poef is 39 euro.
Dit zal 4 afbetalingen vragen.
op je toetsenbord.
  • Je krijgt nu de help-files te zien van deze methode op MDSDN.

  • De Math-bibliotheekarrow-up-right
    Debuggen in VS arrow-up-right
    double result= getal*getal*getal;  //SLECHTE MANIER
    double result= Math.Pow(getal, 3);
    double sineHoekA= Math.Sin(345); //IN RADIALEN!
    double DerdeMachtVan20= Math.Pow(20, 3);
    double complex= 3+ DerdeMachtVan20 * Math.Round(sineHoekA);
    public const double PI;
    double straal= 5.5;
    double omtrek= Math.PI * 2 * straal;
    double totaal= 0.0;
    Console.WriteLine("Geef temperatuur dag 1");
    double inp= Convert.ToDouble(Console.ReadLine());
    totaal+=inp;
    Console.WriteLine("Geef temperatuur dag 2");
    inp= Convert.ToDouble(Console.ReadLine());
    totaal+=inp;
    
    //enz
    Console.WriteLine($"Gemiddelde temperatuur deze week was: {totaal/7}");