UMEÅ UNIVERSITET Datavetenskap. Praktiska uppgifter. Metoder och verktyg för datavetare Ht07
|
|
- Rebecka Nyström
- för 9 år sedan
- Visningar:
Transkript
1 UMEÅ UNIVERSITET Praktiska uppgifter Metoder och verktyg för datavetare Ht07
2
3 Umeå universitet Praktisk uppgift 1 RobotLego L1 ROBOTLEGO Syfte Syftet med denna praktiska uppgift är att man ska få en insikt i hur en robot kan styras med hjälp av enkel programmering med ikoner. Uppgiften kommer också ge tillfälle till reflektion kring hur man ger en robot ett beteende och vilka beteenden som är enkla att programmera och vilka som är svårare. Uppgiften löses i mindre grupper som utses under övningstillfället. Uppgift När ni kommer till laborationssalen finns det en robot och början på ett program som styr roboten där. Ni ska under uppgiftens gång öka på robotens förmåga att röra sig i en omgivning och målet är att den ska kunna följa en snitslad bana obehindrat. (Eller ni kanske formulerar ännu större/svårare mål?) När uppgiften startar finns två ljussensorer kopplade på roboten, dessa är kopplade till ingång 1 och 3 på RCX-modulen. Det finns också en trycksensor kopplad till ingång 2. Det finns två motorer på roboten som styr vänster respektive högre hjulpar. Motorerna är kopplade till utgångarna A och C. Deluppgift 1 Arbeta med utdata - styr roboten Det kodavsnitt som ni laddat in består av en oändlig loop som avslutas genom att man trycker på trycksensorn. Ni ska nu skapa olika beståndsdelar för att styra roboten. Ni börjar med att utveckla delarna inuti den oändliga loopen för att sedan flytta över dem till egna rutiner (och därmed egna ikoner). Detta gör att det blir enkelt för er att återanvända koden i senare deluppgifter. Skriv kod som gör att roboten åker framåt roboten åker bakåt roboten svänger vänster roboten svänger höger Notera att vänster- och högersvängarna kan göras på tre olika sätt. Två sätt där roboten står stilla och svänger och ett sätt där roboten kör framåt samtidigt som den svänger (det bli en liten större svängradie). Implementera alla tre sätten och undersök vad som skiljer dem åt. Tänk på hur ni namnger era rutiner, det ska vara enkelt att förstå vilken man ska använda även om man inte sett koden för rutinen. Deluppgift 2 Gör ett rörelseschema Låt er robot dansa genom att programmera en sekvens av rörelser. Roboten bör röra sig på olika sätt under minst 15 sekunder. Det är helt valfritt hur roboten rör sig bara det är varierat. Här bör ni använda er av de små delprogrammen som ni gjorde i deluppgift 1. Deluppgift 3 Gör en robot som kan följa en snitslad bana I laborationssalen finns en vit och/eller svart bana upptejpad på golvet. Skriv ett program till roboten som med hjälp av ljussensorerna gör att roboten automatiskt rör sig längs banan. 1
4 Umeå universitet Praktisk uppgift 1 RobotLego Frivilliga extrauppgifter Gör en robot som rör sig på området innanför banan? Gör en robot som kan köra på ett bord utan att ramla ned. Tips! Använd trycksensorn och låt den vara nedtryckt när den kör omkring och stanna när den släpps upp. Räkna antalet varv i banan, när roboten kört tre varv så ska den göra en segerdans. Redovisning Arbetet ska redovisas i en skriftlig rapport. Redogör utförligt för varje genomfört steg, om ni inte hunnit lösa deluppgift 3 så redogör för hur långt ni kommit och beskriv hur ni skulle gått vidare om mer tid funnits. Tänk på att en icke initierad läsare skall kunna återupprepa det ni gjort. Vid val av parametrar måste ni övertyga läsaren om att det inte finns andra val av parametrar som skulle lösa uppgiften avsevärt mycket bättre. Detta kan till exempel göras genom att redovisa tabeller med olika parameterval och redovisning av uppvisat beteende hos legoroboten. I ett separat avsnitt redogör ni för vilka slutsatser som man kan dra av experimentet. Introduktion till systemet Portar Etikett Färg Namn Funktion 1,2,3 Grå Input Här kopplar man in sensorer, tex ljus, tryck, temperatur och rotationssensor A, B, C Svart Output Här kopplar man in motorer och andra outputenheter som tex lampor Knappar Etikett Färg Namn Funktion Beskrivning On-Off Röd On-off Slår av och på RCX-enheten Programmen finns kvar i RCXenheten så länge det finns batterier i den. View Svart View Låter användaren se en ports värdern i displayfönstret Prgm Grå Program Väljer vilket program (1-5) som RCX ska köra. Run Grön Run-Stop Startar och stoppar körningen av ett RCX-program En pil kommer fram och pekar på den port som man kollar värdet på. Om man trycker ned knappen flera gånger så byts programnumret. Nummer 1 och 23 är låsta program När ett program körs ser det ut som att den lilla personen springer. 2
5 Umeå universitet Praktisk uppgift 1 RobotLego Några av ikonerna förklarade i detalj: Begin End Stop A Stop all Outputs Motor A, Forward Motor A, Reverse Wait-For? Sub-menu Modifiers Sub-menu Början på ett program, måste finnas med i alla program. Slutet på ett program, måste finnas med i alla program. Stoppar strömmen till port A (dvs om en motor är kopplad dit så stannar motorn). Finns motsvarande för port B och C. Stoppar strömmen till portarna A, B och C Startar porten framåt full fart. Finns motsvarande för port B och C. Startar porten bakåt full fart. Finns motsvarande för port B och C. Klicka på denna ikon så öppnar en undermeny med kommandon som stannar körningen. Stanna körningen 1 sekund (finns också 2, 4, 6, 8 och 10 sekunder samt tiondelar och hundradelar). Vänta ett slumpmässigt antal sekunder (default 1-5 sekunder). Den här undermenyn använder man när man vill använda specifika portar, kraftnivåer, och värden i andra kommandoikoner. Koppla in denna modifierare för att välja input Port 1. Koppla in denna modifierare för att välja output Port A. Structures Sub-menu Loops SubSub-menu Denna modifierare ställer in en motor (eller lampa) på kraftnivå 4. Denna modifierare används för att skicka ett konstant värde till en sensor eller en tid till tidskommandoknappar. I denna undermeny finns kommandoknappar för loopar, (upprepningar i programmet), forkar (val i programmet) och andra sätt att strukturera progammet. I menyn Structures finns under menyn Loops som hanterar olika upprepningar i programmet. Loopar så länge trycksensorn INTE är intryckt. Loopar så länge trycksensorn är intryckt. Loopar så länge ljussensorn är mindre än ett visst värde. Forks SubSub-menu Slutet på en loop, hoppar tillbaka till början av loopen. I menyn Structures finns under menyn Forks som hanterar olika val i programmet. Programmet kommer att välja mellan två vägar i programmet och sedan gå ihop i en enda väg igen. Trycksensorfork. Om trycksensorn INTE är intryckt så körs den övre programtråden och är den intryckt körs den undre programtråden. Ljussensorfork. Om ljussensorns värde är över det givna körs den övre programtråden. Är värdet under det givna körs den undre programtråden. För samman två programtrådar till en enda. 3
6 Umeå universitet Praktisk uppgift 1 RobotLego Man kan slå på en kontextberoende hjälp genom att i menyn Help kryssa för Show Contect Help eller genom att trycka på Ctrl-H. När man sedan arbetar med en ikon på skrivbordet får man hjälp med hur ikonen fungerar. Till exempel får man följande hjälp för Motor A, Forward -ikonen: Här ser man följande: Ikonen har tre ställen där man kan koppla trådar. Begin och End används för själva programmet. Begin på denna ikon ska kopplas till End på den föregående ikonen i programmet och End på denna ikon ska kopplas till Begin på nästa ikon. Power Level är det tredje stället och där kan man koppla in en kraftnivå på motorn. Men det står också att default är full fart så man behöver inte koppla in ett värde här om man inte vill. Hjälpen för ljusssensorforken ser ut så här: 4
7 Umeå universitet Praktisk uppgift 2 Matlab och representation L2 MATLAB OCH REPRESENTATION Syfte med laborationen Syftet med denna praktiska uppgift är att man ska få stifta bekantskap med programmet MATLAB, men också se få en inblick i datarepresentation, dvs. hur vanliga tal och andra begrepp kan lagras i en dator, samt reflektera över hur dessa kan ställa till med problem. MATLAB MATLAB är ett program för att göra matematiska beräkningar och visualiseringar av data. Namnet är en förkortning av Matrix laboratory. När man startar MATLAB ska ett kommandofönster med en prompt som ser ut som ett dubbelt olikhetstecken öppnas. Efter prompten ges instruktioner till MATLAB. Bland det enklaste man kan göra är att addera två tal, skriv följande och tryck sedan på returtangenten: >> För multiplikation använder man * och för division / precis som i de flesta programmerings-språk. Man kan spara uträknade värden i variabler som i detta exempel. >> a = 3*5 a = 15 >> b = b = 60 >> c = a/b c = 0.25 Den sista raden, c = a/b, betyder att man delar a (dvs. 15) med b (dvs. 60) och sparar svaret i variabeln c. Om man enbart skriver c och trycker på returtangenten i MATLAB kommer den att svara med värdet som är sparat i c, dvs Uppgift Uppgiften är indelad i flera deluppgifter. I de två första kommer du att titta på hur ändlig precision i en dator kan påverka resultat. I den andra ska vi kika på hur färger kan representeras i en dator samt göra enkla bildmanipulationer. Du ska hela tiden redovisa dina uträkningar med hjälp av de utskrifter du får i MATLAB. Efter att du är klar så kan du skriva ned hur du tyckte att uppgiften har fungerat och om du har några andra reflexioner. 5
8 Umeå universitet Praktisk uppgift 2 Matlab och representation Uppgift 1 - Heltalsrepresentation Första uppgiften blir att ta reda på hur heltal representeras i en dator. Man brukar prata om binärt data och ettor och nollor, men vad innebär det? Vårt sätt att utrycka tal är ett så kallat positionssystem, vilket innebär att en siffras betydelse beror på dess plats i talbeteckningen. Ett positionssystem definieras av en bas och behöver siffror, inkl. 0, som till antalet är lika med basen. Vanligast är decimaltalsystemet med basen 10 där vi använder de s.k. arabiska siffrorna 0,1,2,3,4,5,6,7,8,9. Även andra baser har varit vanliga i historien, bl.a. 12 (därav klockan) och 20 (därav danskans talsystem där tres betyder 60 och firs betyder 80). En dator använder istället ett binärt talsystem med basen 2, där det alltså enbart finns siffrorna 0 och 1. Så om vi nu vill representera talet (23 med basen 10) binärt, hur ser det ut? = = = = I en dators minne pratar vi vanligtvis om byte. Varje byte består av 8 bitar, där varje bit kan vara en etta eller en nolla. (På svenska kan man även kalla en byte för en bitoktett). Vilket är det största tal vi kan lagra i en byte? Detta tal är inte så stort. Vanligtvis använder datorn i stället 4 byte (32 bitar) för att lagra heltal. Hur stort tal kan man lagra då? Nu används ju inte bara positiva tal utan även negativa tal. Dessa ska också rymmas på 32 bitar. Vanligtvis använder man därför den 32:a biten för att bestämma om talet ska vara positivt (0:a i 32:a biten) eller negativt (1:a i 32:a biten). Givet att man kan lagra både positiva och negativa tal på detta vis, vilklet är då det största tal man kan lagra med 32 bitar? Vilket är det minsta? Testa om det stämmer i MATLAB genom att skriva >> bignum = intmax >> bignum + 1 Vad händer? I MATLAB kan man använda ^ för att beteckna upphöjt till, dvs >> 2*10^1 + 3*10^0 ans = 23 Testa också funktionerna dec2bin och bin2dec. Använd MATLABs hjälpfuntion för att ta reda på hur olika funktioner fungerar. T.ex.: >> help intmax >> help dec2bin 6
9 Umeå universitet Praktisk uppgift 2 Matlab och representation Uppgift 2 - Flyttalsrepresentation En dator räknar väldigt snabbt, det vet vi. Tyvärr räknar den också ofta fel. Detta ska vi nu se exempel på och försöka lista ut varför den gör det. Funktionen floor ger oss närmsta heltalet mindre eller lika med ett reellt tal, dvs. >> floor(2.45) ans = 2 >> floor(5) Testa nu att använda floor på följande divisioner: 0.4/0.2, 0.5/0.2, 0.6/0.2, 0.7/0.2, och 0.8/0.2. Alltså >> floor (0.4/0.2) osv. Visst händer något oväntat med något av talen? Kan vi försöka ta reda på varför det blir fel. Räkna ut differensen mellan divisionerna och det förväntade resultatet, dvs. >> 0.4/0.2 2 osv. för de övriga divisionerna. Vad händer? Orsakerna till dessa resultat ligger givetvis i hur datorn lagrar reella tal. Flyttal kallas tal som i en dator lagras utan fast position för decimalkommat (egentligen "binär"-kommat). Talen delas upp i en del för mantissa och en för exponent, t.ex = *10^5, där är mantissan och 5 är exponenten. Olika antal bitar kan användas för mantissa och exponent och med ett begränsat antal bitar tillgängliga blir valet en kompromiss mellan precision och hur stora tal som kan representeras. På dagens datorer är 8 byte (64 bitar) vanligt när man lagrar reella tal. Hur noga är då dessa tal? Testa att ta reda på hur litet tal vi kan addera till 1 utan att resultatet återigen blir 1. För att göra det enklare kan vi skriva som nedan där x alltså är talet du vill testa. Notera att du kan skriva 1.2e-23 som betyder >> 1 + x - 1 Vilket tal hittar du som det minsta, och vilket tal rapporterar MATLAB tillbaka som skillnaden? Är de lika? Reflektera över begreppen noggrannhet och ändlig precision. Läs gärna också hjälptexten till eps. 7
10 Umeå universitet Praktisk uppgift 2 Matlab och representation Uppgift 3 Bildmanipulation i MATLAB Vi fortsätter att kolla på hur olika begrepp kan representeras på en dator. I denna uppgift ska vi titta lite närmare på begreppet färg. Färger på datorn Vi kan inte på något enkelt sätt representera alla färger i det synbara spektrat på ett enkelt sätt, däremot en god approximation. Med hjälp av 3 s.k. basfärger kan vi återge ett stort antal andra färger. Vanligast t.ex. på TV-apparater och datorskärmar är den s.k. RGB-modellen, där basfärgerna utgörs av rött, grönt och blått. Med hjälp av de tre färgerna kan vi få andra färger genom att variera hur mycket av varje färg vi använder. Vanligtvis varierar vi styrkan med ett värde mellan 0 och 255, där 0 betyder inget, och 255 max (varför just dessa värden?). Exempel på hur andra färger bildas kan vi se i tabellen nedan R G B Färg Rött Gult Turkost Lila Grått Vitt Mörkröd En vanlig TFT-skärm fungerar genom att tre rutnät med pyttesmå hål släpper igenom rött, grönt respektive blått ljus från en lampa bakom näten. Hålen kan täppas till respektive öppnas med elektriska impulser. Då hålen sitter tätt och olika mycket ljus släpps igenom tolkar ögat de tre basfärgerna som olika färger. När alla tre är helt öppna ser vi det som en vit punkt. Matriser Namnet Matrix laboratry antyder att MATLAB är bra på s.k. matriser. Matriser kan liknas vid ett rutnät av siffror i rader och kolumner, där alla rader resp. kolumner innehåller lika många värden. >> A = [1 2 3; 4 5 6] A = Exemplet ovan visar en matris vi kallade för A som har 2 rader och 3 kolumner med värden. Notera hakparenteserna samt tecknet ; som anger radbrytning. Vi kan också ändra enskilda värden eller hela kolumner eller rader. Första exemplet nedan ändrar värdet i andra raden, tredje kolumnen till 9 och andra exemplet sätter alla rader (:) i 2:a kolumnen till sexor (observera att argumenten till ones anger antalet rader respektive antalet kolumner med ettor som ska skapas). 8
11 Umeå universitet Praktisk uppgift 2 Matlab och representation >> A(2,3) = 9 A = >> A(:,2) = 6*ones(2,1) A = Bilder i MATLAB Vi ska nu skapa en matris i 3 dimensioner, dvs. den har flera lager av värden, inte bara rader och kolumner. I detta fall har den 3 lager, med 6 rader och 6 kolumner i varje lager. Kommandot zeros skapar en matris av nollor och uint8 (int förkortning av integer = heltal) gör att matrisen består av heltal och inte reella tal. Kan du gissa varför den börjar på u och slutar på 8? IMG = uint8(zeros(6,6,3)) IMG(:,:,1) = IMG(:,:,2) = IMG(:,:,3) = Denna matris kommer nu att representera en liten bild, som är 6 6 pixlar. Varje lager innehåller värden för respektive basfärg (röd i lager 1, grön i lager 2 och blå i lager 3) för varje pixel. Kommandot image kommer att visa bilden något förstorad. >> image(img) Försök gissa vilken färg bilden kommer att ha i respektive steg. Testa nu att ändra värdena i matrisen till heltalsvärden mellan 0 och 255 och se hur bilden förändras. Exempel: Ändra alla värden i andra kolumnen i första lagret till 127 >> IMG(:,2,1) = 127 Ändra alla värden i tredje raden i första lagret till 100 >> IMG(3,:,1) = 100 Ändrar värdena i först lagret till värdena i första lagret skalat med 1.5. >> IMG(:,:,1) = 1.5*IMG(:,:,1) 9
12 Umeå universitet Praktisk uppgift 2 Matlab och representation Läsa in och spara bilder Testa och spara ned bilden clown.jpg som finns på kurshemsidan ( till din användare. Du kan nu läsa in bilden med kommandot imread. >> CLOWN = imread( h:/clown.jpg ); Testa att visa bilden med image. Bilder kan sparas med hjälp av kommandot imwrite. >> imwrite(clown, h:/clown2.jpg, jpeg ); Uppgifter Gör en inläst bild mörkare samt spara denna med ett nytt namn. Testa gärna också att konvertera en bild till enbart grå färger samt spara denna i nytt namn. Du kan också skapa egna bildfunktioner enligt det som beskrivs senare. Reflektera över varför basfärgerna representeras i intervallet och inte t.ex. som ett reellt tal mellan 0-1. Redovisning Diskutera de fenomen vi observerat med datarepresentation samt ändlig precision med hjälp av utskrifter från MATLAB. Vilka slutsatser kan vi dra och vad bör man tänka på vid användandet av datorer som beräkningshjälpmedel. Reflektera också över hur färger kan representeras i datorer samt redovisa de bilder du förändrat samt eventuellt skrivna funktioner. Makrofiler och egna funktioner I MATLAB finns det två typer av textfiler, kommandofiler som endast består av kommandon och funktionsfiler som kan ha en eller flera parametrar. Båda dessa typer av filer har samma suffix,.m, och kallas ofta m-filer. Kommandofilen består av en serie kommandon som exekveras när man skriver filens namn i MATLAB. Funktionsfiler har oftast in- och utdata. 1 En m-fil kan skapas med hjälp av MATLABs inbyggda editor som öppnas med hjälp av kommandot edit. Ett exempel på en kommandofil kan vara: %Beräknar variationsbredden för en vektor x xmax = max(x); %max-värde xmin = min(x); %min-värde xmax-xmin Om filen sparas som range.m kan den användas på följande sätt: >> x = [ ]; >> range 1 Detta och följande stycke är hämtat ur Användarhandledning för MATLAB 6 av Eva Pärt-Enander och Anders Sjöberg, FÖRLAG,
13 Umeå universitet Praktisk uppgift 2 Matlab och representation Resultatet blir då ans = 6 Kommandofilen ovan kan göras om till en funktionsfil: function r = range(x) %Beräknar variationsbredden för en vektor x xmax = max(x); %max-värde xmin = min(x); %min-värde r = xmax-xmin; Nu kan funktionen range anropas på följande sätt: Svaret blir då ans = 8 >> y = [ ]; >> range(y) Första raden i en funktionsfil måste innehålla ordet function, funktionsnamnet samt eventuella in- och utparametrar. När man anropar en m-fil måste man ändra sökvägen för aktuell arbetskatalog så att MATLAB kan hitta den. Ett tips för att se några av möjligheterna med MATLAB är att ange kommandot demo och utforska lite själv. 11
14 Umeå universitet Praktisk uppgift 3 PostScript-programmering L3 POSTSCRIPT-PROGRAMMERING Inledning Programmering handlar om att styra ett beteende hos något, vanligtvis någon teknisk utrustning. Programmering kan ske på flera olika sätt. Det som kommer till minnes först kan vara att programmera en video eller skriva mjukvara till en dator. Mjukvara till datorer är vanligtvis så kallad källkod som översatts till något som kan förstås av datorn, eller vad det är som skall styras. Källkoden är vanlig text som är uppbyggt på ett liknande sätt som ett mänskligt språk med en syntax och semantik. Dessa sammanfattas i vad som kallas ett programmeringsspråk. Syftet med laborationen Syftet med denna laboration är att ge ett exempel på ett textbaserat programmeringsspråk och hur vi med hjälp av det kan styra ett visst beteende, denna gång hos en skrivare. Du skall få bekanta dig med begrepp som källkod, syntax, semantik, stack, kommando, procedur, variabel, parameter och repetition. Stack Vad associeras ordet stack till? Kanske en myrstack? Begreppet stack är vanligt inom datavetenskapen och beskriver ett sätt att lagra saker i något som liknar en trave med tallrikar. När någon vill ta bort en tallrik ur en stapel är det sällan den 5:e tallriken utan enklare är istället att ta den översta. Nya tallrikar läggs också till överst i traven. I en stack kan vi bara lägga till och ta bort ett element (t.ex tallrik, siffra, instruktion) från ena änden, toppen. 12
15 Umeå universitet Praktisk uppgift 3 PostScript-programmering Syntax och semantik I såväl skriftliga som muntliga språk är det viktigt att använda sig av ord och grammatik som andra förstår. Samma gäller när vi försöker tala med en maskin eller dator. Ett problem är att de inte är speciellt intelligenta och att vi därför måste uttrycka oss väldigt tydlig för att de skall förstå. När vi programmerar är det därför väldigt viktigt att följa syntaxen för språket (kommer från grekiskans ord för ordning), dvs. att vi använder sig av ord som datorn förstår och skriver dem i den ordning som den förväntar sig dem. Men även om vi använder oss av kända ord och använder en korrekt grammatik kan det vi säger fort bli obegripligt när vi talar med varandra. Ett språks semantik (kommer från grekiskans ord för betydelse) talar om vad som menas med det vi säger. De flesta felen i datorprogram är så kallade semantiska fel, dvs. vi har sagt åt den att göra fel saker. En dator använder ju inte sunt förnuft utan gör verkligen exakt vad vi talar om den att göra så länge den förstår syntaxen. PostScript PostScript är ett programmeringsspråk som många kommit i kontakt med utan att veta om det. PostScript används för att beskriva sidor och dess innehåll som sedan kan skrivas ut av en skrivare. Med språket kan vi bestämma hur linjer, text och bilder skall placeras på en sida med hjälp av ett koordinatsystem. Varje punkt på sidan har en horisontell koordinat (x) och en vertikal koordinat (y), på samma sätt som ett x-y-diagram. Enheten för koordinatsystemet kallas punkt och är 1/72-dels tum stor, dvs. ca 1/3 mm. Origo (0, 0) finns längst ned i vänstra hörnet. y 520 (470,520) 260 (210,260) x Beskrivning av koordinatsystemet med en linje dragen från punkten (210, 260) till punkten (470, 520). 13
16 Umeå universitet Praktisk uppgift 3 PostScript-programmering Syntaxen i PostScript I figuren ovan ritades en linje över papperet mellan två positioner. Hur skulle detta beskrivas i språket PostScript? Jo, %!PS-Adobe moveto lineto stroke showpage Den första raden är en instruktion till skrivaren som säger vilket språk och vilken version av språket som används. Denna rad måste alltid finnas med. Skrivaren har något som kallas aktuell position, ungefär som att den vet var pennan är placerad på papperet. Andra raden talar om att skrivaren skall flytta aktuell position till punkten (210, 260). Ordet moveto är alltså ett kommando som skrivaren förstår. Skrivaren står nu kvar på den positionen och väntar på vad som skall hända. Tredje raden säger att den skall dra en tänkt linje från aktuell position till (470, 520). Vi har dock inte ritat något på papperet än. Vi måste nämligen först tala om hur vi vill att linjen ska behandlas. Kommandot stroke talar om att vi använder linjen till att dra ett färgat streck längs den. Slutligen används showpage som säger åt skrivaren att skriva ut sidan. Inget syns på papperet förrän dessa två kommandon ges. Kommentarer kan läggas in i koden, de ignoreras av skrivaren och är till för människor som läser koden att lättare förstå vad programmet gör. Allt som följer till höger om tecknen % till radens slut är en kommentar. Notera att första raden alltså är en kommentar och tillhör inte språket, men att den förstås av skrivaren. Hur fungerar det? PostScript är ett programmeringsspråk som använder en stack. De flesta programmerings-språk använder en stack, men många av dem döljer den för programmeraren och använder den under huven, så att säga. Hur stacken fungerar i PostScript beskrivs i figuren på nästa sida. Först läggs talet 210 till stacken, och därefter talet 260. Därefter kommer ett kommando (i detta fall moveto). Detta kommando behöver två värden för att veta var den aktuella positionen skall flyttas. Det indata som ett kommando behöver kalls ofta parametrar. Kommandot plockar dessa värden från stacken, först det som ligger överst, dvs När kommandot har tagit sitt värde så försvinner det från stacken, och nu finns bara värdet 210 kvar. Därefter tar kommandot detta värde, och stacken är tom. 14
17 Umeå universitet Praktisk uppgift 3 PostScript-programmering Nu har kommandot fått de värden det behöver för att utföra sin uppgift, och stacken är tillbaka till utgångsläget. Observera att det kan ligga andra värden under 210 resp. 260 på stacken, men de berörs inte av denna operation. Därefter läggs två nya värden till stacken, och lineto plockar bort dem för att kunna dra strecket. Uppgift 1 Rita en kvadrat Du skall nu skriva en bit kod (ett program) i PostScript som ritar en kvadrat på ett papper. Till din hjälp har du två olika kommandon, nämligen: Tas från stacken Kommandonamn Läggs till stacken Förklaring x y moveto - Plockar två värden från stacken och flyttar aktuell position till (x, y) dx dy rlineto - Plockar två värden från stacken och drar ett streck från aktuell position (x, y) till en position relativt den aktuella, dvs till (x + dx, y+ dy). En del kommandon lämnar värden efter sig på stacken, men inte några av de vi stött på hittills. Därav kolumnen Läggs till stacken. Skapa en ny textfil. Kalla den uppgift1.ps. Skriv först in översta raden enligt det första exemplet. Låt sedan kommandot moveto flytta aktuell position till en punkt på papperet där du vill att kvadratens nedre vänstra hörn skall ligga. Använd sedan rlineto för att bilda kvadratens sidor. Observera att aktuell position också flyttas av kommandon som lineto och rlineto, dvs till änden på de linjer de ritar. I vårt fall är det ju startpunkten för nästa linje, så vi behöver alltså bara använda moveto en gång. Glöm inte stroke och showpage på slutet och se upp så att du får en kvadrat, inte en rektangel. Till slut är det dags att skicka ditt program till skrivaren så att den kan börja rita. Detta görs på olika sätt för olika datorer och skrivare, så fråga handledaren om hur det fungerar på just ditt system. 15
18 Umeå universitet Praktisk uppgift 3 PostScript-programmering Uppgift 2 Skapa en variabel På hur många ställen i koden måste vi ändra för att ändra kvadraten storlek? Ganska många. En variabel är ett namngivet värde som kan användas flera gånger. Om vi först definierar en variabel som anger kvadratens storlek så kan vi sedan använda oss av den när vi ritar kvadraten. På detta sätt behöver vi bara ändra variabelns värde en gång för att ändra kvadratens storlek istället för på alla ställen storleken används. Tyvärr kan inte PostScript använda variabler, men vi kan skapa ett nytt kommando som fungerar precis som en variabel. Kommandots uppgift blir att när kommandots namn förekommer i källkoden läggs ett värde till stacken. För att definiera ett kommando används kommandot def Tas från stacken Kommandonamn Läggs till stacken Förklaring key value def - Associerar key med value, dvs definierar en variabel med namnet i key och värdet i value. Ett exempel: /side 50 def I exemplet ovan skapar vi ett kommando som heter side och har värdet 50. Snedstrecken framför s:et ingår inte i namnet utan säger bara att vi vill skapa ett nytt namn. Om vi skall vara riktigt noga så gör / så att namnet läggs på stacken, därefter kommer 50 och sedan def som tar namn och värde och skapar ett nytt kommando. För att använda vår variabel, dvs få ut dess värde, så skriver vi bara dess namn. Vi har alltså skapat det nya kommandot side som lämnar ett värde efter sig på stacken. Tas från stacken Kommandonamn Läggs till stacken Förklaring - side value Lägger sitt värde på stacken Skapa en ny textfil, med namnet uppgift2.ps. Skriv ett program som skapar en variabel enligt exemplet ovan. Använd sedan variabeln för att rita kvadraten med hjälp av rlineto. För att få negativa värdet av en variabel används kommandot neg. Tas från stacken Kommandonamn Läggs till stacken Förklaring value neg -value Negerar översta värdet på stacken 16
19 Umeå universitet Praktisk uppgift 3 PostScript-programmering Uppgift 3 Skapa en procedur Om vi skulle vilja skapa flera kvadrater med olika storlek blir det väldigt mycket skrivande, där vi upprepar kod som är nästan lika förutom några siffror som skiljer. Detta borde nog kunna göras effektivare. Vi kan skapa så kallade procedurer. En procedur är vanligtvis ett kort program som kan anropas som en enhet. Målet med uppgiften är att vi skall kunna skriva enligt exemplet nedan för att enkelt kunna rita en kvadrat moveto 67 square stroke showpage Detta stycke kod skall rita en kvadrat med sitt nedre vänstra hörn i punkten (150, 150) och där dess sidlängd är 67 punkter. För att detta skall fungera måste vi först skapa en procedur som vi kallar square. Detta görs på samma sätt som när vi gjorde en variabel, med den skillnaden att vi måste omgärda vår kod med krullparenteser, { och }. I själva verket så är en procedur samma sak som ett kommando i PostScript, och när PostScript tolkar ett program och hittar ordet square så letar den i sitt minne efter en procedur som har ett passande namn. Detta betyder att proceduren square måste vara definierad före den används, annars hittar PostScript den inte. Här nedan ser du ett enkelt exempel på hur proceduren kan skapas. Allt du sedan skriver mellan krullparenteserna kommer att utföras när vi använder kommandot. /square { } def Men hur kan vi i vår procedur veta hur stor kvadraten skall vara? Vi vill ju kunna läsa in 67 och använda det som sidlängd. Nu måste vi tänka på hur PostScript fungerar. När vi skrev 67 före square lades detta värde till stacken. Vi vill alltså att proceduren hämtar översta värdet på stacken (67) och skapar en variabel som har detta värde. Sedan kan koden som ritar kvadraten utnyttja variabeln. Vi har dock ett problem. Om vi återigen tittar på hur kommandot def fungerar: Tas från stacken Kommandonamn Läggs till stacken Förklaring key value def - Associerar key med value, dvs definierar en variabel med namnet i key och värdet i value. Vi måste alltså först lägga till namnet på den variabel vi vill skapa till stacken innan vi lägger dit värdet. Men värdet ligger ju redan på stacken, i vägen så att säga. Hur gör vi då? Jo, vi lägger till namnet och låter sedan elementen på stacken byta plats med varandra. Detta gör vi med ett kommando som heter exch, och som helt enkelt byter plats på de två översta elementen på stacken. Tas från stacken Kommandonamn Läggs till stacken Förklaring v1 v2 exch v2 v1 Byter plats på de två översta elementen på stacken. 17
20 Umeå universitet Praktisk uppgift 3 PostScript-programmering Vi skriver alltså i proceduren: /square { /side exch def mera kod } def Variabeln side kan sedan användas när vi ritar kvadratens sidor. Om du tycker att det är svårt att hålla reda på vad som finns på stacken kan du skriva varje kommando på en egen rad, och lägga till en kommentar som visar vad som ligger på stacken. Det är vanligt att skriva hur stacken ser ut efter det att radens procedur utförts. Stacken visas enklast med toppen åt höger. /square { % 67 /side % 67 side exch % side 67 def % - (side har definierats) mera kod } def Anledningen till att square inte finns på stacken någonstans är lite mer komplicerad men har att göra med att /square exekveras medans PostScript tolkar din procedur, däremot exekveras koden mellan krullparenteserna först när square hittas i koden, dvs senare i programmet. Kod som skrivs mellan krullparenteser lagras bara i proceduren, den körs inte förrän proceduren anropas. När vi skriver stack-kommentarer så menar vi hur stacken ser ut när proceduren körs. Är du fortfarande osäker kan du kolla sist i dokumentet på en djupare förklaring av koden. Observera att vi inte behöver använda moveto eller stroke i proceduren. Procedurens uppgift är bara att rita en kvadrat just där den aktuella positionen är. När du har skrivit proceduren så att du kan använda den som tänkt enligt exemplet, kan du testa att rita flera kvadrater och även se vad som händer om du byter ut ordet stroke mot fill. %!PS-Adobe moveto 67 square moveto 80 square stroke moveto 60 square fill showpage 18
21 Umeå universitet Praktisk uppgift 3 PostScript-programmering Uppgift 4 Upprepning I föregående uppgift såg vi hur enkelt det ofta blir när vissa uppgifter samlas i en procedur. Detta gör det mycket enklare att upprepa likartade uppgifter, speciellt om det dessutom är möjlighet att skicka med parametrar. Om vi däremot vill upprepa en viss uppgift flera gånger blir det ju också jobbigt och mycket kod att skriva. Därför finns i de flesta programmeringsspråk olika sätt att repetera viss kod. I PostScript ser det ut som följer: n {... } repeat n anger hur många gånger koden mellan krullparenteserna { och } skall upprepas. Ett exempel kan alltså vara: %!PS-Adobe moveto 10 {20 0 rlineto 20 5 rmoveto} repeat stroke showpage Vad gör koden ovan? Skapa en ny fil som heter uppgift4.ps. Kopiera proceduren du skrev i uppgift 3 till filen och använd dig av upprepningskommandot för att rita flera kvadrater som bildar ett mönster på papperet. Uppgift 5 Rita en egen figur Skapa en ny fil uppgift5.ps och hitta på en egen figur som du ritar. Kolla gärna nästkommande sidor för att hitta fler kommandon du kan använda till att skapa figurer. Koden skall innehålla variabler och minst en procedur. Redovisning Följ de allmänna anvisningarna för laborationerna. Var noga med att redovisa den källkod du skrivit. Den skall alltid vara redovisad med ett fixt typsnitt, till exempel courier. Redovisa också de utskrifter du gör som bilagor. Reflektera vidare över de lärdomar du drar kring skapandet av variabler och procedurer och hur dessa konstruktioner underlättar ditt programmerande. 19
22 Umeå universitet Praktisk uppgift 3 PostScript-programmering Vanliga kommandon Observera att toppen på stacken (översta värdet) ligger till höger i beskrivningen. Tas från stacken Kommandonamn Läggs till stacken Förklaring num1 num2 exch num2 num1 Byter plats på de två översta elementen på stacken. num dup num num Duplicerar översta värdet på stacken num1 num2 pop num1 Tar bort översta värdet på stacken num1 num2... clear - Tar bort alla element från stacken. num1 num2 add num1+num2 Summerar de två översta värdena på stacken och lägger dit resultatet num1 num2 div num1/num2 Dividerar de två översta värdena på stacken, och lägger dit resultatet. num1 num2 sub num1-num2 Subtraherar översta värdet från det näst översta värdet, lägger resultatet på stacken num1 num2 mul num1*num2 Multiplicerar de två översta värden på stacken, lägger resultatet på stacken num abs abs Tar absolutbeloppet av översta värdet, lägger resultatet på stacken. num neg -num Negerar översta värdet på stacken. num sqrt num Tar kvadratroten ur översta värdet på stacken, lägger tillbaka resultatet. num sin sin(num) Beräknar sinus för översta värdet på stacken, lägger tillbaka resultatet num cos cos(num) Beräknar cosinus för översta värdet på stacken, lägger tillbaka resultatet num setlinewidth - Sätter linjebredden (i punkter) num setgray - Sätter färgen till en grå nyans där 0.0 är svart och 1.0 är vitt. - currentpoint x y Returnerar aktuell position som två värden på stacken x y moveto - Sätter aktuell position till (x, y) dx dy rmoveto - Flyttar aktuell position relativt den föregående. 20
23 Umeå universitet Praktisk uppgift 3 PostScript-programmering Tas från stacken Kommandonamn Läggs till stacken Förklaring x y lineto - Drar en linje från aktuell position till (x, y). dx dy rlineto - drar en linje från aktuell position till en position relativt den aktuella, dvs till (x+dx, y+dy) om aktuell position är (x, y). x y r ang1 ang2 arc - Drar en circelbåge med centrum i (x, y), med radien r, från vinkel ang1 till ang2, moturs. x y r ang1 ang2 arcn - Samma som ovan men går medurs. x1 y1 x2 y2 x3 y3 curveto - Ritar en sk Bezierkurva. dx1 dy2 dx2 dy2 dx3 dy3 rcurveto - Samma som ovan men med relativa koordinater. - fill - Fyller de dragna figurerna. - stroke - Ritar streck längs de dragna figurerna. - showpage - Säger åt skrivaren att visa sidan. 21
24 Umeå universitet Praktisk uppgift 3 PostScript-programmering Skriva ut text För att skriva text behöver vi först välja typsnitt samt fontstorlek. Detta görs med kommandona findfont och scalefont. Texten som ska skrivas ut omges med parenteser följt av kommandot show. Följande exempel skriver ut My first postscript text på possition (150, 150) med fonten Helvetica-Bold och fontstorlek 14 pt. /Helvetica-Bold findfont 14 scalefont \n setfont moveto (My first PostScript text) show stroke Andra vanligt existerande fonter är Helvetica (med Bold, Oblique, BoldOblique) Times (med Bold, Italic, BoldItalic) Courier (med Bold, Oblique, BoldOblique) Symbol (ΨΔΠψγπ etc.) Vad händer med stacken? Om vi har följande text, vad händer med stacken? /square { /side exch def mer kod } def 67 square Vi skapar två kolumner, den ena med koden som återstår att exekvera och den andra med stacken. Ordet som exekveras är understruket. Notera att mellanslag och radbrytningar automatiskt ignoreras av PostScript. Texten /square {/side exch def mer kod } def 67 square Stacken square { /side exch def mer kod } def 67 square square \size exch def mer kod def 67 square - (square har definierats) 67 square 67 square (texten byts ut mot procedurens text) 67 /side exch def mer kod 67 side exch def mer kod side 67 def mer kod - (side har definierats) mer kod (där side kan användas) 22
25 Umeå universitet Praktisk uppgift 4 Informationssökning och källkritik L4 INFORMATIONSSÖKNING OCH KÄLLKRITIK Syfte Att ge en första inblick i hur man går till väga för att söka och värdera information. Uppgift Första delen av denna praktiska uppgift består i att få en visning av Universitetsbiblioteket och dess möjligheter. Du får en kort introduktion i hur man söker böcker, tidskrifter och annan information i bibliotekets egna datorsystem men även i databaser och via Internet. Samling vid ingången till UB 8.15! Efter visningen går du till MA316, 10.15, och löser följande uppgifter: 1. Använd UBs bibliotekssystem Album för denna uppgift. (Se sidan ) Finns boken Ett oändligt äventyr av Sven-Eric Liedman på UB? Hur många exemplar finns den i som går att låna hem? Hur många böcker av Sven-Eric Liedman finns totalt på UB? 2. När disputerade Lena Kallin Westin (dvs programansvarig för Kandidatprogrammet i datavetenskap)? Vad heter hennes avhandling? Prova att försöka finna informationen via Album i UB, Google Scholar och valfri vanlig sökmotor. Vilket sätt gav dig informationen snabbast? Varför? Redogör noga för hur du genomför sökningen, vilka sökord du använder och vilka informationssidor som besöks under sökningen. 3. Router är ett begrepp som används inom datavärlden. Din uppgift är att leta fram information om vad router är och förklara det skriftligt för en datornovis i övre medelåldern. Använd dina kunskaper om informationssökning och leta fram minst en vetenskaplig tidskriftsartikel, en grundläggande bok några kvalitetsmässigt bra och användbara resurser på Internet där begreppet Router beskrivs. Uppgiften går alltså ut på att du skall söka fram olika typer av information om routrar. Syftet med detta är att ni ska kunna identifiera och söka fram information med olika nivå av vetenskaplighet. Välj sedan bland det material som du sökt fram och läs igenom för att sedan kunna skriva en text som förklarar vad en router är, hur den används, hur den fungerar etc. Redogör noga för hur du genomför sökningen, vilka sökord du använder och vilka informationssidor som besöks under sökningen. Glöm inte att kritiskt granska den information du hittar. Vem har skrivit den? Vilken målgrupp är informationen riktad till? Hur aktuell är den? Redovisning Skriv en rapport som består av två delar. Den första delen av rapporten ska svara på frågorna 1-2 ovan och sedan beskriva arbetet med att leta information om begreppet router. Den andra delen ska vara en beskrivning på minst en sida av en router där ni ska anta att målgruppen är datanoviser i övre medelåldern. 23
Legorobot. Lär dig programmera en legorobot. Teknikåttan 2009. Ola Ringdahl Lena Kallin Westin
Legorobot Lär dig programmera en legorobot. Teknikåttan 2009 Ola Ringdahl Lena Kallin Westin Legorobot Sid 2 (6) Legorobot Sid 3 (6) LEGOROBOT Syfte Syftet med denna praktiska uppgift är att man ska få
UMEÅ UNIVERSITET Datavetenskap. Praktiska uppgifter. Metoder och verktyg för datavetare Ht04
UMEÅ UNIVERSITET Praktiska uppgifter Metoder och verktyg för datavetare Ht04 Umeå universitet Praktisk uppgift 1 Legoprogrammering L1 - ROBOTLEGO Syfte Syftet med denna praktiska uppgift är att man ska
Roboten. Sida 1 av 11
EV3 ipad Roboten Fyra output portar A,B,C och D(motorer) Fyra input portar 1,2,3 och 4 (sensorer) USB, Bluetooth, eller Wi-Fi koppling 16 MB flash minne 64 MB RAM SD Card Port: 32 GB Flera inbyggda verktyg
Laboration: Grunderna i MATLAB
Laboration: Grunderna i MATLAB 25 augusti 2005 Grunderna i MATLAB Vad är MATLAB? MATLAB är ett interaktivt program för vetenskapliga beräkningar. Som användare ger du enkla kommandon och MATLAB levererar
Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se
Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell www.bjornregnell.se Mål Så enkelt som möjligt: låg tröskel Ett riktigt programmeringsspråk: inget tak Roliga uppgifter som går
Introduktion till programmering och Python Grundkurs i programmering med Python
Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?
EV3 Roboten. Sida 1 av 13
EV3 Roboten Fyra output portar A,B,C och D(motorer) Fyra input portar 1,2,3 och 4 (sensorer) USB, Bluetooth, eller Wi-Fi koppling 16 MB flash minne 64 MB RAM SD Card Port: 32 GB Flera inbyggda verktyg
Programmering. Den första datorn hette ENIAC.
Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och
Introduktion till Matlab
Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Laboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.
Moment 2: Klonspel Instruktioner för deltagare Idag ska du få lära dig om: Kloner - kopior av samma figur (sprajt) Variabler - ett värde, exempelvis antal poäng Slumptal - slå en tärning för att välja
MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.
Introduktion till MATLAB Martin Nilsson Avdelningen för teknisk databehandling Institutionen för informationsteknologi Uppsala universitet MATLAB the Matrix Laboratory utvecklat av MathWorks, Inc. Matematisk
ENKEL Programmering 3
ENKEL Programmering 3 Figurer i långa rader Titta på de olika figurerna i de olika raderna. Kan du se att de olika figurerna i varje rad är placerade enligt ett visst mönster? Kan du lista ut vilken figur
Instruktion för laboration 1
STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. för matematisk statistik MD, ANL, TB (rev. JM, OE) SANNOLIKHETSTEORI I Instruktion för laboration 1 De skriftliga laborationsrapporterna skall vara
Om NXTprogrammering. Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT?
Om NXTprogrammering RCX-modul (Robotic Commander explorer) Styrenhet som innehåller liten dator Vad innehåller lådan? Liten dator, sensorer, motorer, hjul Massor av legobitar RCX-modulen Skärm Gå vänster
TAIU07 Matematiska beräkningar med Matlab
TAIU07 Matematiska beräkningar med Matlab Laboration 3. Linjär algebra Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion 2 En Komet Kometer rör sig enligt ellipsformade
UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.
UPPGIFT 1 TVÅPOTENSER. 2 ½ ¾ = 5575186299632655785383929568162090376495104 n = 142 är det minsta värde på n för vilket 2 Ò inleds med siffrorna 55. Uppgiften består i att skriva ett program som tar emot
När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.
"!$#"%'&)(*,&.-0/ 177 Syftet med denna övning är att ge en introduktion till hur man arbetar med programsystemet MATLAB så att du kan använda det i andra kurser. Det blir således inga matematiska djupdykningar,
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»
Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram
Mål Lab 2: Underprogram Följande laboration introducerar underprogram; procedurer, funktioner och operatorer. I denna laboration kommer du att lära dig: Hur man skriver underprogram och hur dessa anropas.
Datorövning 1 Calc i OpenOffice 1
Datorövning 1 Calc i OpenOffice 1 1 OpenOffice Calc Till förmån för de som följer kursen Fysikexperiment för lärare skall vi här gå igenom några få exempel på hur OO Calc (motsvarar MS Excel) kan användas
Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln
Matlab-föreläsning (4), 10 september, 015 Innehåll m-filer (script) - fortsättning från föreläsning 1 In- och utmatning Sekvenser, vektorer och matriser Upprepning med for-slingor (inledning) Matlab-script
Instruktion för laboration 1
STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. för matematisk statistik ANL/TB SANNOLIKHETSTEORI I, HT07. Instruktion för laboration 1 De skrifliga laborationsrapporterna skall vara skrivna så att
Talsystem Teori. Vad är talsystem? Av Johan Johansson
Talsystem Teori Av Johan Johansson Vad är talsystem? Talsystem är det sätt som vi använder oss av när vi läser, räknar och skriver ner tal. Exempelvis hade romarna ett talsystem som var baserat på de romerska
3.0. Tips och Trix Sida 1 av 18
3.0 https://beta.scratch.mit.edu/ Tips och Trix 2018-08-31 Sida 1 av 18 Innehåll Starta nytt program 3 Scenens koordinatsystem 3 Centrumpunkt / rotationspunkt 4 Sprajtens inställningar 5 Placering i Z-led
TANA17 Matematiska beräkningar med Matlab
TANA17 Matematiska beräkningar med Matlab Laboration 1. Linjär Algebra och Avbildningar Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion I denna övning skall
Aktivitetsbank. Matematikundervisning med digitala verktyg II, åk 1-3. Maria Johansson, Ulrica Dahlberg
Aktivitetsbank Matematikundervisning med digitala, åk 1-3 Maria Johansson, Ulrica Dahlberg Matematik: Grundskola åk 1-3 Modul: Matematikundervisning med digitala Aktivitetsbank till modulen Matematikundervisning
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,
Introduktion till Matlab
Introduktion till Matlab Analys och Linjär Algebra, del A, K1/Kf1/Bt1, ht10 1 Inledning Ni kommer använda Matlab i nästan alla kurser i utbildningen. I matematikkurserna kommer vi ha studio-övningar nästan
Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.
Sphero SPRK+ Appen som används är Sphero Edu När appen öppnas kommer man till denna bild. Klicka på 3D-modeller för att se delarna på Sphero Klicka här för att ansluta Sphero till ipad Programmet för att
Manual för banläggning i OCAD8 170706 IF ÅLAND
Manual för banläggning i OCAD8 170706 IF ÅLAND Alla filer och program vi behöver finns under katalogen c:/ocad8/. Kartorna vi använder som bakgrundsfiler finns under c:/ocad8/kartor/. De är sedan indelade
Lär dig programmera för dig mellan 6 och 100 år...
för dig mellan 6 och 100 år... Björn Regnell Bilden visar ENIAC, som var den första datorn. Mamman och pappan på bilden programmerar ENIAC. ENIAC fanns när farfar och mormor var små. ENIAC vägde 27 tusen
Kort introduktion till POV-Ray, del 1
Kort introduktion till POV-Ray, del 1 Kjell Y Svensson, 2004-02-02,2007-03-13 Denna serie av artiklar ger en grundläggande introduktion och förhoppningsvis en förståelse för hur man skapar realistiska
JavaScript del 5 Funktioner
JavaScript del 5 Funktioner När man skriver JavaScriptkod eller program i andra programmeringsspråk för den delen så kan det finnas anledningar till att man vill dela upp sitt stora program i flera mindre
Extramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta
Här hittar du ett exempel på ritprogrammet: https://scratch.mit.edu/projects/82515788/
Termin 1 Block 4 Ritprogram Nu kommer du att få skapa ett ritprogram där du sedan kan göra egna konstverk! Programmet låter dig rita med olika färgpennor, sudda med suddgummi och måla med stämplar som
Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)
Laboration 1 Grafisk teknik (TNM059) Introduktion till Matlab R. Lenz och S. Gooran (VT2007) Introduktion: Denna laboration är en introduktion till Matlab. Efter denna laboration ska ni kunna följande:
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Introduktion till MATLAB
29 augusti 2017 Introduktion till MATLAB 1 Inledning MATLAB är ett interaktivt program för numeriska beräkningar med matriser. Med enkla kommandon kan man till exempel utföra matrismultiplikation, beräkna
Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:
TANA81: Beräkningar med Matlab - Variabler och Matriser - Logiska uttryck och Villkor - Repetitionssatser - Grafik - Funktioner Variabler I Matlab skapas en variabel genom att man anger dess namn och ger
Matrisen och sidan forts.
Postscript Postscript är ett»sidbeskrivningsspråk». Vissa operationer påverkar»aktuell sida», en bitkarta. När en sida är färdig sänder operatorn showpage sidan till tryckverket och aktuell sida återställs.
Laboration: Grunderna i Matlab
Laboration: Grunderna i Matlab Att arbeta i kommandofönstret och enkel grafik Den här delen av laborationen handlar om hur man arbetar med kommandon direkt i Matlabs kommandofönster. Det kan liknas vid
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Uppgift 1 ( Betyg 3 uppgift )
2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal
Linjär algebra med tillämpningar, lab 1
Linjär algebra med tillämpningar, lab 1 Innehåll Per Jönsson Fakulteten för Teknik och Samhälle, 2013 Uppgifterna i denna laboration täcker kapitel 1-3 i läroboken. Läs igenom motsvarande kapitel. Sitt
3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.
Kontrolluppgifter 1 Gör en funktion som anropas med där är den siffra i som står på plats 10 k Funktionen skall fungera även för negativa Glöm inte dokumentationen! Kontrollera genom att skriva!"#$ &%
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
C++ Slumptalsfunktioner + switch-satsen
C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.
Lego Robot [ ] [ ] [ ]
Lego Robot av [ ] [ ] [ ] INNEHÅLLSFÖRTECKNING LABB1 (INFORMATION) # UPPGIFT 1 # UPPGIFT 2 # UPPGIFT 3 # LABB2 (OPERATÖRER) # UPPGIFT 1 # UPPGIFT 2 # UPPGIFT 3 # LABB3 (VARIABLER) # UPPGIFT 1 # UPPGIFT
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
Inledning till OpenOffice Calculator Datorlära 2 FK2005
Inledning till OpenOffice Calculator Datorlära 2 FK2005 Mål Lära sig att skapa och använda ett räkneblad med OpenOffice Calculator Beräkna medelvärde och standardavvikelsen med räknebladet Producera en
TSBB14 Laboration: Intro till Matlab 1D
TSBB14 Laboration: Intro till Matlab 1D Utvecklad av Maria Magnusson med mycket hjälp av Lasse Alfredssons material i kursen Introduktionskurs i Matlab, TSKS08 Avdelningen för Datorseende, Institutionen
Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma
Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x
Mathematica Första kapitlet kommer att handla om Mathematica det matematiska verktyg, som vi ska lära oss hantera under denna kurs. Indata När du arbetar med Mathematica ger du indata i form av kommandon
Newtons metod och arsenik på lekplatser
Newtons metod och arsenik på lekplatser Karin Kraft och Stig Larsson Beräkningsmatematik Chalmers tekniska högskola 1 november 2004 Introduktion Denna övning ingår i Lärardag på Chalmers för kemilärare
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.
Kom igång Logga in Skriv in adressen till din webbsida följt av /login. Exempel: www.minsajt.se/login Nu dyker en ruta upp på skärmen. Fyll i ditt användarnamn och lösenord och klicka på "logga in". Nu
MMA132: Laboration 2 Matriser i MATLAB
MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen
Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS http://www.cwdata.se Konsolfönstret
Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS http://www.cwdata.se Konsolfönstret Med ett kommandobaserat gränssnitt menas ett helt textbaserat gränssnitt. Istället för att klicka
Värmedistribution i plåt
Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.
kl Tentaupplägg
Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer
Strukturerad problemlösning. Metoder och verktyg för datavetare Ht09
Strukturerad problemlösning Metoder och verktyg för datavetare Ht09 Syfte Syftet med uppgiften är att få kännedom om ett strukturerat arbetssätt för hur ett problem kan angripas i de olika steg som svarar
Matlabövning 1 Funktioner och grafer i Matlab
Matlabövning 1 Funktioner och grafer i Matlab I den här övningen ska vi titta på hur man konstruerar funktioner i Matlab och hur man kan rita funktionsgrafer. Läs först igenom hela PM:et. Gå sedan igenom
Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.
Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis
Programmering eller Datalogiskt tänkande
Programmering eller Datalogiskt tänkande I förskolan handlar programmering om att få en begynnande förståelse vad det kan innebära. Barnen ges ett kreativt utrymme och har möjlighet att forma sin egen
Gör så här för att rapportera:
Cykla och gå till jobbet 2012 Gör så här för att rapportera: OBS! Se till att du har anmält dig innan du gör detta. Om du inte vet hur man gör, klicka här. Steg 1: Skriv ut redovisningspapperet Gå till
Extramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få
Datorteknik 2 (AVR 2)
Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra
L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I
L04.1 Marodören Inledning Genom att öva sig på de grundläggande koncepten i JavaScript öppnas vägen allteftersom till de mer avancerade funktionerna. Man måste lära sig krypa innan man kan gå, även i JavaScript!
Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk
Exempel 40 60 add 2 div Stackens successiva utseende med toppen åt höger:.. 40. 40 60. 100. 100 2. 50
Bilder i dator Vi ska se på bilder främst ur perspektivet datorstödd dokumentframställning. Det ligger nog något i talesättet»en bild säger mer än tusen ord.» Man behöver kunna infoga bilder i sina dokument,
Manual. till. Cantor 2000. Madison Medri
Manual till Cantor 2000 Madison Medri 2 InnehÄllsfÅrteckning Installation Inledning Pedagogisk bakgrund Anpassning fär funktionshindrade Arbeta med Cantor 2000 InstÅllningar Namn Ljud Tangentbord Resultat
Matlabövning 1 Funktioner och grafer i Matlab
Matlabövning 1 Funktioner och grafer i Matlab I den här övningen ska vi titta på hur man konstruerar funktioner i Matlab och hur man kan rita funktionsgrafer. Läs först igenom PM:et. Gå sedan igenom exemplen
PROGRAMMERING ÅK 9 INTRODUKTION
PROGRAMMERING ÅK 9 INTRODUKTION VARFÖR PROGRAMMERING? Med programmering kan man: Skapa nästan vad som helst som är digitalt. Allt som är digitalt är uppbyggt av kod som människor har skrivit, finns i både
Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv
Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=
Matriser och Inbyggda funktioner i Matlab
Matematiska vetenskaper 2010/2011 Matriser och Inbyggda funktioner i Matlab 1 Inledning Vi skall denna vecka se på matriser och funktioner som är inbyggda i Matlab, dels (elementära) matematiska funktioner
Träff 1 Skissa & Extrudera
Skapa en folder Jag rekommenderar att samla filer och övningar i en egen folder som man har full kontroll på. Muff-foldern som vi delar är tänkt som en gemensam övningsyta. Innehåll som du vill komma åt
Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Programmering. Scratch - grundövningar
Programmering Scratch - grundövningar Lär känna programmet: Menyer för att växla mellan att arbeta med script, utseende/bakgrund och ljud. Scenen där allting utspelar sig. Här klickar du på bakgrunden
IT-körkort för språklärare. Modul 9: Rätta skrivuppgifter
IT-körkort för språklärare Modul 9: Rätta skrivuppgifter Innehåll I. Rätta uppgifter i Word... 3 Markera fel med färger snabbt och enkelt... 3 Använd Words rättningsverktyg skriv kommentarer... 4 Gör ändringar
Micro:bit. Börja skapa egna program
Micro:bit Börja skapa egna program Att programmera är mer än att skriva kod 1. När man ska bygga något behövs först en ritning. Formulera i talspråk vad programmet ska göra. 2. Förbered att skriva koden
Laboration 3. Funktioner, vektorer, integraler och felskattning
1 SF1520 K2 HT2014 NA 21 december 2015 Laboration 3 Funktioner, vektorer, integraler och felskattning Efter den här laborationen skall du kunna använda och skriva egna funktioner med flera in- och utparametrar,
Språket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
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
GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet 19-20 april
GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare Karlstads universitet 19-0 april Exempel på elevaktiviteter framtagna i skolutvecklingsprojektet IKT och lärande i matematik 1
Föreläsning 8: Aritmetik och stora heltal
2D1458, Problemlösning och programmering under press Föreläsning 8: Aritmetik och stora heltal Datum: 2006-11-06 Skribent(er): Elias Freider och Ulf Lundström Föreläsare: Per Austrin Den här föreläsningen
Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647
Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel
Micro:bit och servomotorer
Micro:bit och servomotorer Servomotorer som beskrivs här är så kallade micro servos och har beteckningarna: FS90 FS90R En servomotor har tre kablar. En brun som kopplas till GND, en röd som är för strömförsörjning
Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM
Matematik Gymnasieskola Modul: Matematikundervisning med digitala verktyg II Del 1: Om programmering Aktiviteter Del 1 Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM Ni
TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31
TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 27 oktober 2015 Sida 1 / 31 TANA17 Kursmål och Innehåll Målet med kursen är att Ge grundläggande färdighet
Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08
LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08 Laboration 2: Om väntevärden och fördelningar 1 Syfte I denna laboration skall vi försöka
Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!
F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Roger Henriksson Von Neumann-arkitekturen Gemensamt minne för programinstruktioner och data. Sekventiell exekvering av instruktionerna.
International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor
Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm
Skapa spelet Bug-race i Scratch
1 Skapa spelet Bug-race i Scratch Välj en figur (Sprajt) Ta bort katten med hjälp av saxen i menyraden. Välj en ny figur med knappen. Det ska vara en figur som pekar åt vänster, och helst visas ovanifrån,
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-11-19 Plot och rekursion I denna laboration skall du lära dig lite om hur plot i MatLab fungerar samt använda
Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland
Matlab för Nybörjare Charlie Pelland Introduktion till Matlab Matlab (matrix laboratory) är ett datorprogram och ett programspråk som används av ingenjörer runt om i världen. Ni kommer att använda er av