Tentamen Bionformatica, 8C070, 9 maart 2009, u.
|
|
- Theophiel Koster
- 6 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Tentamen Bionformatica, 8C070, 9 maart 2009, u. Drie algemene opmerkingen Het tentamen bestaat uit 7 opgaven. Onderaan de laatste pagina staat voor iedere opgave het maximale aantal punten dat voor de opgave behaald kan worden! Enkel het formuleblad mag gebruikt worden, dus noch het boek noch de collegeaantekeningen noch een notebook zijn bij dit tentamen toegestaan. Voor iedere programmeeropgave geldt dat je eerst een specificatie van het probleem geeft, dan een analyse inclusief de introductie van mogelijke invariant(en) en vervolgens een Python-programmafragment construeert voor het probleem. Voeg commentaar aan je programma toe als toelichting. Succes!!! Opgave 1 (a) Wat wordt met het Human Genome Project bedoeld? (b) Wat is RNA? (c) Wat is het verschil tussen DNA en RNA? (d) Geef 2 verschillende vormen van RNA. Uitwerking opgave 1 (a) In het Human Genome Project wordt het menselijk genoom geidentificeerd, dwz de samenstellling van het totale DNA van een pool van 9 mensen is bepaald en er is aangegeven welke plaatsen in het DNA overeenkomen en welke verschillen. (b) RNA is een enkelstrengs keten van nucleotiden. Een nucleotide bestaat uit een een fosfaatgroep, een suiker met vijf C-atomen (pentose) en een purine of een pyrimidine. (c) DNA verschilt van RNA in DNA is dubbelstrengs, RNA doorgaans enkelstrengs de suiker is bij RNA ribose in plaats van desoxyribose bij DNA de base T(hymine) van DNA wordt is in RNA U(racil) (d) mrna, trna, rrna, microrna etc. Normering opgave 1 Normering: alle onderdelen 0.25 punt Opgave 2 1
2 (a) Laat l een lijst van DNA strings zijn. Ontwerp een Python methode met l als argument die een gesorteerde lijst outl retourneert van de lengtes van de DNA strings van l met een oneven aantal basen. (b) Ontwerp een Python methode met als argument de lijst outl van onderdeel (a) en die een lijst retourneert die gelijk is aan outl met alle items die vaker dan twee keer voorkomen verwijderd. Uitwerking opgave 2 (a) Specificatie: Pre: l, een lijst van DNA strings progr: onevenlengtes Post: outl: lijst van lengtes van DNA strings van l met oneven lengte Om te kunnen bepalen welke elementen van l een oneven lengte hebben, moeten we ze een voor een aflopen: we hebben dus een herhaling nodig. Voor het itereren maken we gebruik van de standaardconstructie voor het doorlopen van de items van een lijst: for s in l: De lengte van een element wordt gegeven door len en het oneven zijn is simpelweg testen of de rest bij deling door 2 1 is: def onevenlengtes(l): outl=[] for s in l: if len(s)%2 == 1: outl.append(len(s)) outl.sort() return outl (b) Specificatie: Pre: outl, een gesorteerde lijst van oneven positieve integer waarden. progr: maxtwice Post:m een kopie van outl met enkel de elementen die een of twee keer voorkomen. Ook hier is een inspectie van ieder van de elementen nodig en dus moeten we weer een herhaling gebruiken. Er zijn meerdere oplossingen mogelijk. De eenvoudigste lijkt te itereren over de items van outl en met behulp van count na te gaan hoe vaak het item voorkomt. Als het item 1 of 2 keer voorkomt, moet het aan m toegevoegd worden en anders hoeft er geen actie ondernomen te worden: def maxtwice(outl): m=[] for s in outl: if outl.count(s)<3: m.append(s) return m 2
3 Het nadeel van deze oplossing is dat er geen gebruik gemaakt wordt van het gesorteerd zijn van outl en dus de count een relatief dure operatie is. Eleganter is daarom bij een item zelf te bepalen hoe vaak het voorkomt en dan de acties te ondernemen die boven beschreven zijn: def maxtwice(outl): m=[] i=0 while i< len(outl): n=i+1 #n-i is het aantal keren dat outl[i] voorkomt while ((n<len(outl)) and (outl[n]==outl[i])): n=n+1 #n-i is het aantal keren dat outl[i] voorkomt if n-i<3: m.extend(outl[i:n]) i=n return m Normering opgave 2 Onderdeel (a): 0.5 punt: specificatie 0.1, analyse 0.2, programma 0.2 Onderdeel (b): 0.5 punt: specificatie 0.1, analyse 0.2, programma 0.2 Opgave 3 Ontwerp een programma dat een gelijkbenige driehoek met beenlengte k/2 en basisbreedte k afdrukt, waarbij k een oneven invoergetal van tenminste 3 is. Bijvoorbeeld ziet voor k = 5 als invoer de uitvoer er als volgt uit * * * ***** Uitwerking opgave 3 De crux van deze opgave is het bepalen van het patroon dat herhaald wordt. Eenvoudige inspectie leert dat de eerste en de laatste regel afwijkend zijn van de overige regels(s). Deze twee afwijkende regels behandelen we apart De eerste regel bestaat uit eerst k/2 spaties en dan een sterretje. Een Python methode die dit bij aanroep bewerkstelligt is: def eersteregel(k): print " "*(k/2)+"*" De laatste regel bestaat uit k sterretjes. Een Python methode die dit bij aanroep bewerkstelligt is: 3
4 def laatsteregel(k): print "*"*k De overige regels hebben allen het patroon eerst een aantal spaties dan een sterretje, weer een aantal spaties en dan tenslotte weer een sterretje. Zo n patroon is eenvoudig te vertalen in een Python methode: def tussenregel(beginspaties, tussenspaties): print " "*beginspaties+"*"+" "*tussenspaties+"*" Resteert het dus om de beginspaties en tussenspaties te bepalen. Regel 2 heeft een spatie minder dan de eerste regel, dus de eerste waarde van beginspaties is k/2-1. Iedere volgende regel heeft telkens een spatie minder en we moeten tussenregels blijven produceren tot beginspaties 0 geworden is. Tussenspaties is de eerste keer, in regel 2, 1, daarna neemt tussenspaties telkens met 2 toe, want de regel ervoor heeft het eerste sterretje een positie naar rechts en het laatste sterretje een positie naar links. Het gehele programma om een gelijkbenige driehoek af te drukken wordt dus: def eersteregel(k): print " "*(k/2)+"*" def laatsteregel(k): print "*"*k def tussenregel(beginspaties, tussenspaties): print " "*beginspaties+"*"+" "*tussenspaties+"*" eersteregel(k) beginspaties=k/2-1 tussenspaties=1 while beginspaties>0: tussenregel(beginspaties, tussenspaties) beginspaties=beginspaties-1 tussenspaties=tussenspaties+2 laatsteregel(k) Normering opgave 3 Goede analyse: 0.6 punt: eerste regel 0.1, laatste regel 0.1, beginspaties 0.1, tussenspaties 0.1, herhaling 0.2 4
5 goed programma 0.4 punt Opgave 4 (a) Ontwerp een class Gen met een constructor die naast self 2 parameters, abb en aas, kent en bij aanroep de waarden van abb en aas toekent aan de data attributen abbrev respectievelijk aantalas van het te creëren object. abb moet als default waarde een lege string hebben en aas de waarde 0. (b) Creëer 2 objecten g0 en g1 met waarden INS en 45 respectievelijk INSA en 46 voor de velden abbrev en aantalas. (c) Ontwerp een methode zelfdeaantalas met 2 parameters g0 en g1 (beide genen) die retourneert of de genen dezelfde aantalas waarde hebben. (d) Ontwerp een methode verschilas met 2 parameters g0 en g1 (beide genen) die het verschil van het aantal A s van de 2 genen retourneert. (e) Geef een Python statement waarin het verschil van het aantal A s van de genen g0 en g1 van onderdeel (b) aan de variabele l toegekend wordt. Uitwerking opgave 4 (a) We volstaan met het geven van de oplossing class Gen: def init (self, abb="", aas=0): self.abbrev=abb self.aantalas=aas (b) Er wordt naar 2 object instantiaties gevraagd: g0=gen( INS, 45) g1=gen( INSA, 46) (c) def zelfdeaantalas(g0, g1): return g0.aantalas==g1.aantalas (d) def verschilas(g0, g1): return g0.aantalas-g1.aantalas (e) g0=gen( INS, 45) g1=gen( INSA, 46) l=verschilas(g0, g1) Normering opgave 4 alle onderdelen 0.2 punt 5
6 Opgave 5 Gegeven is een in dalende volgorde gesorteerde rij mw van geheeltallige meetwaarden. Gevraagd wordt een binary search programma te ontwerpen dat bepaalt of het getal 17 als meetwaarde voorkomt en zo ja de index van het middelste voorkomen van 17 geeft. Uitwerking opgave 5 We beginnen met de specificatie: pre: mw, een in dalende volgorde gesorteerde rij van integers naam van methode: binsearch post: present = 17 komt voor in mw if present: pos is de index van het middelste voorkomen van 17 Om het middelste voorkomen te bepalen hebben we het eerste en het laatste voorkomen nodig. We beginnen met het laatste voorkomen. In onze afleiding en dus niet in ons programma breiden we de lijst uit met 2 elementen. Als we de lengte van de lijst aanduiden met size: 1. mw[-1]=+ 2. mw[size]=, We kunnen dus altijd een i vinden zodat mw[i]>=17>mw[i+1] en zal als 17 voorkomt dit ook het laatste voorkomen zijn (want als het volgend element bestaat zal het kleiner zijn). De postconditie voor het laatste voorkomen wordt dus present=(0<=i) and (i<size) and (mw[i]==17) Analyse Om de postconditie te bewerkstelligen moeten we herhaaldelijk een actie uitvoeren en dus maken we gebruik van de DBC -invariant constructie. In dit geval gebruiken we de term zoekgebied voor het deel waarin 17 mogelijk voorkomt (her B -deel van de constructie), en dus het andere deel (het D -deel) waarin 17 zeker niet voorkomt, terwijl het constante gedeelte (de C ) de gehele lijst is uitgebreid met de 2 speciale elementen, d.w.z., alle items mw[i] met -1<=i<=size. De strategie is het zoekgebeid telkens te halveren, totdat het zoekgebied uit één element bestaat en dus dan de eerder beschreven test uit te voeren. We gebruiken een linker- en een rechterwijzer die we met respectievelijk l (linker) and r (rechter) aanduiden: Invariant zoekgebied: mw[l]>=17>mw[r] Een invariant moet eenvoudig te finaliseren en te initialiseren zijn: Finalisatie Uiteindelijk moet ons zoekgebied uit een enkel element bestaan. moeten dus doorgaan met het zoekgebied verkleinen d.m.v. We 6
7 while (r!=l+1): Initialisatie Als we beginnen is het gebied dat al doorzocht is leeg en het te doen gedeelte de gehele lijst uitgebreid met de 2 speciale elementen. Het zoekgebied bestaat uit alle items van en met mw[l] tot en zonder mw[r] dus de initialisatie is: l=-1 r=size de lus Het programma dat we tot dusver verkregen hebben is: l=-1 r=size # mw[l]>=17>mw[r] while (r!=l+1): # (r!=l+1) and mw[l]>=17>mw[r]... # mw[l]>=17mw[r] # (r==l+1) and mw[l]>=17>mw[r] # mw[l]>=17>mw[l+1] present=(0<=l) and (l<size) and (mw[l]==17) Als we de lus binnengaan bestaat het zoekgebied nog uit tenminste 2 items en kunnen we het gebied dus nog halveren. Bij die halvering moeten we het zoekgebied kleiner maken en dus het het gebied waarin 17 zeker niet voorkomt vergroten. Als h de index van het middelste item van het zoekgebied is, dan kunnen we door mw[h] met 17 te vergelijken het gebied bepalen waarin 17 mogelijk voorkomt: als mw[h]>=17, dan moet als 17 voorkomt het minstens een keer in het rechtergebied zijn, d.w.z., in het gebied van h naar r, en we kunnen dan het zoekgebied van mw[l] naar mw[r] aanpassen door l te veranderen: l=h. in het andere geval dus mw[h]<17, dan wil 17 voorkomen, het in het linkergebied moeten zijn en nu moeten we dus de variabele r aanpassen: r=h. In beide gevallen geldt de invariant weer en we vinden dus als programma voor het laatste voorkomen: def binsearch(mw): # mw is an decreasingly ordered list of integers l=-1; r=size # mw[l]>=17>mw[r] while (r!=l+1): # (r!=l+1) and mw[l]>=17>mw[r] h=(r+l)/2 if mw[h]>=17: 7
8 # 17 is to be searched in the right halve l=h else: # 17 is to be searched in the left halve r=h # mw[l]>=17>mw[r] # (r==l+1) and mw[l]>=17>mw[r] # mw[l]>=17>mw[l+1] present=(0<=l) and (l<size) and (mw[l]==17) if present: laatste=l Als we het laatste voorkomen hebben, dan moeten we nog het eerste voorkomen bepalen. Ook daar moeten we de binary search methode voor gebruiken. Natuurlijk behoeft de bovenstaande invariant een aanpassing. Als postconditie voor het laatste voorkomen hebben we mw[i]>=17>mw[i+1]. Voor het eerste voorkomen is er slechts een subtiele aanpassing nodig: mw[i]>17>=mw[i+1] Omdat we al weten dat als 17 voorkomt mw[laatste] gelijk is aan 17, kunnen we laatste als initiele waarde voor r nemen, voor l moeten we weer -1 kiezen. Op deze wijze hebben we als invariant Invariant zoekgebied: mw[l]>17>=mw[r] en soortgelijk als boven vonden we als programma: # mw is an decreasingly ordered list of integers l=-1; r=laatste # mw[l]>17>=mw[r] while (r!=l+1): # (r!=l+1) and mw[l]>17>=mw[r] h=(r+l)/2 if mw[h]>17: # 17 is to be searched in the right halve l=h else: # 17 is to be searched in the left halve r=h # mw[l]>17>=mw[r] # (r==l+1) and mw[l]>17>=mw[r] # mw[l]>17>=mw[l+1] eerste=l+1 Als we het eerste en laatste voorkomen hebben, dan kunnen we eenvoudigweg het middelste voorkomen berekenen door: middelste=(eerste+laatste)/2 Normering opgave 5 8
9 Indien enkel 1 correcte binary search maximaal 1.5 punt. Specificatie 0.5 Goede analyse: 0.75 Goed programma: 0.75 Opgave 6 Het doel van deze opgave is een grafisch user interface met een blauwe achtergrond te ontwerpen dat van een DNA sequentie alle voorkomens van enkele A s en dubbele AA s in geel respectievelijk rood weergeeft, terwijl alle overige basen in wit weergegeven worden. Het ontwerp moet gerealiseerd worden in een aantal stappen: (a) Ontwerp een class voor een grafisch user interface met één frame. Het frame moet een blauwe achtergrond hebben en een label en een button bevatten. De achtergrondkleur van het label is blauw, de voorgrondkleur rood, terwijl de tekst van het label een parameter van de constructor van de class is en als default waarde AGAA heeft. De button moet als achtergrondkleur wit hebben en als voorgrondkleur rood en als tekst Kleur A en AA. (b) Ontwerp een methode van de class die als waarde een label retourneert en als invoerparameters een frame, een tekst en een voorgrondkleur heeft. (c) Als onderdeel (a) maar nu moeten 3 labels in het frame geplaatst worden, de eerste met de voorgrondkleur geel, de tweede met de voorgrondkleur rood en de derde met wit als voorgrondkleur. Maak in je oplossing gebruik van de methode die je bij (b) ontworpen hebt. (d) Ontwerp een methode die de beginposities van alle enkele A s in de tekst van het label bepaalt en deze als lijst retourneert. Hierbij geldt dat de eis dat op de positie voor de A óf niets staat óf een niet A en analoog voor op de positie na de A. (e) Idem maar nu voor de beginposities van alle dubbele A s in de tekst van het label bepaalt en deze als lijst retourneert. Hierbij geldt weer als eis dat voor de eerste A van de AA er óf niets staat óf een niet A en idem voor de de positie na de tweede A van de AA. (f) Ontwerp een class voor een grafisch user interface met een blauwe achtergrond dat van een DNA sequentie alle voorkomens van enkele A s en dubbele AA s in geel respectievelijk rood weergeeft, terwijl alle overige basen in wit weergegeven worden. Uitwerking opgave 6 (a) Specificatie van class constructor 9
10 pre: geen eisen program: coloraandaa post: GUI 1 frame - frame heeft een blauwe bg, 1 label en 1 button. - De tekst van de label is een parameter van de constructor, default AGAA, bg van label blauw, fg van label rood. - De tekst van de button is Kleur A en AA, bg van button wit, fg van button rood. Analyse: Omdat naar het ontwerp van grafisch user interface gevraagd wordt, beginnen we met de standaard import constructie from Tkinter import * Vervolgens geven we de benodigde constructies en hun assemblage. Voor het construeren van een frame f en het plaatsen gebruiken we f=frame(parent, bg= blue ) f.pack() Voor het construeren van een label gebruiken we de Label widget. l=label(f,fg= red, bg="blue", text=txtparam) l.pack() Voor het construeren van de button gebruiken we de Button widget. b=button(f,fg= red, bg="white", text= Kleur A en AA ) b.pack() Vervolgens definiëren we de instructies om een object my van de class en de event afhandeling te regelen: win=tk() my=coloraandaa(win) win.mainloop() Het samenvoegen van al deze constructies in een class definitie geeft: from Tkinter import * class coloraandaa: def init (self, parent, txtparam= AGAA ): self.parent=parent self.f=frame(self.parent, bg= blue ) self.l=label(self.f,fg= red, bg="blue", text=txtparam) self.l.pack() self.b=button(self.f,fg= red, bg="white", text= Kleur A en AA ) self.b.pack() 10
11 self.f.pack() win=tk() my=coloraandaa(win) win.mainloop() (b) We moeten een methode van de class ontwerpen dus de eerste parameter van de methode moet self zijn. De overige parameters zijn vergelijkbaar met die van onderdeel (a). def makelabel(self, frm, txtlb= AGAA, fgcolor= red ): label=label(frm, text=txtlb, fg=fgcolor, bg= blue ) label.pack(side=left) return label (c) Combinatie van de oplossingen voor (a) en (b) levert from Tkinter import * class coloraandaa: def init (self, parent, txtparam= AGAA ): self.parent=parent self.f=frame(self.parent, bg= blue ) self.f.pack() # Add the yellow label widget self.l0=self.makelabel(self.f, txtparam, yellow ) # Add the red label widget self.l1=self.makelabel(self.f, txtparam, red ) # Add the white label widget self.l2=self.makelabel(self.f, txtparam, white ) def makelabel(self, frm, txtlb= AGAA, fgcolor= red ): label=label(frm, text=txtlb, fg=fgcolor, bg= blue ) label.pack(side=left) return label win=tk() my=coloraandaa(win) win.mainloop() (d) We moeten een methode ontwerpen die de beginposities van alle enkele A s in de tekst van het label bepaalt en deze als lijst retourneert. We beginnen met de specificatie 11
12 pre: DNA string s program: allsingleas post: outla is een lijst met beginposities van enkele A s in s Analyse: Omdat s meerdere voorkomens van enkele A s kan hebben, is een repetitie nodig. We maken natuurlijk weer gebruik van onze DBC -invariant en daartoe introduceren we een variabele cur die ons de gewenste informatie over het Done gedeelte geeft: Done : alle beginposities van enkele A s tot aan cur zijn in outla vastgelegd tobedone : alle beginposities van enkele A s in het s[cur:] moeten nog gezocht worden Constant : het totaal van beginposities van enkele A s in s Twee aspecten die de geschiktheid van een invariant bepalen zijn de initialisatie en finalisatie initialisatie: als we beginnen hebben we nog geen beginposities, dus moet cur op 0 en outla met [] geinitialiseerd worden. finalisatie: als we weten dat in s[cur:] geen enkele A meer voorkomt, zijn we klaar. Een eenvoudige test die dat bewerkstelligt is: s.find( A, cur). Als deze de waarde -1 oplevert, zijn er geen beginposities van enkele A s meer in s[cur:], anders wordt precies de beginpositie van het eerstvolgende voorkomen van een A opgeleverd. De guard van de repetitie zou dus s.find( A, cur)!= -1 kunnen zijn, maar omdat we ook de positie willen weten als de guard True oplevert, veranderen we dit in: foundpos=s.find( A, cur) while (foundpos!=-1): De finalisatie levert ons echter precies de clou om de acties in de loop uit te kunnen voeren. Als er een nieuwe beginpositie gevonden is, moet deze aan outla toegevoegd worden als op de positie ervoor, mits deze bestaat, en de positie erna, mits deze bestaat, geen A staat en altijd moet cur aangepast worden. Als we een A gevonden hebben, en het is een enkele A, dan staat op positie erna dus een niet A en kunnen we als nieuwe positie vanaf waar gezocht moet gaan worden de gevonden positie verhoogd met 2 nemen. Als er op de positie na de gevonden positie ook een A staat, dan kunnen we ook zonder probleem de gevonden positie met 2 verhogen als nieuwe start voor de zoekposities kiezen, want die tweede A is ook geen enkele A. Het programma wordt dus: def allsingleas(s): cur=0; outla=[]; foundpos=s.find( A, cur) while (foundpos!=-1): if (foundpos>0): previousnonea=s[foundpos-1]!= A else: previousnonea=true if (foundpos<len(s)-1): successornonea=s[foundpos+1]!= A else: successornonea=true 12
13 if previousnonea and successornonea: outla.append(foundpos) cur=foundpos+2 foundpos=s.find( A, cur) return outla (e) Dit is vrijwel een kopie van het vorige onderdeel enkel zoeken we nu naar AA s en moeten we de opvolger van de dubbele A een positie verder inspecteren. Tevens kunnen we efficienter de startpositie van de nieuwe zoekactie bepalen: Als erna een AA en niet A staat, kunnen we als startpositie de gevonden positie verhoogd met 3 stellen. Als er wel een A staat (dus in totaal AAA), mogen we ook als startpositie de gevonden positie verhoogd met 3 nemen, want de eerstvolgende succesvolle AA kan pas op positie gevonden positie verhoogd met 4 beginnen. Het programma wordt dus: def alldoubleaas(s): cur=0; outlaa=[]; foundpos=s.find( AA, cur) while (foundpos!=-1): if (foundpos>0): previousnonea=s[foundpos-1]!= A else: previousnonea=true if (foundpos<len(s)-2): successornonea=s[foundpos+2]!= A else: successornonea=true if previousnonea and successornonea: outlaa.append(foundpos) cur=foundpos+3 foundpos=s.find( AA, cur) return outlaa (f) Omdat er meerdere voorkomens van geisoleerde A s en/of AA s in de DNA sequentie s kunnen zijn is een repetitie nodig. We maken natuurlijk weer gebruik van onze DBC -invariant en daartoe introduceren we een variabele cur die ons de gewenste informatie over het Done gedeelte geeft: Done : alle voorkomens van geisoleerde A en AA basen tot aan cur zijn in geel respectievelijk rood weergegeven en alle overige basen in wit. tobedone : alle overige voorkomens van geisoleerde A en AA s en overige basen in s[cur:] moeten bezocht worden Constant : de sequentie van basen in s Daarnaast gaan we natuurlijk gebruik maken van de methodes die bij onderdeel (d) en (e) ontworpen zijn en moeten dus op een slimme manier de waarde van cur zien aan te passen. Stel dat we in het nog te onderzoeken deel s[cur:] het eerst volgende voorkomen, nextaoraa, van een geisoleerde A of geisoleerde AA weten. We moeten dan 2 bewerkingen uitvoeren: Het deel van s van cur tot nextaoraa in wit weergeven: 13
14 makelabel(self.f, s[cur:nextaoraa], white ) en vervolgens Als de nextaoraa een enkele A is de A op positie nextaoraa in geel weergeven, en als de nextaoraa een dubbele A is de A s op positie nextaoraa en nextaoraa+1 in rood weergeven. We hebben dus naast de positie ook nog informatie nodig over welke van de twee, enkele A of dubbele AA, mogelijkheden zich voordoet. Deze informatie laten we beschikbaar zijn in een nieuwe variabele met als naam singlea. Als deze variable de waarde True heeft, dan is het een enkele A, en anders de dubbele AA situatie. Natuurlijk moeten we cur aanpassen op grond van de DBC -invariant. We krijgen dus if singlea: makelabel(self.f, s[nextnaoraa:nextaoraa+1], yellow ) cur=nextaoraa+1 else: makelabel(self.f, s[nextaoraa:nextaoraa+2], red ) cur=nextaoraa+2 Als we alle beginposities van gisoleerde enkele A s en dubbele AA s gehad hebben volstaat het de overige basen in wit weer te geven. Het laatste maar wel essentiële onderdeel dat we nog moeten verzorgen, is de methode next die naast de volgende positie van een geisoleerde enkele A of een dubbele AA, ook moet retourneren welke van de 2 aan de orde is. Hierbij moeten we oppassen op het nog aanwezig zijn ven elementen in de outla en outlaa lijsten. Als beide lijsten afgelopen zijn, dan moeten we None retourneren: # na is the next position in the outla list to be considered # naa is the next position in the outla list to be considered # to be returned is the smallest of the two, or None, and its matching # kind single A or double AA def next(self, na, naa, outla, outlaa, maxpos): if na<len(outla): nextposa=outla[na] else: nextposa=maxpos if naa<len(outlaa): nextposaa=outlaa[naa] else: nextposaa=maxpos if nextposa<nextposaa: return nextposa, True else: if nextposaa<nextposa: return nextposaa, False else: return None, None Voorzien van deze ingredienten wordt de methode dus: cur=0; na=0; naa=0 nextaoraa, singlea=self.next(na, naa, outla, outlaa, len(s)) while nextaoraa!= None : 14
15 lw=self.makelabel(self.f, s[cur:nextaoraa], white ) if singlea: lw=self.makelabel(self.f, s[nextaoraa:nextaoraa+1], yellow ) cur=nextaoraa+1 na=na+1 else: lw=self.makelabel(self.f, s[nextaoraa:nextaoraa+2], red ) cur=nextaoraa+2 naa=naa+1 nextaoraa, singlea=self.next(na, naa, outla, outlaa, len(s)) lw=self.makelabel(self.f, s[cur:], white ) Voegen we alles samen in één class definitie, dan krijgen we: from Tkinter import * class coloraandaa: def init (self, parent, txtparam= nextaoraa ): self.parent=parent self.f=frame(self.parent, bg= blue ) self.f.pack() self.colourayaar_otherswhite(txtparam) def makelabel(self, frm, txtlb= nextaoraa, fgcolor= red ): label=label(frm, text=txtlb, fg=fgcolor, bg= blue ) label.pack(side=left) return label def next(self, na, naa, outla, outlaa, maxpos): if na<len(outla): nextposa=outla[na] else: nextposa=maxpos if naa<len(outlaa): nextposaa=outlaa[naa] else: nextposaa=maxpos if nextposa<nextposaa: return nextposa, True else: if nextposaa<nextposa: return nextposaa, False else: return None, None def allsingleas(self, s): cur=0; outla=[]; foundpos=s.find( A, cur) while (foundpos!=-1): if (foundpos>0): previousnonea=s[foundpos-1]!= A else: previousnonea=true 15
16 if (foundpos<len(s)-1): successornonea=s[foundpos+1]!= A else: successornonea=true if previousnonea and successornonea: outla.append(foundpos) cur=foundpos+2 foundpos=s.find( A, cur) return outla def alldoubleaas(self, s): cur=0; outlaa=[]; foundpos=s.find( AA, cur) while (foundpos!=-1): if (foundpos>0): previousnonea=s[foundpos-1]!= A else: previousnonea=true if (foundpos<len(s)-2): successornonea=s[foundpos+2]!= A else: successornonea=true if previousnonea and successornonea: outlaa.append(foundpos) cur=foundpos+3 foundpos=s.find( AA, cur) return outlaa def colourayaar_otherswhite(self, s): outla=self.allsingleas(s) outlaa=self.alldoubleaas(s) cur=0; na=0; naa=0 nextaoraa, singlea=self.next(na, naa, outla, outlaa, len(s)) while nextaoraa!= None : lw=self.makelabel(self.f, s[cur:nextaoraa], white ) if singlea: lw=self.makelabel(self.f, s[nextaoraa:nextaoraa+1], yellow ) cur=nextaoraa+1 na=na+1 else: lw=self.makelabel(self.f, s[nextaoraa:nextaoraa+2], red ) cur=nextaoraa+2 naa=naa+1 nextaoraa, singlea=self.next(na, naa, outla, outlaa, len(s)) lw=self.makelabel(self.f, s[cur:], white ) win=tk() win.title("gui voor DNA sequentie colored AorAA, overige wit") win.configure(bg= blue ) 16
17 my=coloraandaa(win, txtparam="acaaacgaaaaccccatcgtcccaagggaaagaa") win.mainloop() Normering opgave 6 Onderdeel (d) en (e): 0.4, overige onderdelen ieder 0.3 Opgave 7 In deze opgave wordt het ontwerp van een Python class IntegerImage gevraagd. (a) Ontwerp een methode met een geheeltallige parameter n die een lijst van n items retourneert die allen de waarde 0 hebben. (b) Ontwerp een constructor voor de class die naast self twee geheeltallige parameters m en n heeft. In de constructor moet een lijst worden gedefiniëerd bestaande uit m items. Elk item in die lijst is zelf een lijst van n integers is, die allen de waarde 0 hebben. (c) Ontwerp een methode largestrow voor de class die van de lijst van een object van de class de index van een item retourneert waarin de som van de integers die in de lijst van het item aanwezig zijn, het hoogst is. (d) Ontwerp een methode sumofrows die als waarde retourneert de som van alle items in de lijst. Uitwerking opgave 7 (a) def alistofzeros(n): l=[] for i in range(n): l.append(0) return l (b) class IntegerImage: def init (self, m, n) l=[] for i in range(m): im=self.alistofzeros(n) l.append(im) self.l=l def alistofzeros(self, n): l=[] for i in range(n): l.append(0) return l 17
18 (c) def calcsum(self, l): s=0 for i in l: s=s+i return s def largestrow(self): l=self.l if not l: return None else: largest=0 som=self.calcsum(l[0]) for i in range(1, len(l)): s=self.calcsum(l[i]) if s>som: som=s largest=i return largest (d) def sumofrows(self): l=self.l s=0 for i in l: s=calcsum(i)+s return s Normering opgave 7 Ieder onderdeel 0.5 punt Honorering: opgave 1 maximaal 1 punt opgave 2 maximaal 1 punt opgave 3 maximaal 1 punt opgave 4 maximaal 1 punt opgave 5 maximaal 2 punten opgave 6 maximaal 2 punten opgave 7 maximaal 2 punten 18
19 List of Python built-in methods 1 Operations on string s s.count(sub) Return the number of non-overlapping occurrences of substring sub in string s. s.upper() Return a copy of the string converted s to uppercase. s.rstrip() Return a copy of the string s with trailing whitespace characters (the characters space, tab, linefeed, return, formfeed, and vertical tab) removed. s.find(sub) Return the lowest index in the string s where substring sub is found. Return -1 if sub is not found. s.replace(old, new) returns a copy of string s with all occurrences of substring old replaced by new. s.split(sep) return a list of the words in the string, using sep as the delimiter string. 2 Operations on files f=open(fname, option) returns a new object f of type file with filename fnam for reading when option is omitted or option= r, for writing when option= w. f.close() close the file. f.readline() readline returns the next line from the file. character (\n) The line includes the end of line f.read() returns the contents of the file in a string. f.readlines() returns a list of all lines from the file, where each line includes the newline character. 1
20 f.write(s) write the string s to the file f. 3 Operations on list objects Given a list l the following methods can be applied to l l.append(x) Add an item to the end of the list. l.extend(l) Extend the list l by appending all the items in the given list L. l.insert(i, x) Insert item x at given position i. l.remove(x) Remove the first item from the list whose value is x. It is an error if there is no such item. l.pop([i]) Remove the item at the given position in the list, and return it. If no index is specified, l.pop() returns the last item in the list. The item is also removed from the list. l.index(x) Return the index in the list of the first item whose value is x. It is an error if there is no such item. l.count(x) Return the number of times x appears in the list. l.sort() Sort the items of the list, in place. l.reverse() Reverse the elements of the list, in place. list(s) Return a list whose items are the same and in the same order as in the string s sep.join(l) Return a string which is the concatenation of the strings in the list l. The separator between elements is the string sep providing this method. 2
Tentamen Bionformatica, 8C070, 23 januari 2009, u.
Drie algemene opmerkingen Tentamen Bionformatica, 8C070, 23 januari 2009, 09.00-12.00u. Het tentamen bestaat uit 7 opgaven. Onderaan de laatste pagina staat voor iedere opgave het maximale aantal punten
Nadere informatieTentamen, uitwerkingen en normering Bioinformatica, 8C070, 27 januari 2012, u.
Tentamen, uitwerkingen en normering Bioinformatica, 8C070, 27 januari 2012, 09.00-12.00u. Enkel het formuleblad mag gebruikt worden, dus noch het boek noch de collegeaantekeningen noch een notebook zijn
Nadere informatieUitwerkingen tentamen Bioinformatica deel B(8C078), 18 januari 2007, u.
Uitwerkingen tentamen Bioinformatica deel B(8C078), 18 januari 2007, 09.30-10.30u. Drie algemene opmerkingen Het tentamen bestaat uit 3 opgaven. Onderaan de laatste pagina staat voor iedere opgave het
Nadere informatieTentamen Bionformatica deel A(8C074), 18 januari 2007, u.
Tentamen Bionformatica deel A(8C074), 18 januari 2007, 10.30-12.00u. Twee algemene opmerkingen Het tentamen bestaat uit 5 opgaven verdeeld over 2 pagina s. Op pagina 2 staat voor iedere opgave het maximale
Nadere informatieRuwe uitwerkingen proeftentamen Bioinformatica deel B(8C078), 12 januari 2007, u.
Ruwe uitwerkingen proeftentamen Bioinformatica deel B(8C078), 12 januari 2007, 13.30-15.00u. Drie algemene opmerkingen Het tentamen bestaat uit 3 opgaven. Onderaan de pagina staat voor iedere opgave het
Nadere informatieTentamen Bionformatica, 8C070, 11 januari 2008, u.
Tentamen Bionformatica, 8C070, 11 januari 2008, 09.00-12.00u. Drie algemene opmerkingen Het tentamen bestaat uit 7 opgaven. Onderaan de laatste pagina staat voor iedere opgave het maximale aantal punten
Nadere informatieOpgaven en uitwerkingen voor het tentamen Bioinformatica, 8CA00, 11 april 2014, u.
Opgaven en uitwerkingen voor het tentamen Bioinformatica, 8CA00, 11 april 2014, 09.00-12.00u. Er zijn 5 opgaven. Per opgave is er een bestand (bijvoorbeeld opgave1.py) beschikbaar waarin je verzocht wordt
Nadere informatieGeeft de lengte van een object (string, lijst, tupel) terug als integer
Python cheat sheet: Operatoren: De standaard operatoren voor wiskundige bewerkingen (+,-,*,/,**) worden als vanzelfsprekend ondersteld. Voor integers en floating point getallen doen deze functies wat je
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 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 informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 19, 2018 Overzicht Grafische programma s en tekstgebaseerde programma s Stijladviezen (Jeff Knupp, Writing Idiomatic Python) File Processing (Zelle 5.9.2)
Nadere informatie8C080 deel BioModeling en bioinformatica
Vijf algemene opmerkingen Tentamen Algoritmen voor BIOMIM, 8C080, 22 april 2009,14.00-17.00u. Het tentamen bestaat uit 2 delen, een deel van BioModeling & bioinformatics en een deel van BioMedische Beeldanalyse.
Nadere informatie8C080 deel BioModeling en bioinformatica
Vijf algemene opmerkingen Tentamen Algoritmen voor BIOMIM, 8C080, 13 maart 2009, 09.00-12.00u. Het tentamen bestaat uit 2 delen, een deel van BioModeling & bioinformatics en een deel van BioMedische Beeldanalyse.
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 8 februari 2010 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel
Nadere informatieAfter that, the digits are written after each other: first the row numbers, followed by the column numbers.
Bifid cipher The bifid cipher is one of the classical cipher techniques that can also easily be executed by hand. The technique was invented around 1901 by amateur cryptographer Felix Delastelle. The cipher
Nadere informatieTentamen Informatica (8C010), 16 augustus 2002, u. Het tentamen bestaat uit 6 opgaven verdeeld over 4 pagina s.
Tentamen Informatica (8C010), 16 augustus 2002, 09.00-12.00u. Twee algemene opmerkingen Het tentamen bestaat uit 6 opgaven verdeeld over 4 pagina s. Het gebruik van een notebook bij dit tentamen is toegestaan.
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord December 17, 2018 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True : gohome () Goed:
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 informatieTussentoets Programmeren en genomics, 8CA10, versie A 17 maart 2017, u.
Tussentoets Programmeren en genomics, 8CA10, versie A 17 maart 2017, 15.45-16.45u. Er zijn 2 opgaven. Per opgave is er een bestand (respectievelijk opgave1.py en opgave2.py) beschikbaar waarin je verzocht
Nadere informatieGenetic code. Assignment
Genetic code The genetic code consists of a number of lines that determine how living cells translate the information coded in genetic material (DNA or RNA sequences) to proteins (amino acid sequences).
Nadere informatieThe first line of the input contains an integer $t \in \mathbb{n}$. This is followed by $t$ lines of text. This text consists of:
Document properties Most word processors show some properties of the text in a document, such as the number of words or the number of letters in that document. Write a program that can determine some of
Nadere informatievoegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is
PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord en Leonie Bosveld December 19, 2016 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 6 januari 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel
Nadere informatieProgrammeren PYTHON OEFENTENTAMEN 2. Schrijf jouw antwoorden op dit tentamen. Tijd: 2 uur. Maximaal aantal punten: 32. Naam: Studentnummer:
Programmeren PYTHON OEFENTENTAMEN 2 Naam: Studentnummer: Schrijf jouw antwoorden op dit tentamen Tijd: 2 uur Maximaal aantal punten: 32 Menselijke interpreter (6 punten) 0. (1 punt) Wat is de uitkomst
Nadere informatieOEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Nadere informatieOEFENINGEN PYTHON REEKS 1
OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en
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 informatieIntermax backup exclusion files
Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:
Nadere informatieProgrammeermethoden. Recursie. week 11: november kosterswa/pm/
Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,
Nadere informatieOEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Nadere informatieSmall Basic Programmeren Text Console 2
Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:
Nadere informatieL.Net s88sd16-n aansluitingen en programmering.
De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen
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 informatieClassification of triangles
Classification of triangles A triangle is a geometrical shape that is formed when 3 non-collinear points are joined. The joining line segments are the sides of the triangle. The angles in between the sides
Nadere informatieControle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2
Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel
Nadere informatieProgrammeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 29 april 2014
Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE, 29 april 2014 Bijeenkomst 3 Onderwerpen Bespreking ISA-opdracht Geneste loops Strings File Input/Output 29 april 2014 1 For-loops vb3-1a.py:
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord en Leonie Bosveld December 2, 2016 Simulatie Uitrekenen of simpelweg heel vaak uitproberen... Wissel je van garagebox? Simulatie: als benadering van niet of moeilijk
Nadere informatieALGORITMIEK: answers exercise class 7
Problem 1. See slides 2 4 of lecture 8. Problem 2. See slides 4 6 of lecture 8. ALGORITMIEK: answers exercise class 7 Problem 5. a. Als we twee negatieve (< 0) getallen bij elkaar optellen is het antwoord
Nadere informatieUitwerkingen. Python Assessment
Uitwerkingen Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Uitwer king 1: Elementairedatatypes 1.a Een string bevat tekst in de vorm van Unicode characters, terwijl
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 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 informatieL.Net s88sd16-n aansluitingen en programmering.
De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen
Nadere informatieMyDHL+ Van Non-Corporate naar Corporate
MyDHL+ Van Non-Corporate naar Corporate Van Non-Corporate naar Corporate In MyDHL+ is het mogelijk om meerdere gebruikers aan uw set-up toe te voegen. Wanneer er bijvoorbeeld meerdere collega s van dezelfde
Nadere informatieJava Programma structuur
Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,
Nadere informatieProgrammeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/
Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,
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 informatieIntroductie in flowcharts
Introductie in flowcharts Flow Charts Een flow chart kan gebruikt worden om: Processen definieren en analyseren. Een beeld vormen van een proces voor analyse, discussie of communicatie. Het definieren,
Nadere informatieDALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT
TELETASK Handbook Multiple DoIP Central units DALISOFT 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool Connect the TDS20620V2 If there is a TDS13620 connected to the DALI-bus, remove it first.
Nadere informatieSAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead
7.1 Exploring Combinations of Ten Look at these cubes. 2. Color some of the cubes to make three parts. Then write a matching sentence. 10 What addition sentence matches the picture? How else could you
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 informatieProgrammeren met Grafische Objecten. Inleiding Programmeren II Hoorcollege 1 prof. dr. van Noord en dr. L.M. Bosveld-de Smet
Programmeren met Grafische Objecten Inleiding Programmeren II Hoorcollege 1 prof. dr. van Noord en dr. L.M. Bosveld-de Smet Onderwerpen van vandaag Programming Paradigms Imperatief programmeren Object-georiënteerd
Nadere informatie! GeoNetwork INSPIRE Atom!
GeoNetwork INSPIRE Atom GeoNetwork INSPIRE Atom 1 Configuration 2 Metadata editor 3 Services 3 Page 1 of 7 Configuration To configure the INSPIRE Atom go to Administration > System configuration and enable
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Bewijzen en Technieken 1 7 januari 211, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe.
Nadere informatieVoortgezet Prog. voor KI
Voortgezet Prog. voor KI Docent: Michael Wilkinson IWI 142 tel. 050-3638140 (secr. 3633939) Frank Brokken RC 352 tel. 050-3633688 Voorkennis: Inleiding Programmeren voor KI (nieuwe stijl) Stof: Practicum
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 8 december 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als jeeen onderdeel
Nadere informatieCode Voorbeeld Resultaat. print(6, end="") print(7) print(type(6)) <class 'int'> + optelling - aftrekking * vermenigvuldiging / deling 8 16 % modulo
Code overzicht Python Code Voorbeeld Resultaat print() print(6) print(6, end="") print(7) print(type(6)) 6 67 + optelling - aftrekking * vermenigvuldiging / deling // deling afgerond naar
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 informatieTentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 7 februari 2011
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 7 februari 2011 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel
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 informatieThe genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain.
Domino tiles Dominoes is a game played with rectangular domino 'tiles'. Today the tiles are often made of plastic or wood, but in the past, they were made of real stone or ivory. They have a rectangle
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 informatiePython. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14
Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies
Nadere informatieOpgaven. Python Assessment
Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen
Nadere informatie2019 SUNEXCHANGE USER GUIDE LAST UPDATED
2019 SUNEXCHANGE USER GUIDE LAST UPDATED 0 - -19 1 WELCOME TO SUNEX DISTRIBUTOR PORTAL This user manual will cover all the screens and functions of our site. MAIN SCREEN: Welcome message. 2 LOGIN SCREEN:
Nadere informatieTentamen Objectgeorienteerd Programmeren
Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het
Nadere informatieKorte uitleg: Wat doet de shell met mijn commandoregel?
Korte uitleg: Wat doet de shell met mijn commandoregel? Het onderstaande is heel erg Bash gericht, maar geldt i.h.a. ook voor andere shells. Vooral als het om "begrip" gaat. Iedere regel die aan de shell
Nadere informatieProgrammeren. Cursus Python
Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor
Nadere informatieUitwerking tentamen Algoritmiek 10 juni :00 13:00
Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.
Nadere informatieGeneral info on using shopping carts with Ingenico epayments
Inhoudsopgave 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What is an
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 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 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 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 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 informatieContents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation
TeleBank Contents Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation Introduction - TeleBank Automatic bank services Initiates a Dialog with
Nadere informatieQuality requirements concerning the packaging of oak lumber of Houthandel Wijers vof (09.09.14)
Quality requirements concerning the packaging of oak lumber of (09.09.14) Content: 1. Requirements on sticks 2. Requirements on placing sticks 3. Requirements on construction pallets 4. Stick length and
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 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 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 informatieProgrammeermethoden NA. Week 4: Files & Functies
Programmeermethoden NA Week 4: Files & Functies Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Vorige week: Controlestructuren # gegeven # 0
Nadere informatieShipment Centre EU Quick Print Client handleiding [NL]
Shipment Centre EU Quick Print Client handleiding [NL] Please scroll down for English. Met de Quick Print Client kunt u printers in Shipment Centre EU configureren. De Quick Print Client kan alleen op
Nadere informatieInleiding programmeren
Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg
Nadere informatieArrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:
Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.
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 informatieTentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code
Nadere informatieSettings for the C100BRS4 MAC Address Spoofing with cable Internet.
Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version
Nadere informatieIMP Uitwerking week 13
IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het
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 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 informatieThe mitochondrial genome has bases and codes for 37 genes: 13 polypeptides, 22 trnas and 2 ribosomal RNAs.
Genome density The genome of an organism is the whole of hereditary infromation in a cell. This hereditary information is either coded in DNA or for some types of viruses in RNA. Genes are structural components
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 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 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 informatieInfo-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens
Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls
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 informatieProgrammeermethoden NA
Programmeermethoden NA Week 4: Files & Functies Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Vorige week: Controlestructuren # gegeven # 0
Nadere informatieFAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.
FAAC DRIVER Driver install procedure for FAAC boards Installatieprocedure voor driver voor FAAC-kaarten www.record-toegangstechniek.nl 1 When a FAAC board (E124 or E145) is connected to the USB port, it
Nadere informatie