Laboration 1: Linser

Storlek: px
Starta visningen från sidan:

Download "Laboration 1: Linser"

Transkript

1 Programkonstruktion för F, DD1342, 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 ska du skriva en Java-applet. Följande ska du kunna när du är klar med labben: hur man kompilerar och kör Java-applets hur man ritar figurer med linjer och ovaler hur man delar upp program i separata metoder för olika uppgifter hur man utför enkla beräkningar och repetitioner hur man byter koordinatsystem m.h.a. metoddefinitioner hur man tar hand om användarens musklickningar Det är möjligt att göra uppgiften Linser, som kursens första laboration, dvs utan att ha gjort Laboration 0, komigång -uppgiften. Därför blir det här i Linseranvisningarna en del upprepning av lab0-stoffet, t.ex. hur man registrerar sig och hur man definierar metoder för att byta koordinatsystem. Ni som redan gjort lab0 hittar lite specialanvisningar i nästa avsnitt. För er som gjort Laboration 0 På sidorna 2 4 beskrivs uppgiften samt den matematik ochde formler som behövs. Detta måste alla läsa mycket noga. På sidorna 5 12 finns t.ex. kursanpassningarna, dessa bör ni redan ha gjort. Där finns också övningar på att kompilera och köra program, provköra en färdig applet m.m. som ni också ska ha klarat av i lab0. Sist men inte minst, i lab0 klarar man av en av svårigheterna i uppgiften Linser, nämligen att byta abstraktionsnivå från det pixelbaserade heltalskoordinatsystemet till ett rättvänt koordinatsystem med decimaltalskoordinater. Resultatet av det arbetet kan ni använda direkt här i Linser. På sidan 9 finns ett förslag till arbetsgång. Läs det men hoppa över eller skumläs för övrigt sidorna 5 12! För alla Laborationen är tänkt att genomföras under fyra veckor 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 på egen hand mellan labbpassen också! Redovisning görs när hela programmet är klart, inte vid varje labbtillfälle. Bonusdatumet är satt lite senare än det datum man bör vara klar om man vill klara alla labbar inom kursens tidsramar. 1

2 Lästips Material från föreläsningar ochövningar bör täcka det som behövs för uppgiften men om du har en bok och vill läsa på lite mer så läs någon introduktion till applets, läs särskilt om metoderna paint() och init(). Vidare, läs om variabler i allmänhet samt om metoder, både med och utan returvärden. Läs om for-satser ochom variabler med ett index. De senare kallas även vektorer, arrayer eller fält (Skansholm använder termen fält). 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 program som kan läggas in på en WWW-sida. För att ge uppgiften en rimlig svårighetsgrad 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. (Man ändrar i programmet, kompilerar om ochstartar om det, man behöver inte kunnda ändra medan programmet kör). Slutligen ska ljuskällans position kunna ändras interaktivt med hjälp av musen under programkörning. 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 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 b ( 1 = 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. 2

3 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. 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 ) Alla värden till höger väljs av er själva och är alltså kända. Det är strålens utgångspunkt som vi också kallar lampans position: (x 1,y 1 ), linsens position x 2 samt startlutningen k 1. Efter linsen kommer strålen följdaktligen att gå från punkten (x 2,y 2 ) men vilken riktning kommer den att ha? Den nya riktningen k 2 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å upprepar man samma beräkning igen; nu med (x 2,y 2 ) som startpunkt och k 2 som startriktning, o.s.v. 3

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

5 Förberedande uppgifter Kursanpassningar För att automatiskt få tillgång till moduler som används på kursen (t.ex. Sima- Manager, senaste Javaversionen), direktlänk till kursens hemsida och meddelanden från kursledaren ska följande kommando ges i terminalfönstret: course join progk08 Res-register Vi har på Nada ett s.k. Res register för varje kurs där delresultat för studenterna på kursen lagras. Ni lägger in er själva i detta register med kommandot res checkin progk08 Det kommer då frågor som ni svarar på efter bästa förmåga. Obs! Man kan bara checka in sig själv från sitt eget konto. Varje person måste göra både course join.. och res checkin.. från sitt eget konto. Ni som jobbar i par får logga ut och logga in igen på den andres konto för incheckning. Gemensam katalog (frivilligt) 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 progk08 kompisid där progk08 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 progk08 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! SimaManager för hjälp och redovisning SimaManager är ett program som hanterar kön för hjälp under laborationerna. Ni som läst den frivilliga kursen i Datorintroduktion har redan stött på SimaManager. SimaManager startas genom att man skriver sm i ett terminalfönster. Om man inte loggat in någon gång efter att ha gjort så kan det extra kommandot course join progk08 5

6 module add sima behövas innan man kan göra sm. Från ochmed nästa inloggning fungerar det bra med sm direkt. Efter en liten stund får man upp ett fönster med en lång lista med kursnamnsförkortningar. Välj nu progk i listan ochtryck sen på Login-knappen. Då visas den aktuella kön för kursen Programkonstruktion för F. Om ni vill ha hjälp eller redovisa så tryck på knappen Queue ochbekräfta med OK. Om ni behöver hjälp med att få igång själva Sima-programmet, kalla förstås på en handledare! 6

7 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, åtminstone om du är nybörjare på programmering. Skriv en enkel Javaapplet 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 går också bra att hämta den från kursbiblioteket: /info/progk08/java/lab0/linser.java Om du redan kan programmera så börja direkt med det riktiga programmet. Gå till sidan 9! Laborationsanvisningarna är gjorda utan hänvisningar till Swing-paketet för grafik. Den är fritt fram att använda Swing för den som vill! 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 i filnamnen. 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. 7

8 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). Ändra i programmet Bekanta dig mig ritmetoderna genom att rita någon annan figur, byta färg o.s.v. Slå upp klassen Graphics i någon bok eller på webben. Länk finns på kurshemsidan under Användbara länkar. I det utdelade materialet från de två första föreläsningarna finns också en hel del om Graphics ochapplets att testa. 8

9 Linsprogrammet Förslag till stegvis arbetsgång Förslaget är till för att underlätta. Det är absolut tillåtet att göra sin egen arbetsgång ochlösa uppgiften på ett annat sätt! De olika stegen beskrivs utförligare på kommande sidor. Steg 1 Definiera de metoder som behövs för att byta koordinatsystem. Rita upp koordinataxlar. Hur axlarna kan se ut syns i figur 4. Steg 2 Välj position ochbrännvidd för en lins. Rita linsen, beräkna ochrita hur en stråle bryts i den enda linsen. Se figur 4. Steg 3 Välj positioner ochbrännvidder för flera linser. Rita ut linserna. Beräkna ochrita hur en stråle bryts genom alla linserna. Om detta steg utförs med eftertanke så blir nästa steg riktigt enkelt att ta trots att skillnaden i appletarnas utseende är stor. Se figur 5. Steg 4 Utvidga till att många strålar bryts genom alla linserna. Figur 6 visar hur den färdiga strålgången kan se ut. I figuren har även färgerna ändrats. Steg 5 Lägg till färger på bakgrund, linser ochstrålar samt se till att det går att flytta på ljuskällan med hjälp av musen. Någonstans på vägen ska appleten färgsättas. Bakgrund, linser ochstrålar samt eventuellt även ljuskällan ska ges snygga färger. Instruktionerna står under Steg 5 men det kan vara roligt att färglägga tidigare. 9

10 Linsprogrammet - Steg 1 Den första appleten använde färdiga metoder: drawline() och drawoval(). Nu ska du själv definiera egna metoder som räknar om koordinater mellan två olika koordinatsystem. 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. Man vill vanligen också ha en lämplig skala, en enhet längs en koordinataxel ska (här) vara mycket längre än en pixel. Det är också bekvämt att kunna lägga sitt origo var man vill ochinte vara låst till övre vänstra hörnet. (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. Den andra två behövs först på slutet då vi ska ta hand om användarens musklick! 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: int xcoord = 2 * xtoxscreen( a + b ); eller som parametrar vid anrop av andra metoder, t.ex. på detta sätt: page.drawline( xtoxscreen( a ), 0, 100, 100 ); X 10

11 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). För att Java ska kunna utföra satser som innehåller xtoxscreen(..) så måste vi definiera vad vi menar med»xtoxscreen». Detta gör man genom att skriva en metoddefinition med följande principiella utseende: int xtoxscreen( double x ) { return <beräkning av x screen från x> ; } Ordet int anger att resultatet är ett heltal (integer). xtoxscreen är metodens namn (du kan själv välja ett annat namn som du tycker passar bättre). Texten ( double x ) betyder att metoden tar en parameter ochatt denna parameter är 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 parametern. 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. Man använder då det speciella skrivsättet: (int)double-uttryck Exempelvis: 11

12 double a = ; int k = (int) a; int m = 25 * (int)(a + 0.5); Uttrycket (a + 0.5) 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. Typomvandling med (int) hugger av talets decimaler så att t.ex. (int)3.9 blir 3. En riktigare typomvandling får man genom att avrunda. Metoder för avrundning finns i klassen Math. Det är frivilligt att använda avrundning. Definiera fler metoder Huvudsyftet med koordinatomvandlingsmetoderna från förra avsnittet är att man ska slippa tänka på skärmkoordinaterna (pixlarna) när man ritar. Man byter abstraktionsnivå ochuttrycker sig i de nya koordinaterna. Eftersom det är väldigt många små linjestycken som ska ritas är det naturligt att definiera ytterligare en metod, line, som har till uppgift att rita linjen och som tar de reella koordinaterna som parametrar. Metoden line ska t.ex. kunna anropas line(g, 0, 0, 0.1, 0.05); ochen linje ska då ritas från vårt nydefinierade origo till en punkt 10 cm till höger och5 cm uppåt (om skalfaktorn satts så att det nya koordinatsystemet är i meter). 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. Metoderna som ritar (drawline() och drawoval()) är lite speciella genom att de finns i ett grafiskt objekt som också vet om 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: 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. 12

13 Steg 1 för er som gjort lab0 Skapa först en ny underkatalog till labben, ett lämpligt namn är förstås linser. Metoderna xtoxscreen(), ytoyscreen() och line() somnigjortislutetpålab0 ska anvädas även här och kan kopieras till linsprogrammet tillsammans med ev. variabler för origo ochskalfaktor. Allra enklast är det nog att kopiera hela kurvritarappleten från lab0, byta namn till Linser ochta bort satserna som ritar kurvan (ev. också ochkoordinataxlarna). Ändra positionen för origo så att det ligger långt till vänster i fönstret men ungefär centrerat i höjdled. Rita koordinataxlarna så som i figur 4 (exakt överensstämmelse krävs förstås inte!). Linsprogrammet - Steg 2 Rita en lins och ljusstrålar Nu ska vi komplettera programmet så att det verkligen räknar ut ochritar upp hur en ljusstråle bryts i en lins. Det vi behöver veta om linsen är dess position i x-led, dess brännvidd ochstorleken. Åtminstone position ochbrännvidd anges som instansvariabler i appleten. Bredd ochhöjd kan vara konstanter eller variabler. Utgångspunkten för strålarna (»lampans» position) bör också deklareras som instansvariabler. Använd gärna en separat metod för att rita en lins i form av en oval. Gör i så fall en metod för att rita ovaler som motsvarar line för att rita linjer. Tänk efter vad som är relevanta indata till en sådan metod. Den ska ska inte ha exakt samma parametrar som line(). Tänk också 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? Beräkning ochritandet av ljusstrålens två linjer placerar vi i ytterligare en ny metod som anropas 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. Metoden måste ha en parameter av typ Graphics och bör ha ljusstrålens lutning (k 1 ) som parameter. 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 ritas de två linjerna som visar 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 ochdet beräknade k 2 är bara intressanta lokalt inne i vår nya metod ochderas värden 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. Linsens position och brännvidd är lagrade som instansvariabler ochgår bra att använda inuti metoden. De kan användas i alla metoder i hela appleten. 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? 1 Strålen fortsätter oändligt långt till höger, men välj ett lämpligt stort x-värde och beräkna motsvarande y-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å 13

14 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 (pixlar). Figur 4: Visarhuren stråle bryts i en lins. 14

15 Linsprogrammet - Steg 3 Utvidgning till flera linser Nu är det dags att utvidga programmet med flera linser ochvisa hur strålen bryts genom alla linserna. En nyhet här är att vi ska använda två vektorer 2 (eng. array) för att lagra linsernas egenskaper. Vi ska också använda repetitionssatser (for-satser eller while-satser) för att upprepa samma beräkningar flera gånger dels för flera linser ochsenare, i steg 4, för flera strålar. Nu ska vi modifiera metoden som ritar ut strålen så att den hanterar situationen med flera linser. Detta innebär komplettering av metoden som beräknar ochritar ut strålen med en repetitionssats 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 ur vektorn. Indexen är alltid heltal, från noll ochuppåt. Inför en vektor för linspositionerna ochen vektor för brännvidderna. Skriv kod för att rita upp alla linser. Linser med olika brännvidder kan ritas likadana. Observera att programmet 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. Skriv en metod som ritar en stråles brytning genom alla linserna. Det är lämpligt att metoden har strålens ursprungliga k-värde som parameter. När metoden anropas kan det se ut som i figur 5. Linsprogrammet - Steg 4 Utvidgning till flera ljusstrålar Vi vill rita flera ljusstrålar med samma utgångspunkt men med olika begynnelselutning (k 1 ). Om 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 med olika värden på strålens startlutning. Repetera ritandet av en stråle, variera samtidigt startlutningen k 1 så att ett strålknippe med ca 20 strålar ritas upp. Figur 6 visar slutresultatet när även nya färger lagts till på bakgrund, linser ochstrålar. 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. 15

16 Figur 5: Så här kan det se ut när en stråle bryts i tre linser. 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. 16

17 Linsprogrammet - Steg 5 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 6. 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). Grafikobjektet har alltid en aktuell färg. Färgändring åstadkoms 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 färgbyten på lämpliga platser i programmet så att det hela ser både tilltalande ochtydligt ut på skärmen. Den nya färgen gäller ända tills man ändrar igen. Man behöver inte sätta färgen för varje anrop av ritmetod. 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: 17

18 1. Ange att programmet förstår musförflyttningshändelser. 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 import-rad 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 kompletteras inledningsraden på detta sätt: public class Linser extends Applet implements MouseMotionListener { Texten implements MouseMotionListener betyder att appleten skall vara ett objekt som kan hantera musförflyttningshändelser och vi lovar att skriva de två metoder som används för att ta hand om sådana hä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. Positionerna är förstås heltal och anger pixelvärden för musens position. 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. Ritandet görs av metoden paint() men man ska dock aldrig 18

19 Figur 6: När programmet är färdigt ska det se ut ungefär så här på skärmen (men i färg). själv anropa paint-metoden, det är alltid Java-systemets uppgift. Använd istället metoden repaint() för att tala om 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. Detektion av händelsen musförflyttning och anrop av metoden mousedragged() görs också av Java-systemet. Vi har angett att vi önskar ha denna detektion i programmet samt vad som ska göras när händelsen detekteras men det är Javasystemet som automatiskt genomför händelsedetektion och anropar metoderna. 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. Redovisning Vid redovising ska ni kunna beskriva hur programmet är konstruerat, ha detaljförståelse för alla metoder som skrivits med undantag för dem som har med att detekteramusklickattgöra.niskahagodakunskaperommetoderiallmänhet,om olika slags variabler ochom for-satser ochev. andra styrstrukturer som använts. Tänk också på följande: Det ska finnas minst tre linser ochminst 15 strålar ska ritas. Repetitionssatser ska avändas»över strålar» och»över linser». Koordinatomvandling ochritning med line() ska användas enligt anvisningen. Skalfaktorn ska vara mycket större än 1. Om man vill lägga till fler linser ska det räcka att ändra i appleten där linsernas positioner ochbrännvidder definieras. Man ska inte behöva ändra den programkod som beräknar ochritar strålgången. Programmet behöver inte kontrollera att strålarna ligger innanför linsernas utsträckning i höjdled. Man får alltså anta att linserna är oändligt höga. De ska dock ritas med bestämda höjder. 19

20 Frivilliga tillägg De frivilliga tilläggen ger inga extra poäng men är lärorika ochroliga! 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. 20

Laboration 1: Linser

Laboration 1: Linser Programkonstruktion för F, 2D1339, 2005 2006 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

Läs mer

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, 2D1339, 2004 2005 Laboration 1: Linser [Bör redovisas senast 22 november] 1 Målsättning Under denna laboration ska du skriva ett litet Java-program. Följande ska du kunna närduärklarmedlabben:

Läs mer

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 k1 = y

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 k1 = y Programkonstruktion för F, 2D1342, 2000 2001 Laboration 1: Linser [Sista tid för redovisning: vecka 48] 1 Målsättning Under denna laboration ska du skriva ett mindre Java-program. Följande ska du kunna

Läs mer

k 2 k 1 = y a a y f = k 1 y f y 2 = y 1 + k 1 (x 2 x 1 ) k 2 = k 1 y 2

k 2 k 1 = y a a y f = k 1 y f y 2 = y 1 + k 1 (x 2 x 1 ) k 2 = k 1 y 2 Programkonstruktion för F, 2D1342, 1998 1999 Laboration 1: Linser [Sista tid för redovisning: vecka 49] 1 Målsättning Under denna laboration ska du skriva ett mindre Java-program. Följande ska du kunna

Läs mer

Laboration 1: Linser

Laboration 1: Linser Programkonstruktion för F, 2D1339, 2002 2003 Laboration 1: Linser [Sista tid för redovisning: vecka 47] 1 Målsättning Under denna laboration ska du skriva ett litet Java-program. Följande ska du kunna

Läs mer

Programkonstruktion för F, 2D1342, Laboration 0: Kom igång med Java-programmering - förberedande uppgifter

Programkonstruktion för F, 2D1342, Laboration 0: Kom igång med Java-programmering - förberedande uppgifter Programkonstruktion för F, 2D1342, 2008 2009 Laboration 0: Kom igång med Java-programmering - förberedande uppgifter [Sista redovisningsdatum för tidsbonuspoäng: fredagen den 31 oktober 2008] [Grundpoäng:

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Fiktiv Kontrollskrivning 1 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga hjälpmedel är tillåtna

Läs mer

2D4112 Datalogi I, grundkurs med Java, 2003 2004. Labkurs 1. Godkänd Labkurs 1 ger 2p (högskolepoäng) av kursens totalt 10p

2D4112 Datalogi I, grundkurs med Java, 2003 2004. Labkurs 1. Godkänd Labkurs 1 ger 2p (högskolepoäng) av kursens totalt 10p 2D4112 Datalogi I, grundkurs med Java, 2003 2004 Labkurs 1 Godkänd Labkurs 1 ger 2p (högskolepoäng) av kursens totalt 10p Denna labkurs omfattar 7 olika moment, där moment 3 7 skall redovisas. Tag med

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning Numerisk analys och datalogi KTH 100 44 Stockholm Ann Bengtsson, Kerstin Frenckner 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1 UNIX Mål Syftet med denna laboration är att ni ska

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Datateknik A, Syfte: Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Att läsa: Lektion 2 Uppgifter:

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

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

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

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

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

Läs mer

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets 1 Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående

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

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

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

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

Använda Python Laboration 1 GruDat, DD1344

Använda Python Laboration 1 GruDat, DD1344 Använda Python Laboration 1 GruDat, DD1344 Örjan Ekeberg 14 oktober 2008 Målsättning Målet med denna laboration är att du ska prova på att använda Python, framförallt interativt. Du ska också lära dig

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

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

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

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

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

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

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

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

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

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

Introduktion till Matlab

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

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

Läs mer

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

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

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller

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

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

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

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

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

Läs mer

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

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

Applets med komponenter

Applets med komponenter 5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 2 TID: 4 timmar Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt

Läs mer

Föreläsning 1 & 2 INTRODUKTION

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

Läs mer

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 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

2D1342 Programkonstruktion för F1, ht 2006

2D1342 Programkonstruktion för F1, ht 2006 2D1342 Programkonstruktion för F1, ht 2006 Lappskrivning 1 Tisdag 7/11 2006 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

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.

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

Läs mer

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

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

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

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

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

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

DD1342 Programkonstruktion för F1, ht 2007

DD1342 Programkonstruktion för F1, ht 2007 DD1342 Programkonstruktion för F1, ht 2007 Lappskrivning 1 Torsdag 22/11 2007 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar markerats räknas det som fel svar. Alla skriftliga

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

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

Läs mer

Laboration 1: Figurer i hierarki

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

Läs mer

3.0. Tips och Trix Sida 1 av 18

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

Läs mer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Läs mer

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

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter TENTA: TDDD11 & TDDC68 Tillåtna hjälpmedel Det är tillåtet att ha böcker (t.ex. Ada-bok, formelsamlingar, lexikon,...) med sig samt utdelade lathundar (finns på kurshemsidan) för Ada, Unix och Emacs. Utdraget

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

Editering, Kompilering och Exekvering av Javaprogram

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

Läs mer

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

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

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Datorteknik 2 (AVR 2)

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

Läs mer

Programmering. Scratch - grundövningar

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

Läs mer

DATORINTRODUKTION. Laboration E850-2000 ELEKTRO. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren

DATORINTRODUKTION. Laboration E850-2000 ELEKTRO. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren 2000-03-17 specialversion inför kursstart Elektronik och mätteknik 2000 DATORINTRODUKTION Laboration E850-2000 ELEKTRO Personalia: Namn: Kurs:

Läs mer

Aktivitetsbank. Matematikundervisning med digitala verktyg II, åk 1-3. Maria Johansson, Ulrica Dahlberg

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

Läs mer

Programmering för språkteknologer II, HT2011. Rum

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

Introduktion till Matlab

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

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra

Läs mer

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09 Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Objektorienterad programmering D2

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

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

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

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Institutionen för Datavetenskap JSk TENTAMEN TDA540 TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING för Z1 TID 14.15-18.15 Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt 60 poäng. På

Läs mer

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

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

Läs mer

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

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

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

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

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:

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

Läs mer