SluitenHelpPrint
Switch to English
Cursus: INFOIMP
INFOIMP
Imperatief programmeren
Cursus informatie
CursuscodeINFOIMP
Studiepunten (EC)7,5
Cursusdoelen
De student kent de taalconstructies en het gangbare idioom van de imperatieve en objectgeoriënteerde programmeerparadigma's, en is in staat om daarmee een interactieve applicatie voor een eenvoudig algoritme te bouwen.

In dit vak leer je de programmeertaal C#, waarin opdrachten gebundeld worden in zogeheten methoden, die een object bewerken. Het is daarmee tevens een inleiding in objectgeorienteerd programmeren.
We bekijken hoe je het geheugen verandert, en hoe je keuze en herhaling programmeert. Je beschrijft zelf nieuwe soorten objecten met daarbij behorende methoden, maar maakt ook kennis met de bij C# horende standaard-methoden. Aan de orde komen onder andere methoden om interactieve user-interfaces te maken, om animaties te maken met een Thread, om files te manipuleren, en om verzamelingen gegevens (collections) te beheren.
In het college worden enkele grotere programma's besproken als voorbeeld van toepassingen: een grafische bitmap-editor, een vector-tekenprogramma, een route-zoeker. en automatische taalherkenning door letterfrequentie-analyse, Daarbij zien we dan meteen waarom het handig is om object-klassen hierarchisch te ordenen, en hoe je rijen objecten in een array kunt zetten.
Speciale aandacht wordt besteed aan het gebruik van objectgeorienteerde technieken bij het ontwerp van wat grotere programma's, waarbij de standaardbibliotheken voor collections en file-I/O als voorbeeld dienen.
Inhoud
Dit is het eerste programmeer-vak, voorkennis anders dan elementaire computergebruiksvaardigheid is niet vereist. Aan de hand van (steeds ingewikkeldere) voorbeeldprogramma's wordt de syntax en semantiek van de belangrijkste constructies van C# behandeld. Vanaf het begin wordt object-georienteerde modellering van de probleemstelling gebruikt. Een aantal standaard-libraries van C# wordt gebruikt, in het bijzonder Forms, waarmee interactieve muisgestuurde programma's gemaakt kunnen worden. Achtereenvolgens komen aan de orde:
  1. Programma's:
    • Imperatief programmeren t.o.v. andere paradigma's (programma bestaat uit opdrachten om variabelen in het geheugen te veranderen)
    • Compiler versus interpreter; edit-compile-run cyclus
    • Kort Hello-programma met verschillende aanpak (console, Forms, Game); opbouw van een programma: `opsomming van klassen, elke klasse een bundeling van methoden, elke methode een bundeling van opdrachten'.
    • Syntax en semantiek van methode-aanroep
    • Gebruik van een ontwikkelomgeving (momenteel Visual Studio)
  2. Variabelen:
    • Enkele methoden van klasse Graphics, als voorbeeld van het gebruik van een standaard-klasse
    • Gebruik van variabelen, om herhaling van numerieke constanten te vermijden
    • Toekenningsopdracht, declaratie, het type int
    • Layout- en naamgevingsconventies
    • Definitie van nieuwe methoden om te abstraheren van herhaalde blokken code
    • Definitie van parameters om methoden flexibeler te maken
  3. Interactie:
    • De klasse String, conversie van int naar String
    • Opbouw van user-iterface met Button, TrackBar, TextBox)
    • Event-properties
  4. Iteratie:
    • Het while- en for-statement
    • Het type bool, vergelijkingen, logische operatoren
    • Casus: renteberekening
  5. Keuze:
    • Het if-statement
    • Toepassingen van `if': onderscheiden van Buttons, controle van teksten, berekenen van minimum
    • Casus: tekenen en nulpuntsbepaling van parabool
  6. Objecten en klassen:
    • Klasse als beschrijving van een object, declaratie van objectvariabelen
    • Casus: deeltje met plaats en snelheid als object
    • Eenvoudige animatie met Thread en Sleep
  7. Inheritance:
    • Subklasse: toevoegen van nieuwe variabelen en methoden
    • Verschil tussen `is a' en `has a'
    • Interface-componenten als voorbeeld van klasse-hierarchie
    • User interface ontwerp met Layout-managers
    • Casus: 4-functie calculator
  8. Strings en arrays:
    • Het type char versus klasse String
    • Creatie en gebruik van strings
    • Casus: bepalen van letterfrequenties in een tekst (array als turf-tabel)
  9. Object-georienteerd ontwerp
    • Abstracte klassen en interfaces
    • Bibliotheekklassen voor Collections
    • Toepassing: een vector-tekenprogramma
    • Bibliotheekklassen voor file-I/O
    • Non-window (console-) programma's; casus: grep
  10. Het gebruik van algoritmen
    • Grote casus: een route-zoekalgoritme in het wegen-netwerk
    • Grote casus: herken de taal van een tekst op grond van een vergelijking van letterfrequenties (tevens een voorbeeld van een `lerend' programma)
http://www.cs.uu.nl/education/vak/INFOIMP
SluitenHelpPrint
Switch to English