arrow-left

All pages
gitbookPowered by GitBook
1 of 7

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Dankwoord

Deze cursus is een fork van . We zijn Tim Dams en al zijn co-auteurs dank verschuldigd voor de stevige basis. Je mag veronderstellen dat alles Tims werk is, wij hebben vooral de vorm van de oefeningen aangepast voor een meer beroepsgerichte opleiding.

die van de richting toegepaste informaticaarrow-up-right

Afspraken code

Voor de graduaatsopleiding volgen we een reeks afspraken (ook "conventies" genoemd) die bepalen welke code wel en niet aanvaardbaar is. Wanneer een groep programmeurs dezelfde afspraken volgt, is het voor iedereen makkelijker code uit te wisselen.

Als je deze pagina voor de eerste keer ziet, zullen de meeste van deze afspraken je nog niet veel zeggen. Dat is logisch. We zullen je tijdens de les wijzen op de afspraken die horen bij een nieuw concept, maar hier heb je een handig overzicht:

hashtag
naamgeving

Onderstaande richtlijnen zijn gebaseerd op deze algemeen aanvaarde richtlijnenarrow-up-right. We beperken ons tot de zaken die we tijdens de cursus zien.

  • We kiezen namen in het Engels. Enkel tekst die aan de gebruiker getoond wordt, schrijven we in het Nederlands.

  • Merk op dat het verschil tussen PascalCase en camelCase samenhangt met de default zichtbaarheid. Wanneer afgeweken wordt van de default zichtbaarheid, kan de conventie voor de notatie ook veranderen. Wij zullen ons in deze cursussen voor de eenvoud strikt aan de default zichtbaarheid houden.

  • "meervoud toegestaan" betekent dat we iets noteren als een meervoud als de data ook meerdere objecten voorstelt. Bijvoorbeeld een lokale variabele met naam studenten

hashtag
codeerstijl

We baseren ons op . Je hoeft deze conventies niet te lezen. Hieronder volgt een vereenvoudigd overzicht van de afspraken die aan bod kunnen komen in de cursus en enkele eigen conventies:

hashtag
using directieven

  • Deze komen alleen vooraan in het bestand voor en worden steeds gevolgd door de declaratie van de namespace.

hashtag
namespaces

  • In het eerste semester groeperen we al onze code in de namespace Programmeren, in het tweede semester in de namespace ObjectgerichtProgrammeren.

hashtag
een datatype per bestand

  • Elk zelf gedefinieerd datatype (klasse, struct, interface, enum type, later ook delegate) plaatsen we in een afzonderlijk bestand met dezelfde naam als dat datatype.

hashtag
strings bouwen

  • In de eerste twee lessen mag dit met behulp van +.

  • Gebruik stringinterpolatie om kleine aantallen strings aan elkaar te hangen of data weer te geven in stringformaat.

  • Gebruik een StringBuilder om strings aan elkaar te hangen in een lus.

hashtag
types declareren

  • Gebruik steeds een expliciet, statisch type.

    • Dat wil zeggen: geen variabelen declareren als var. Dat doe je pas later.

    • Dat wil zeggen: geen variabelen declareren als dynamic

hashtag
arrays

  • Gebruik de kortste syntax voor arrays van literals, dus string[] vowels1 = { "a", "e", "i", "o", "u" }; en niet string[] vowels2 = new string[] { "a", "e", "i", "o", "u" };.

hashtag
static members

  • Plaats voor een static member altijd uitdrukkelijk de naam van de klasse waarin dat static member gedefinieerd is.

  • Klassen die uitsluitend static members bevatten ("library classes") maken we ook static met de syntax static class.

hashtag
vergrendelen van data

  • Klassen die niet bedoeld zijn om van over te erven maken we final.

  • Als iets een constante is voor een bepaald programme, gebruiken we ook de access modifier const.

hashtag
algemeen

We gebruiken alleen zaken die in de les aan bod zijn gekomen. We zien geen lambda's, delegates, LINQ,... dus je gebruikt deze ook niet, zelfs als je ze al ergens anders gezien hebt.

Benodigdheden

In alle lessen (hoorcollege en practica) hebben we 2 zaken nodig:

  1. Deze cursus

  2. Een laptop met daarop Visual Studio Code editie geïnstalleerd.

Argument

camelCase

meervoud toegestaan

[A-z]+[0-9]

niet van toepassing

Lokale variabele

camelCase

meervoud toegestaan

[A-z]+[0-9]

niet van toepassing

Constante

PascalCase

altijd

[A-z]+[0-9]

public

Veld

camelCase

meervoud toegestaan

[A-z]+[0-9]

private

Property

PascalCase

meervoud toegestaan

[A-z]+[0-9]

public

Enum type

PascalCase

altijd

[A-z]+

public

Waarde enum

PascalCase

altijd

[A-z]+

niet van toepassing

en datatype
Student[]
, maar een lokale variabele
student
met datatype
Student
.
  • We beginnen niet elke identifier voor een private member met een underscore. Sommige programmeurs doen dit wel, maar wij volgen één richtlijn.

  • Namen van klassen voor custom exceptions eindigen op Exception.

  • Vermijd afkortingen in namen.

    • Uitzondering: algemeen aanvaarde afkortingen zoals ID, HTML,...

    • Afkortingen van één of twee letters

  • Andere talen hebben soms andere conventies!

  • . Dat doe je pas later.

    Soort data

    Notatie

    Enkelvoud?

    Vorm

    Default zichtbaarheid

    Klasse

    PascalCase

    altijd

    [A-z]+[0-9]

    public

    Methode

    PascalCase

    meervoud toegestaan

    [A-z]+[0-9]

    de afspraken van Microsoftarrow-up-right

    public

    Afspraken oefeningen

    Voor de graduaatsopleiding hanteren we een vaste structuur voor de oefeningen.

    hashtag
    vorm van de oefeningen

    hashtag
    unieke titel

    Elke oefening begint met een unieke titel. Deze gebruik je voor de organisatie van je bestanden.

    hashtag
    korte toelichting

    Eerst krijg je een omschrijving in tekst van wat de algemene bedoeling is van je programma. Deze bevat niet noodzakelijk elk detail, maar geeft je een big picture. Bijvoorbeeld:

    In deze oefening maak je een echo. Dit is een programma dat tekst inleest vanaf het toetsenbord en deze tekst dan op het scherm toont.

    hashtag
    vertrekpunt

    Je hoeft niet altijd alle code zelf te schrijven. Code die je nog niet verondersteld wordt zelf te kunnen schrijven, of code die gewoon veel tijd in beslag neemt, krijg je. Bij de stukken code staat telkens de naam van het bestand waarin ze thuishoort. Commentaar bij de te wijzigen stukken code geeft aan welke aanpassingen je moet doen. Bijvoorbeeld:

    hashtag
    Program.cs

    hashtag
    voorbeeldinteractie

    Ten slotte worden één of meerdere voorbeelden getoond van hoe je programma zich gedraagt. In deze voorbeelden stellen regels die niet beginnen met > iets voor dat op het scherm verschijnt. Regels die wel beginnen met > stellen iets voor dat door de gebruiker zelf wordt ingetypt. Bijvoorbeeld, voor het programma dat we hier als leidraad gebruiken:

    We gebruiken de speciale syntax <EOF> om aan te geven dat er een end-of-file signaal wordt gestuurd.

    using System;
    
    namespace Programmeren {
        class Program {
            public static void Main(string[] args) {
                // zorg er zelf voor dat een regel tekst die gebruiker intypt weer verschijnt
                string message;
                Console.WriteLine(message);
            }
        }
    }
    > Hallo, wereld!
    Hallo, wereld!

    Nuttige extras

    hashtag
    Nuttige extra's

    hashtag
    Boeken

    Er zijn quasi oneindig veel boeken over C# geschreven, althans zo lijkt het. Hier een selectie van boeken met een korte bespreking waarom ik denk dat ze voor jou een meerwaarde kunnen zijn bij het leren programmeren in C#:

    hashtag
    Beginner boeken

    • van Mike McGrath: een uiterst compact, maar zeer helder en kleurrijk boekje dat ik ten stelligste aanbeveel als je wat last hebt met de materie van de eerste weken.

    • van Joyce Farrell: Niet het meest sexy boek, maar wel het meest volledige qua overlap met de leerstof van deze cursus. Aanrader voor zij die wat meer in detail willen gaan en op zoek zijn naar oneindig veel potentiele examenvragen ;)

    • van Andrew Stellman & Jennifer Greene: laat de ietwat bizarre, bijna kleuterachtige look and feel van de head first boeken je niet afschrikken. Ieder boek in deze serie is goud waar. De head first boeken zijn d� ideale manier als je zoekt naar een alternatieve manier om complexe materie te begrijpen. Bekijk zeker ook de Head First Design Patterns en Head First Sql boeken in de reeks!

    hashtag
    Geavanceerd

    • van Bart De Smet: in mijn opinie dé referentie om C# tot op het bot te begrijpen. Geschreven door een Belg die bij Microsoft in Redmond aan C# werkt.

    • van Steve McConnell: een referentiewerk over 'programmeren in het algemeen'. Het boek is al jaar en dag het te lezen boek als je je als programmeur wilt verdiepen in wat nu 'correct programmeren' behelst. Als je op je CV kunt zetten dat je dit boek door en door kent dan zal elk IT-bedrijf je stante pede aannemen ;)

    hashtag
    Online

    Leren programmeren door enkele de opdrachten in deze cursus te maken zal je niet ver (genoeg) brengen. Onze dikke vriend het Internet heeft echter tal van schitterende bronnen. Hier een overzicht.

    hashtag
    Cheat sheet

    Volgende document bevat een overzicht van de basis C# syntax zaken van het eerste en (deel van het) tweede semester:

    hashtag
    Game-based programmeren

    Ideale manier om programmeren meer in de vingers te krijgen op een speelse manier:

    hashtag
    Apps

    • : Verplichte app! Simple as that!

    • Net zoals SoloLearn maar dan anders.

    • (aanrader!) Origineel vooral bedoeld om spreektalen te leren, maar bevat ook tal van andere zaken. Hoofdzakelijk nuttig om nieuwe aspecten te 'drillen'. Enkel dus nuttig indien je de basismaterie eerst hebt verwerkt. Bekijk zeker ook de tal van andere cursussen die er staan. Let er op dat je bij de filter Engels instelt, er zijn nog niet veel (goede) Nederlandstalige C# cursussen naar mijn weten.

    hashtag
    Websites

    hashtag
    Tutorials

    • : Aanrader.

    • : Zeer aan te raden indien je een bepaald concept uit de les niet begrijpt.

    hashtag
    Oefenvragen

    • : nog steeds relevant.

    hashtag
    Streaming programmeurs

    Ja hoor, ze bestaan. Meer en meer professionele én beginnende programmeurs streamen terwijl te programmeren. Dit is een ideale manier om te zien hoe andere mensen problemen aanpakken. De meeste programming streamers kan je terugvinden op youtube, maar ook op Twitch zijn er steeds meer. Enkele aanraders (bekijk zeker de filmpjes uit de archieven eens):

    • : deze programmeur heeft een volledige RPG gemaakt en het hele proces gestreamd.

    Opgelet: je kan je enkel via de browser inschrijven op niet-spreektaal-cursussen. De app toont enkel spreektaalcursussen
    .
  • Speels en vrij beperkt in gratis versie, maar ideale aanvulling op SoloLearn.

  • Een steam spel om te leren programmeren. Weliswaar Javascript (nuttig voor Web Programming) maar het concept is te cool om niet hier te vermelden en zoals je zal ontdekken: leren programmeren kan je in eender welke taal, en het zal ook je andere programmeer-ervaring verbeteren. Give it a go!

  • (specifiek voor C#!)
  • (behandelt leerstof van volledig eerste jaar en meer)

  • Pittige programmeeroefeningen die jaarlijks in december verschijnen.

  • Handig vorm gegeven gratis ebooks met tal van onderwerpen waaronder ook C# en het .NET Framework.

  • : De uitgebreidere, Engelstalige variant van deze cursus zeg maar.

  • : Nederlandstalige cursus met veel toffe oefeningen waarvan je sommige zelfs in deze cursus zal terugvinden.

  • : Microsoft heeft een virtual academy cursus "C# fundamentals" uitgebracht. Ik kan deze cursus zeer erg aanbevelen.

  • : Zeer vermakelijk, vlot geschreven C# boek(je)

  • : "This site tries to gather open-source remakes of great old games in one place." Je vindt er ook tal van C# projecten terug zoals .Klik bovenaan op "languages" en filter maar eens op C#.

  • Pittige vragen van de jaarlijkse Vlaamse Programmeerwedstrijd:

  • C# Programmingarrow-up-right
    Microsoft Visual C# 2015: An introduction to OOParrow-up-right
    Head First C#arrow-up-right
    C# Unleashedarrow-up-right
    Code Completearrow-up-right
    download hierarrow-up-right
    SoloLearnarrow-up-right
    Enkiarrow-up-right
    Memrisearrow-up-right
    Exercismarrow-up-right
    Coding gamearrow-up-right
    Code Combatarrow-up-right
    Dotnet beginningarrow-up-right
    C# Getting started interactive quickstart tutorialsarrow-up-right
    Online video c# cursusarrow-up-right
    Een lijst met oude oefenvragen uit 2010arrow-up-right
    Veel kleine, fijne oefeningenarrow-up-right
    Een dagelijkse programmeeruitdaging op redditarrow-up-right
    Handmade Heroarrow-up-right
    CSharpFritsarrow-up-right
    DevChatterarrow-up-right
    Cheat sheet preview
    Mimoarrow-up-right
    Screepsarrow-up-right
    Pex For Funarrow-up-right
    Code Academyarrow-up-right
    RPG Game in C#arrow-up-right
    Advent of codearrow-up-right
    Free Programming Bookarrow-up-right
    Tutorials teacherarrow-up-right
    C-sharp.bearrow-up-right
    Microsoft Virtual Academyarrow-up-right
    Rob Miles's The C# Programming Yellow bookarrow-up-right
    Open Source Game Clonesarrow-up-right
    GTA 2arrow-up-right
    2013arrow-up-right
    2014arrow-up-right
    2015arrow-up-right
    Visual Studio Twitcharrow-up-right
    NoopKatarrow-up-right
    The Coding trainarrow-up-right

    Mee helpen?

    Als je aanpassingen wil voorstellen specifiek voor de graduaatsopleiding, dan wordt aangeraden een fork van deze repository te maken op Github. De verschillen tussen de cursus voor de graduaatsopleiding en de bachelor hebben bijna uitsluitend betrekking tot de oefeningen. Als je aanpassingen wil doen met betrekking tot de inhoud, zie dan .

    de overeenkomstige pagina in de cursus van de bachelorarrow-up-right

    Inleiding