Het gebruik van DirectPlay bij OGO 2.3
|
|
- Julia Lemmens
- 5 jaren geleden
- Aantal bezoeken:
Transcriptie
1 rh271 0 Het gebruik van DirectPlay bij OGO Inleiding De objectklasse DXPlay biedt primitieven waarmee een collectie processen een (zogenaamde) groep kunnen vormen. Ieder proces dat aldus tot een groep behoort kan vervolgens berichten versturen naar ieder van de andere processen in dezelfde groep. Communicatie tussen de processen in een groep verloopt dus paarsgewijs. De samenstelling van een groep staat aan alle processen in de groep ter beschikking. De processen kunnen zich in verschillende machines bevinden; deze machines zijn dan met elkaar verbonden via een netwerk. DXPlay verzorgt de communicatie via dit netwerk. In het vervolg gaan we er van uit dat ieder proces zich in een eigen machine bevindt. Voor het gebruik van DXPlay volstaat, per groepslid, het gebruik van slechts één object uit deze klasse. Hiertoe is het voldoende één variabele van type DXPlay in het programma te declareren. In het vervolg noemen we deze variabele DXGroup. Dit is een lokale variabele van het proces: ieder proces in de groep heeft dus een eigen variabele DXGroup, waarin voor het proces de samenstelling van de groep wordt geadministreerd. 1 Protocol Ieder proces doorloopt drie fasen: toetreding tot de groep, het eigenlijke spel waarin de processen in de groep met elkaar communiceren, en uittreding uit de groep. Het (eigenlijke) spel kan pas nen na eindiging van de toetredingsfase. Omdat de onderliggende netwerkcommunicatie asynchroon is, is eindiging van de toetredingsfase echter niet eenvoudig detecteerbaar. Hiermee kan op allerlei manieren rekening worden gehouden: 0. Het van het spel wordt in elk proces gesynchoniseerd door middel van een dialoogje met de externe gebruiker van (de machine van) het proces. De gebruiker sluit dit dialoogje pas als hem duidelijk is dat alle processen zijn toegetreden. Een mogelijke variant hierop is dat zo n dialoogje met slechts één proces plaatsvindt en dat de andere processen een speciaal start -bericht van dit ene proces afwachten. 1. Via een openingsdialoogje wordt aan elk proces meegedeeld hoe groot
2 rh271 1 de groep zal zijn; het proces t nu pas aan het spel als de geadministreerde groep de aldus ingegeven omvang heeft. Het als constante in het programma opnemen van de groepsgrootte is niet wenselijk: het feitelijke aantal spelers moet variabel zijn. 2. Het eigenlijke spel is zo ingericht dat er tijdens het spel nog processen dat is: spelers kunnen toetreden. Dit is bepaald niet gemakkelijk correct te programmeren en wordt daarom afgeraden. De beschrijving in de volgende paragrafen is gebaseerd op het gebruik van fasesynchronisatie en dus op de veronderstelling dat de samenstelling van de groep tijdens het eigenlijke spel niet wordt gewijzigd. 2 Groepsadministratie De objectvariabele DXGroup heeft een attribuut Players waarvan de waarde een lijst van procesbeschrijvingen is. (In het jargon van DirectPlay heten de processen die tot één groep behoren players.) De lijst Players representeert derhalve de hele groep: ieder proces in de groep komt er één keer in voor, ook het proces waartoe DXGroup zelf behoort. Ieder proces in de groep heeft een variabele DXGroup en dus heeft ieder proces in de groep een groepslijst DXGroup.Players. De volgorde waarin de processen in deze lijst voorkomen is niet gespecificeerd; daarom mag niet worden aangenomen dat deze volgorde in alle processen dezelfde zou zijn! De groepslijst Players heeft een integer attribuut Count dat de lengte van de lijst (en dus de omvang van de groep) weergeeft. Verder zijn de elementen van de lijst genummerd vanaf 0 tot en zonder Count : aldus is Players[ i] de beschrijving van het groepslid op positie i in de lijst, voor 0 i<count. (Deze nummering vormt zo dus een lokale naamgeving die per proces anders kan zijn! van de groepsleden.) De elementen van de lijst Players zijn objecten van type TDXPlayPlayer. Ieder object van dit type heeft een attribuut ID dat het door het object voorgestelde proces identificeert. Dit wordt uitsluitend gebruikt om de bestemming van een te verzenden bericht aan te geven; bij ontvangst van berichten wordt de afzender weergegeven door een object van type TDXPlayPlayer 0. Verder heeft zo n object een attribuut Name, vantype string, dat bij het toetreden tot de groep wordt geïnitialiseerd met de in de openingsdialoog zie volgende paragraaf opgegeven (externe) spelersnaam. Het attribuut 0 Hoezo, inconsequent?
3 rh271 2 Name kan, bijvoorbeeld, worden gebruikt om de spelersnaam op het scherm af te beelden. Het versturen van een bericht naar het groepslid met lokaal nummer i, met 0 i < DXGroup.Players.Count, komt derhalve neer op het versturen van een bericht naar het proces DXGroup.Players[ i].id. 3 Toetreding Ten behoeve van de toetreding heeft DXGroup als attribuut een procedure 1 Open en een event genaamd OnOpen. De procedure Open heeft geen parameters. Na uitvoering van DXGroup.Open maakt het proces deel uit van de groep en is de verwerking hiervan in de groepsadministratie van alle groepsleden in gang gezet; deze verwerking hoeft op zo n moment echter nog niet te zijn voltooid. De voltooiing van (de administratieve afwikkeling van) de toetreding wordt aan het toegetreden proces teruggemeld via het event OnOpen. Zodra dit event optreedt is de groepsadministratie van het toegetreden proces geïnitialiseerd. Voor het aan de andere groepsleden signaleren van een toetreding is er een event OnAddPlayer. De betekenis hiervan is dat er een proces tot de groep is toegetreden. In de aan dit event gebonden afhandelingsprocedure representeert de parameter Player het nieuw toegetreden proces. Tevens geldt dat, ten tijde van het optreden van de event OnAddPlayer, de waarde van deze parameter al in de groepsadministratie DXGroup.Players is opgenomen. Dit behoeft men dus niet zelf te programmeren! Dit event wordt getriggerd bij alle leden van de groep, het zojuist toegetreden proces incluis. Het uiteindelijke effect van DXGroup.Open is dus dat het nieuwe lid in de groepsadministratie van alle groepsleden voorkomt, dat bij alle groepsleden het event OnAddPlayer is getriggerd en dat bij het nieuwe groepslid het event OnOpen is getriggerd. Als deze events worden gebruikt om gegevens over de groepsleden te verzamelen, dient men er dus rekening mee te worden gehouden dat bij het nieuwe groepslid beide events worden getriggerd, in een niet nader gespecificeerde volgorde. De uitvoering van DXGroup.Open veroorzaakt ook een openingsdialoog met de gebruiker waarin het te gebruiken netwerkprotocol kan worden ingesteld altijd IPX en waarin de naam van de speler kan worden ingevoerd; deze naam wordt toegekend aan het Name -attribuut van alle objecten die deze speler representeren. 1 in OO-jargon: methode
4 rh Representatie van berichten Een lid van de groep kan berichten zenden aan elk lid van de groep. Vaak zal het voorkomen dat er berichten van verschillende typen worden gebruikt. Om berichten aan de ontvangstzijde naar type te kunnen onderscheiden biedt DirectPlay een (primitieve) faciliteit. In het programma kunnen, zoveel als wenselijk, definities voor berichttypen worden opgenomen. Om genoemde faciliteit te kunnen gebruiken moet elk berichttype een recordtype zijn waarvan het eerste veld type DWORD heeft. Het (Delphi-)type DWORD kan geheeltallige waarden bevatten (en heeft de eigenschap dat het geheugenbeslag ervan in alle machines binnen de groep gelijk is, zodat ondubbelzinnige communicatie mogelijk is). Dit eerste veld van zo n record wordt gebruikt om het berichttype aan te geven; het ligt dan ook voor de hand dit eerste veld MessType (of iets dergelijks) te dopen. Voor het coderen van berichttypen is oplopende nummering het gemakkelijkst; via een constantendefinitie kan men deze nummers aan namen binden. Met het oog op de snelheid van berichtenverzending wordt aanbevolen de gebruikte berichttypen redelijk klein te houden. voorbeeld: Hier zijn definities voor vier typen berichten, voor het verzenden van een leeg bericht, een enkel geheel getal, twee gehele getallen, en een rijtje van maximaal 40 characters: const EMP MESS = 0; INT MESS = 1; INT2 MESS = 2; STR MESS = 3; ML = 40; type MyString = array [0..ML-1] of char; TDXEmpMess = record MessType: DWORD; TDXIntMess = record MessType: DWORD; Value: Integer; TDXInt2Mess = record MessType: DWORD; Val0,Val1: Integer;
5 rh271 4 TDXStrMess = record MessType: DWORD; Len: Integer; Data: MyString; Bij berichten van type TDXEmpMess wordt het veld MessType altijd geïnitialiseerd met de constante EMP MESS, bij type TDXIntMess wordt altijd INT MESS gebruikt, enzovoort. Een invariant van alle berichten van type TDXStrMess zal vermoedelijk zijn: 0 Len ML. opmerking: Delphi kent een standaard datatype string ; omdat dit is geïmplementeerd met behulp van pointers kunnen velden van type string echter niet in berichttypen worden gebruikt: het verzenden van pointers is zinloos. 5 Zenden De DirectPlay procedures voor zenden en ontvangen van berichten hebben een parameter van het type pointer om berichten over te dragen. Daarom moeten in de programma s waarin deze zend- en ontvangprocedures worden gebruikt pointervariabelen worden gedeclareerd. Voor verzending van berichten kan hiertoe voor ieder berichttype een pointervariabele van overeenkomstig type worden gebruikt. Bij ontvangst van een bericht is niet (syntactisch) bekend welk berichttype het zal hebben; hiervoor wordt het algemene type Pointer gebruikt en de (al genoemde) DirectPlay faciliteit om berichttypen te onderscheiden. Dit wordt met voorbeelden verduidelijkt. voorbeeld: Voor sommige van de in het vorige voorbeeld opgevoerde berichttypen geven we hier een procedure om een bericht van zo n type aan een proces dest, van type TDXPlayPlayer, te zenden. Om zo n procedure toe te passen op element nummer i van de groepslijst vult men voor dest dus DXGroup.Players[ i] in. De Delphi-procedure GetMem is vergelijkbaar met new in standaard Pascal, zij het dat GetMem een extra parameter voor de afmeting van de te creëren variabele heeft; met behulp van de standaardfunctie SizeOf kan deze afmeting uit het berichttype worden bepaald. De Delphi-procedure FreeMem is de inverse van GetMem.
6 rh271 5 procedure SendEmpty(dest: TDXPlayPlayer); { send an empty message to player "dest" } var mess: ^TDXEmpMess; size: Integer; size := SizeOf(TDXEmpMess) ; GetMem(mess,size) ; try mess^.messtype := EMP MESS ; DXGroup.SendMessage(dest.ID, mess, size) finally FreeMem(mess) end end {SendEmpty}; procedure SendIntegers(x,y: Integer; dest: TDXPlayPlayer); { send "x" and "y" to player "dest" } var mess: ^TDXInt2Mess; size: Integer; size := SizeOf(TDXInt2Mess) ; GetMem(mess,size) ; try mess^.messtype := INT2 MESS ; mess^.val0 := x ; mess^.val1 := y ; DXGroup.SendMessage(dest.ID, mess, size) finally FreeMem(mess) end end {SendIntegers}; procedure SendMyString(n: Integer; s: MyString; dest: TDXPlayPlayer); { send "s[0..n)" to player "dest" } { PRE: 0 <= n <= ML } var mess: ^TDXStrMess; size: Integer; size := SizeOf(TDXStrMess) ; GetMem(mess,size) ; try mess^.messtype := STR MESS ; mess^.len := n ; mess^.data := s ; DXGroup.SendMessage(dest.ID, mess, size) finally FreeMem(mess) end end {SendMyString};
7 rh Ontvangen Bij aankomst van een bericht wordt het event OnMessage getriggerd en wordt de hieraan gebonden procedure uitgevoerd. Als er meerdere berichttypen worden gebruikt dient in deze procedure het gevalsonderscheid naar berichttypen te worden gemaakt. (Zelfs als er maar één berichttype wordt gebruikt kost het weinig om dit ene type te controleren!) De afhandelingsprocedure voor OnMessage heeft een parameter van het algemene en abstracte type Pointer, die het ontvangen bericht voorstelt. Om dit bericht correct te interpreteren moet het bericht worden opgevat als een bericht van het juiste type. Als mess zo n pointer is, is messˆ het bericht zelf; door er de naam van het betreffende berichttype op toe te passen, als ware het een functie, wordt dit bericht verondersteld van dat type te zijn 2 en kunnen de bij dat type behorende operaties worden toegepast. voorbeeld: Door TDXEmpMess(messˆ) wordt messˆ opgevat als een leeg bericht, door TDXStrMess(messˆ) wordt messˆ opgevat als een stringbericht, enzovoort. Deze manier van type-interpretatie is alleen correct als het bericht ook daadwerkelijk van het juiste type is. Om dit te garanderen moet het eerste recordveld, dat immers het berichttype bevat, worden geïnspecteerd. Hiertoe bevat DXPlay een functie DXPlayMessageType die, bij toepassing op een pointer naar enig bericht, het type van dat bericht oplevert. Als mess een pointer naar een bericht is, is DXPlayMessageType(mess) de waarde messˆ.messtype, dat is, het type van het bericht messˆ. (Dit vereist natuurlijk wel dat alle gebruikte berichttypen een eerste veld hebben dat het berichttype bevat.) voorbeeld: Het ligt voor de hand dat we voor elk mogelijk berichttype een procedure schrijven voor de afhandeling van ontvangen berichten van dat type. Als we dat doen bestaat de algemene, aan het event OnMessage gebonden, afhandelingsprocedure slechts uit een gevalsonderscheid naar berichttypen, plus aanroepen van de betreffende procedures. Voor de berichttypen uit de vorige voorbeelden zou de afhandelingsprocedure er zó uit kunnen zien de parameter sdr kan worden genegeerd; de parameter size lijkt ook overbodig : 2 Dit staat bekend als type casting. Deze programmeerpraktijk is dubieus maar, mits zorgvuldig toegepast, wel efficiënt.
8 rh271 7 procedure AnyMessage(sdr: TObject; sndr: TDXPlayPlayer; mess: Pointer; size: Integer); var s: MyString; x,y,n: Integer; case DXPlayMessageType(mess) of EMP MESS: ReceiveEmpty(sndr) INT MESS: x := TDXIntMess(mess^).Value ; ReceiveInteger(sndr, x) INT2 MESS: x := TDXInt2Mess(mess^).Val0 ; y := TDXInt2Mess(mess^).Val1 ; ReceiveIntegers(sndr, x, y) STR MESS: n := TDXStrMess(mess^).Len ; s := TDXStrMess(mess^).Data ; ReceiveMyString(sndr, n, s) else { something is wrong: }... end {case} end {AnyMessage}; Hierbij zijn de procedures waarvan de naam t met Receive dus de voor alle berichttypen voorziene afhandelingsprocedures. Merk op dat het terugzenden van een leeg bericht, bij wijze van ontvangstbevestiging, eenvoudig kan worden toegevoegd als een aanroep SendEmpty(sndr), waar dat maar gewenst is. 7 Uittreding Na beëindiging van het spel treedt een proces uit de groep door aanroep van de procedure DXGroup.Close. Dit leidt uiteindelijk tot het triggeren van een event OnClose bij het uitgetreden proces en leidt bij elk van de overblijvende groepsleden tot het triggeren van een event OnDeletePlayer. Deze events zijn alleen van belang als processen tijdens het eigenlijke spel kunnen uittreden.
9 rh271 8 Als het spel voor alle groepsleden tegelijkertijd eindigt hoeft voor deze events niet in afhandelingsprocedures te worden voorzien. 8 Overige attributen De objectvariabele DXGroup heeft nog een attribuut LocalPlayer, behorend tot type TDXPlayPlayer, dat het proces representeert waartoe DXGroup behoort. Ieder object van type TDXPlayPlayer heeft nog een boolean attribuut RemotePlayer dat equivalent is met het proces is niet LocalPlayer 3. Derhalve zijn de volgende relaties invariant: DXGroup.LocalPlayer.RemotePlayer, en, voor alle i met 0 i < DXGroup.Players.Count : DXGroup.Players[ i].remoteplayer DXGroup.Players[ i] DXGroup.LocalPlayer. Tenslotte geldt dat er een (unieke) i is, met 0 i < DXGroup.Players.Count, waarvoor geldt: DXGroup.Players[ i] = DXGroup.LocalPlayer. Eindhoven, 26 april 2001 Rob R. Hoogerwoord faculteit der Wiskunde en Informatica Technische Universiteit Eindhoven postbus MB Eindhoven 3 Merk op hoe onhandig de identifiers hier zijn gekozen: RemotePlayer is een boolean en LocalPlayer is een procesobject. Pas dus op!
UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS
UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie
Nadere informatieToets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00
Toets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00 TU/e Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica (Na de toets gecorrigeerde versie) PROBLEEM: Sleutels Lees
Nadere informatieProgrammeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff
Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 8 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Verdelen
Nadere informatieOntwerp van Algoritmen: opgaven weken 3 en 4
0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima
Nadere informatieVariabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
Nadere informatierh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus:
rh276a 0 Een paar praktische stellinkjes 0 Standaardeindiging stelling (standaardeindiging 0) : Het volgende programmafragment eindigt, heeft als repetitie-invariant 0 n n N en als variante functie N n
Nadere informatieOpmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ 5 spelers, 2 dobbelstenen Probleem met dobbelspel College 1 Per ronde werpt elke speler 1 Kees Hemerik Tom Verhoeff Technische Universiteit
Nadere informatieProbleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ College 1 5 spelers,2 dobbelstenen Probleem met dobbelspel Per ronde werpt elke speler 1 Tom Verhoeff Technische Universiteit Eindhoven
Nadere informatieTentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieProgrammeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:
Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen
Nadere informatie{ specificatie (contract) en toelichting }
Programmeren Blok B Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 7 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering &
Nadere informatieProgrammeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
Nadere informatie{ specificatie (contract) en toelichting }
Programmeren Blok A Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 5 Kees Hemerik Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software
Nadere informatieMethode: Verdeel en heers
Programmeren Blok B Thema: Complexiteit beteugelen http://www.win.tue.nl/ wstomv/edu/ip05/ College Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering
Nadere informatieHOE TEKEN IK EEN OMGEVINGSMODEL
HOE TEKEN IK EEN OMGEVINGSMODEL MATTIAS DE WAEL 1. Inleiding Om de allereenvoudigste Scheme expressies te begrijpen volstaat het substitutiemodel. Het substitutiemodel verondersteld het bestaan van een
Nadere informatieHoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel
Nadere informatie9 Meer over datatypen
9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,
Nadere informatieObjective-C Basis. 23 april 2005, Eindhoven Patrick Machielse
Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd
Nadere informatieStacks and queues. Hoofdstuk 6
Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked
Nadere informatieStacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49
Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen
Nadere informatieSQL datadefinitietaal
SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen
Nadere informatieTurbo Pascal (deel 1)
Turbo Pascal (deel 1) MSX CLUB MAGAZINE 34 Erik van Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 Erik van Bilsen leert u het klappen van de Turbo Pascal zweep. Turbo Pascal toepassen Deze
Nadere informatieUitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur
Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));
Nadere informatieDatatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.
Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort
Nadere informatieUitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur
Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf
Nadere informatieTentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieInleiding C++ Coding Conventions
Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,
Nadere informatieSyntax- (compile), runtime- en logische fouten Binaire operatoren
Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in
Nadere informatieVakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be
Nadere informatieVorig college. IN2505-II Berekenbaarheidstheorie College 4. Opsommers versus herkenners (Th. 3.21) Opsommers
Vorig college College 4 Algoritmiekgroep Faculteit EWI TU Delft Vervolg NDTM s Vergelijking rekenkracht TM s en NDTM s Voorbeelden NDTM s 20 april 2009 1 2 Opsommers Opsommers versus herkenners (Th. 3.21)
Nadere informatie4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e
4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,
Nadere informatieUniversiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren
Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatieNAAM: Programmeren 1 Examen 29/08/2012
Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je
Nadere informatieToets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30
Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30 Teneinde misverstanden over de syntactische geldigheid van code fragmenten in dit tentamen te voorkomen, zal altijd worden gesproken
Nadere informatieHOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren
HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet
Nadere informatiePascal uitgediept Data structuren
Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur
Nadere informatieDatastructuren: stapels, rijen en binaire bomen
Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)
Nadere informatieZelftest Programmeren in Java
Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test
Nadere informatieProgrammeren in Java les 3
4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een
Nadere informatieTentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld
Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek
Nadere informatie1 Inleiding in Functioneel Programmeren
1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp
Nadere informatieTweede college algoritmiek. 12 februari Grafen en bomen
College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)
Nadere informatieGenetische algoritmen in Java met JGAP
Genetische algoritmen in Java met JGAP Inleiding JGAP, uitgesproken als "jee-gep", is een framework voor het implementeren van genetische algoritmen en het gebruik ervan in Java. Genetische algoritmen
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatiepublic boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber
Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden
Nadere informatieOntwerp van Informatiesystemen
1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents
Nadere informatieTotaal
Programmeren Blok A Wat was het doel? http://www.win.tue.nl/ wstomv/edu/2ip05/ College 2 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology
Nadere informatieAls een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
Nadere informatieAanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur
Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten
Nadere informatieAccess voor beginners - hoofdstuk 25
Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.
Nadere informatieTCP-IP message van partner PLC naar Alarmsysteem met als inhoud alarmen en analoge waarden in Format code 01.
TCP-IP message van partner PLC naar Alarmsysteem met als inhoud alarmen en analoge waarden in Format code 01. De TCP-IP buffer is een byte-array van 1000 byte lang. byte Omschrijving voorbeeld 0 TCP/IP
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen
Nadere informatieProgrammeren in Java 3
26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class
Nadere informatieTweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur
Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde
Nadere informatieDerde Delphi Programma verkenning
Derde Delphi Programma verkenning In deze opdracht gaan we een aantal typische componenten en gegevenstypen van Windows en Delphi verkennen. We bouwen een eenvoudige rekenmachine en ondertussen leer je
Nadere informatieCreatief met Claim Check VNSG Tips & Tricks juni 2017
1 Creatief met Claim Check VNSG Tips & Tricks juni 2017 Auteur: Wouter Luijten Datum: 29-05-2017 2 Inleiding Het Claim-Check pattern is een pattern dat geïmplementeerd kan worden in SAP Netweaver PO ten
Nadere informatieWaarden persistent (blijvend) opslaan gaat in bestanden (files). Lege tekst: eof
Programmeren Blok A Persistente opslag van waarden http://www.win.tue.nl/ wstomv/edu/2ip05/ College 4 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering
Nadere informatieZeef van Eratosthenes
Zeef van Eratosthenes [ Waarschuwing! Teveel wiskunde kan schade veroorzaken aan jouw interesse voor de informatica. ] De Zeef van Eratosthenes (ca. 240 v. Chr.) is een methode waarmee je alle priemgetallen
Nadere informatieTutorial 1, Delphi: Geldspraak
Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7,
Nadere informatie6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.
6.3 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik in het groepsvak Macro op
Nadere informatieEen inleiding in de Unified Modeling Language 67
Een inleiding in de Unified Modeling Language 67 1.4.5. Toepassing 5: Klasse Kaart. De opdracht bestaat erin algemene klassen te maken zodanig dat het mogelijk wordt om het even welk kaartspel te maken.
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is
Nadere informatieUniforme Pensioen Aangifte (UPA)
Beschrijving Koppelvlak Uniforme Pensioen Aangifte (UPA) De standaard voor het digitaal uitwisselen van werknemer- en salarisgegevens tussen werkgevers, administratiekantoren en pensioenuitvoerders. Uitgave
Nadere informatieLab Webdesign: Javascript 3 maart 2008
H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen
Nadere informatiehttp://www.liacs.nl/home/kosters/java/
sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/
Nadere informatieUitgebreide uitwerking Tentamen Complexiteit, mei 2007
Uitgebreide uitwerking Tentamen Complexiteit, mei 007 Opgave. a. Een beslissingsboom beschrijft de werking van het betreffende algoritme (gebaseerd op arrayvergelijkingen) op elke mogelijke invoer. In
Nadere informatieHOOfDsTuk 1 Objecten en klassen
HOOfDsTuk 1 Belangrijkste concepten in dit hoofdstuk: objecten klassen methodes parameters We springen meteen in het diepe en maken een begin met onze behandeling van objectgeorienteerd programmeren. Om
Nadere informatieDatastructuren Werkcollege Intro
Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs
Nadere informatieINFITT01 Internettechnologie WEEK 2
INFITT01 Internettechnologie WEEK 2 Programma Contexts Listeners Scope/Attributes Thread safety Taken container Een servlet draait in een container (servlet container). De container, die ten dienste van
Nadere informatieIn de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.
4. Array s Een array is een geïndexeerde variabele. Deze zin zal de nodig vragen oproepen, waarop enige uitleg van toepassing is. Met variabelen hebben we al kennis gemaakt. In een variabele kun je iets
Nadere informatieAchtste college algoritmiek. 8 april Dynamisch Programmeren
Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst
Nadere informatieXelion ESPA koppeling Handleiding Beheer V1.6
Xelion ESPA koppeling Handleiding Beheer V1.6 van de Xelion ESPA koppeling. Dit document is bedoeld voor beheerders en operators Inhoud 1 Overzicht... 1 2... 2 2.1 Espa apparaat toevoegen... 4 2.1.1 ESPA
Nadere informatie6.2 VBA Syntax. Inleiding Visual Basic
6.2 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik op Maken Macro s en Code -
Nadere informatieZelftest Programmeren in PL/I
Zelftest Programmeren in PL/I Document: n0830test.fm 26/03/2012 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN PL/I m de voorkennis
Nadere informatieOrganiseer uw verschillende SOAP services in één scenario
1 Organiseer uw verschillende SOAP services in één scenario Wouter Luijten wouterluijten@creetion.com 2 Introductie Tijdens de implementatie van een proces heeft u vaak te maken met een veelvoud aan services.
Nadere informatieProgrammeren in Java 3
2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang
Nadere informatieZelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
Nadere informatieNHibernate als ORM oplossing
NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een
Nadere informatieInformatica: C# WPO 7
Informatica: C# WPO 7 1. Inhoud 1D-arrays, Lijsten 2. Oefeningen Demo 1: Vul de 1D-array Demo 2: Stringreplace Demo 3: Vul de lijst Demo 4: Debug oplossingen demo s 1, 2 en 3 A: Array reversal A: Gemiddelde
Nadere informatieVisual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
Nadere informatieEen gelinkte lijst in C#
Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk
Nadere informatieHoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 2010 Express, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Vespucci College, Marnix Gymnasium Rotterdam, december 2011 Hoofdstuk
Nadere informatieEE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college
EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-201, e college Arjan van Genderen, Computer Engineering 4-12-2012 Delft University of Technology Challenge the future Hoorcollege Arrays, Pointers en Strings
Nadere informatieIn deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen, namelijk het gemis aan Random Access Files.
Turbo Pascal deel 7 Erik van Bilsen MSX Club Magazine 40 Scanned, ocr ed and converted to PDf by HansO, 2001 In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen,
Nadere informatieGegevensopslag in databouwstenen
Gegevensopslag in databouwstenen 1 pagina 1 Databouwstenen (DB) OB1 Functie FC10 Functie FC20 Toegang tot alle bouwstenen Globale data DB20 Functiebouwsteen FB1 Instantie-DB van FB1 Instantiedata DB5 2
Nadere informatieDerde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur
Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde
Nadere informatieBouwstenen voor PSE. Datatypes en Datastructuren
Bouwstenen voor PSE Datatypes en Datastructuren Definitie Datatype Klasse van dataobjecten tesamen met operaties om ze te construeren, te manipuleren en te verwijderen. Een datatype omvat een specificatie
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde
Nadere informatieLeren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie
Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieProgrammeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019
Programmeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019 Inleiding Al meer dan twintig jaar organiseert Karlijn aan het eind van het jaar een toernooi bij de volleybalclub, het zogenaamde oliebollentoernooi.
Nadere informatieData Definition Language
Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen
Nadere informatieDatastructuren: stapels, rijen en binaire bomen
Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:
Nadere informatieTechnical Note. API Beschrijving Aangetekend Mailen
AUTHOR APPROVED Technical Note API Beschrijving Referentie: API beschrijving AM Versie: 0.0.7 Datum: 2015-07-24 Aangetekend Bellen B.V. Computerweg 5 Postbus 8307 3503 RH Utrecht T: +31 346 581 731 support@aangetekendmailen.nl
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieDeel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,
Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt
Nadere informatieLes 15 : updaten van gegevens in de database (deel2).
Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken
Nadere informatie