Laboration 1: Linser

Storlek: px
Starta visningen från sidan:

Download "Laboration 1: Linser"

Transkript

1 Programkonstruktion för F, 2D1339, Laboration 1: Linser [Sista redovisningsdatum för bonuspoäng: 4 november 2005] [Grundpoäng: 2] [Tidsbonus: +1] 1 Målsättning Under denna laboration ska du skriva ett litet Java-program. Följande ska du kunna närduärklarmedlabben: hur man kompilerar och kör Java-program hur man delar upp program i separata metoder för olika uppgifter hur man utför enkla beräkningar och loopar hur man ritar figurer och tar hand om användarens musklickningar Laborationen är tänkt att genomföras under tre laborationspass. För att underlätta din tidsplanering har vi delat upp laborationen i tre delar. Om du känner att du förstår vad du gör ochtiden tillåter får du gärna jobba vidare i förväg. Varje labbtillfälle bör förberedas genom att man läser anvisningen noga ochtänker igenom vad som ska göras. Gå gärna till datorsalarna ocharbeta i förväg också! Redovisning görs när hela labben är klar, inte vid varje labbtillfälle. 2 Lästips Följande hänvisningar avser böckerna Java Direkt och Java Direkt med Swing (inom paranteser) av Jan Skansholm. Om du har en annan bok får du slå upp motsvarande avsnitt. Titta även på material ochanteckningar från föreläsningar ochövningar! Inför första labbtillfället: Kapitel 1, Att komma igång, speciellt 1.14 (1.7) applets och 1.13 (1.8) grafik: enkla ritmetoder Avsnitt 2.3 (2.3), variabler Avsnitt 2.7 (2.4), definiera ochanropa metoder Inför andra labbtillfället: Avsnitt 9.4 (6.4), vektorer (kallas fält i Skansholms böcker) Avsnitt 9.3 (6.5), for-satsen Inför tredje labbtillfället: Avsnitt 7.2 (1.8), grafik, speciellt färger Avsnitt (10.1 och10.2), mus-händelser 1

2 k 1 k 2 y a b Figur 1: En ljusstråle genom en tunn lins ändrar sin vinkel då den passerar genom linsen. Ljusstrålens lutning före linsen är här k 1 = y/a och efter linsen k 2 = y/b. 3 Uppgiften Du ska konstruera ett Java-program som beräknar ochvisar hur ett knippe ljusstrålar bryts när de passerar en uppsättning linser, t.ex. i en kikare eller ett mikroskop. Programmet ska skrivas i form av en applet, d.v.s. ett»miniprogram» som t.ex. kan läggas in på en WWW-sida. För att inte krångla till uppgiften gör vi några begränsningar. För det första begränsar vi oss till att studera ljusstrålar i ett plan. Detta gör vi främst för att det blir enklare att rita upp resultatet. För det andra förutsätter vi att linserna är tunna ochatt de sitter centrerade efter varandra utefter samma optiska axel. Detta är ett rimligt antagande för vanliga optiska utrustningar som okular, objektiv o.s.v. ochgör att beräkningarna blir enklare. Programmet ska när det är klart rita upp linserna samt ett antal strålars väg från en punktformig ljuskälla. Det ska vara enkelt att ändra antalet linser samt deras position ochstyrka. Slutligen ska ljuskällans position kunna ändras interaktivt med hjälp av musen. 4 Fysikalisk bakgrund För att kunna konstruera programmet måste vi först hitta en lämplig matematisk modell för hur ljusstrålar bryts när de passerar igenom en lins. En snabb titt i närmaste optikbok visar att det finns flera olika modeller att välja mellan. Om linserna är tillräckligt tunna kan vi använda en enklare modell än om man måste ta hänsyn till tjockleken. Här väljer vi den förenklade modellen för tunna linser. För en tunn lins gäller den s.k. linsformeln: 1 a + 1 b = 1 f där f är linsens brännvidd och a och b avståndet till föremålet respektive bilden av föremålet (se figur 1). För att kunna rita upp hur ljusstrålarna bryts i ett linssystem måste man dock översätta linsformeln till en formel för hur en ljusståle ändrar riktning när den passerar en lins. Vi väljer här att representera rikningen med hjälp av linjens lutning som vi betecknar med k. I figur 1 ser vi vad som händer med en ljusstråle med 2

3 y x 2,y 2 k 2 k 1 x 1,y 1 x Figur 2: Koordinatsystemet väljs så att x-axeln sammanfaller med linsens optiska axel. En ljusstråle från punkten (x 1,y 1) med lutningen k 1 träffar linsen i punkten (x 2,y 2) och fortsätter sedan med lutningen k 2. lutningen k 1 = y/a som träffar linsen på avståndet y ovanför centrum: den får den nya riktningen k 2 = y/b. Eftersom denna översättning mellan lutning och a- resp. b-värden gäller för godtyckliga a och b kan vi använda detta tillsammans med linsformeln för att räkna ut strålens riktning efter linsen (k 2 )närvivetriktningen före (k 1 ). k 2 = y ( 1 b = y f 1 ) = y a a y f = k 1 y f Vi ser här att den nya lutningen helt enkelt blir den gamla lutningen minskat med termen y/f där y anger var strålen träffar linsen och f är linsens brännvidd. För att följa en ljusstråle genom en lins kan vi nu göra på följande sätt: Först väljer vi ett koordinatsystem så att x-axeln sammanfaller med systemets optiska axel (figur 2). Vi kallar ljuskällans position (x 1,y 1 ) ochstrålens riktning k 1 (d.v.s. linjens lutning). Positionen för linsen kallar vi x 2. Med enkel geometri (se figur 2) kan vi räkna ut var strålen träffar linsen: y 2 = y 1 + k 1 (x 2 x 1 ) Efter linsen kommer strålen följdaktligen att gå från punkten (x 2,y 2 ). Återstår att räknautdennyariktningenk 2. Denna får vi med hjälp av vår modifierade linsformel från ovan: k 2 = k 1 y 2 f Om man har mer än en lins så är det bara att upprepa samma beräkning igen; nu med (x 2,y 2 ) som startpunkt och k 2 som startriktning, o.s.v. 3

4 5 Första labbtillfället Målet med första labbtillfället är att hinna med följande: (frivilligt) Skapa en gemensam katalog för er som jobbar i par. Skriva ochprovköra ett litet Java-program Skriva en Java-applet som beräknar ochritar hur en ljusstråle bryts när den passerar en lins. Detta program ska ni nästa gång utvidga för att hantera både flera strålar ochflera linser. Första labbtillfället innebär mycket arbete ochbör förberedas ordentligt. Om ni trots goda förberedelser inte hinner med, misströsta inte! De flesta kommer att behöva arbeta en hel del på egen hand under kursen. 5.1 Gemensam katalog För er som jobbar två tillsammans är det praktiskt att ha en gemensam katalog som kan nås från båda användarnas konton. Ni kan då arbeta med programmet var för sig ochdet spelar ingen roll vem av er som loggar in då ni labbar tillsammans. Den gemensamma katalogen kan skapas genom att från den ena gruppmedlemmens konto ge kommandot course labdir progk05 kompisid där progk05 blir namnet på katalogen och kompisid är labbkompisens användarnamn. Ni kan använda ett annat katalognamn om ni vill, t.ex. om någon av er redan har en katalog som heter progk05 så bör ni ta ett annat namn. Logga sedan ut, logga in på kompisens konto och ge kommandot från hans/hennes konto med samma katalognamn men använd den första personens användarnamn som kompisid. Den gemensamma katalogen kommer att läggas direkt under hemkatalogen hos båda. Ett annat sätt att skapa den gemensamma katalogen är att skapa en katalog med kommandot mkdir från ena kontot, sätta åtkomsträttigheter för kompisen med fs sa ochfrån kompisens konto med kommandot ln -s skapa en symbolisk länk till den skapade katalogen. Se Unix-häftet för detaljerna! De åtgärder vi har beskrivit här behöver bara göras en gång. Om ni senare under kursen ska byta labb-kompis eller får problem så be en handledare om hjälp. 5.2 SimaManager för hjälp och redovisning SimaManager startas genom att man skriver sm i ett terminalfönster. Under programmeringsdelen av kursen ska ni välja progk i SimaManager (även om ni vill redovisa intro-labbar!). 4

5 5.3 Skriv och provkör en Java-applet Innan du börjar skriva det riktiga programmet är det lämpligt att börja med något enklare. Skriv en enkel Java-applet som ritar ett streck ochen oval på skärmen. Kod för en sådan applet finns på nästa sida så det är bara att skriva av. Det viktiga är inte vad programmet gör utan hur du går tillväga för att skriva in och köra programmet. Vi kommer senare i labben att använda detta lilla program som ett skelett där vi successivt fyller på med mer ochmer funktionalitet. Laborationsanvisningarna är gjorda med utgångspunkt från användning utan Swing-paketet. Den som vill får använda Swing! Filer och kataloger Det första man bör göra när man ska skriva ett program är att skapa en ny filkatalog. Alla filer som har att göra med programmet bör placeras i en egen filkatalog. Välj ett namn på katalogen som gör att du enkelt känner igen programmet. Eftersom denna laboration handlar om linser kan det vara passande att kalla katalogen linser. I den katalogen kommer vi så småningom att ha tre typer av filer:.java.class.html Detta är textfiler som innehåller själva programmet. Du skapar själv dessa filer med hjälp av Emacs (textredigeraren) ochdet är i dessa filer du skriver själva programmet. I denna laboration kommer du att ha en sådan fil: Linser.java. Detta är filer som innehåller en kodad form av programmet som används när programmet ska köras. Du behöver inte göra någonting med dessa filer (utom möjligen att städa bort dem när du är klar). I denna laboration kommer det så småningom att skapas en sådan fil: Linser.class. När programmet är en applet måste det startas från en WWW-sida. Denna fil innehåller en minimal WWW-sida som vi bara använder för att kunna provköra programmet. I vårt fall kommer denna fil att heta Linser.html. Lägg märke till att vi använder stor begynnelsebokstav i ordet Linser ifilnamnen. Detta beror på att Linser är namnet på en klass i programmet ochvi skriver alltid klassnamn med stor begynnelsebokstav Skriv HTML-filen Skapa med hjälp av Emacs filen Linser.html med följande innehåll: <APPLET code="linser.class" width=400 height=300> </APPLET> Detta betyder att programmet Linser.class är koden för en applet som ska synas i ett fönster som är 400 bildpunkter brett och300 högt. 5

6 5.3.3 Skriv Java-filen Skapa filen Linser.java med följande innehåll: import java.awt.*; import java.applet.*; public class Linser extends Applet { } public void paint(graphics g) { g.drawline(100, 250, 200, 100); g.drawoval(100, 100, 100, 150); } Detta är ett Java-program som ritar en liten figur bestående av en linje ochen oval Kompilera och provkör programmet Innan du kan köra programmet du just skrivit måste det kompileras. Kompileringen innebär att programmet översätts till ett internformat som snabbt kan tolkas när programmet kör. Kompileringen görs genom att man ger kommandot: javac Linser.java Om kompileringen lyckades så har du nu fått en fil med namnet Linser.class som innehåller programmet i det interna formatet. Vi är nu redo för att provköra programmet. Se till att placera dig (med hjälp av cd-kommandot) i den katalog där programmet ligger. Vårt program är en applet ochvi kör det därför med hjälp av kommandot: appletviewer Linser.html Har du nu gjort allting rätt så ska det dyka upp ett nytt fönster med titeln»appletviewer: Linser.class» på skärmen. Första gången du kör kan det tänkas att du får upp ett fönster med licensvillkoren för Java-systemet JDK (Java Development Kit). Du måste då bekräfta att du läst dessa innan du kan gå vidare. När din applet väl har startat ska linjen och ovalen synas i dess fönster. Det finns också en meny med namnet Applet som du framförallt använder för att avsluta provkörningen (menyalternativet Quit längst ned). 6

7 5.3.5 Ändra i programmet Prova att göra några enkla ändringar i programmet ochkontrollera att ni kan köra den modifierade versionen. Ändra först parametrarna vid anropet av drawline och drawoval ochse om ni kan rita någon annan figur. Slår man upp dokumentationen (t.ex. i WWW via kursens webbsida) för dessa två metoder så hittar man följande beskrivningar, för drawline: public abstract void drawline(int x1, int y1, int x2, int y2) Draws a line, using the current color, between the points (x1, y1) and (x2, y2) in this graphics context s coordinate system. Parameters: x1 - the first point s x coordinate. y1 - the first point s y coordinate. x2 - the second point s x coordinate. y2 - the second point s y coordinate.... ochför drawoval: public abstract void drawoval(int x, int y, int width, int height) Draws the outline of an oval. The result is a circle or ellipse that fits within the rectangle specified by the x, y, width, and height arguments. The oval covers an area that is width + 1 pixels wide and height + 1 pixels tall. Parameters: x - the x coordinate of the upper left corner of the oval to be drawn. y - the y coordinate of the upper left corner of the oval to be drawn. width - the width of the oval to be drawn. height - the height of the oval to be drawn. See Also: filloval(int, int, int, int) Stämmer dessa beskrivningar med vad som händer när du ändrar värdena? Inför gärna något fel i programmet för att se vad som händer. När får du motsvarande felmeddelande: när du skriver felet, sparar programtexten, kompilerar eller kör programmet? Förstår du vad felmeddelandet betyder? Prova gärna med några olika typer av fel, t.ex. felstavningar,»konstiga» tecken, fel ordning på rader. 7

8 5.4 Frivilliga övningar på variabler och uttryck Speciellt om du aldrig tidigare har programmerat är det lämpligt att öva lite på att skriva olika enkla beräkningar i det program vi nu har. Här är några förslag till övningar: Konstanterna som används som parametrar till drawline och drawoval kan ersättas med beräkningsuttryck, d.v.s. formler, av olika slag. Ersätt konstanterna med enkla uttryck som innehåller aritmetiska operationer (addition, subtraktion, o.s.v.). Använd din fantasi! Definiera en lokal variabel genom att lägga till raden: int k = 17; precis före raderna med drawline och drawoval. Du ska nu kunna använda namnet k i uttrycken också. Ersätt även talet 17 ovan med ett beräkningsuttryck. Mera fantasi... Parametrarna till drawline och drawoval måste vara heltal (typen int). Om beräkningsuttrycket t.ex. innehåller något decimaltal får man ett felmeddelande. Prova! För att klara detta kan man uttryckligen begära omvandling till heltal med hjälp av operatorn (int). Parenteserna ingår i operatorn ochden skall placeras före talet som ska omvandlas. Prova! Rita en linje som är 100 enheter lång och lutar 13 grader! Använd funktionerna Math.sin(x) och Math.cos(x) för att räkna ut var ändpunkterna hamnar. Tänk på att dessa båda funktioner tar vinkeln i radianer som parameter. Utnyttja konstanten Math.PI för att göra om de 13 graderna till radianer. Rita en kvadrat som är vriden 13 grader motsols! Använd lokala variabler för att lagra alla hörnpunkternas koordinater. 8

9 6 Första labbtillfället Linsprogrammet Den första appleten använde färdiga metoder: drawline och drawoval. Nuskadu själv definiera egna metoder som räknar om koordinater mellan två olika koordinatsystem. Vi kommer också att stöta på behovet att mellanlagra beräknade värden som ska användas senare. Detta sker genom lagring i variabler. 6.1 Koordinatsystemet Java, liksom många andra datorbaserade grafiksystem, använder ett för en matematiker ganska bakvänt koordinatsystem: origo ligger i övre vänstra hörnet med x-axeln åt höger och y-axeln nedåt. Vi kallar detta för skärmkoordinater med beteckningen x screen respektive y screen. Skärmkoordinaterna är alltid heltal som motsvarar antal bildpunkter. När man arbetar med naturvetenskapliga problem är det ofta mycket mer naturligt att använda ett koordinatsystem med y-axeln riktad uppåt ochmed reella tal som koordinater (se figur 3). Det är egentligen ganska enkelt att konvertera koordinater mellan de två koordinatsystemen. Eftersom x-axlarna och y-axlarna i de två systemen är parallella kan vi konvertera x-koordinaten och y-koordinaten separat. För att konvertera åt båda hållen behöver vi alltså fyra funktioner: avbildningen x x screen, kallad xtoxscreen avbildningen y y screen, kallad ytoyscreen avbildningen x screen x, kallad xscreentox avbildningen y screen y, kallad yscreentoy Vi kan till att börja med begränsa oss till konverteringen från det reella systemet till skärmkoordinater, d.v.s. de två första funktionerna. Det är dessa som behövs när vi ska rita. I Java kan man definiera metoder som motsvarar matematiska funktioner. Metoden för konvertering från x (det reella koordinatvärdet) till x screen (heltalet) kan illustreras med följande figur: x xtoxscreen Givet att metoden xtoxscreen definierats kan man använda den i beräkningsuttryck, t.ex. vid tilldelningar som denna: xcoord = 2 * xtoxscreen( a + b ); eller som parametrar vid anrop av andra metoder, t.ex. på detta sätt: g.drawline( xtoxscreen( a ), 0, 100, 100 ); För att Java ska ha en chans att tolka vad vi menar måste vi dock definiera vad vi menar med»xtoxscreen». Detta gör man genom att skriva en metoddefinition med följande utseende: X 9

10 x screen y x y screen Figur 3: Java använder ett koordinatsystem där man räknar i bildpunkter från övre vänstra hörnet (skärmkoordinaterna x screen och y screen). Inom matematiken och fysiken är det vanliga att använda ett s.k. högersystem (x, y). int xtoxscreen( double x ) { return beräkning av x screen från x; } Ordetint anger att resultatet är ett heltal (integer). xtoxscreen är metodens namn (du kan själv välja ett annat namn om det passar bättre). Texten ( double x ) betyder att metoden tar en parameter ochatt denna parameter är ett ett reellt tal som vi kallar x (double betyder reella tal lagrade som flyttal med s.k. dubbel precision). Namnet x används inne i metoddefinitionen för att beteckna värdet av denna parameter. Det speciella ordet return skall följas av ett beräkningsuttryck som anger hur det resulterande värdet ska beräknas. Metoddefinitioner skall alltid placeras inuti en klassdefinition men utanför alla andra metoddefinitioner Den enda metod du har i ditt program just nu är paint. Skriv nu definitionerna för de två metoderna xtoxscreen och ytoyscreen.tänk först igenom hur koordinaterna ska räknas om. Välj själv en lämplig skala för problemet. Det kan t.ex. vara lämpligt att arbeta i enheten meter och att försöka få 0,1 m att bli ungefär en decimeter på skärmen. Tips: Eftersom omvandlingen från ett reellt tal till heltal innebär att man tappar noggranhet (decimalerna försvinner) så måste man uttryckligen begära denna omvandling (se även bokens avsnitt 2.3.4). Man använder då det speciella skrivsättet: (int)double-uttryck Exempelvis: double a = ; int k, m; k = (int) a; m = 25 * (int)(a + 0.3); 10

11 Uttrycket (a + 0.3) beräknas här som ett double-tal som sedan omvandlas till ett heltal. Detta heltal multipliceras sedan med 25 för att få det slutliga heltalet som lagras i variabeln m. Fundera själv ut hur din omvandling från reella till heltalskoordinater ska gå till. Prova slutligen metoderna genom att rita några linjer uttryckta i det reella koordinatsystemet. Detta gör man genom att ersätta heltalen som är parametrar till drawline med anrop av dina nya metoder. Kontrollera att resultatet verkar vettigt. 6.2 Definiera fler metoder Vi kommer att behöva rita många linjer som alla ska uttryckas i vårt nya reella koordinatsystem. Uttrycket för att rita en linje med koordinattransformation och allt är ganska komplicerat så det skulle vara bättre att slippa upprepa detta varje gång. Det naturliga sättet att åstadkomma detta är att definiera ytterligare en metod som har till uppgift att rita linjen och som tar de reella koordinaterna som parametrar. Denna metod skiljer sig något från de vi nyss definierade. En viktig skillnad är att den inte ska returnera något värde; det är ju inte en funktion i matematisk mening. Detta markerar man i definitionen genom att ange»typen» void för resultatet ochatt utelämna return-satsen. En annan skillnad är att vi måste ha mer än en parameter. Detta åstadkommer man genom att skriva flera parametrar (på samma form som tidigare) mellan parenteserna, åtskilda med komma. Metoderna som ritar (drawline och drawoval) är lite speciella genom att de kräver ett grafiskt object som anger var resultatet av ritandet hamnar. Det är detta som parametern g till metoden paint anger. För att vår nya metod ska kunna använda drawline på samma sätt måste vi skicka vidare denna g som en extraparameter. Totalt behöver vi alltså fem parametrar på detta sätt: g x1 y1 x2 y2 line vilket i programform motsvaras av: void line( Graphics g, double x1, double y1, double x2, double y2 ) { satser som ritar linjen m.h.a. drawline, xtoxscreen och ytoyscreen } Definiera metoden line (eller vad du nu väljer att kalla den) ochanvänd den inne i paint för att rita koordinataxlarna. 6.3 Rita ljusstrålar Nu ska vi komplettera programmet så att det verkligen räknar ut hur en ljusstråle bryts i en lins. Dessa beräkningar placerar vi i ytterligare en ny metod som anropas 11

12 från paint-metoden. Vår nya metod ska dels räkna ut hur strålen bryts, dels rita resultatet (genom att använda line-metoden vi nyss definierade). Metoden måste ha en parameter av typ Graphics och kan (men behöver inte) ha ljusstrålens utgångspunkt (x 1 och y 1 ) ochdess lutning (k 1 ) som parametrar. Satserna i metoden ska själva räkna ut punkten där strålen bryts i linsen samt en punkt långt till höger 1 där strålen»försvinner». Mellan dessa tre punkter ska man sedan rita linjerna som föreställer ljusstrålens väg (se figur 4). Vi behöver använda två slags variabler för dessa beräkningar. Punkterna längs ljusstrålens väg är bara intressanta lokalt inne i vår nya metod ochderas koordinater bör därför lagras i lokala variabler, d.v.s. variabler med sin typdeklaration inne i metoden. Dessa variabler använder vi för att mellanlagra koordinaterna från beräkningen tills linjerna har ritats. I beräkningarna behöver vi dessutom känna till linsens position (bara x-värdet) ochdess brännvidd (f). Dessa två tal kan betraktas som konstanter som kan vara av intresse även i andra delar av programmet, t.ex. för att rita var linsen befinner sig. Vi bör därför lagra dessa värden i allmänt tillgängliga variabler, förslagsvis två instansvariabler, d.v.s. variabler med sin typdeklaration placerad utanför alla metoddefinitioner. Komplettera dessutom paint-metoden så att den ritar ut koordinataxlarna (om du inte redan har gjort det) och linsen. Använd gärna en separat metod för att rita linsen i form av en oval. Gör helst en metod för att rita ovaler som motsvarar line för att rita linjer. Tänk på att man inte direkt kan använda metoderna xtoxscreen och ytoyscreen för att konvertera bredden ochhöjden på ovalen. Hur ska man fixa det på ett bra sätt? När du är klar ska figuren se ut ungefär som exemplet i figur 4. Prova att ändra på»lampans» position ochlinsens brännvidd. Vad händer om brännvidden är negativ? Metoderna xtoxscreen och ytoyscreen anropas endast inuti metoderna line och oval För att rita linjerna mellan linserna anropas metoden line med parametrar som är variabler av typ double. Alla dessa metoder är hjälpmetoder för att det intressanta ritandet ska bli enkelt ochkunna uttryckas endast i det vanliga koordinatsystemet, utan att man behöver tänka på skärmkoordinater. 1 Strålen fortsätter oändligt långt till höger, men välj ett lämpligt stort x-värde för att få en slutpunkt för den ritade linjen. Det gör inget om du hamnar en bit utanför fönstret. Linjen kommer att synas ändå 12

13 Figur 4: När du är klar med första labbtillfället ska det se ut på ungefär detta sätt på skärmen. 13

14 7 Andra labbtillfället Nu är det dags att utvidga programmet så att det löser den egentliga uppgiften: att beräkna ochrita hur flera ljusstrålar går igenom flera linser. Du kommer att stöta på två programmeringstekniska nyheter. För det första ska vi använda två vektorer 2 (eng. array) för att lagra linsernas egenskaper. För det andra ska vi använda två upprepningssatser (for-satser) för att upprepa samma beräkningar flera gånger, dels för flera ljusstrålar, dels för flera linser. 7.1 Utvidgning till flera linser Nu ska vi modifiera metoden som ritar ut strålen så att den hanterar situationen med flera linser. Detta innebär att du ska komplettera metoden som beräknar och ritar ut strålen med hjälp av en for-sats som successivt räknar ochritar. Tidigare har vi använt en variabel för linsens position och en annan för linsens brännvidd. När vi nu ska ha flera linser måste vi hålla reda på flera positioner och brännvidder. En vektor är ett objekt som kan innehålla flera värden av samma typ. Man använder sig då av index för att välja ut element 3 ur vektorn. Indexen är alltid heltal, från noll och uppåt. 7.2 Utvidgning till flera ljusstrålar Vi börjar med att införa flera ljusstrålar ochsparar utvidgningen till flera linser ett tag. Vi vill rita flera ljusstrålar med samma utgångspunkt men med olika begynnelselutning (k 1 ). Eftersom vi redan har definierat en metod för att rita en linje där lutningen är en parameter är det ganska enkelt att förändra programmet så att metoden anropas flera gånger. Den allra enklaste varianten är att helt enkelt skriva flera anrop efter varandra med något olika k 1 -värden. Detta är dock inte någon vacker lösning, speciellt om man vill ha riktigt många strålar. En bättre lösning är då att använda en for-sats som upprepar anropet flera gånger. Den enda svårigheten blir nu att se till att parametern för k 1 får olika värden. Inför nu upprepningen på detta sätt så att ett 20-tal strålar ritas upp. Observera också att dina beräkningar inte ska förutsätta ett visst bestämt antal linser. Använd istället en for-loop som går lika många varv som antalet linser. Om man lägger till en lins i programmet ska man inte behöva ändra på for-satsen. Tänk också igenom vilka variabelvärden som måste bevaras från ett varv i loopen till nästa. 2 Det råder delade meningar om vad indexerbara variabler (engelskans array) skall kallas på svenska. Vi använder här beteckningen vektor som är den vanligaste översättningen. I Skansholms böcker används istället fält för samma sak. 3 I boken används beteckningen komponent för element i en vektor. 14

15 Tips: Det finns flera olika sätt att skapa vektorer men vi kan här nöja oss med det enklaste: att skriva elementen direkt vid variabeldefinitionen. Om vi t.ex. vill ha en vektor a med element 4.2, 3.6 och 7.2 (lagrade som double-tal) skriver vi i programmet: double[] a = {4.2, 3.6, 7.2}; Hakparenteserna efter double anger att det handlar om en vektor. När detta är gjort kan man plocka fram de tre elementen med hjälp av uttrycken a[0], a[1] resp. a[2]. Finessen är att man även kan låta indexet vara en variabel så att man kan tala om a[i] där i är en heltalsvariabel. Använd alltså denna teknik för att skapa två vektorer i ditt program, ett för linsernas positioner (x-koordinaten) och ett för linsernas brännvidder. Tips: Strålen efter sista linsen beräknas på ett annat sätt än alla de andra delarna av strålen eftersom den inte når fram till en lins. Det är därför lämpligt att räkna ut slutpunkten och rita sista linjen efter for-satsen och inte som en del av den. Slutpunkten kan gärna ligga utanför det synliga fönstret. 15

16 8 Tredje labbtillfället Vi ska nu komplettera programmet så att det ser lite snyggare ut. Dessutom ska vi införa metoder som anropas när användaren drar med musen så att man interaktivt kan flytta på lampan utan att behöva ändra i programmet. När du är klar ska programmet visa något som liknar figur Lägg till färger Det ser lite tråkigt ut med svarta ljusstrålar ochgrå bakgrund eller hur? Fixa till programmet så att det får en ny bakgrundsfärg, en annan färg på linserna ochlåt strålarna ha en tredje färg. Det är två olika saker vi behöver göra. För det första väljer vi en annan bakgrundsfärg. Detta gör man en gång för alla genom att anropa en metod när programmet startar. För det andra väljer vi en lämplig färg varje gång något ska ritas. På detta sätt blir det enkelt att ha olika färger för koordinataxlarna, ljusstrålarna ochlinserna. När en applet startas anropas metoden init (om en sådan finns). init skall alltid definieras med följande huvud: public void init() Detta är en lämplig plats för att sätta bakgrundsfärgen (hur man sätter bakgrundsfärgen hittar du i någon bok eller i exempel från undervisningen). Varje gång man ska rita någonting bör man nu också välja vilken färg man ska rita med. Detta gör man genom att anropa metoden setcolor som finns i grafikobjektet. För att t.ex. rita vita linjer gör man såhär: g.setcolor(color.white); g.drawline(...); På motsvarande sätt kan man fylla ovalerna med en färg, t.ex. blått g.setcolor(color.blue); g.filloval(...); Placera in dessa anrop på lämpliga platser i programmet så att det hela ser både tilltalande ochtydligt ut på skärmen. 8.2 Gör det möjligt att flytta lampan Det sista tillägget till programmet är att vi vill låta användaren kunna flytta på lampan genom att helt enkelt dra med musen. För att klara detta måste vi komplettera programmet med metoder som tar hand om musklickningar eller musrörelser. Dessa kallas i Java för händelser (eng. events). Musklickningar ochmusrörelser är i själva verket olika händelser som också hanteras olika. Här är det faktiskt smartast att ta hand om musrörelser eftersom vi då kan få programmet att successivt rita strålknippet medan användaren drar runt lampan (musklick-händelser känner bara av var musen är precis när man trycker ned musknappen). För att åstadkomma detta måste vårt program kompletteras med tre nyheter: 1. Ange att programmet förstår musförflyttningshändelser. 16

17 2. Ange att programmet ska få reda på alla musförflyttningar. 3. Skriva de två metoder som anropas vid musförflyttningar. Vi tar detta i tur ochordning. Allra först måste vi lägga in en extra importrad i filens början som anger att vi behöver tillgång till ett paket med klasser och gränssnitt som har med händelser (events) att göra: import java.awt.event.*; För att nu ange att programmet»förstår» musförflyttningshändelser måste inledningsraden kompletteras på detta sätt: public class Linser extends Applet implements MouseMotionListener { Texten implements MouseMotionListener betyder att vi lovar att skriva de två metoder som krävs för att ta hand om musförflyttingshändelser. Nästa steg är att se till att programmet verkligen får reda på alla musförflyttningar. Detta gör man genom att anropa metoden addmousemotionlistener på detta sätt: addmousemotionlistener(this); Detta skall ske när programmet startar ochläggs därför lämpligen in i init-metoden tillsammans med valet av bakgrundsfärg. Nu återstår det egentliga arbetet: att skriva de två metoder som anropas vid musförflyttningar. Anledningen till att det behövs två metoder är att den ena (mousemoved) anropas när musen förflyttas utan att någon musknapp tryckts ned medan den andra (mousedragged) anropas när användaren håller musknappen nere. Metoderna skall definieras med följande huvuden: public void mousemoved(mouseevent e) respektive public void mousedragged(mouseevent e) Definiera dessa metoder så att de variabler som beskriver lampans position uppdateras när man drar musen med nedtryckt knapp. Man kan använda metoderna e.getx() och e.gety() för att få den aktuella positionen för musen (i heltalskoordinatsystemet). Metoden mousemoved kan vara helt tom; vi gör ingenting vid musflyttning utan knapp nedtryckt. Vid förflyttning med knapp nedtryckt så flyttar vi lampan till den position musen stannar vid oavsett var musen befann sig då vi tryckte ned knappen. När du ändrat variablerna som bestämmer lampans positions måste du också se till att figuren ritas om. Du skall dock aldrig själv anropa paint-metoden, det är alltid Java-systemets uppgift. Använd istället metoden repaint() för att tala om 17

18 Figur 5: När programmet är färdigt ska det se ut på ungefär detta sätt på skärmen (men i färg). för systemet att det är dags att rita om fönstret. Java-systemet kommer då att se till att din paint-metod anropas snarast möjligt. Har du nu gjort rätt ska du med musen kunna flytta på lampan ochdirekt se vart strålarna tar vägen genom linssystemet. Om du flyttar lampan till höger om den första linsen händer det konstiga saker (om du inte gjort något speciellt för att förhindra det). Det beror på att vi förutsatt att stålarna går igenom alla linserna. Det är inte så svårt att åtgärda men krävs inte för att du ska vara klar med labben. 8.3 Frivilliga tillägg Hoppa över linser som ligger till vänster om lampan. Inför en diameter för varje lins ochlåt bli att bryta ljusstrålar som går utanför linsen. Rita ut lampan som en ljus cirkel Gör så att man kan flytta lampan endast om man trycker ned musen nära lampan (inuti cirkeln, om ni gjort lampan som en ljus cirkel). Gör det möjligt att med musen flytta även på linserna Du kan t.ex. använda skift+klick för att skilja detta från flyttningar av lampan. Ett annat sätt är att läsa av musens position då den flyttas ochlåta positionen just före nedtryckning avgöra om något av lampa ochlinser ska flyttas. Om musen är nära lampan så flyttas lampan o.s.v. Gör det möjligt att ändra linsernas styrka Rita linserna med en form som antyder styrkan. Observera att negativa linser motsvarar konkava ytor. 18

Laboration 1: Linser

Laboration 1: Linser Programkonstruktion för F, 2D1342, 2006 2007 Laboration 1: Linser [Sista redovisningsdatum för bonuspoäng: 3 november 2006] [Grundpoäng: 2] [Tidsbonus: +1] 1 Målsättning Under denna laboration ska du skriva

Läs mer

Laboration 1: Linser

Laboration 1: Linser Programkonstruktion för F, DD1342, 2007 2008 Laboration 1: Linser [Sista redovisningsdatum för tidsbonuspoäng: fredagen den 23 november 2007] [Grundpoäng: 4] [Tidsbonus: +1] 1 Målsättning Under denna laboration

Läs mer

Laboration 1: Linser

Laboration 1: Linser Programkonstruktion för F, DD1342, 2008 2009 Laboration 1: Linser [Sista redovisningsdatum för tidsbonuspoäng: fredagen den 28 november 2008] [Grundpoäng: 4] [Tidsbonus: +1] Målsättning Under denna laboration

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

Optisk bänk En Virtuell Applet Laboration

Optisk bänk En Virtuell Applet Laboration Optisk bänk En Virtuell Applet Laboration Bildkonstruktion med linser. Generell Applet Information: 1. Öppna en internet läsare och öppna Optisk Bänk -sidan (adress). 2. Använd FULL SCREEN. 3. När applet:en

Läs mer

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning Karlstads GeoGebrainstitut Institutionen för matematik och datavetenskap Karlstads universitet Mats Brunström Maria Fahlgren GeoGebra ett digitalt verktyg för framtidens matematikundervisning Invigning

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

Studieanvisning i Optik, Fysik A enligt boken Quanta A

Studieanvisning i Optik, Fysik A enligt boken Quanta A Detta är en något omarbetad version av Studiehandledningen som användes i tryckta kursen på SSVN. Sidhänvisningar hänför sig till Quanta A 2000, ISBN 91-27-60500-0 Där det har varit möjligt har motsvarande

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

Läs mer

Linjär algebra med tillämpningar, lab 1

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

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

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

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

Läs mer

Mätning av fokallängd hos okänd lins

Mätning av fokallängd hos okänd lins Mätning av fokallängd hos okänd lins Syfte Labbens syfte är i första hand att lära sig hantera mätfel och uppnå god noggrannhet, även med systematiska fel. I andra hand är syftet att hantera linser och

Läs mer

Linjära ekvationssystem. Avsnitt 1. Vi ska lära oss en metod som på ett systematiskt sätt löser alla linjära ekvationssystem. Linjära ekvationssystem

Linjära ekvationssystem. Avsnitt 1. Vi ska lära oss en metod som på ett systematiskt sätt löser alla linjära ekvationssystem. Linjära ekvationssystem Avsnitt Linjära ekvationssystem Elementära radoperationer Gausseliminering Exempel Räkneschema Exempel med exakt en lösning Exempel med parameterlösning Exempel utan lösning Slutschema Avläsa lösningen

Läs mer

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet 19-20 april. Liten introduktionsguide för nybörjare

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet 19-20 april. Liten introduktionsguide för nybörjare GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare 19-20 april Liten introduktionsguide för nybörjare GeoGebra 0 Introduktionsövningar till GeoGebra När man startar GeoGebra är det

Läs mer

Laboration: Grunderna i MATLAB

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äs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Användarhandledning Version 1.2

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...

Läs mer

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering Föreläsning 2 Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

LABORATION 1 AVBILDNING OCH FÖRSTORING

LABORATION 1 AVBILDNING OCH FÖRSTORING LABORATION 1 AVBILDNING OCH FÖRSTORING Personnummer Namn Laborationen godkänd Datum Labhandledare 1 (6) LABORATION 1: AVBILDNING OCH FÖRSTORING Att läsa före lab: Vad är en bild och hur uppstår den? Se

Läs mer

Geometrisk optik. Syfte och mål. Innehåll. Utrustning. Institutionen för Fysik 2006-04-25

Geometrisk optik. Syfte och mål. Innehåll. Utrustning. Institutionen för Fysik 2006-04-25 Geometrisk optik Syfte och mål Laborationens syfte är att du ska lära dig att: Förstå allmänna principen för geometrisk optik, (tunna linsformeln) Rita strålgångar Ställa upp enkla optiska komponenter

Läs mer

Linjär Algebra, Föreläsning 2

Linjär Algebra, Föreläsning 2 Linjär Algebra, Föreläsning 2 Tomas Sjödin Linköpings Universitet Riktade sträckor och Geometriska vektorer En (geometrisk) vektor är ett objekt som har storlek och riktning, men inte någon naturlig startpunkt.

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1. OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1. Laboration 0 del 1-3 (frivilliga delar) Del 1-3 (dvs upg

Läs mer

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB DN1240, Numeriska metoder för O1. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB Del 1: UNIX och kontoadministration Uppgift 1.1 Ni bör jobba

Läs mer

PROGRAMMERING-JAVA TENTAMINA

PROGRAMMERING-JAVA TENTAMINA PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift

Läs mer

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se 1 F18-20-2006 Denna vecka Måndag: Ett komplext problem Tisdag: Lektion. Kväll: Essäfrågan distribueras via webben. Dead-line onsdag 17 maj, kl 12.00. Inlämning elektroniskt och på papper. Onsdag: Grafik

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren Publicerad med tillstånd av Nämnaren Thomas Lingefjärd Geogebra i gymnasieskolan En tilltalande egenskap med Geogebra är att programmet kan användas tvärs över stora delar av utbildningssystemets matematikkurser.

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning I: kursinfo, att programmera datorer, första programmet Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 Outline Hemsida Organization Examination

Läs mer

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: Bilaga C Eclipse 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: www.eclipse.org help.eclipse.org www.eclipse.org/downloads/

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

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.

Läs mer

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1. SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1. Denna labb är tänkt att öva datorhantering och öva inledande Matlab. Eftersom förkunskaperna varierar finns en del frivilliga uppgifter

Läs mer

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas DN1212, Numeriska metoder & grundläggande programmering för P1. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas Introduktion till UNIX och MATLAB Del 1: UNIX och

Läs mer

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

Fönsterbeteende. Mike McBride Jost Schenck Översättare: Stefan Asserhäll

Fönsterbeteende. Mike McBride Jost Schenck Översättare: Stefan Asserhäll Mike McBride Jost Schenck Översättare: Stefan Asserhäll 2 Innehåll 1 Fönsterbeteende 4 1.1 Fokus............................................. 4 1.1.1 Fokuspolicy..................................... 4

Läs mer

Här hittar du ett exempel på ritprogrammet: https://scratch.mit.edu/projects/82515788/

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

Läs mer

Programmering. Den första datorn hette ENIAC.

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

Läs mer

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2 Paneler - VCPXX.2 Programmeringsmanual för VCP-paneler Revision 2 Innehållsförteckning Innehållsförteckning... 2 1 Symbolfiler för kommunikation via IndraLogic... 3 2 Uppsättning i IndraWorks... 6 3 Programmering

Läs mer

Talsystem Teori. Vad är talsystem? Av Johan Johansson

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

Läs mer

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner

Läs mer

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Laboration i Geometrisk Optik

Laboration i Geometrisk Optik Laboration i Geometrisk Optik Stockholms Universitet 2002 Modifierad 2007 (Mathias Danielsson) Innehåll 1 Vad är geometrisk optik? 1 2 Brytningsindex och dispersion 1 3 Snells lag och reflektionslagen

Läs mer

PROGRAMMERING-Java TENTAMINA

PROGRAMMERING-Java TENTAMINA PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För

Läs mer

Förberedelseuppgift inför datorlaborationen

Förberedelseuppgift inför datorlaborationen Förberedelseuppgift inför datorlaborationen Det finns datorprogram som följer strålar genom linssystem. Rätt använda kan de vara extremt kraftfulla verktyg och bespara dig många timmars beräkningar. Datorlaborationen

Läs mer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) 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/2d1310/

Läs mer

3.5 Visuell programmering

3.5 Visuell programmering 3.5 Visuell programmering Alla våra program hittills har varit C# Console Applications (sid 41) inkl. programmet MessageBox fast det genererade en grafisk meddelanderuta. Nu vill vi utnyttja grafikens

Läs mer

Parallella jobb ctrl-z emacs & more README ctrl-z jobs. %

Parallella jobb ctrl-z emacs & more README ctrl-z jobs. %<jobnr> Parallella jobb En av de stora skillnaderna mellan UNIX och t.ex. MS-DOS är att man kan köra flera program samtidigt trots att man bara har ett enda fönster. För att hålla reda på vilka program som är

Läs mer

Kort om programmering i Matlab

Kort om programmering i Matlab CTH/GU 25/26 Matematiska vetenskaper Kort om programmering i Matlab Inledning Redan första tillfället gjorde ni ett litet program. Ni skrev ett script eller en skriptfil som beräknade summan 5 i 2 = 2

Läs mer

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategier och tips 7 3.1 Spelregler..........................................

Läs mer

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt.

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt. Om förstoringsglaset Du kan göra mycket med bara ett förstoringsglas! I många sammanhang i det dagliga livet förekommer linser. Den vanligast förekommande typen är den konvexa linsen, den kallas också

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

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

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

Läs mer

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28 FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28 INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta

Läs mer

Microsoft Office Excel, Grundkurs 1. Introduktion

Microsoft Office Excel, Grundkurs 1. Introduktion Dokumentation - Kursmaterial Innehåll 1. Introduktion 1.1. Programfönster 1.2. Inskrift och redigering 1.3. Cellformat 1.4. Arbeta med formler Kursövning E1.xlsx Egna Övningar E1E.xlsx - OnePRO IT, Bengt

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

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

Läs mer

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

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

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Börja koda. Vad är programmering? Installera Processing

Börja koda. Vad är programmering? Installera Processing Börja koda Vad är programmering? En dator är uppbyggd kring ett antal delar som samverkar för att du skall kunna använda program, spela spel och titta på bilder. Den viktigaste delen är processorn eller

Läs mer

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false. Laboration 2. I denna laboration skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, som modelleras av klassen RobotWorld. Världen består av ett rutmönster

Läs mer

Miniprojektuppgift i TSRT04: Mobiltelefontäckning

Miniprojektuppgift i TSRT04: Mobiltelefontäckning Miniprojektuppgift i TSRT04: Mobiltelefontäckning 19 augusti 2015 1 Uppgift Enligt undersökningen Svenskarna och internet 2013 (Stiftelsen för Internetinfrastruktur) har 99 % av alla svenskar i åldern

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 12 Avsikten med denna laboration är att du ska göra några grafiska program. Börja med att skapa paketet laboration 12. Grundläggande uppgift Uppgift 12a Uppgiften går ut på att göra en enkel

Läs mer

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008

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

Läs mer

Att använda Java SE JDK 6

Att använda Java SE JDK 6 Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).

Läs mer

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

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

Läs mer

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1a (Aktiekurser utan poster) Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Att räkna med mellanbilder genom ett system med många linser och gränsytor blir krångligt. Vi vill kunna avbilda genom alla ytor direkt.

Att räkna med mellanbilder genom ett system med många linser och gränsytor blir krångligt. Vi vill kunna avbilda genom alla ytor direkt. Föreläsning 9 0 Huvudplan Önskan: Tänk om alla optiska system vore tunna linser så att alltid gällde! Att räkna med mellanbilder genom ett system med många linser och gränsytor blir krångligt. Vi vill

Läs mer

C++ Slumptalsfunktioner + switch-satsen

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.

Läs mer

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg Tema: Pythagoras sats Linnéa Utterström & Malin Öberg Innehåll: Introduktion till Pythagoras sats! 3 Pythagoras sats! 4 Variabler! 5 Potenser! 5 Att komma tillbaka till ursprunget! 7 Vi bevisar Pythagoras

Läs mer

Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR

Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR Del 4 BILDER OCH TABELLER 0. Arbeta med bilder... 9. Redigera bilder... 96. Klickbara bilder/imagemaps... 0. Tabeller... 04 4. Skapa

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25

Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25 Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka

Läs mer

Histogram, pivottabeller och tabell med beskrivande statistik i Excel

Histogram, pivottabeller och tabell med beskrivande statistik i Excel Histogram, pivottabeller och tabell med beskrivande statistik i Excel 1 Histogram är bra för att dem på ett visuellt sätt ger oss mycket information. Att göra ett histogram i Excel är dock rätt så bökigt.

Läs mer

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. 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

Läs mer

λ = T 2 g/(2π) 250/6 40 m

λ = T 2 g/(2π) 250/6 40 m Problem. Utbredning av vattenvågor är komplicerad. Vågorna är inte transversella, utan vattnet rör sig i cirklar eller ellipser. Våghastigheten beror bland annat på hur djupt vattnet är. I grunt vatten

Läs mer

Kort-kort om utdelade användarkonton och datormiljön på NADA

Kort-kort om utdelade användarkonton och datormiljön på NADA Kort-kort om utdelade användarkonton och datormiljön på NADA UNIX-konto, användaridentitet Namn Du har fått ett konto med ett användarnamn bestående av prefixet ip99_ och ytterligare tre bokstäver. Dessa

Läs mer

PROV. 12 Egenskaper (provavsnitt)

PROV. 12 Egenskaper (provavsnitt) 12 Egenskaper (provavsnitt) 12.1 Egenskaper 12.2 Deklaration av egenskaper 12.3 Åtkomsttjänster för egenskaper 12.4 Åtkomsttjänster med genererade instansvariabler 12.5 Åtkomsttjänster med egna instansvariabelnamn

Läs mer

MMA132: Laboration 1 & 2 Introduktion till MATLAB

MMA132: Laboration 1 & 2 Introduktion till MATLAB MMA132: Laboration 1 & 2 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

Läs mer

7 GRUNDERNA I PROGRAMMERING

7 GRUNDERNA I PROGRAMMERING Grunderna i programmering 7 GRUNDERNA I PROGRAMMERING Detta kapitel är bokens största kapitel och kanske det viktigaste. Vi kommer här att gå igenom grunderna för sekventiell programmering. Det vi går

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540. Tentamen för TDA540 Objektorienterad programmering Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-04-18 TDA540 Tentamen för TDA540 Objektorienterad programmering DAG: 15-04-18 TID: 14:00 18:00 Ansvarig: Joachim von Hacht och Christer Carlsson

Läs mer

Manual för banläggning i OCAD8 170706 IF ÅLAND

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äs mer

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism En civilingenjör ska kunna idealisera ett givet verkligt problem, göra en adekvat fysikalisk modell och behandla modellen med matematiska

Läs mer

HI1024 Programmering, grundkurs TEN2 2014-03-13

HI1024 Programmering, grundkurs TEN2 2014-03-13 HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Kapitel 3 Fönster och dörr... 3

Kapitel 3 Fönster och dörr... 3 2014.02.21 1 1 Fönster och dörr Kapitel 3 Kapitel Innehåll... Sida Kapitel 3 Fönster och dörr... 3 Fönster... 3 Placera med gitter... 4 Relativ positionering... 8 Fasta fönster... 9 Se på 3D-modell...

Läs mer