Semantiek & Correctheid Thread synchronisatie & communicatie
|
|
- Adam Michiel Martens
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 emantiek & Correctheid Thread ynchroniatie & communicatie Naam: Chritian Gilien ( ) Maurice amulki (034239) Datum: 30 juni 2004 Verie: 2.5
2 Inhoudopgave Inhoudopgave...2 Inleiding...3 Thread ynchroniatie en communicatie...4 Algemeen... 4 Meage Queue... 4 Mailboxe... 5 ignal... 5 yntax & O emantiek van While...6 Meage Queue in While...8 ignal in While...0 Race Condition & Deadlock...2 Race Condition... 2 Deadlock... 2 Meage Queue veru ignal...5 While veru ignal...20 While veru Meage Queue...24 Gödel codering Gödel codering : een element toevoegen Gödel codering : een element uitlezen Concluie...28 Referentie...29 emantiek & Correctheid: Thread ynchroniatie & communicatie 2/29
3 Inleiding Dit verlag i gechreven naar aanleiding van de opdracht emantiek in het wild voor het vak emantiek en Correctheid. Het onderwerp van dit verlag i ynchroniatie en communicatie van thread en bechouwt enkele bekende contructie voor het ynchronieren en communiceren van thread in combinatie met de taal While. We vragen on af wat er voor nodig i om de taal While uit te breiden met zogenaamde meage queue en ignal. We vergelijken meage queue met ignal en vragen on af of ignal meerwaarde hebben ten opzichtte van meage queue. We bekijken de mogelijkheid om in While gebruik te maken van meage queue zonder dat we de emantiek van While uitbreiden. We gebruiken een verie van While waarin thread worden geïmplementeerd met behulp van het par tatement. We negeren zoveel mogelijk alle potentiële problemen van thread die voor on niet van belang zijn. (ignal worden vaak gebruikt om deze te voorkomen). Omdat het par tatement alleen in O kan worden uitgedrukt wordt er in dit verlag dan ook alleen gewerkt met O emantiek. Voor het lezen van dit verlag i er enige voorkenni van thread vereit. emantiek & Correctheid: Thread ynchroniatie & communicatie 3/29
4 Thread ynchroniatie en communicatie Algemeen Thread zijn delen van programma die onafhankelijk en parallel aan andere tukken programma kunnen lopen. Een bekend probleem bij thread i de communicatie en ynchroniatie ervan. Het i immer erg handig om meerdere thread aan een gezamenlijke taak te laten werken. Hierbij i het belangrijk dat thread elkaar niet in de weg lopen door bijvoorbeeld gedeelde data op verkeerde momenten te manipuleren. In principe zijn er twee dingen die we graag willen hebben:. we willen thread afhankelijk van elkaar taken laten uitvoeren (in een bepaalde volgorde). 2. we willen dat thread (op veilige wijze) data met elkaar kunnen delen. Om boventaande zaken te verwezenlijken zijn er in veel talen bepaalde contructie ontwikkeld. We zullen van deze contructie in dit verlag niet aantonen dat zij inderdaad deze zaken verwezenlijken. Meage Queue Meage queue worden gebruikt om verchillende thread te ynchronieren en met elkaar te laten communiceren. Een meage queue i een lijt waar een thread een waarde in kan zetten. Een andere thread (of dezelfde, maar dat i niet zo nuttig) kan deze waarde er weer uit halen. De waarde die er al eerte in werd gezet wordt er ook weer al eerte uit gehaald; het zogenaamde FIFO (Firt-In-Firt-Out) principe. Wanneer een thread du gegeven van een andere thread nodig heeft zal hij in de meage queue kijken of de gegeven al bechikbaar zijn. Al de gegeven niet bechikbaar zijn dan zal de thread wachten. Grafich kan men een meage queue al volgt weergeven: thread ending thread meage queue F I F O thread receiving thread emantiek & Correctheid: Thread ynchroniatie & communicatie 4/29
5 Mailboxe Een mailbox i eigenlijk een eenvoudige meage queue waarbij er lecht ruimte i voor bericht. De meage queue bevat du precie element. thread ending thread mailbox thread receiving thread ignal Een mechanime dat veel lijkt op meage queue i ignal. De term ignal wordt in de literatuur voor velerlei verchillende zaken gebruikt. Wij vertaan onder ignal het volgende mechanime: Een thread kan een ignal verturen naar een andere thread. De andere thread kan wachten op een bepaald ignal. thread thread ending thread ignal receiving thread De bechreven contructie komen het bete tot hun recht wanneer er lokale en globale variabele omgevingen zijn. Iedere thread heeft zijn eigen lokale variabele omgeving en er i een globale variabele omgeving waar alle thread aan kunnen. emantiek & Correctheid: Thread ynchroniatie & communicatie 5/29
6 yntax & O emantiek van While De yntax van de taal While ziet er al volgt uit: :: = x : = a kip ; 2 if b then ele 2 while b do De O emantiek van de taal While ziet er al volgt uit: [ a o] x : = a, [ x A[ a ] ] [ kip o] kip, [ comp o] ;, 2, ', ' ' ; 2, ' 2 [ comp o] ;, ' 2, 2, ' tt [ if o] if b then ele 2,, if B[ b ] = tt ff [ if o] if b then ele 2, 2, if B[ b ] = ff [ while o] while b do, if b then ( ; while b do ) ele kip, emantiek & Correctheid: Thread ynchroniatie & communicatie 6/29
7 Voor het gebruik van thread in While i er het par tatement. [ par o], par 2, ', ' ' par 2, ' [ par o] 2, ' par 2, 2, ' [ par o] 3 par 2, 2, 2', ' par 2', ' [ par o] 4 2, ' par 2,, ' emantiek & Correctheid: Thread ynchroniatie & communicatie 7/29
8 Meage Queue in While Om een meage queue te bechrijven moeten we eert een datatructuur bechrijven waarin we meerdere waarden kunnen oplaan. Deze datatructuur moet werken volgen het FIFO principe. We noemen dit datatype een queue. We breiden de yntax van While uit met een queue declaratie: ::=... queue q Q Met Q :: = ε Q : a Een queue zien we al een queue, gevolgd door een numerieke waarde, of al leeg. Volgen boventaande yntax kun je een queue declareren door: queue q ::2:3 De emantiek van een queue declaratie ziet er al volgt uit: queue q Q, [ q Q] Queue variabelen worden gedeeld tuen thread. De verzamelingen van lokale variabelen voor thread zijn dijunct. We zullen deze declaratie in alle voorbeelden weglaten en aannemen dat de gebruikte queue al i toegevoegd aan de tate. Queue hoeven nooit verwijderd te worden; we nemen aan dat ze bij beëindiging van het programma automatich worden verwijderd. Om een element toe te voegen aan een queue introduceren we het volgende tatement: [ puh o] puh a q, [ q q : Α[ a ] ] Puh heeft 2 parameter: de numerieke waarde die op de queue geplaatt moet worden en de naam van de queue waarop de waarde geplaatt moet worden. De waarde wordt achteraan op de queue geplaatt waardoor het geheel werkt al een FIFO. In de praktijk zou zo n tatement al volgt gebruikt kunnen worden: puh 5 q emantiek & Correctheid: Thread ynchroniatie & communicatie 8/29
9 Om elementen van de queue af te halen introduceren we de pop functie. We gebruiken hier (a:q) al notatie voor een queue waarvan het eerte element (de head) a i en de ret (de tail) q i. [ pop o] pop q x, [ ( a : q) q][ x a] not_empty Pop heeft 2 argumenten. Het eerte argument i de naam van de queue waar we een element af willen halen. Het 2 e argument i een variabele waaraan de waarde die we van de queue halen aan zal worden toegekend. Wanneer de queue niet leeg i verwijderd pop het eerte item op de queue. Bijvoorbeeld: pop q c Waarna variabele c de waarde van het eerte element op de queue (q) heeft gekregen en dat eerte element van de queue i verwijderd. Wanneer de queue wel leeg i wordt er gewacht tot er een element op de queue komt. empty [ pop o] pop q x, pop q x, if q = ε Omdat dit in ommige gevallen niet i wat we willen. (tel er komt nooit meer een item op de queue, dan hebben we een hangend programma) introduceren we: empty [ trypop o] trypop q x, if q = ε not_empty [ trypop o] trypop q x, [ ( a : q) q][ x a] if q ε Met behulp van boventaande emantiek en yntax bechrijvingen hebben we nu meage queue in While. emantiek & Correctheid: Thread ynchroniatie & communicatie 9/29
10 ignal in While Een tweede communicatie en ynchroniatie middel voor thread zijn zogenaamde ignal. Een ignal kan een andere thread vertellen dat hij mag beginnen met het uitvoeren van bepaalde taken. Een ignal implementeren we in While aan de hand van de volgende yntax voor een ignal declaratie: ::=... newignal ig Met ig :: = a Een ignal implementeren we al een ignalnaam met een integer waarde. Een ignal heeft initieel de waarde 0 (fale). De emantiek : [ ig ] newignal ig, 0 We zullen deze declaratie in alle voorbeelden weglaten en aannemen dat het gebruikte ignal al i toegevoegd aan de verzameling van ignal variabelen. ignal hoeven nooit uit de tate verwijderd te worden, we nemen aan dat ze bij beëindiging van het programma automatich worden verwijderd. Een ignal verturen gaat doormiddel van het tatement ignal met al parameter de naam van het ignal. Hiermee wordt de waarde van het betreffende ignal op (true) gezet. [ ignal o] ignal ig, [ ig ] Boventaande emantiek maakt duidelijk dat een ignal niet opnieuw kan worden gebruikt, wanneer het ignal tatement nog een keer wordt aangeroepen blijft de waarde van het ignal op taan. emantiek & Correctheid: Thread ynchroniatie & communicatie 0/29
11 Wachten op een ignal gebeurt met het tatement wait met al parameter de naam van het ignal waarop gewacht moet worden. Wanneer de waarde van het ignal waarop gewacht wordt 0 (fale) i, dan blijft wait gewoon wachten. fale [ wait o] wait ig, wait ig, if A[ ig ] = 0 Wanneer de waarde van het ignal waarop gewacht wordt (true) i, dan wordt wait gewoon overgelagen. [ wait ] true o wait ig, if A[ ig ] = wait ignal, kip. wanneer A[ ignal ] = i du equivalent met het tatement Omdat we een ignal nu niet kunnen reetten maken we ook nog een reet tatement. Wanneer we bijvoorbeeld het volgende programma hebben: while true do wait ig; ; od Dan zal al hij eenmaal wordt uitgevoerd daarna oneindig vaak worden uitgevoerd omdat ignal ig, de waarde behoudt. [ reet o] reet ig, [ ig 0] In feite i dit du het tegenovergetelde van het ignal tatement. emantiek & Correctheid: Thread ynchroniatie & communicatie /29
12 Race Condition & Deadlock Race Condition Al thread met elkaar moeten communiceren dan i het noodzakelijk dat er geen race condition kunnen onttaan. In het dictaat van Nielon & Nielon i ondertaand voorbeeld opgenomen om te illutreren dat de volgorde van verwerking invloed kan hebben op het uiteindelijke reultaat. (x := ) par (x := 2; x := x + 2) Dit code voorbeeld kan drie verchillende reultaten voor de waarde van x hebben, namelijk 4, en 3. We zullen waar nodig naar dit probleem verwijzen al race condition. Deadlock We bekijken nu het volgende programma: ignal ig par wait ig In principe kan het nu voorkomen dat par continue het rechter tatement (wait ig) uitvoert waardoor on programma blijft hangen (deadlock). Om dit vervelende probleem te voorkomen paen we de emantiek van par aan voor die pecifieke gevallen waarin onze programma zouden kunnen blijven hangen. Wanneer par een wachtende pop of wait tegenkomt zal hij eert verder gaan met de andere thread. De orginele par emantiek: [ par o], par 2, ', ' ' par 2, ' [ par o] 2, ' par 2, 2, ' [ par o] 3 par 2, 2, 2', ' par 2', ' [ par o] 4 2, ' par 2,, ' emantiek & Correctheid: Thread ynchroniatie & communicatie 2/29
13 Uitbreidingen van par voor ignal: 2, 2', ' [ par ] 5 o if A[ ig ] = 0 wait ig; par 2, wait ig; par 2', ' 2, ' [ par ] 6 o if A[ ig ] = 0 wait ig; par 2, wait ig;, ' 2, 2', ' [ par ] 7 o if A[ ig ] = 0 ( wait ig) par 2, ( wait ig) par 2', ' 2, ' [ par ] 8 o if A[ ig ] = 0 ( wait ig) par 2, wait ig, ', ', ' [ par ] 9 o if A[ ig ] = 0 par wait ig; 2, ' par wait ig;, ' [ par ] 0 o if A[ ig ] = 0 par wait ig; 2, wait ig;, ', ' [ par ] o if A[ ig ] = 0 par wait ig,, ' ' par wait ig, ', ' [ par ] 2 o if A[ ig ] = 0 par wait ig, wait ig, ' 2, ' 2 emantiek & Correctheid: Thread ynchroniatie & communicatie 3/29
14 Het moge duidelijk zijn wat het idee bij deze regel i. Er zijn echter nog meer regel voor par (wanneer er bijvoorbeeld aan beide kanten een wait tatement voorkomt). Deze regel zijn nagenoeg equivalent aan de regel zoal hierboven bechreven en daarom laten we deze weg. Hetzelfde geldt voor de par regel waar pop tatement in voor komen. Ook deze regel zijn nu triviaal en daarom laten we ze weg. pecifiekere par regel hebben hier uiteraard voorrang op mindere pecifieke par regel. Bekijk het volgende programma: (wait ig) par x:=3 In een toetand waarin geldt [ ig ] = 0 en niet [ o] 4 par. A zal uiteraard [ o] 8 par van toepaing zijn We zullen vanaf nu verder werken met deze aangepate verie van par. emantiek & Correctheid: Thread ynchroniatie & communicatie 4/29
15 Meage Queue veru ignal De functionaliteit van meage queue komt zeer terk overeen met de functionaliteit van ignal. We zien dat de functionaliteit van ignal een ubet i van de functionaliteit van meage queue. Ondertaand voorbeeld illutreert dit: Voorbeeld a: ending thread: receiving thread: ignal ignal; par wait ignal; Hier wacht de receiving thread op een ignaal van de ending thread. Ditzelfde zouden we hebben kunnen doen met behulp van een meage queue: Voorbeeld b: ending thread: receiving thread: puh 0 queue; par pop queue x; Omdat we hier te maken hebben met atomaire tatement hoeven we geen rekening te houden met racecondition. We gaan bewijzen dat: en pop q x, ' wait ig, ' (telling a) puh 0 q, ' ignal ig, ' (telling b) Onder de aanname dat [ q] [ ig] ignal ig op meage queue q: ( [ q = ε ]) = ( A[ ig ] = 0) ( [ q ε ]) = ( A[ ig ] = ). Waarmee we een mapping bedoelen van emantiek & Correctheid: Thread ynchroniatie & communicatie 5/29
16 De telling a i onjuit. Dit kunnen we duidelijk maken door een tegenvoorbeeld. Voorbeeld 2a: ending thread: receiving thread: ignal ig; par while true do wait ig; od Wanneer we het recept van voorbeeld ook hier toepaen dan krijgen we het volgende programma: Voorbeeld 2b : ending thread: receiving thread: puh 0 queue; par while true do pop queue x; od Het i duidelijk dat dit programma niet equivalent i met het programma van voorbeeld 2a. Immer bij ieder uitgevoerd pop tatement wordt het bericht van de meage queue verwijderd. De enige manier om met meage queue een equivalent programma te chrijven i door oneindig veel berichten op de queue te plaaten of door na ieder pop tatement een puh uit te voeren. We paen onze tellingen aan en bewijzen: pop q x, ' wait ig, ' (telling 2a) Mit [ q = ε q = 0: ε ] [ q ] [ ig ] en puh 0 q, ' ignal ig, ' Mit [ q ] [ ig ] (telling 2b) emantiek & Correctheid: Thread ynchroniatie & communicatie 6/29
17 We bewijzen telling 2a. We bewijzen dat al: pop q x; puh 0 q, ' (*) dan ook wait ig, ' (**) Al: [ q = ε q = 0 : ε ] [ q ] [ ig ] We nemen aan (*) en bewijzen dat al de berekeningrij van (*) termineert, dan termineert ook de berekeningrij van (**) en de eindtoetanden van beide rijen zijn hetzelfde. Er zijn 2 mogelijkheden voor de berekeningrij van (*). We maken gevalondercheid: Geval [ pop o] not_empty pop gebruiken en we al aanname hebben dat de queue of leeg i of lecht element bevat weten we hoe de queue er initieel uit moet zien. Omdat we de regel [ o] not_empty pop q x; puh 0 q, not_empty { pop } puh 0 q, { puh o} [ q ( 0 : ε )] [ q ( a : ε )] [ q ε ][ x a] We zien verder dat de variabele x de waarde heeft gekregen die op de queue tond. We nemen voor x altijd een ongebruikte variabele die behalve hier verder nergen in on programma voorkomt en ook nooit meer gebruikt zal worden. Om deze reden kunnen we de variabele x al niet relevant voor de toetand bechouwen. emantiek & Correctheid: Thread ynchroniatie & communicatie 7/29
18 Voor wait maken we ook een berekeningrij beginnend in dezelfde toetand. Door ig moet zijn. onze aannamen zien we dat dat de toetand [ ] { wait true o} wait ig, [ ig ] [ ig ] Door onze aannamen kunnen we nu zien dat [ q ] = [ ig ] Geval 2[ pop o] empty { pop empty o}... pop q x; puh 0 q, pop q x; puh 0 q, [ q ε ] [ q ε ] Het i duidelijk dat deze berekeningrij looped. ε. Voor wait maken we weer een berekeningrij beginnend in dezelfde toetand. Door ig 0 moet zijn. onze aannamen zien we dat dat de toetand [ ] wait ig, { wait fale o} wait ig,... [ ig 0] [ ig 0] Deze berekingrij looped vanuit dezelfde toetand al de berekingrij voor (*). Dat deze toetanden hetzelfde zijn blijkt weer uit onze aannamen. En du (*) (**).? emantiek & Correctheid: Thread ynchroniatie & communicatie 8/29
19 Nu bewijzen we telling 2b. We bewijzen dat al: puh 0 q, ' dan ook ignal ig, ' (*) (**) We nemen aan (*) en bewijzen dat al de berekeningrij van (*) termineert, dan termineert ook de berekeningrij van (**) en de eindtoetanden van beide rijen zijn hetzelfde. 0 q, { puh o} puh [ q (0: q) ] Vanuit dezelfde toetand krijgen we volgen de regel [ ignal o] de berekeningrij: ignal ig, { ignal o} [ ig ] En volgen onze aannamen geldt [ q ( 0 : q) ] [ ig ] [ q (0 : q) ] = [ q ε ] =. Immer? emantiek & Correctheid: Thread ynchroniatie & communicatie 9/29
20 While veru ignal Het valt op dat de toegevoegde tatement voor ignal niet zo vreelijk bijzonder zijn en nogal wat overeenkomten vertonen met de originele tatement van While. Wellicht i het zo dat behalve het principe van variabelen in thread en variabelen tuen thread (lokale en globale variabelen) er weinig verchil i. In dat geval zouden er tatement in While moeten betaan die emantich equivalent zijn met ignal en wait. We bewijzen dat tate o while not b == do kip = o[ ] wait b (telling 3) Mit de ignal variabele b ook toegankelijk i voor tatement uit While. Nogmaal de O emantiek van het while tatement: [ whileo] while b do, if b then ( ; while b do ) ele kip, Eert bewijzen we dat al while not ( b == ) do kip, ' (*) dan ook wait b, ' (**) emantiek & Correctheid: Thread ynchroniatie & communicatie 20/29
21 We nemen aan (*) en bewijzen dat al de berekeningrij van (*) termineert, dan termineert ook de berekeningrij van (**) en de eindtoetanden van beide rijen zijn hetzelfde. De berekenigrij voor (*) kan op 2 manieren worden gemaakt. We maken een gevalondercheid. ff Geval [ if o] { while o} if not { if ff o } kip, while not ( b == ) do kip, { kip o } ( b == ) then ( kip; while not ( b == ) do kip) ele kip, Nu maken we een berekeningrij voor (**) vanuit dezelfde toetand, B not ( b == ) = en du A [ b ] =. gebruikmakend van het gegeven [ ] ff wait b, { wait true } Waarmee we zien dat al (*) begint vanuit en gaat naar, dan gaat ook (**) vanuit naar. (waarbij in dit geval = ) emantiek & Correctheid: Thread ynchroniatie & communicatie 2/29
22 tt Geval 2 [ if o] In het 2 e geval geldt du A[ b ] = 0 maken: en kunnen we de volgende berekeningrij while not ( b == ) do kip, { while o} if not { if tt o } while not { while o } if not... ( b == ) then ( kip; while not ( b == ) do kip) ( b == ) do kip, ( b == ) then ( kip; while not ( b == ) do kip) ele ele kip, kip, Het i duidelijk dat deze berekeningrij looped vanuit. Nu maken we een berekeningrij voor (**) vanuit dezelfde toetand, gebruikmakend van het gegeven B [ not ( b == ) ] = tt en du A [ b ] = 0. wait b, { wait fale o} wait b,... Het i wederom duidelijk dat ook deze berekeningrij looped vanuit. Waarmee we hebben aangetoond dat (*) looped al (**) looped en dat al (*) gaat naar, (**) ook gaat naar. * **. Waarmee i bewezen dat ( ) ( ) Het bewij van ( *) (*) concluderen. * gaat op analoog, waardoor we telling 3 kunnen? emantiek & Correctheid: Thread ynchroniatie & communicatie 22/29
23 Het i verder eenvoudig om te zien dat al b een globale variabele i, dat het tatement: b := ; emantich equivalent i met: ignal b; Immer en ook [ A[ ] ] b : =, b = [ A[ ] ] ignal b, b =? emantiek & Correctheid: Thread ynchroniatie & communicatie 23/29
24 While veru Meage Queue Omdat we al gezien hebben dat de functionaliteit van ignal ook met de tandaard while tatement kan worden bereikt (mit er gedeelde variabelen betaan) en we al hebben gezien dat de functionaliteit van meage queue gedeeltelijk overlapt met die van ignal, reit de vraag of het niet ook mogelijk i om meage queue in While te implementeren zonder uitbreiding van de orginele emantiek. Het eerte probleem waar men tegenop loopt i het feit dat er geen datatructuur i om meerdere waarden in op te laan. Om de emantiek van While toch niet te hoeven uitbreiden maken we gebruik van Gödel codering. Gödel codering We maken gebruik van gedeelde (hared) integer variabele waarin we onze reek van waarden oplaan al één getal met behulp van Gödel codering. Een Gödel codering i de codering van een reek getallen in één getal. Een reek getallen x 0, x.. xn van lengte n + wordt gecodeerd door: x0 + x + xn + pn (0) pn().. pn( n) (Bij iedere x wordt opgeteld zodat het ook mogelijk i om het getal 0 te coderen, immer 0 x Ν x ) Hierbij i pn(i) de functie die het i-de priemgetal oplevert. ( pn ( 0) = 2 ) Korter gezegd: { x 0, x.. xn} = n i = 0 pn( i) xi + Bijvoorbeeld de queue :3:2: coderen we met behulp van een Gödel codering al = Dit getal laan we op in de gedeelde variabele. emantiek & Correctheid: Thread ynchroniatie & communicatie 24/29
25 Gödel codering : een element toevoegen Voor het toevoegen van een getal wordt de Gödel codering uitgelezen, gedecodeerd en wordt het nieuwe getal toegevoegd. Dit wordt opnieuw gecodeerd en opgelagen in de gedeelde variabele waarbij de oude waarde overchreven wordt. Hierbij dient er wel erg gelet te worden op race-condition. In de tijd dat er een nieuw getal wordt toegevoegd mag er door de receiving thread niet gelezen worden. Gegeven de functie encode_gödel en decode_gödel met het volgende prototype: encode_gödel (number, queue) De functie die gegeven een getal en een Gödel getal, het getal toevoegt aan het Gödel getal. Bijvoorbeeld: encode_gödel( 3, 08 ); // [,2] retourneert het getal 8000 ( [3,,2] ) decode_gödel (poition, queue) De functie die gegeven een poitie en een Gödel getal het (getal + ) op de poitie decodeert uit het Gödel getal. Wanneer de poitie niet betaat wordt er 0 geretourneerd. Poitie beginnen vanaf 0. Bijvoorbeeld: decode_gödel(, ); // [,2,3] retourneert het getal 3. Wanneer we hier nog vanaf trekken krijgen we het gecodeerde getal 2. (NB Je moet er altijd vanaf trekken ) decode_gödel ( 3, ); // [,2,3] retourneert het getal 0 omdat de poitie 3 niet betaat. emantiek & Correctheid: Thread ynchroniatie & communicatie 25/29
26 Een programma in While dat op deze manier een meage queue implementeert zou er al volgt uit kunnen zien voor een ending thread: Voor de overzichtelijkheid gebruiken we hier een variant van While met procedure en parameter. Teven gebruiken we het protect tatement zoal behandeld in het werkcollege. ending thread x := 3; puh (x, queue) // the hared queue variable i called // queue proc puh i (number, queue) begin protect counter := 0; temp := decode_gödel(counter, queue) - ; new := 0; while temp <> 0 do new := encode_gödel(temp, new); counter := counter + ; temp := decode_gödel(counter, queue) - ; od new := encode_gödel(x, new); queue := new; end end emantiek & Correctheid: Thread ynchroniatie & communicatie 26/29
27 Gödel codering : een element uitlezen De receiving thread leet de Gödel codering uit de gedeelde variabele, decodeert deze, leet het eerte getal en codeert de overige getallen weer en laat ze op in de gedeelde variabele. Ook hier mag er terwijl de receiving thread uitleet, door de ending thread geen nieuw getal worden toegevoegd. Een programma in While dat op deze manier een meage queue implementeert zou er al volgt uit kunnen zien voor een receiving thread: receiving thread pop (queue, x); proc pop i (queue, number) begin protect counter := 0; while queue == 0 do kip; // queue i empty, wait od previou := decode_gödel(counter, queue) - ; end end counter := counter + ; next := decode_gödel(counter, queue) - ; while next <> 0 do previou := next; counter := counter + ; next := decode_gödel(counter, queue) - ; od number := previou; We gaan verder niet in op hoe de functie decode_gödel en encode_gödel er precie uit zien. We weten dat ze in While te implementeren zijn. Met het vinden van een oploing voor het oplaan van meedere waarden zonder het uitbreiden van de emantiek van While hebben we het belangrijkte probleem opgelot. Met behulp van de bechreven functie i het eenvoudig om een meage queue te implementeren. emantiek & Correctheid: Thread ynchroniatie & communicatie 27/29
28 Concluie We hebben laten zien dat het uitbreiden van While met meage queue en ignal relatief eenvoudig i en dat de emantiek hiervoor redelijk voor de hand ligt. Teven hebben we aangetoond dat de functionaliteit van ignal gemakkelijk kan worden nageboott met meage queue en dat een uitbreiding van While voor ignal du in feite overbodig i al er al meage queue aanwezig zijn. Al laatte hebben we gezien dat zelf voor het gebruik van meage queue While niet peré uitgebreid hoeft te worden. We kunnen de functionaliteit van meage queue namelijk ook implementeren door gebruik te maken van Gödel codering. In de praktijk zal dit echter nooit gebeuren omdat Gödel getallen zeer nel erg groot worden en omdat het coderen en decoderen een zeer grote berekening i. Verder dwingen de emantiek uitbreidingen correct gebruik van queue af. Bij het werken met queue zonder emantiek uitbreidingen i het veel eenvoudiger om foute programma te chrijven. Voor het gebruik van meage queue hebben uitbreidingen van de emantiek van While du zeker de voorkeur. emantiek & Correctheid: Thread ynchroniatie & communicatie 28/29
29 Referentie Hilfinger, P., Thread of Control [online], Department of Computer cience Berkeley Univerity, 3 Nov Portable Document Format. Available from: < Nielon, H.R. and Nielon F., emantic with application: A Formal Introduction [online], Revied, John Wiley & on, July 999. Portable Document Format. Available from: < Potcript Format. Available from: < Nutt, G.J., Operating ytem: A Modern Perpective [online], econd Edition, Pearon Education Inc., 8 July 200. [Chapter 9]. Available from: < udkamp. T.A., Language and Machine An Introduction to the Theory of Computer cience, econd Edition, Addion-Weley, January 997. hene, C.K., Multithreaded Programming with ThreadMentor: A Tutorial [online], Revied, Department of Computer cience Michigan Technological Univerity, 6 April Available from: < emantiek & Correctheid: Thread ynchroniatie & communicatie 29/29
Hoofdstuk 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 informatie7 Omzetten van Recursieve naar Iteratieve Algoritmen
7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme
Nadere informatieSemantiek (2IT40) Jos Baeten. Formele Methoden. HG 7.19 tel.: Hoorcollege 1 (29 maart 2007)
Jos Formele Methoden josb@win.tue.nl http://www.win.tue.nl/~josb/ HG 7.19 tel.: 040 247 5155 Hoorcollege 1 (29 maart 2007) 2IT40 Organisatie Colstructie: docent: wanneer: donderdagen 3 e en 4 e uur waar:
Nadere informatieStandaardisatie en z-scores
Prof. dr. Herman Callaert Inhoudtafel 1 Standaardiatie bij concreet cijfermateriaal... 1 1.1 Een eerte voorbeeld: de punten van Pol... 1 1.1.1 De ruwe core... 1 1.1.2 Vergelijken met het klagemiddelde...
Nadere informatied τ (t) dt = 1 voor alle τ 0.
6.5. Impulfunctie. In deze paragraaf kijken we naar verchijnelen waarbij in zeer korte tijd een (grote) kracht op een yteem wordt uitgeoefend. Zo n plotelinge kracht kunnen we bechrijven met behulp van
Nadere informatieGelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 5.1-5.2, Appendix A.
Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 51-52, Appendix A1) Processes zijn meestal niet onafhankelijk Bijvoorbeeld: 2 processen
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 informatieTECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica
TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Deel-tentamen Operating Systemen (2IN05) op vrijdag 5 oktober 2007, 9.00-10.30 uur. Het tentamen bestaat uit twee delen die apart worden
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 informatieProgrammeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def
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 informatieUitwerking tentamen Analyse van Algoritmen, 29 januari
Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4
Nadere informatieStap 1. Bepalen van invoer Het makkelijkst kun je dit vinden uit de zwarte vlakken met voorbeelden:
Stap 1. Bepalen van invoer Het makkelijkst kun je dit vinden uit de zwarte vlakken met voorbeelden: Na de opdracht Maak uw keuze: wordt er voor het eerst iets ingetypt door de gebruiker. De getallen die
Nadere informatieHoofdstuk 6: De Laplace transformatie
Hoofdtuk 6: De Laplace tranformatie 6.. Definitie. Een integraaltranformatie i een relatie van de vorm F () = β α K(, t)f(t) dt, die een functie f(t) omzet naar een andere functie F (). De functie K(,
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 informatieHoofdstuk 21: Gegevens samenvatten
Hoofdstuk 21: Gegevens samenvatten 21.0 Inleiding In Excel kunnen grote (en zelfs ook niet zo grote) tabellen met getallen en tekst er nogal intimiderend uitzien. Echter, Excel komt helemaal tot haar recht
Nadere informatieSemaforen. Semaforen p. 1/2
Semaforen 2008 Semaforen p. 1/2 Vorige Keer mbv mutual exclusion kritieke sectie (cs) 1. software : Dekker s, Peterson s algoritme 2. hardware: uniprocessor machine: disable interrupts 3. hardware: multiprocessor
Nadere informatieII. ZELFGEDEFINIEERDE FUNCTIES
II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual
Nadere informatieProgrammeermethoden NA. Week 3: Controlestructuren
Programmeermethoden NA Week 3: Controlestructuren Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Inleveren opdracht 1 Lever digitaal sxxxxxxx-syyyyyyy-opdr1.py
Nadere informatieTalstelsels en getalnotaties (oplmodel)
Talstelsels en getalnotaties (oplmodel) herhalingsvragen 1. Waarom werken computers binair? Omdat binaire computers veel makkelijker te maken is. De kans op fouten is ook veel kleiner. het spanningsverschil
Nadere informatieProgrammeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x
Nadere informatietail Amsterdam, 1 december 2009 Betreft; gewijzigd dienstenaanbod Geachte heer, mevrouw,
tail STUDIO Amterdam, 1 december 2009 Betreft; gewijzigd dientenaanbod Geachte heer, mevrouw, U hebt in het verleden een taalanalye of contra-expertie bij De Taaltudio aangewaagd. Zoal u vermoedelijk via
Nadere informatieJavascript oefenblad 1
Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de
Nadere informatied τ (t) dt = 1 voor alle τ 0.
65 Impulfunctie In deze paragraaf kijken we naar verchijnelen waarbij in zeer korte tijd een (grote kracht op een yteem wordt uitgeoefend Zo n plotelinge kracht kunnen we bechrijven met behulp van een
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 informatie1 Rekenen in eindige precisie
Rekenen in eindige precisie Een computer rekent per definitie met een eindige deelverzameling van getallen. In dit hoofdstuk bekijken we hoe dit binnen een computer is ingericht, en wat daarvan de gevolgen
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 informatie3 De stelling van Kleene
18 3 De stelling van Kleene Definitie 3.1 Een formele taal heet regulier als hij wordt herkend door een deterministische eindige automaat. Talen van de vorm L(r) met r een reguliere expressie noemen we
Nadere informatieOPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.
Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven
Nadere informatieQUANTUMFYSICA QUANTUMTOESTANDEN. Naam: Klas: Datum:
QUANTUMTOESTANDEN QUANTUMFYSICA QUANTUMTOESTANDEN Naam: Kla: Datum: QUANTUMTOESTANDEN QUANTUMTOESTANDEN ERIK VERLINDE Erik Verlinde i een theoretich fyicu. Dat betekent dat hij aan de hand van eerder gedane
Nadere informatieGegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )
OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................
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 informatie1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12
Katern 2 Getaltheorie Inhoudsopgave 1 Delers 1 2 Deelbaarheid door 2, 3, 5, 9 en 11 6 3 Grootste gemene deler en kleinste gemene veelvoud 12 1 Delers In Katern 1 heb je geleerd wat een deler van een getal
Nadere informatieEen korte samenvatting van enkele FORTRAN opdrachten
Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5
Nadere informatieDisclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen
Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden
Nadere informatieDiscrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie
Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3:
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 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 informatieConclusies over semaforen
Conclusies over semaforen gebruik semaforen is subtiel signal & wait operaties, en access van shared data, op allerlei plekken in de code Kan dit niet handiger? Dwz: zijn er geen betere abstracties? Ja:
Nadere informatieFunctioneel programmeren
Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein
Nadere informatieProgrammeerstructuren met App Inventor
Programmeerstructuren met App Inventor Kevin Krul, Universiteit Utrecht Roncalli, Bergen op Zoom Inhoud: Les 1: Introductie tot App Inventor, when statement en variabelen. Les 2: Introductie if-statement
Nadere informatiestart -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c
Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer
Nadere informatieUitleg van de Hough transformatie
Uitleg van de Hough transformatie Maarten M. Fokkinga, Joeri van Ruth Database groep, Fac. EWI, Universiteit Twente Versie van 17 mei 2005, 10:59 De Hough transformatie is een wiskundige techniek om een
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 informatieDe kracht van de inzet van tv en dagbladen door Advil
De kracht van de inzet van tv en dagbladen door Advil Preentatie van onderzoekreultaten Martijn Brinkhoff mei 2008 Inhoud Aanleiding Theorie over multimedia-effecten Doel van het onderzoek Onderzoekmethode
Nadere informatieGödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3
Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3 Koen Rutten, Aris van Dijk 30 mei 2007 Inhoudsopgave 1 Verzamelingen 2 1.1 Definitie................................ 2 1.2 Eigenschappen............................
Nadere informatieHonours projecten BSc Informatica: twee voorstellen
Honours projecten BSc Informatica: twee voorstellen mogelijk ook geschikt voor BSc Kunstmatige Intelligentie Alban Ponse section Theory of Computer Science Informatics Institute, University of Amsterdam
Nadere informatieFLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j
FLIPIT JAAP TOP Een netwerk bestaat uit een eindig aantal punten, waarbij voor elk tweetal ervan gegeven is of er wel of niet een verbinding is tussen deze twee. De punten waarmee een gegeven punt van
Nadere informatieDoorzoeken van grafen. Algoritmiek
Doorzoeken van grafen Algoritmiek Vandaag Methoden om door grafen te wandelen Depth First Search Breadth First Search Gerichte Acyclische Grafen en topologische sorteringen 2 Doolhof start eind 3 Depth
Nadere informatieVBA voor Doe het Zelvers deel 20
VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw
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 informatieToegepaste Statistiek, Week 2 1
Toegepate Statitiek, Week 2 1 In Week 1 hebben we verchillende manieren bekeken om n teekproef te karakterieren: Hitogram gemiddelde G n variantie tandaarddeviatie tandaardfout in het gemiddelde Deze begrippen
Nadere informatieGreedy algoritmes. Algoritmiek
Greedy algoritmes Algoritmiek Algoritmische technieken Trucs, methoden, paradigma s voor het ontwerpen van algoritmen Dynamisch Programmeren Divide & Conquer Greedy 2 Greedy algoritme Bouwt de oplossing
Nadere informatieProgrammeermethoden NA. Week 6: Lijsten
Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal
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 informatieTake-home Tentamen Protocolvericatie. Universiteit van Amsterdam. 27 Maart 1994
Take-home Tentamen Protocolvericatie Vakgroep Programmatuur Universiteit van Amsterdam 27 Maart 1994 Algemene Opmerkingen Dit tentamen omvat zes reguliere opgaven plus een bonusopgave. Opgaves 1, 2, 5
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieVariabelen gebruiken in ons programma
Hoofdstuk 3 Variabelen introduceren Variabelen gebruiken in ons programma Het zou leuk zijn als ons programma Hallo kan zeggen met de naam van de gebruiker in plaats van het algemene Hallo wereld?. Als
Nadere informatieVierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search
Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben
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 informatieProgrammeermethoden NA
Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Getal opbouwen Stel je leest losse karakters (waaronder
Nadere informatieKortste Paden. Algoritmiek
Kortste Paden Toepassingen Kevin Bacon getal Six degrees of separation Heeft een netwerk de small-world eigenschap? TomTom / Google Maps 2 Kortste paden Gerichte graaf G=(N,A), en een lengte L(v,w) voor
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 informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 20 mei 2008 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
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 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 informatieBinair Binair = tweewaardig Beperkt aantal mogelijke waarden (discreet aantal in amplitude) Wij zijn gewoon aan decimaal (tiendelig)
Binair Binair = tweewaardig Beperkt aantal mogelijke waarden (discreet aantal in amplitude) Wij zijn gewoon aan decimaal (tiendelig) In elektronische realisatie zijn 10 verschillende toestanden moeilijk
Nadere informatie[13] Rondjes draaien (loops)
[13] Rondjes draaien (loops) Met de if else uit de leerfiche [11] hebben we leren werken met één van de belangrijkste programmeerstructuren in Python. Bijna even belangrijk zijn de verschillende mogelijkheden
Nadere informatieVoorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.
Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten
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 informatieHonours projecten BSc Informatica: twee voorstellen
Honours projecten BSc Informatica: twee voorstellen mogelijk ook geschikt voor BSc Kunstmatige Intelligentie Alban Ponse section Theory of Computer Science Informatics Institute, University of Amsterdam
Nadere informatieKlassikaal slagbal op de basisschool
Klaikaal lagbal op de baichool Roelian Oorchot en Chri Hazelebach Op verzoek van de chool hebben we een aantal klaikale leen uitgewerkt. Er i geprobeerd een doorgaande lijn te bechrijven. Het fijne van
Nadere informatieFamilie-editie. Speelmateriaal. Vervangingsfiches
Familie-editie Speelmateriaal Hallo! Mijn naam i Uwe Roenberg, de ontwerper van dit pel. Ik zal je door de pelregel leiden en tip geven. 2 dubbelzijdige peelborduitbreidingen (met extra velden) peelbord
Nadere informatieDe partitieformule van Euler
De partitieformule van Euler Een kennismaking met zuivere wiskunde J.H. Aalberts-Bakker 29 augustus 2008 Doctoraalscriptie wiskunde, variant Communicatie en Educatie Afstudeerdocent: Dr. H. Finkelnberg
Nadere informatieHaskell: programmeren in een luie, puur functionele taal
Haskell: programmeren in een luie, puur functionele taal Jan van Eijck jve@cwi.nl 5 Talen Symposium, 12 juli 2010 Samenvatting In deze mini-cursus laten we zien hoe je met eindige en oneindige lijsten
Nadere informatieInmiddels weet je al goed hoe je variabelen kunt gebruiken. Je hebt al veel geleerd en hopelijk vind je het nog steeds leuk.
Hoofdstuk 10 Matrices Inmiddels weet je al goed hoe je variabelen kunt gebruiken. Je hebt al veel geleerd en hopelijk vind je het nog steeds leuk. Laten we het eerste programma met variabelen dat we hebben
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 informatieOpgaven Registers Concurrency, 29 nov 2018, Werkgroep.
Opgaven Registers Concurrency, 29 nov 2018, Werkgroep. Gebruik deze opgaven om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Safe Integer: Van een
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 informatieHoofdstuk 17: Logische & Informatiefuncties en operatoren
Hoofdstuk 17: Logische & Informatiefuncties en operatoren 17.0 Inleiding Logische formules testen of een conditie waar is (het resultaat van de formule zal dan de waarde WAAR hebben) of onwaar (in dit
Nadere informatieHoofdstuk 5: Functies voor getallen en teksten
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 5: Functies voor getallen en teksten
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 informatieVerkorte Inbedrijfname handleiding G120 Firmware 4.4 met de BOP-2
Verkorte Inbedrijfname handleiding G120 Firmware 4.4 met de BOP-2 Betelnummer BOP-2: 6SL3255-0AA00-4CA1 Deze BOP-2 i gechikt voor de CU240B-2, CU240E-2 en de CU230P-2 Terugmelding hand bedrijf Terugmelding
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 informatieTree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011
15 november 2011 Tree traversal Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 15 november 2011 ODE/FHTBM Tree traversal 15 november 2011 1/22 1 ODE/FHTBM Tree
Nadere informatieMaak automatisch een geschikte configuratie van een softwaresysteem;
Joost Vennekens joost.vennekens@kuleuven.be Technologiecampus De Nayer We zijn geïnteresseerd in het oplossen van combinatorische problemen, zoals bijvoorbeeld: Bereken een lessenrooster die aan een aantal
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 informatieOpdracht 1 Topics on Parsing and Formal Languages - fall 2010
Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 8 december 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]
Nadere informatieZelftest Programmeren in COBOL - deel I
Zelftest Programmeren in CBL - deel I Document: n1290test.fm 05/01/2016 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN CBL -
Nadere informatieBeeldsensoren, wat zijn dat en wat voor objectief heb ik nodig?
Beeldenoren, wat zijn dat en wat voor objectief heb ik nodig? De beeldenor in een digitale camera kun je ook wel het hart van een camera noemen. De enor vangt het licht op en zet deze om in een digitaal
Nadere informatieOpgaven bij Hoofdstuk 3 - Productiesystemen
Opgaven bij Hoofdstuk 3 - Productiesystemen Top-down inferentie In de opgaven in deze paragraaf over top-down inferentie wordt aangenomen dat de feitenverzameling alleen feiten bevat die als getraceerd
Nadere informatieUitgebreide uitwerking Tentamen Complexiteit, juni 2017
Uitgebreide uitwerking Tentamen Complexiteit, juni 017 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.
Nadere informatieUitwerkingen Tentamen Wat is Wiskunde (WISB101) Donderdag 10 november 2016, 9:00-12:00
Uitweringen Tentamen Wat is Wisunde (WISB101) Donderdag 10 november 2016, 9:00-12:00 Docenten: Barbara van den Berg & Carel Faber & Arjen Baarsma & Ralph Klaasse & Vitor Blåsjö & Guido Terra-Bleeer Opgave
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 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 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 informatieExcel voor de beginner (4) Handleiding van Helpmij.nl
Excel voor de beginner (4) Handleiding van Auteur: CorVerm Juni 2008 Excel voor beginners deel 4. Zoals we in deel drie hebben beloofd gaan we het in deze ronde hebben over het geven van namen aan (een)
Nadere informatieDerde college complexiteit. 7 februari Zoeken
College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande
Nadere informatieVerslag schriftelijke adviesronde maart 2008: Conceptbesluiten deeltijd programma en overgangsregeling BSA
Verlag chriftelijke advieronde maart 2008: Conceptbeluiten deeltijd programma en overgangregeling BSA Er zijn 4 reactie ontvangen van de leden van de opleidingcommiie Nederland recht. In dit document zijn
Nadere informatie