Laboration 6 Haptik. Version 2.0. Karljohan Lundin Ludvig Tunel Niclas Andersson. 6 september 2001

Storlek: px
Starta visningen från sidan:

Download "Laboration 6 Haptik. Version 2.0. Karljohan Lundin Ludvig Tunel Niclas Andersson. 6 september 2001"

Transkript

1 Laboration 6 Haptik Version 2.0 Karljohan Lundin Ludvig Tunel Niclas Andersson 6 september Inledning Haptik är ämnet för denna laboration. Syftet är att få en förståelse för hur haptisk utrustning fungerar, hur man kan använda den i konstruktionen av användargränssnitt och sist men inte minst få tillfälle att programmera och skapa ett embryo till en egen applikation som använder haptisk utrustning. I laborationerna ingår programmering av VRML. I slutet av laborationen tillkommer även programmering i antingen C++ eller Python för mer komplicerad dynamik. 1.1 Examination För att bli godkänd på laborationen krävs att du 1. skapat minst två objekt, 2. försett dem med friktionsytor, 3. implementerat ett gravitationsfält, 4. implementerat kollisionsdetektering med minst två ytor (golv och tak). Laborationen ska redovisas genom att programme(t/n) visas upp och att koden lämnas in på papper. Du ska kunna svara på frågor om vilka fysikaliska principer du tillämpat och hur du implementerat dessa. 1.2 Utrustning Laborationen sker på Adam och Eva, två PC-datorer som styr de haptiska display-enheterna från ReachIn. För att avlasta användningen av Adam och Eva kan, med fördel, första delen av uppgift 1 lösas på annan dator. Likaså kan till exempel bilder för texturer skapas på andra datorer där lämplig programvara finns. Tänk på att texturerna måste ha storlek av jämn 2-potens. 1

2 1.2.1 Kalibrering I och med version 3.0 av Reachin API, skall kalibreringen av haptikpennan ske automatiskt varje gång man startar ett program. Känns det ändå som om kalibreringen är otillräcklig, kan den automatiska kalibreringen justeras av en handledare. 1.3 Programvara Reachin API heter programvaran som du ska använda. Den används för att bygga upp den SceneGraph som sedan de visuella och haptiska rendreringsalgoritmerna arbetar mot. Programmeringsgränssnittet består av en utbyggd VRML-parser med noder för haptisk återkoppling, en Python-interpretator och ett C++ klassbibliotek. För att du lättare ska kunna editera dina filer har vi installerat Emacs på datorerna. En VRMLrespektive python-mode för emacs har också installerats. 1.4 Dokumentation Till din hjälp finns en PDF-version av Reachin API Programming Guide på Adam och Eva. Dessutom finns det två pappersexemplar av Magma Programming Guide i VR-labbet. Magma är föregångaren till Reachin API och nästan allt i Magma är exakt samma Reachin API. Reachin API Reference Manual finns tillgänglig i HTML på Adam och Eva. Den är också tillgänglig på kurshemsidan ( nican/tnm053/). Där hittar du också Floppy s VRML-tutorial, VRML97-standarden Reachin API Programming Guide som PDF dokumentation för C++ ( och dokumentation för Python. I appendix A hittar du en kort guide om hur routing går till. Det finns dessutom många tutorials och annat referens-material på Internet. 2 Skapa en statisk värld Uppgift 1 Skapa (minst) fem objekt. Använd VRML. Trivialt! För att se på din VRML-värld använder du Reachinload som du kör från en DOS-prompt. Ge namnet på VRML-filen som argument. Eftersom en vanlig VRML-fil (som den du har skrivit) 2

3 saknar Display-nod, så kapslar Reachinload in innehållet i din fil i en sådan. Display-noden har i uppgift att sätta upp rätt konfiguration för ReachIn-displayen. Observera att alla mått är i SI-enheter. En sfär med radien satt till 1 är 2 meter i diameter! Lägg till SimpleSurface{ i varje objekt för att definiera en yta för den haptiska kraftåterkopplingen. Känn på objekten med haptik-utrustningen. Vad har objekten för yta, tröghet och massa? Lägg till en Display-nod i din fil, så Reachinload slipper göra det. Det program ni senare kommer att använda till att starta VRML-filen kommer inte att lägga till en sådan nod. Uppgift 2 Lägg till en haptisk yt-modell till dina objekt. Börja med att justera parametrar för de enkla ytorna. Försök att efterlikna verkliga ytor. Arbeta er sedan ner genom nod-hierarkin av ytor (se Reachin Reference Guide) och pröva de olika yt-modellerna som finns. Pröva! Justera parametrarna! Känn efter! Du behöver inte pröva alla kombinationer. Hur hård/mjuk kan en yta bli? Uppgift 3 Förse objekten med friktionsytor. Laborera med parametrarna och försök att efterlikna verkliga kontakter såsom stål mot stål, penna mot papper, och tyg mot tyg. 1 Variera proxy_radius i Display-noden och känn efter hur den påverkar kraftåterkopplingen. Frivilligt: Pröva att förse en yta/ett objekt med en egenhändigt skapad friktions-textur eller bumpmap - textur. Du skapar lämpligtvis en bild och applicerar lämpliga filter. Använd datorutrustning som har lämplig programvara. Glöm inte att applicera själva bilden på ytan också så du kan se vad du känner på. 3 Lägg till dynamik Du har hittills arbetat med statiska objekt. I den här delen av laborationen ska objekten få sina dynamiska egenskaper. Vi kommer inte att implementera kollisionshantering mellan godtyckliga objekt så för att undvika visuella artefakter (objekt som befinner sig inuti varandra) kan du arbeta med ett objekt i taget. Uppgift 4 Lägg till dynamik till ditt objekt. Välj lämplig tröghets-modell (inertia) för dina objekt. Sätt parametrarna så att dynamiken hos objekten känns realistisk. Observera att objekten nu flyter fritt i den virtuella världen och påverkas endast av din beröring via den haptiska utrustningen. Uppgift 5 Implementera en fjäder. 1 Kontakter som inte kan rekommenderas är huvud mot vägg, fågel mot glasruta och knä mot asfalt ty dessa kräva allför stora uppoffringar för att examineras. 3

4 Objekten flyter lätt iväg och därför ska du nu implementera en kraft som håller det kvar i bild. Du ska implementera det genom att skapa ett fält 2 som räknar ut den kraft som en fjäder påverkar objektet med och koppla ihop det med objekten. I appendix A hittar du en kort guide för hur själva sammankopplingen kan ske. Programmet kan skrivas i python (mer detaljer i appendix C) eller i C++ (appendix B). Uppgift 6 Implementera en dämpare. På grund av numeriska metoder, får objekten kontinuerligt mer energi och rör sig med allt större amplitud. Implementera en naturlig dämpare som bryter objektens växande amplitud. Det är inte alls tänkt att ni ska bli bra Python- eller C++-programmerare. Använd istället nödvändiga delar för att lösa uppgiften! 4 Studsande bollar Uppgift 7 Implementera en enkel kollisionshantering. Lägg in en plan yta, ett golv, i din modell och låt dina objekt studsa mot den. Att implementera korrekt kollisionsdetektering är svårt. Därför accepterar vi att detekteringen endast baseras på avstådet mellan objektet och ytan. Mest realistisk ser det ut om du använder sfäriska objekt. Hur kan vi då simulera själva kollisionen? Hög nogrannhet kan vi erhålla genom att formulera jämviktsekvationer och applicera en numerisk lösningsalgoritm för ordinära differentialekvationer. Tyvärr uppfyller detta inte realtidskraven eftersom de numeriska beräkningarna i kollisionsögonblicket måste hållas noggranna. Istället betraktar vi själva kollisionen som en ögonblickshändelse och ser till att objektens rörelsemängd före och efter kollisionen är korrekta. Skapa ett pyton-skript som implementerar detta. En viss dämpning, förlust av energi, kan implementeras för få mer realism. Det kan vara lämpligt att föra in en konstant gravitationskraft som är riktad nedåt. Då kommer objekten falla mot golvet. Nu skapar du snabbt tre ytor till, två väggar och tak, och ser till att dina objekt studsar mot dessa också. Frivilligt: Lägg till rotation till dina objekt och gör en liknande generell beräkning av rotation före/efter kollision. Inför viss dämpning även här. 5 Gå vidare Uppgift 8 Överkurs!! Nu kan du gå vidare med att implementera ett tredimensionellt breakout. Den virtuella pennan byter du ut mot ett pingis-racket. Du måste använda FrictionSurface för att kunna skruva bollarna. Det börjar bli knepigt när du ska beräkna hastighet och rotation från en träff mellan racket och två kolliderande, skruvade bollar... Kul ide: Kan man koppla ihop de två ReachIn-displayerna i labbet och använda dem till samma applikation? 2 Om du inte förstår hur ett fält kan beräkna så bör du läsa igenom appendix A 4

5 6 Sammanfattning Du har lärt dig använda haptik-utrustning, implementerat några enkla objekt i Reachin API/ VRML/C++/Python och förhoppningsvis erhållit så mycket erfarenhet av utrustningen att du vet dess begränsningar och kan uppskatta vad den kan klara av och kan användas till. Det finns åtskilligt med material som behandlar algoritmer för haptisk återkoppling (som bland annat finns inbyggda i Reachin API). Laborationstiden är tyvärr alltför kort för att ens studera implementationen hos en av dessa. Det här är ett forskningsområde som är aktivt och det finns mycket mer att lära. Appendix A Noder, Fält och Routing Det finns endast två olika beståndsdelar i ett VRML-träd Noder och Fält. De flesta noder man arbetar med är av typen Child som kan läggas nästan var som helst, till exempel i children-fältet hos Group-noder. Exempel på sådana noder är Transform och Shape. Fält å andra sidan är en sorts behållare som finns i noder, på samma sätt som variabler finns i klasser. Dessa kan innehålla andra noder, eller objekt av andra typer, exempelvis Vec3f (en vektor av tre flyttal). Fält är av en viss typ och typen talar om vad man kan lägga i fältet, på samma sätt som en float bara kan innehålla flyttal. Exempel på typer är Child och SFVec3f. Fält kan inte tas bort när de väl har satts, men man kan routa innehåll mellan olika fält. Det är så den mesta programmeringen i Reachin API fungerar man kopplar samman fält med varandra. Routing går ut på att man kopplar ett eller flera fält av vissa typer till ett annat med samma, eller annan typ. Om man kopplar ett förta fält med ett andra så kommer det andra 3 fältet att kopiera innehållet från det första fältet till sig själv, om värdena skiljer sig. Detta görs inte omedelbart när det första fältets innehåll ändras, om man inte definierar fältet som Dependent. Det görs först när ett tredje fält frågar efter värdet i det andra fältet. Verkar det krångligt? Läs i så fall stycket igen. Routing definieras i VRML-filen med kommandoraden ROUTE <från-nod>.<från-fält> TO <till-nod>.<till-fält>. Fälten finns i noderna och har namn som kan läsas av i dokumentationen över noderna. Noderna måste man däremot själv namnge i VRML-koden. Det görs genom att kan skriver DEF <nodnamn> före noden som skall namnges. Observera att detta kan göras oavsett om noden är fristående, eller om den placeras i ett fält. Placeras den i ett fält skriver man <fältnamn> DEF <nodnamn> <nodtyp> (se figure 1 för exempel) För att värdena som routas skall bli korrekta så kan man bara routa från ett fält av en viss typ till ett fält som tar just den typen som input. Vanligast i standardnoderna är att fälten är av typen SField, vilket innebär att den tar en input av samma typ som fältet självt är av 4. Samma sak gäller för MField. Namnet på alla typer som är SField eller MField börjar med SF respektive MF. För mer komplicerade fält, med flera input av olika typer eller med behandling av input, används typerna ComposeMField, TypedField, FField och EvaldFField. Hur dessa typer fungerar och definierar input kan du läsa om i Reachin API Programmers Guide sidorna Den vanligaste typen för beräknande fält är EvaldFField som definierar exakt vilka typer den tar som input och hur många. Det är också den som används i de skal som finns tillgängliga i C++. Typdefinitionerna är enklare men mindre självklara i Python eftersom mycket är implicit definierat där. 3 Observera att i det här exemplet är det första fältet routat till det andra fältet och det andra är routat till ett tredje. 4 Ett fält är t ex av typen SFFloat som är av typen SField genom arv. 5

6 #VRML V2.0 utf8 Shape { appearance Appearance { material Material { diffusecolor geometry DEF kula Sphere { radius 0.3 DEF klocka TimeSensor { cycleinterval 5 loop TRUE DEF interpol ScalarInterpolator { key[ 0, 0.5, 1 ] keyvalue[ 0.3, 0.6, 0.3 ] ROUTE klocka.fraction_changed TO interpol.set_fraction ROUTE interpol.value_changed TO kula.radius Figur 1: VRML-kod I VRML-gränssnittet till varje nod definieras förutom fälten och deras typer också huruvida fälten får routas till, från eller både och. I Reachin API Documentation markeras fält som kan routas både från och till med en dubbelpil. Fält som bara kan routas från har pil åt höger och fält som bara kan routas till har pil åt vänster. Vissa fält kan inte routas alls utan måste sättas till rätt värde direkt i VRML-koden. A.1 Rekommenderad läsning Detta appendix är endast en introduktion samt en förenklad omskrivning av det som finns i Reachin APIs dokumentation. För att verkligen förstå hur Reachin API fungerar tillsammans med VRML och C++ rekommenderas att ni läser åtminstone följande: Reachin API Programmers Guide 5 Reachin API, VRML and scene graphs, s46-49 Field Networks, s35-39 Fields, s84-93 Reachin API Documentation ( HTML Referensdokumentation ) B Reachin API och C++ I C++ kan man skapa egna noder med fält av standardtyper, men man kan också skapa egna fälttyper. Eftersom fält inte kan finnas utanför noder, så måste man även definiera en nod om man 5 Magma Programmers Guide innehåller nästan exakt samma saker men sidnumreringen här är anpassad för Reachin API-guiden. 6

7 vill göra ett eget fält. Dessutom måste man skriva en egen Reachinload som förutom att den sätter upp scen-grafen även läser in och känner igen de typer som man själv definierat. Det är dock inte så svårt som det kanske låter. De skal som ni arbetar med har redan den koden inlagd i main-funktionen. För att kunna koppla samman den nod man programmerat med VRML så måste man definiera ett gränssnitt mellan VRML och noden. Det är inte nödvändigt att förstå hur detta gränssnitt fungerar det finns färdiga sådana som man kan kopiera och anpassa. Vad man dock behöver förstå är de olika typer av fält som man kan definiera i gränssnittet. Det finns två olika sätt att koppla routing till ett fält routing från fältet och routing till detsamma. Därför finns det fyra olika routing-rättigheter : Till, Från, Både till och från samt Varken till eller från. I C++ VRML-gränssnitt svarar dessa rättigheter mot nyckelorden eventin, eventout, exposedfield respektive field. Fält med rättigheten field kan varken routas till eller från, vilket i praktiken innebär att det är en konstant som sätts vid initieringen, dvs skrivs i VRML-koden. B.1 Turbolektion i C++ Här följer en snabbgenomgång av de delar av ISO C++ Standard som ni behöver för den här laborationen. Det här är ingalunda tillräckligt för att bli en bra C++-programmerare, men möjligtvis tillräckligt för att en C- och Java-programmerare skall kunna skriva sina första rader kod. För det första är C++ mer likt Java än C är. Man definierar det mesta i klasser, men precis som i C så definierar man programmet i en header-fil och implementerar koden i en annan fil, här med ändelsen cpp 6. Klass-block och strukt-block avslutas med semikolon (som i class foo{ foo(){ ;), på samma sätt som när man definierar array-konstanter i Java. Variabler behöver inte längre definieras i inledningen till ett block, utan kan definieras mitt i en funktion, precis som i Java. Objekt kan skapas på samma sätt som vanliga variabler, men också på samma sätt som i Java, med new. Objekt som är skapade med new måste tas bort med delete när man är färdig med objetet. Annars kommer objektet att ligga kvar i minnet och ta upp plats. Pekare till objekt (som är skapade med new) deklareras med *, som i följande exempel: Cube *cube = new Cube(0.3);. På samma sätt som man i Java använder en punkt för att komma åt innehållet i objekt, använder man i C++ -> (som i cube->size = 0.2;). Skriver man inte * när man deklarerar en variabel, så skapas ett objekt på plats och det blir ingen pekare, som i detta exempel: Cube cube(0.3);. Sådana objekt ligger på anropsstacken och de fungerar som vanliga variabler. Innehållet i dem kommer man åt genom punkt precis som med objekt i Java (som i cube.size = 0.2;). Den största utvecklingen för C++ från C är troligtvis användandet av templates. De gör att man kan hantera objekt som vanliga datatyper. Vanligt är att man överlagrar operationer, såsom exempelvis plus, minus och klassomvandling (class casting). På så vis kan man beräkna t ex vektorer genom att bara skriva v3 = 0.3 * ( v2 + v1 );, som då skulle beräkna 0.3 gånger summan av vektorerna v1 och v2 och lägga den resulterande vektorn i variabeln v3. I vektorer är även operatorn [] implementerad, så att man kan använda objektet som en array om man vill ha tag i delelementen i vektorn. Om man vill omvandla ett objekt (m) av typen Matrix4f, som är en matris för homogena koordinater, till Quaternion som är en representation av en rotation, så kan man skriva q = (Quaternion) m; om q är av typen Quaternion. Den överlagrade operationen som utför klassomvandling plockar då ut rotationen ur matrisen och lägger den i det nya objektet. För att använda templates, överlagring och minneshantering så effektivt som möjligt, så bör man 6 Filer med källkod i c++ kan även ha ändelsen cxx, c++ eller cc, efter eget behag. 7

8 försöka skapa så få new objekt. Istället skall man försöka skapa dem på anropsstacken, d v s skapa dem som man skapar vanliga variabler, såsom int eller float. Objekt som är skapade på anropsstacken försvinner ur minnet när det anrop som skapade dem returnerar, d v s när funktionen som de skapades i är färdigkörd. Därför bör man inte returnera eller spara pekare eller referenser till sådana objekt. Å andra sidan behöver man inte bry sig om att rensa upp efter sig med delete. C Routing i VRML och Python Detta är en kort handledning till hur man skickar värden mellan VRML-noder och till Python. Jag tar upp saker som kanske inte är helt självklara när man läser dokumentationen till Reachin API. Jag förutsätter att du har en viss kunskap om Python innan du läser vidare. Det finns en tutorial som går igenom grunderna i språket på Pythons hemsida, current/tut/tut.html 7 Gå gärna igenom den. Det tar inte lång tid och då får du en genomgång av grundfunktionerna i språket. C.1 Routing till Python När man vill göra något mer avancerat än att bara skicka ett värde vidare till ett annat fält kan man koppla in en PythonScriptnod i sin VRML-fil. Det är inte svårare än att skriva: DEF script PythonScript { url "minpythonfil.py" Det är även här viktigt att ge noden ett namn för att kunna referera till den när man sätter upp sina routar. I pythonfilen definierar man objekt som ärver den typ av fält man vill returnera. Vill man t ex routa till ett translationfält låter man pythonklassen ärva SFVec3f, eftersom det är typen för translation. För att få VRML-noden nodett att alltid befinna sig på en bestämd position i förhållande till nodtvå, oavsett hur nodtvå rör sig, kan man routa nodtvås translation till ett python-skript och låta python-skriptet beräkna en ny position för nodett. Routa sedan scriptet till nodett. Inne i pythonfilen kan det se ut så här: class PositionHandler(SFVec3f): def evaluate(self, input): nyposition = input.get() nyposition.x = nyposition.x nyposition.y = nyposition.y nyposition.z = nyposition.z return nyposition positionhandler = PositionHandler() Observera pythons lexikaliska utseende. Ett python-program har inga grupperings-tecken såsom krull-paranteser i bl.a. C. Istället används indentering för att gruppera och strukturera programmet. Det är därför viktigt hur du formatterar din programkod. Routningen i VRML-filen skulle i det här fallet se ut så här: 7 Den finns också på nican/btl/python/ 8

9 DEF script PythonScript { url "minpythonfil.py" ROUTE kub1transform.translation TO script.positionhandler ROUTE script.positionhandler TO kub2transform.translation I det här fallet kommer det dock inte att hända någonting eftersom det inte finns något som genererar en event. Så man måste själv se till att det genereras någon lämplig event och routa den till rätt ställe. Om du t ex gör en Dynamic-nod så kan du routa dess translation_changed-fält till scriptet istället för kub1transform.translatation. Gör sedan t ex en SimpleSurface på Shapenoden i Dynamic-noden. När du petar på den med pennan kommer translation_changed att generera en event och skicka sin nya position till script.positionhandler. Det finns en fallgrop till när det gäller vad som utförs och inte. Om man gör en funktion och routar diverse värden till den, kommer den ändå inte att exekveras om man inte routar funktionen till något. Då måste man sätta Dependent() runt parametrarna. Exempel: class klassnamn(dependent(sfvec3f)): class klassnamn(dependent(typedfield(sfvec3f, None, SFFloat))): Lägg märke till att man skapar en instans av klassen och att det är till instansen som man routar sina parametrar. Parametrarna skickas till funktionen evaluate() och hamnar som en lista i variabeln efter self. Om man bara routar en parameter behöver man inte bry sig om att det är en lista, utan då hämtar man bara värdet genom att skriva input.get() (om man kallade variabeln för input naturligtvis). Skickar man däremot in flera parametrar så får man hämta ut en i taget genom att skriva input[0].get(), input[1].get(),..., input[n].get(). En klass som kan ta emot godtyckligt antal SFVec3f ser ut så här: class klassnamn (TypedField(SFVec3f, None, SFVec3f)): def evaluate (self, input): vec1 = input[0].get() vec2 = input[1].get()... Man måste dock vara noggrann med att man verkligen skickar med lika många parametrar som funktionen kräver. (tips: funktionen len(list) returnerar hur många parametrar som finns i listan list. Parametrarna i TypedField(P1, P2, P3) betyder följande: P1 bestämmer returtypen och måste vara samma som fältet man ska routa till. P2 är en pythontuple som avgör vad man måste skicka med för parametrar. P3 avgör vad resterande parametrar ska ha för typ. Vill man t ex att funktionen ska ta emot exakt en SFBool och en SFFloat och returnera en SFVec3f skriver man: class klassnamn(typedfield(sfvec3f, (SFBool, SFFloat))): Vill man att den ska ta emot fler än två parametrar lägger man bara till dem i listan: class klassnamn(typedfield(sfvec3f, (SFBool, SFFloat, SFVec3f))): Ovanstående funktion kan alltså ta emot en SFBool, en SFFloat och därefter en SFVec3f. Vill man att den ska kunna ta emot hur många parametrar som helst av typen SFVec3f och returnera en SFFloat skriver man: class klassnamn (TypedField(SFFloat, None, SFVec3f)): 9

10 C.2 Om du behöver initiera klassen I exemplen ovan behövdes ingen initiering av klasserna, och det gjorde att det enda man behövde implementera var funktionen evaluate(). Men om man behöver spara värden i objekten, och ge dessa ett startvärde så måste man implementera en egen init ()-funktion och då måste man vara noggrann att själv anropa init ()för den typ man ärver. Ex: class grejhojta(dependent(sfcolor)): def init (self): SFColor. init (self) self.active = 0 def evaluate(self, input): if self.active: print "sätter active till 0" print "färgen är hemlig" self.active = 0 else: print "sätter active till 1" print "färgen är:", input.get() self.active = 1 Anledningen till att man måste anropa superklassens init ()om man gör en egen är att då anropas inte superklassens init ()automatiskt längre. Man kan även skicka med parametrar till init ()-funktionen och på så sätt göra flera instanser av samma klass, som beter sig olika när man routar till dem. Här är ett exempel på en klass som tar emot en SFVec3f och, beroende på om man initierade med true eller false, returnerar samma vektor eller samma vektor med bytt tecken. class Minusifier(SFVec3f): def init (self, byttecken): SFVec3f. init (self) self.neg = byttecken def evaluate(self,input): if self.neg: return -input.get() else: return input.get() positiv = Minusifier(FALSE) negativ = Minusifier(TRUE) Routar man till positiv så returneras vektorn oförändrad, och om man routar till negativ så byter funktionen tecken på vektorn. D Kompilering på ADAM och EVA På stationerna ADAM och EVA finns Borland C++Builder Command Line Tools installerat. Det är en samling verktyg som liknar dem ni hittills använt på Linux, med vissa undantag. Istället för gcc heter kompilatorn bcc32 och makefilerna ser lite annorlunda ut. För att göra det enkelt att skilja på Linux och Borlands makefiler, så rekommenderas att ni ger Borlands makefiler ändelsen.bcb. Eftersom det är en del flaggor, include-variabler och annat som måste ställas in, så finns det en färdig makefil som ni kan kopiera ifrån kurshemsidan och anpassa efter era program. Kompilering görs, precis som på Linux, med kommandot make -f <makefile>, där <makefile> är namnet på er makefil. Detta kan göras ifrån Emacs, eller ifrån en kommandotolk. I Emacs trycker man normalt M-x och skriver sedan compile. På ADAM och EVA är det kommandot dock mappat mot en knappkombination, så om ni trycker C-c c, så betyder det samma sak. Sedan skriver man det kommando som Emacs skall använda för att kompilera filerna, dvs make 10

11 -f <makefile>. För att Emacs skall hitta makefilen, så krävs att filen som editeras i det aktiva fönstret ligger i samma mapp som den, när man aktiverar kompileringen. Kommer det upp kompileringsfel kan Emacs visa var felet uppstod i källkoden om man sätter markören på felutskriften och trycker <enter> eller om man klickar på felutskriften med musens mittenknapp. Om man kompilerar flera filer samtidigt så kan felaktiga varningar skrivas ut. Detta beror bara på hur kompileringen sker och behöver inte tas notis om. Det färdiga programmet hamnar efter lyckad kompilering i mappen opt under mappen i vilken kompileringen utfördes. 11

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP. Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Anders Heyden Matematikcentrum Lunds Universitet Matematisk Modellering p.1/37 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal

Läs mer

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Felsökning av mjukvara

Felsökning av mjukvara KUNGLIGA TEKNISKA HÖGSKOLAN Felsökning av mjukvara Programmering av en NXT-robot Max Kufa [03/08-13] mkufa@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Syftet med laborationen var att

Läs mer

Inlämningsuppgift 4 NUM131

Inlämningsuppgift 4 NUM131 Inlämningsuppgift 4 NUM131 Modell Denna inlämningsuppgift går ut på att simulera ett modellflygplans rörelse i luften. Vi bortser ifrån rörelser i sidled och studerar enbart rörelsen i ett plan. De krafter

Läs mer

MMA132: Laboration 1 Introduktion till MATLAB

MMA132: Laboration 1 Introduktion till MATLAB MMA132: Laboration 1 Introduktion till MATLAB De flesta numeriska metoder låter oss få en tillräckligt bra lösning på ett matematiskt problem genom att byta ut komplexa matematiska operationer med kombinationer

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Tentaupplägg denna gång

Tentaupplägg denna gång Några tips på vägen kanske kan vara bra. Tentaupplägg denna gång TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva

Läs mer

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? ICT LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? Daniel Lindfors 12/9/07 dlindf@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna laboration

Läs mer

Nallelek Lärarvägledning

Nallelek Lärarvägledning NALLELEK - LÄRA MERA PROGRAM AB Nallelek Lärarvägledning NALLELEK... 2 1.1 Programmet... 2 1.2 Övningar som stärker förmågan att iaktta bilder och se detaljer... 3 1.2.1 Pedagogiska tips... 3 1.3 Kategorisering

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode TDP002 Imperativ programmering Laborationsmaterial emacs python-mode Höstterminen 2008 Innehållsförteckning Introduktion...3 Redovisning av laborationer...3 Laboration 1 emacs python-mode...4 Uppgift 1

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Tentamen TEN1 HI1029 2014-05-22

Tentamen TEN1 HI1029 2014-05-22 Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch Digitalt lärande och programmering i klassrummet Introduktionsworkshop - Bygg ett akvarium i Scratch Introduktion Scratch är en programmeringsomgivning utvecklad av forskare på Massachusetts Institute

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Tentaupplägg denna gång

Tentaupplägg denna gång Några tips på vägen kanske kan vara bra. Tentaupplägg denna gång TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva

Läs mer

Björn Abelli Programmeringens grunder med exempel i C#

Björn Abelli Programmeringens grunder med exempel i C# Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att

Läs mer

Programmering i C++ Kompilering från kommandoraden

Programmering i C++ Kompilering från kommandoraden Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Handbok Kig. Dominique Devriese Översättare: Stefan Asserhäll

Handbok Kig. Dominique Devriese Översättare: Stefan Asserhäll Dominique Devriese Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Grundläggande användning 6 2.1 Konstruera objekt...................................... 6 2.1.1 Konstruera punkter................................

Läs mer

Övning 2: I cellerna B19 och F26 ska du beräkna den totala ytan för respektive hus. I cell C28 den totala ytan, för båda husen.

Övning 2: I cellerna B19 och F26 ska du beräkna den totala ytan för respektive hus. I cell C28 den totala ytan, för båda husen. VT -09 Excelövningar KY Eslöv Öppna filen Excelövningar.xls. Det är en Excelfil som innehåller alla de övningar jag har gjort, som är av allmän karaktär, dvs. beräkningar och kalkyler, men t ex inte diagram.

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker Sid 1 Laborationer i kursmomentet Datoranvändning E1 http://www.etek.chalmers.se/~hallgren/eda/ : Mer om FrameMaker 1996, 1997 Magnus Bondesson 1998 och 99-09-22 Thomas Hallgren 1 Introduktion I Laboration

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Klassuppgift: Hinderrally

Klassuppgift: Hinderrally Klassuppgift: Hinderrally I detta dokument finns Instruktion till uppgiften Regler för konstruktionen Användarhandledning till Algodoo Uppgift Bygg ett simulerat fordon som ska klara ett antal hinder.

Läs mer

Övningar i JavaScript del 2

Övningar i JavaScript del 2 Övningar i JavaScript del 2 Genm dessa övningar frtsätter intrduktinen av JavaScript. Vi tar nu upp if-satser ch lite mer m funktiner. Vi kmmer ckså in på tillämpningar sm att byta en bild på webbsidan

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

Tips och tricks 1 Cadcorp SIS 5.2 2003-03-03

Tips och tricks 1 Cadcorp SIS 5.2 2003-03-03 Tips och tricks 1 Cadcorp SIS 5.2 2003-03-03 Skapa en raster pensel från en Windows bakgrund (1) 1. Kontrollera att Paper är uppsatt som koordinatsystem/projektion 2. Öppna en Bitmap fil i ett tom fönsterfil

Läs mer

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål? 1DV33 HT13 Antal : I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål? - ha fått grundläggande kunskaper om strukturerad programmering

Läs mer

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

Slutrapport YUNSIT.se Portfolio/blogg

Slutrapport YUNSIT.se Portfolio/blogg Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare

Läs mer

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 6 2 Hur man spelar 7 3 Spelets regler, strategi och tips 8 3.1 Spelets regler........................................

Läs mer

Sida 1 av 12. WSB Biodling. Manual V.1.1. http://www.wermdobiodlare.se

Sida 1 av 12. WSB Biodling. Manual V.1.1. http://www.wermdobiodlare.se Sida 1 av 12 WSB Biodling Manual V.1.1 Sida 2 av 12 Översikt: WSB Biodling är en app som hjälper dig med olika saker inom biodlingen. Nyheter i denna version är möjlighet att skapa skötselkort och dokumentera

Läs mer

En handledning för studerande på Högskolan Kristianstad

En handledning för studerande på Högskolan Kristianstad Använda kurskonferenser i FirstClass En handledning för studerande på Åsa Kronkvist, augusti 2005 Innehåll Introduktion...3 Webbklient eller FirstClassklient?...3 Allt ligger online...3 Hitta rätt...4

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

Kom igång. Version 3

Kom igång. Version 3 Kom igång Version 3 Installation & Inställningar Om du läser den här filen, har du troligtvis redan tagit dig igenom installationsprocessen hos PMView Pro. Den här sektionen är tänkt att guida dig genom

Läs mer

Elisabeth Bejefalk IT-Assistent Avesta kommun

Elisabeth Bejefalk IT-Assistent Avesta kommun Elisabeth Bejefalk IT-Assistent Avesta kommun Du ska nu få lära dig hur du enkelt kan göra ett bildspel i PowerPoint. Utifrån det du snart har lärt dig kan du sen göra mer avancerade bildspel genom att

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara: Hemsida CSS Introduktion till Cascading Style Sheets (CSS) Detta är en mycket kort genomgång av CSS med exempel på hur sådan kod ska läsas och hur den kan användas på IdrottOnline-sidor. Är man ute efter

Läs mer

Tentamen, EDA501 Programmering M L TM W K V

Tentamen, EDA501 Programmering M L TM W K V LUNDS TEKNISKA HÖGSKOLA 1(0) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 05 31, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 Hjälpmedel: Java-bok Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt. Bruksanvisning Installera CubeBiz... 2 Välj språk... 2 När du vill köra testversionen i 15 dagar... 3 När du köper en CubeBiz-licens... 3 Registrera en giltig licensnyckel... 3 Starta ett nytt projekt...

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009

DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009 DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Chapter 3: Using Classes and Objects

Chapter 3: Using Classes and Objects Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop

Läs mer

LEGO NXT Robotprogrammering

LEGO NXT Robotprogrammering KUNGLIGA TEKNISKA HÖGSKOLAN LEGO NXT Robotprogrammering Laboration med parprogrammering Filip Forsby 2012-08-27 forsby@kth.se II1310 Introduktionskurs i datateknik Sammanfattning Denna rapport beskriver

Läs mer

Quick Guide till Mahara och din Portfolio

Quick Guide till Mahara och din Portfolio Quick Guide till Mahara och din Portfolio 2012-05-20 A. Arstam Sida 1 Quick Guide till Mahara och din Portfolio Syftet med portfolion är att Du genom reflektion och självutvärdering ska få insikt i ditt

Läs mer

1 Skapa Tabell...2. 2 Skapa Relationer...20. 3 Redigera Relationer...24. 4 Redigera Fält i Tabell...26. 5 Lägga till Poster i Tabell...

1 Skapa Tabell...2. 2 Skapa Relationer...20. 3 Redigera Relationer...24. 4 Redigera Fält i Tabell...26. 5 Lägga till Poster i Tabell... Kapitel 5 Tabell 1 Skapa Tabell...2 1.1 Tabellfönstret... 4 1.2 Fältegenskaper... 8 1.3 Primärnyckel... 11 1.4 Spara Tabell... 12 1.5 Tabellguiden... 12 2 Skapa Relationer...20 3 Redigera Relationer...24

Läs mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab TAIU07 Matematiska beräkningar med Matlab Datorlektion 2. Villkor och Repetition 1 Logiska uttryck Uppgift 1.1 Låt a=3 och b=6 Vad blir resultatet av testerna ab? Uppgift 1.2 Låt a, b,

Läs mer

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration 1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Uppgift 1 (Oläsliga krypterade meddelanden)

Uppgift 1 (Oläsliga krypterade meddelanden) Uppgift 1 (Oläsliga krypterade meddelanden) Ofta vill man kryptera text för att inte andra skall se vad man skrivit. I den givna filen KRYPTERAD_TEXT.TXT finns en krypterad text som kan vara av intresse

Läs mer

Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API

Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API Introduktion Visma Compact API är ett programmeringsgränssnitt framtaget för att underlätta integration av Visma

Läs mer

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot KUNGLIGA TEKNISKA HÖGSKOLAN NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot Gabriel Vilén 30/8-2012 gvilen@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Vi har programmerat

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 19 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Konstruktion av egna grafiska komponenter Kontsruktion av egen komponent Att rita upp

Läs mer

Laboration 1: Figurer i hierarki

Laboration 1: Figurer i hierarki Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras

Läs mer

Agenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna

Agenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna Agenda Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna Projektupptakt I kursen ingår PRO1, enskild programmeringsuppgift En större programmeringsuppgift som ni löser

Läs mer

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada. Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern

Läs mer

"if"-satsen. Inledande programmering med C# (1DV402)

if-satsen. Inledande programmering med C# (1DV402) "if"-satsen Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket if-satsen

Läs mer

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110.

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Denna tenta kommer att vara färdigrättad On 14/1-04 och kan då hämtas på mitt

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Att komma igång med FirstClass (FC)!

Att komma igång med FirstClass (FC)! Att komma igång med FirstClass (FC)! Vi har tillgång till FC genom vårt samarbete med folkhögskolor och därigenom med Folkbildningsnätet. FC kan användas på en dator på två sätt (dessutom kan du använda

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo 06 03 04 LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo 06 03 04 LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo 06 03 04 LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH Uppgift: Lös nedanstående problemställning med hjälp av programvaran

Läs mer

Introduktion till datormiljön och Python

Introduktion till datormiljön och Python Introduktion till datormiljön och Python Nyckelord: katalog, katalogträd, rot, fil, källkod, program, exekvering, tilldelning, inmatning, utmatning. Mål: Att du efter laborationen ska klara dig på egen

Läs mer

Lär dig sökmöjligheterna i Disgen 8

Lär dig sökmöjligheterna i Disgen 8 Det har blivit dags att titta på sökmöjligheterna i Disgen. Det finns egentligen två olika sökfunktioner i Disgen, Välj person och Sök personer. Här behandlas dessa båda funktioner. Välj person och Sök

Läs mer