Laboration 6 Haptik. Version 2.0. Karljohan Lundin Ludvig Tunel Niclas Andersson. 6 september 2001
|
|
- Lars-Göran Olofsson
- för 8 år sedan
- Visningar:
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 December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Läs merProgrammeringsteknik 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 merSä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 merGrundlä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 merEditering, 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 merIntroduktion 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
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 merObjektorienterad 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 merTentamen 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.
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 merFö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 merVem ä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 merProgrammering 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 merAtt 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 merFö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 merMatematisk 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 merProva 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 merEnKlass. 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 merObjektorienterad 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 merFelsö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 merInlä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 merMMA132: 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 merTENTAMEN. 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 merIntroduktion 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 merIntroduktion. 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 merTentaupplä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 merLEGO 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 merNallelek 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 merFö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 merTDP002 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 merTentamen. 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 merTentamen 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 merProgrammering 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 merDigitalt 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 merObjektorienterad 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 merTentaupplä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 merBjö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 merProgrammering 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 merFö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 merFö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 merSMD 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 merObjektsamlingar 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 merDagens 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 merGrunderna 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 merHandbok 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.
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 merOOP 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 merLaborationer 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 merProgrammering 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 merKlassuppgift: 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 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 mer1 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 merTips 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 mer1DV433 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 merInledande 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 merTentamen 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 merSlutrapport 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 merHandbok 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 merSida 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 merEn 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 merTentamen 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 merKom 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 merElisabeth 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 merObjektorienterad 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 merMATLAB. 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 merFö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 merTentamen, 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 merLite 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 merTä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 merLä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 merObjektorienterad 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 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 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 merDD1311 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 merIdag. 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 merDet 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 merChapter 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 merLEGO 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 merQuick 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 mer1 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 merTAIU07 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 merHur 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 merITK: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 merUppgift 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 merSnabbguide 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 merNXT 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 merObjektorienterad 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 merLaboration 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 merAgenda. 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 merSockets: 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 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 merFö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 merLö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 merTentamen 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 merAtt 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 merKompilering 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 merProgrammering 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 merHÖ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 merIntroduktion 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 merLä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