Modelleren & Programmeren Jeroen Fokker
Wat heb je nodig? Collegediktaat kopen bij A-Eskwadraat (BBG-238) of zelf downloaden en uitprinten www.cs.uu.nl / docs / vakken / KI1V13009 Solis-id met password Microsoft Visual Studio Community 2015 of Mono + Xamarin (voor Mac/Linux) op de prakticumcomputers en/of zelf gratis downloaden
Hoofdstuk 1 Programmeren
Imperatief programmeren Von Neumann s computer-model (1950): geheugen computer = + processor om waarden op te slaan om opdrachten uit te voeren
Opdrachten Opdracht: voorschrift om het geheugen te veranderen opdrachten staan zelf ook in het geheugen maar veranderen zichzelf niet Programma: lange reeks opdrachten, die één voor één worden uitgevoerd door de processor
Programmeertalen Programmeertaal: notatie voor programma s sinds 1945: 4000 verschillende talen gepubliceerd
Geschiedenis van programmeertalen 1945 Mach.taal 1950 Assembler 1955 Fortran 1960 Algol Cobol Lisp 1965 Basic 1970 Pascal Prolog 1975 Simula 1980 C 1985 SQL 1990 C++ 1995 Java Haskell Perl 2000 C# PHP Python
Geheugencapaciteit 65er jaren: 8 kb RAM ponskaarten 70er jaren: 16 kb RAM tape 80er jaren: 64 kb RAM floppy-disk 85er jaren: 640 kb RAM 90er jaren: 4 MB RAM harddisk 95er jaren: 16 MB RAM CD 00er jaren: 128 MB RAM DVD 05er jaren: 1GB RAM 10er jaren: 8GB RAM Stick / Cloud
Programmeer-problemen vroeger: hoe kan ik het geheugen zo efficiënt mogelijk gebruiken? nu: hoe kan ik die overvloed van geheugen nog overzien?
Indeling van het geheugen plaats in het geheugen met een naam groepje variabelen dat bij elkaar hoort groepje objecten dat bij elkaar hoort variabele object object
Indeling van het programma voorschrift om het geheugen te veranderen groepje opdrachten dat bij elkaar hoort groepje methoden dat bij elkaar hoort groepje klassen dat bij elkaar hoort opdracht methode klasse namespace
Hoofdstuk 2 Hallo, C#!
Soorten programma s Consoleapplicatie
Soorten programma s Consoleapplicatie Windowsapplicatie
Soorten programma s Consoleapplicatie Windowsapplicatie Webapplicatie
Soorten programma s Consoleapplicatie Windowsapplicatie Webapplicatie Game
Soorten programma s Consoleapplicatie Windowsapplicatie Webapplicatie Game Applet
Soorten programma s Consoleapplicatie Windowsapplicatie Webapplicatie Game Applet App
Opbouw broncode Opdrachten om het geheugen te veranderen Opdrachten zijn gegroepeerd in methoden Methoden zijn gegroepeerd in klassen
Soorten opdrachten Toekennings -opdracht: verander het geheugen Aanroep van een andere methode: voer eerst de opdrachten in die methode uit, en ga daarna verder waar je gebleven was en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de waar was ik gebleven administratie is best ingewikkeld!
Voorbeeld C#-programma using System; één klasse...met één methode...met twee opdrachten class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); accolades begrenzen klasse, resp. methode
Klasse- en methode-header naam: bedacht door de programmeur één van de methodes moet Main heten using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( );
Opdracht: methode-aanroep using System; opdrachten: aanroep van andere methoden class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); klasse waaruit de methode komt altijd een punt naam van de methode overige details
Klasse-bibliotheken library-klassen mag je gebruiken... als je ze maar aangeeft in welke library ze staan using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( );
Methode-header en -aanroep using System; methodeheader methodeaanroep class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( );
Syntax en semantiek Syntax: de vorm van het programma compilatie eenheid library using naam ; Semantiek: wat het programma betekent klasse declaratie
Syntax van klasse-declaratie klasse declaratie public private : naam class naam { member
Syntax van member member public private static type void naam ( type naam ) blok,
Syntax van blok blok declaratie { opdracht
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ;
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ;
Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( );
Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Toekennings-opdracht geeft een waarde aan een variabele
Console-applicatie using System; class Hallo2 Declaratie { introduceert een variabele static void Main ( ) van een bepaald type { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( );
Console-applicatie using System; class Hallo2 { gebruik van static void Main ( ) de variabele { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!");
Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.length + " letters."); Property van een object
Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.length + " letters."); Console.ReadLine( );
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ;
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; toekenning object expressie. property naam += variabele, = expressie ;
Windows-applicatie using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( ) { Form scherm; declaratie en toekenning van een variabele met type Form scherm = new Form( ); scherm.text = "Hallo"; scherm.backcolor = Color.Yellow; scherm.size = new Size(200,100); Application.Run(scherm); aanpassen van properties gebruik van de variabele bij aanroep van Run
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ;
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ;
Windows-applicatie class HalloWin2 { static void Main ( ) { HalloForm scherm; scherm; scherm = new HalloForm( ); ); Application.Run(scherm); class HalloForm : Form { public HalloForm( ) { aanroep van de constructor methode subklasse is een gespecialiseerde versie this.text = "Hallo"; this.backcolor = Color.Yellow; this.size = new Size(200,100); definitie van de constructor methode
Windows-applicatie class HalloForm : Form { public HalloForm( ) { this.text = "Hallo"; this.backcolor = Color.Yellow; this.size = new Size(200,100); Label groet; groet = new Label( ); groet.text = "Hallo allemaal"; groet.location = new Point(30,20); this.controls.add(groet);