Presentation laddar. Vänta.

Presentation laddar. Vänta.

Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 1 Lektion 1, del a – Intro till DrJava och Java Målsättning med lektionen: Bekanta.

Liknande presentationer


En presentation över ämnet: "Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 1 Lektion 1, del a – Intro till DrJava och Java Målsättning med lektionen: Bekanta."— Presentationens avskrift:

1 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 1 Lektion 1, del a – Intro till DrJava och Java Målsättning med lektionen: Bekanta er med programmet DrJava som ni skall använda under kursen för att skriva och köra javaprogram Introduktion till programmeringsspråket Java:  Variabler  Aritmetik  Matematiska funktioner  Utskrifter av variabelvärden  Inläsningar av värden till variabler

2 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 2 Lektionen relaterar till följande i kursboken: Kapitel 2 Förberedelse: Lektion 0 Arbeta två och två Ingen obligatorisk redovisning av övningar/uppgifter i lektionen Förberedelser och arbetssätt… Om ni har erfarenhet av programmering i Matlab kan ni raskt skumma igenom (eller hoppa över) de sidor där det överst till höger finns rutan I presentationen förekommer även rutan för att tydliggöra skillnader mellan Java och Matlab. Fungerar som i Matlab Jmfr med Matlab …

3 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 3 Java är ett väldigt strikt språk vid en jämförelse med Matlab. I denna lektion kommer ni bl.a. märka följande skillnader: För en variabel i Java måste man bestämma vilken typ av värde som skall lagras i den: Heltal, flyttal, tecken eller boolskt värde. Matematiska funktioner i Java skriver man med ett inledande Math., annars lika som i Matlab

4 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 4 I denna lektion skall ni använda Interactions Pane, aktivera denna del av DrJava genom att klicka på Interactions Starta DrJava om det inte redan är gjort… (att starta DrJava, se lektion 0)

5 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 5 Tips när ni arbetar med denna lektion Gör DrJava-fönstret mindre. Se till att lägga DrJava-fönstret och fönstret med denna lektion (PDF- dokumentet) bredvid varandra (inte överlappande). Ni kan då läsa texten i detta dokument och kopiera text från dokumentet till DrJava för att testa saker.

6 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 6 När Interactions Pane är aktiverad syns promptern > Gör gärna Interactions Pane större genom att tag i den grå ramen ovanför och dra den uppåt. I Interactions kan ni ge kommandon till datorn. Dessa kommandon är javasatser och de skrivs efter promptern > följt av RETURN eller ENTER. Satserna kontrolleras först att de är riktiga och om så är fallet utförs de. Vid fel skrivs ett felmeddelande ut i röd färg. Vid kommandot 34+56 händer följande: Vid kommandot 4/0 händer följande:

7 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 7 I Java finns det två sorters variabler: Primitiva variabler där ett värde kan lagras – tas upp i denna lektion Objektvariabler där många värden kan lagras – tas upp senare i kursen Programmering handlar mycket om variabler I Java finns fyra olika typer av värden, sk. datatyper: Flyttal Heltal Logiska (boolska) Tecken Jmfr med Matlab där det finns flyttal och strängar

8 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 8 Flyttalsvärden Flyttal kan skrivas med decimal som anges med en punkt. Exempel: 1.20 -0.0014 Ett flyttal kan även ges på exponentform (10 upphöjt till) vilket är praktiskt när man vill ange mycket stora eller mycket små tal. Bokstaven E eller e används för att ange ”10 upphöjt till”. Exempel: 1.2e+14 betyder 1.2 ggr 10 upphöjt till plus 14, dvs 1.2·10 +14 5.6e-7 betyder 5.6 ggr 10 upphöjt till minus 7, dvs 5.6·10 -7 Fungerar som i Matlab

9 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 9 Heltalsvärden Heltal är precis som namnet anger ett heltal, dvs kan inte ges med decimalpunkt eller på exponentform. Exempel: 117 -23 20100118 Logiska värden Ett logiskt värde kallas även för boolskt värde. Det finns bara två olika värden: true false

10 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 10 Teckenvärden Ett teckenvärde kan vara en bokstav, en siffra eller något annat som man kan skriva med tangentbordet. Ett teckenvärde skrivs omslutna av en enkelblipp (apostrof) '. Exempel på teckenvärden: ' A ' ' g ' ' ! ' ' @ ' ' 8 ' ' ? ' ' a ' ' * ' ' Ö ' Jmfr med Matlab där t.ex. ' Uppsala ' betyder en sträng med 7 tecken. Senare i lektionen visas hur man hanterar strängar i Java.

11 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 11 > double x; Variabler för flyttal Värden lagras i variabler. I ett programmeringsspråk som Java måste vi ”beställa” de variabler vi behöver. Vid beställningen bestäms variabelns namn och vilken sorts värde som skall lagras i den. Vi kallar denna procedur för att deklarera variabler. För att deklarera en variabel med namnet x av datatypen flyttal, skriver vi double följt av variabelns namn och semikolon: Det som händer är att ett minnesutrymme i datorn (i det s.k. primärminnet eller arbetsminnet) reserveras för att lagra ett flyttal och minnesutrymmet får namnet x. Värdet i minnet för x sätts till noll. Vi säger att variabeln x av datatypen flyttal deklareras och dess värde initieras till 0.0. Javaspråket byggs upp av satser. Varje sats avslutas med semikolon. Egentligen är namnet x ett alias för en adress i minnet. Programmeringen blir därmed enklare, eftersom vi inte behöver veta adressen till minnet, utan använder x. Jmfr med Matlab där man inte deklarerar variabler, men där satser avslutas med semikolon

12 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 12 Variabler för flyttal… Man kan deklarera en variabel och samtidigt ange ett initialt värde. Exempel: Dvs z får värdet -1.2·10 +3 > double y=14.5; > double z=-1.2e3; I Java finns det ett annat alternativ att deklarera en variabel som ett flyttal. Istället för double skriver man float. Ett sådan variabel tar halva minnesutrymmet i anspråk i jämförelse med double, vilket betyder mindre spännvid i värden och sju siffrors noggrannhet. > Double.MIN_VALUE > Double.MAX_VALUE Det minsta och största talet för en variabel av datatypen double får vi veta genom att skriva: Vilket ger resultaten: 4.9E-324 (dvs 4.9·10 -324 ) 1.7976931348623157E308 (dvs 1.7976931348623157·10 308 ) En variabel av datatypen double har 15 siffrors noggrannhet. Jmfr med Matlab där det skulle se ut så här: y=14.5; z=-1.2e3;

13 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 13 Att skriva ut en variabels värde I Interactions Pane kan man skriva ut en variabels värde genom att bara skriva variabelns namn följt av ENTER eller RETURN (utelämna semikolon). Exempel: Skriv ut värdet av variablerna x och y som vi redan har deklarerat: > x Ger en utskrift värdet 0 > y Ger en utskrift av värdet 14.5 Det finns andra, snyggare sätt att skriva ut variablers värde. Det återkommer vi till senare i lektionen. Fungerar som i Matlab

14 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 14 Att ändra en variabel – tilldelning En variabel som är deklarerad kan vi ändra värde på. Antag att värdet på x skall ändras till 7.8 och y skall ändras till 100.8. Vi använder tecknet = för tilldelning av nytt värde. > x = 7.8; > y = 100.8; Minnesinnehållet i datorn för variabeln för x ändras därmed från 0.0  7.8 och för y från 14.5  100.8 Detta kan kontrolleras med utskrifter av innehållet: > x > y Fungerar som i Matlab

15 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 15 Aritmetik I Java gäller följande: Addition skrivs + Subtraktion skrivs – Multiplikation skrivs * Division skrivs / Fungerar som i Matlab

16 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 16 Att uppdatera en variabel med sitt eget värde En variabels värde kan ändras genom att använda dess eget värde. Exempel: y skall öka med 200.0 från nuvarande värde 100.8. > y = y + 200.00; Variabeln y tilldelas värdet av det beräknade, dvs variabeln har uppdaterats mha sitt eget värde. Minnesinnehållet har ändrat värde från 100.8  300.8 Vi kan säga att det nya värdet på y är det gamla värdet av y plus 200.0. 2. Tilldelning: y tilldelas värdet av högerledet. 1. Högerledet beräknas först, dvs 100.8+200.00=300.8 y Fungerar som i Matlab

17 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 17 Vid beräkningar med flyttalsvärden blir resultatet alltid ett flyttal. Testa följande: double x=7.0; double y=2.0; double z; z=x*y; z=x/y; z=x+y; z=x-y; Blir resultaten de förväntade? (Tips: Om ni utelämnar semikolon kommer värdet skrivas ut direkt). Med parenteser kan man tydliggöra hur en beräkning skall göras. En beräkning utförs alltid från vänster till höger, men multiplikation och division beräknas före addition och subtraktion. Testa följande: z=x-y/2.0 z=(x-y)/2.0 Blir resultaten de förväntade? Övning aritmetik med flyttal Fungerar som i Matlab

18 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 18 > double saldo=10000.00; > double räntesats=0.015; Ett exempel aritmetik Vi har en summa pengar, 10000.00 kronor på ett konto, och en räntesats på kontot på med 1.5%. Vi deklarerar två variabler för detta: Beräkna kontots nya saldo efter 1 år med denna räntesats. Det nya värdet av saldo tilldelas värdet av det gamla värdet + räntan. > saldo = saldo + saldo*räntesats; Skriv ut värdet: > saldo Vilket bör bli 10150.00 räntan Fungerar som i Matlab

19 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 19 Forts. exemplet Beräkna kontots saldo efter 2 år med denna räntesats. Det nya värdet av saldo tilldelas värdet av det gamla värdet + räntan. Upprepa alltså beräkningen (samma sats som redan utförts), vilket enklast görs mha uppåtpiltangenten, som används för att plocka fram alla kommandon som skrivits. Gör det. > saldo = saldo + saldo*räntesats; Genom att upprepat trycka uppåtpiltangenten kan man komma åt alla tidigare javasatser som skrivits. Vilket bör bli 10302.25. Kontrollera detta. Det är också möjligt att ändra (editera) i de gamla satserna och utföra dem igen men ändrade. Använd tangent för vänster/högerpil. Uppåtpil fungerar som i Matlab

20 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 20 Vi har en rektangel med sidorna a och b. Vi deklarerar variabler som representerar sidorna. Kan göras i EN sats med kommatecken mellan variablerna och med ett avslutande semikolon. Exempel: Beräkningar med matematiska funktioner a b > double a=4.5, b=3; Beräkna arean av rektangeln: > double area = a*b; > a=a-1.0; > b=b-2.5; Gör rektangeln annorlunda: Beräkna arean av den ändrade rektangeln och skriv ut värdet: > area = a*b; > area Beräkna omkretsen och skriv ut värdet: > double omkrets = 2*a + 2*b; > omkrets

21 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 21 Rektangeln kan även beskrivas med 3 pkt: (x 1,y 1 ), (x 2,y 1 ) och (x 2,y 2 ). Vi behöver deklarera 4 variabler b a x y x1x1 x2x2 y1y1 y2y2 > double x1=1.0, x2=4.0, y1=1.0, y2=3.0; > a = x2-x1; > b = y2-y1; > area = a*b; > omkrets = 2*a + 2*b; a b d Matematiska funktioner… Skriv ut värdena på area och omkrets. Kontrollera värdena. Antag att vi önskar beräkna rektangelns diagonal d. Med pytagoras sats skulle det gå, men det kräver en kvadratrotsberäkning, enligt matematiken : d = √ a 2 + b 2 I Java skrivs det: > double d = Math.sqrt(a*a + b*b); Math är en sk. klass (ett slags bibliotek) i Java som innehåller vanliga matematiska funktioner och sqrt är den funktion i klassen som anropas för kvadratrotsberäkningen. Skriv ut värdet på d och kontrollera att det blir korrekt dvs 3.605551275463989. Jmfr med Matlab: d = sqrt(a*a + b*b);

22 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 22 Klassen Math… > double d = Math.sqrt(a*a + b*b); Funktioner i klasser kallas för metoder. Det som händer vid anropet av en metod är följande steg 1-5: Metoderna i en klass som Math kallas även för klassmetoder. En sådan metod anropas genom att ange klassens namn följt av metodens namn. 1. I parentesen finns ett uttryck a*a + b*b som beräknas till 13. Detta kallas för metodens parametervärde 2. sqrt är namnet på metoden som anropas 3. Punkten separerar klassens namn och metodens namn 5. Variabeln d tilldelas högerledet som är värdet av Math.sqrt(13) som beräknas till 3.6055 4. Math är namnet på klassen.

23 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 23 Klassen Math innehåller många matematiska funktioner, men även konstanter. Några exempel på vad som finns: Math.PI är värdet på , dvs 3.1415… Math.sqrt(x) beräknar värdet av kvadratroten av x Math.sin(x) beräknar värdet av sin(x) Math.exp(x) beräknar värdet av e x Math.atan(x) beräknar värdet av arctan(x) Math.random() beräknar ett slumptal 0.0-0.9999 Math.pow(x, y) beräknar x upphöjt till y Math.toDegrees(x) beräknar vad x radianer blir i grader Math.round(x) avrundar värdet av x Hela klassen Math finns listad på java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.htmljava.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html I matematiken används funktioner för t.ex. trigometriska beräkningar. Exempel: y=sin(  4) för att beräkna sinus för 45 grader. I java kan det skrivas som: Klassen Math… > double y=Math.sin( Math.PI/4 );

24 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 24 Vi beräknar vinkeln v för diagonalen. tangens för vinkeln är b/a, vi använder funktionen för arcus-tangens som heter atan : Klassen Math … Ett alternativt sätt att beräkna diagonalen: > d = Math.sqrt( Math.pow(a,2) + Math.pow(b,2) ); double v = Math.atan(b/a); Resultatet blir i radianer, så vi gör om till grader och lagrar värdet i en ny variabel mha metoden toDegrees : double vgrad = Math.toDegrees(v); Kontrollera om värdet på vgrad blir korrekt, dvs 33.690067525979785 a b d v

25 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 25 Vi kommer få värden som kan bli 0.0 – 5.9999. Slumptal med metoden Math.random Metoden Math.random() beräknar ett slumptal i intervallet [0 – 1.0). Värdet kan bli noll, men inte 1.0. Exempel på anrop: > double slump; > slump = Math.random(); Testa följande och upprepa beräkningen några ggr: > slump = 6*Math.random(); Skriv ut värdet. Beräkna ett nytt slumpvärde och skriv ut det. Använd samma variabel genom att upprepa satserna (mha uppåtpilen).

26 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 26 Vad får en variabel heta i Java? En variabels namn måste börja med en bokstav eller ett understrykningstecken _ Sedan får det finnas Siffror Bokstäver (även de svenska å,ä,ö) Understrykningstecken Bokstäverna kan vara de svenska. Java är case sensitive, dvs skiljer på gemener och versaler, vilket t.ex. innebär att följande deklarationer ger två olika variabler. double saldo; double Saldo; I möjligaste mån döp en variabel till ett namn som berättar vad den används till, dvs namnen bör vara självförklarande. Vad bör en variabel heta? Att ha variabelnamn som är så lika är inte bra. Fungerar (nästan) som i Matlab Jmfr med Matlab: å,ä,ö inte tillåtna Matlab är också case sensitive

27 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 27 Variabler för heltal Exempel på deklaration av variabler för heltal: int betyder heltal och är en förkortning av ordet integer. I variabeln ålder lagras värdet 23 och i variabeln antal värdet 99. int ålder=23; int antal=99; I Java finns det flera andra alternativ att deklarera en variabel som ett heltal. T.ex long eller short. Med long erhålls en variabel med dubbla minnesutrymmet jämfört med en int i vilken mycket större tal kan lagras. Med short erhålls en variabel med halva minnesutrymmet jämfört med en int, vilket innebär att mycket mindre tal kan lagras. Integer.MIN_VALUE Integer.MAX_VALUE Det minsta och största talet för en variabel av datatypen int får vi veta genom att skriva: Vilket ger resultaten: -2147483648 2147483647

28 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 28 Beräkningar med heltalsvariabler Testa följande och notera vilka värden som c får i varje sats. int a=5, b=11, c; c=a/b c=b/a c=b/2 c=b/0 Testa följande: a=4.5; Det ges ett felmeddelande: Bad types in assignment: from double to int. Samma sak blir det vid följande beräkning: b=Math.sqrt(6); Högerledet är ett flyttalsvärde, vilket inte kan lagras i en variabel för heltal. Kan lösas genom att utföra en sk. typkonvertering till ett heltal. Högerledet konverteras till ett heltal mha (int) och decimalerna ”kastas bort”. b=(int) Math.sqrt(6); Hur tror du division mellan heltal fungerar? Den sista divisionen ger ett felmeddelande: ArithmeticException: / by zero

29 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 29 Beräkningar med ++, -- och % Det är vanligt förekommande att man vill addera ett till en variabel eller subtrahera en variabel med ett, därför finns det kortkommandon för detta som skrivs ++ respektive --. Testa följande: int ålder=5, antal=100; antal--; ålder++; a=5, b=11; c=b%3 c=b%a c=33%b Hur tror du % fungerar? Med % utförs sk. moduloberäkning (restberäkning). Notera vad som sker i följande exempel: Vilka värden får antal och ålder ? Jmfr med Matlab där moduloberäkning görs med funktionen mod.

30 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 30 Simulering av tärning med heltalsvariabel Testa det hela och skriv ut värdet. Upprepa beräkningen och utskrift av variabeln tärning. För att simulera en tärning fungerar en heltalsvariabel bra. I ett tidigare exempel skapades en flyttalsvariabel slump som gav värden 0.0 – 5.9999. Om det värdet adderas med ett och sedan görs om till ett heltal, genom att decimalerna ”kastas bort” fås ett heltalsvärde 1-6.exempel int tärning; tärning = (int) ( 6*Math.random() + 1);...och därefter tas decimalerna bort. ( int) betyder att värdet till höger om (int) görs om till ett heltal Först beräknas uttrycket inom parentesen som kan bli 1.0 - 6.999...

31 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 31 Teckenvariabler Alla tecken har sin egen kod. Koderna för bokstäverna är ordnade så att bokstavsordningen bevaras. T.ex koden för bokstaven A är 65 och koden för bokstaven B är 66. Det kan visas med följande exempel: char t1 = 'A'; char t2= ' B '; ; int kodt1 = (int) (t1); int kodt2 = (int) (t2); Skriv ut värdet av kodt1 och kodt2. char betyder tecken (character). Det som lagras i variabeln t1 är det som är mellan enkelblipparna (apostrof) ', dvs tecknet A. Eftersom allt som lagras i datorn är siffror, så översätts tecknet A till en heltalskod (sk. Unicode) och det är denna kod som lagras i variabeln. Unicode Exempel på deklaration av en teckenvariabel: Gör om tecknen till motsvarande heltal (typkonvertering), dvs unicode-kod och lagra i heltalsvariabler Övning: Skriv satser som visar koden för bokstäverna a och b samt koden för tecknet @?

32 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 32 Teckenvariabler… t1 kommer nu få värdet ' a '. En versal görs om till en gemen, t.ex A till a: t1 = 'A'; t1 = (char) (t1+32); Den sk. asciikoden, som finns beskriven på www.asciitabell.se, är en delmängd av Unicode. Ascii-koden består av 256 tecken.www.asciitabell.se Övning: Översätt 'G' till en gemen. Översätt 'u' till en versal. Addera koden för t1 med 32 vilket blir heltalsvärdet 65+32=97. Gör om heltalsvärdet till ett tecken. Versalerna A-Z har koder från 65-90 och gemenerna a-z har koderna 97-122. Skillnaden mellan en versal och en gemen är alltså 32. Det kan utnyttjas när man vill översätta från versal till gemen eller omvänt.

33 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 33 char t1='A'; // tecknet A i klartext char t2='\u0041'; // tecknet A uttryck i Unicode (hexadecimalt 1 ) char t3='\u0042'; // tecknet B uttryck i Unicode (hexadecimalt) Teckenvariabler… Man kan ange tecknet i klartext eller med Unicode-värdet: Fler exempel Unicode: char t4 = 'u\2663'; // utskrift ger '♣' char t5 = '\u03A8'; // utskrift ger 'Ψ ’ char t6 = '\u263A'; // utskrift ger ' ☺ ' Det finns f.n. drygt 100.000 tecken kodade med Unicode. 1 hexadecimalt: Ett tal uttrycks i basen 16. Exempel: 0041 hexadecimalt = 0*16 3 + 0*16 2 + 4*16 1 + 1*16 0 = 65 decimalt (basen 10)

34 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 34 char slump; slump = (char) ('A' +(int)(26*Math.random()) ); // Sats 3 Övningar med teckenvariabler… Övn 1: Skriv ut värdet av variabeln t1 : char t1 = 'A'; t1 = (char) (t1+1); // Sats 1 Upprepa sats 1 och skriv ut värdet av variabeln t1. Hur är koderna för bokstäverna organiserade? Övn 3: Skriv ut värdet av variabeln slump : Upprepa sats 3 och skriv ut värdet av variabeln slump. Försök förstå vad som sker… Övn 2: Skriv ut värdet av variabeln t2 : char t2 = '0'; t2 = (char) (t2+1); // Sats 2 Upprepa sats 2 och skriv ut värdet av variabeln t2. Hur är koderna för siffrorna organiserade?

35 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 35 Logiska variabler och logiska uttryck. Datatypen boolean betyder ett logiskt värde och kan vara true eller false. Exempel på deklaration av en logisk variabel ungdom som initieras till värdet false. boolean ungdom = false; Ett logisk uttryck byggs upp av boolsk algebra: > (större än), = (större än eller lika med), != (skilt från), == (lika med) && (och), || (eller), ! (icke) Exempel: int ålder=16; ungdom = (ålder>=16) && (ålder<=19); Variabeln ungdom tilldelas i detta exempel värdet true, eftersom ungdom beräknas till (true) && (true) = true ålder ≤19 är true ålder ≥16 är true och Resultatet blir ett logiskt värdet, true eller false.

36 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 36 Beräkningar med logiska variabler Vilka värden kommer variablerna myndig och ungdom att få efter varje sats? boolean myndig, ungdom; int ålder=15; myndig = ålder>=18; ungdom = (ålder>=16) && (ålder<=19); ålder++; myndig = ålder>=18; ungdom = (ålder>=16) && (ålder<=19); ålder = ålder+3; myndig = ålder>=18; ungdom = (ålder>=16) && (ålder<=19); Vilket värde får variabeln vinst när ni testar följande? boolean vinst; int tärning = (int) (6*Math.random() + 1); vinst = tärning==6; tärning==6 är ett logiskt värde som blir true om tärning har värdet 6, annars false. Värdet tilldelas variabeln vinst Blir true om ålder är större än eller lika 16 OCH ålder är mindre än eller lika med 19, annars false Blir true om ålder är större än eller lika 18, annars false

37 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 37 Konstanter I formler och vid beräkningar förekommer ibland värden som är konstanta eller är beteckningar på konstanter i matematik eller fysik. Exempel 1: Gravitationslagen: F = G·m 1 ·m 2 /r 2, där G är gravitationskonstanten Exempel 2: Kastparabeln: y = v 0 · t·sin  – 0,5·g·t 2,där g är tyngdaccelationen Det kan också vara frågan om värden som får ett startvärde i början av ett program och som sedan inte får ändras. T.ex. antalet sittplatser i en biosalong, eller det maximala antalet paddor som får finnas i en värld. Dessa värden är konstanter. Istället för att de konstanta värdena finns i klartext i ett program, t.ex. gravitationskonstanten G som är 6,670·10 -11 så deklarerar vi en variabel som alltid har detta värde och som inte går att ändra på: final double G = 6.670e-11; Ordet final betyder att variabeln blir en konstant.

38 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 38 Variabler som är konstanter Fler exempel, att deklarera variabler som är konstanter i Java: Tyngdaccelerationen: final double g = 9.81; Ljusets hastighet i vakum: final double c = 299792458 final double RÄNTESATS; När konstanten efter nästa sats får sitt första värde kan den inte ändras sedan: RÄNTESATS=0.065; final int MAX_ANTAL_SITTPLATSER=40; En sträng som inte kan byta värde: final String CAMPUS="Polacksbacken, Uppsala"; OBS! I Interactions Pane i DrJava version 2009-08-21 går det att ändra värdet på en konstantvariabel

39 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 39 Strängvariabel : en variabel att lagra många tecken i En variabel som man lagrar tecken (text) i kallas för en strängvariabel. Den har en längd som är antalet tecken som är lagrade i den. Exempel: Vi anropar metoden charAt för strängvariabeln lösenord. Svaret från anropet lagras i teckenvariabeln t, som kommer få värdet ' r '. String lösenord= " Gt7&rH " ; De sex tecknen Gt7&rH lagras i variabeln med namnet lösenord. Tecknen i variabeln har ett index. Tecknet G som ligger först har index noll (0), tecknet t har index 1, etc. Ta reda på vilket tecken som finns på ett index, t.ex. index 4: char t = lösenord.charAt(4); Genom att anropa metoden length får vi veta strängens längd. int len = lösenord.length(); Med metoden toUpperCase byts alla gemener mot versaler: lösenord = lösenord.toUpperCase(); Värdet av variabeln lösenord kommer nu att bli GT7&RH.Testa detta. Jmfr med Matlab: lösenord = 'Gt7&rh';

40 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 40 Variabler för strängar… Det finns många andra metoder som kan användas på strängar. Exempel på beräkningar och utskrifter: > String namn = "Elvina"; > namn = namn + " Andersson"; > namn "Elvina Andersson" > namn = namn.replaceFirst("Ander","Jon"); > namn "Elvina Jonsson" > String sång = "Bä Bä vita lamm..."; > int pos=sång.indexOf("vita"); >pos 6 + betyder hopslagning av strängar Jo, första bokstaven i ” vita ”, dvs v börjar på index 6 i strängvariabeln sång. Notera att även mellanslag är ett tecken. Var börjar strängen ”vita”, i strängvariabeln sång ? > sång = sång.replaceAll( " Bä ", " Bu " ); > sång > sång = sång.substring(11,15); > sång Fler exempel, testa följande

41 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 41 Exempel: Lagra en ”uppsats” i en Sträng Kan även hantera radbyte i String genom att vi lagrar specialtecknet \n. Exempel: String visa = "Imse vimse… \n Ned… \n Upp… \n Imse …\n"; Klistra in hela ovan sats (dvs en sträng med fyra radbyte) i DrJava. Skriv ut variabeln visa. Visst kom radbytena med… Man kan även få med TAB-tecken i en text. Skriver då: \t Alla metoder för hantering av strängar finns i klassen String. För dokumentation av den klassens metoder: Googla på class String java 1.5. Metoderna finns listade under Method summary. En strängvariabel är ett exempel på en sk. objektvariabel, eftersom en sådan variabel kan innehålla många värden (tecken).

42 Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 42 Reset Interactions För att ta bort alla variabler som deklarerats och använts i Interactions högermusklicka i Interactionfönstret och välj Reset Interactions. Jämför med Matlab där man gör kommandot clear


Ladda ner ppt "Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 1 Lektion 1, del a – Intro till DrJava och Java Målsättning med lektionen: Bekanta."

Liknande presentationer


Google-annonser