Software Development fundamentals Les 2 – C#
inhoudsopgave De taal C# Syntax Commentaar in de code Objectoriëntatie in het kort Datatypes Conversie Opdrachten
C# C# is dé taal voor .NET development Het is een objectgeorienteerde taal C# als taal lijkt sterk op Java Je werkt met Visual Studio Dit is een IDE, een Integrated Development Environment. We beginnen met: Winforms applicaties Console applicaties Maar er is veel meer mogelijk! Windows applicaties (Forms, WPF) Webapplicaties (ASP.NET MVC) Webservices (ASP.NET Web API) Windows store apps Android/IOS apps (Xamarin) Games (Unity, Cocos2D etc.) Welke manier heeft jouw voorkeur en waarom?
De syntax Syntax zijn de regels voor het correct gebruik van een taal. Denk bij Nederlands aan grammatica en zinsbouw, beginnen met een hoofdletter, eindigen met een punt enzovoort. Bij programmeertalen zijn deze regels een stuk strenger, en daarom ook makkelijker te leren! Als je je niet aan de correcte regels houdt, zal je C# code niet compileren. Syntax leer je waarschijnlijk vanzelf, na een aantal uur programmeren, en door code van anderen te lezen. Welke manier heeft jouw voorkeur en waarom?
Een paar basisregels Alle code staat in classes. Classes staan in namespaces. Met de using statements bovenaan wordt aangegeven welke externe namespaces (en classes daarin) je wilt invoegen. Code die echt wordt uitgevoerd staat in methodes. Het is in C# niet mogelijk om uitvoerbare code buiten methodes te hebben. Instructieregels/statements eindigen met een puntkomma ; De public static void Main() methode is het startpunt van de applicatie Accolades/Gekrulde haakjes { } geven aan wat bij de class en de methode hoort (de scope). Welke manier heeft jouw voorkeur en waarom?
Nogmaals syntax C# schrijf je niet hetzelfde als PHP of JavaScript, maar het lijkt er wel op. using System; namespace HelloApplication { public class Hello public static void Main() Console.WriteLine("Hello, World!"); } Code staat in classes (hier Hello). Classes staan in namespaces. Met using wordt aangegeven welke externe namespaces (en classes daarin) je wilt invoegen. Code die echt wordt uitgevoerd staat in methodes Instructieregels/statements eindigen met een puntkomma ; De public static void Main() methode is het startpunt van de applicatie Accolades/Curly Brackets { } geven aan wat bij de class en de methode hoort.
Commentaar in de code Het is handig om code te voorzien van commentaar. Commentaar is tekst die wordt genegeerd door de compiler, dus bedoeld voor andere ontwikkelaars! (of voor jezelf in de toekomst…) Een regel commentaar voeg je in met // // Hier kan je typen wat je wilt Een blok commentaar typ je met /* */ /* Hier kan je meerdere regels commentaar plaatsen */ Commentaar boven methodes typ je met /// Dit genereert automatisch een commentaarblok dat werkt in combinatie met IntelliSense.
Objectorientatie Is het onderwerp van module 2. Maar, omdat C# helemaal Objectgeoriënteerd is kunnen we er nu niet omheen. Objectgeoriënteerd programmeren is een werkwijze bedacht om de code van complexe applicaties overzichtelijk, onderhoudbaar en herbruikbaar te houden. De kern van Objectgeoriënteerd programmeren is dat je code is verdeeld in classes. Van deze classes kunnen objecten gemaakt worden. Een class is een combinatie van methodes en variabelen/properties. Voorbeelden: Console, Button, Form, Textbox, SqlConnection, MailMessage etc.
variabelen In tegenstelling tot PHP en JavaScript is C# code meestal type-safe. Dat betekent dat een variabele een bepaald datatype heeft. In PHP werkt dit: $naam = “Jasper”; In C# geef je expliciet op dat dit een variabele is van het type string. string naam = “Jasper”; Dit werkt ook binnen methodes, maar raad ik af als je net begint: var naam = “Jasper”;
De datatypes Je hebt allerlei soorten datatypes, en je kunt ze ook zelf maken. Belangrijk is nu dat je bekend bent met de ingebouwde datatypes. Die beginnen met een kleine letter. (voor ‘t MTA examen moet je deze uit je hoofd leren) Verdere interessante datatypes zijn classes en enums. Naam Bytes Bevat byte 1 0 tot 255 char 2 1 karakter short -32,768 tot 32,767 int 4 -2,147,483,648 tot 2,147,483,647 long 8 -9,223,372,036,854,775,808 tot 9,223,372,036,854,775,807 float -3.4 × 1038 tot +3.4 × 1038 double ±5.0 × 10−324 tot ±1.7 × 10308 bool true/false string ? Tekst
Declaratie en initialisatie Declaratie = reserveren van geheugenruimte < onthouden Initialisatie = toewijzen van een eerste waarde < onthouden Declaratie: int getal; Waarde toewijzen getal = 20; Declaratie en initialisatie in één regel: int getal = 20;
Default waardes int getal; bool check; Wat zit er nu in deze twee variabelen? Getal is 0, check is false, dit zijn default waardes. string tekst; En in deze? tekst is null, bij complexere datatypes geeft null aan dat er nog geen waarde is. Je kunt hier ook op checken if(tekst == null) // tekst heeft geen waarde. Dit is hetzelfde als isset() in PHP
conversie Omdat je verschillende datatypes hebt zal je vaak converteren of parsen. Stel dat je een eenvoudig rekenprogramma schrijft dat 2 getallen optelt. We maken een nieuwe winforms applicatie met twee textboxes, een button en een label.
conversie Omdat je verschillende datatypes hebt zal je vaak converteren of parsen. Je ziet dat twee strings optellen niet goed werkt. “2” + “2” is 22, en niet 4. Je zult de strings dus om moeten zetten naar ints of doubles. Daarna moeten we het resultaat weer omzetten in een string om dit te kunnen tonen. double getal1 = double.Parse(textbox1.Text); double getal2 = double.Parse(textbox2.Text); double resultaat = getal1 + getal2; Label1.Text = resultaat.ToString();
Overzicht conversie (onthouden!!!!) String invoer = “22.6”; Van string naar een int kan op 2 manieren: int getal = int.Parse(invoer); int getal = Convert.ToInt32(invoer); Van string naar een double kan ook op 2 manieren: double getal = double.Parse(invoer); double getal = Convert.ToDouble(invoer); Een getal omzetten naar een string doe je met ToString() string uitvoer = getal.ToString();
Aan de slag We gaan een paar console applicaties maken om te oefenen De opdrachten staan online (google drive) Is het te makkelijk voor je? Maar 2 opdrachten zijn verplicht, en die kosten niet veel tijd…
Afsluiting Zijn er vragen?