Lektion 1 Introduktion till DrJava och Java



Relevanta dokument
Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

[] Arrayer = Indexerad variabel

Extramaterial till Matematik Y

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Grundläggande stränghantering

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

Extramaterial till Matematik Y

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Beräkningsvetenskap föreläsning 2

F4. programmeringsteknik och Matlab

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

TDIU01 - Programmering i C++, grundkurs

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Extramaterial till Matematik Y

Introduktion till Matlab

SMD 134 Objektorienterad programmering

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

Objektorienterad programmering Föreläsning 4

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas,

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

Föreläsning 2 - Intro till Java

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Introduktion till Matlab

Programmeringsteknik I

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

C++ Lektion Tecken och teckenfält

Föreläsningsmaterial (Syntax och variabler)

Föreläsning 3-4 Innehåll

Användarhandledning Version 1.2

Programmeringsteknik med C och Matlab

Övning2. Variabler. Data typer

JAVAUTVECKLING LEKTION 3

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Programmering A. Johan Eliasson

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning 3. Iteration while-satsen

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

Laboration 1 Introduktion till Visual Basic 6.0

Objektorienterad Programmering (TDDC77)

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

TDDC77 Objektorienterad Programmering

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Linjär algebra med tillämpningar, lab 1

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Enkla datatyper minne

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Föreläsning 1 & 2 INTRODUKTION

Visual Basic, en snabbgenomgång

Tentamen OOP

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

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Iteration while-satsen

Föreläsning 1 & 2 INTRODUKTION

EXTRA UPPGIFTER I C++ PROGRAMMERING-A

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Språket Python - Del 1 Grundkurs i programmering med Python

Uppgift 1 ( Betyg 3 uppgift )

Chapter 3: Using Classes and Objects

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Typkonvertering. Java versus C

Laboration 1. Utgåva 1 Gäller från

Programmering för språkteknologer I, VT2012. Rum

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Grundläggande programmering

Anteckningar 1: Grundläggande saker

Föreläsning 5: Introduktion av pekare

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

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Repetitionsuppgifter inför Matematik 1. Matematiska institutionen Linköpings universitet 2013

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

JAVAUTVECKLING LEKTION 4

Laboration: Grunderna i Matlab

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

Datalogi för E Övning 3

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

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

Övningsuppgifter kapitel 8

Transkript:

Lektion 1 Introduktion till 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 Hur man använder variabler, aritmetik och matematiska funktioner i programmeringsspråket Java Hur man gör utskrifter av variabelvärden i Java 1

Hur utföra lektionen? 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 Precis som i Matlab I dokumentet förekommer även rutan Jmfr med Matlab för att tydliggöra skillnader mellan Java och Matlab. 2

Java är ett väldigt strikt språk vid en jämförelse med Matlab. I denna lektion kommer du 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 3

Lektionen relaterar till följande del i kursboken: Kapitel 2. Förberedelse: Lektion 0 Arbeta två och två i PC-lab. Ingen obligatorisk redovisning av övningar/uppgifter. Starta DrJava, om det inte redan är gjort I denna lektion skall ni använda Interactions Pane, aktivera denna del av DrJava genom att klicka på Interactions 4

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 (PDFdokumentet) bredvid varandra (inte överlappande). Ni kan då läsa texten i dokumentet och kopiera text från dokumentet till DrJava för att testa saker. 5

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

Programmering handlar mycket om variabler 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 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 7

Flyttalsvärden Fungerar precis som i Matlab 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 8

Heltalsvärden Heltal är precis som namnet anger ett heltal, dvs kan inte ges med decimalpunkt eller på exponentform. Exempel: 117-23 20100118 9

Logiska värden Ett logiskt värde kallas även för boolskt värde. Det finns bara två olika: true false Teckenvärden Ett teckenvärde är t.ex. det som kan skapas via tangentbordet. Ett teckenvärde skrivs omslutna av en enkelblipp (apostrof) '. Exempel på teckenvärden: 'A' 'g' '!' '@' '8' Jmfr med Matlab där t.ex. 'Uppsala' betyder en sträng med 7 tecken. Senare i lektionen visar vi hur man skriver en sträng i Java. 10

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: > double x; I Matlab deklarerar man inte variabler. 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. Exemplet ovan är en sats för att deklarera en variabel. 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. 11

Variabler för flyttal Man kan deklarera en variabel och samtidigt ange ett initialt värde. Exempel: Jmfr med Matlab där det skulle se ut så här: > double y=14.5; y=14.5; > double z=-1.2e3; z=-1.2e3; Dvs z får värdet -1.2 10 +3 Det minsta och största talet för en variabel av datatypen double får vi veta genom att skriva: > Double.MIN_VALUE > Double.MAX_VALUE 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. 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 färre siffrors noggrannhet. 12

Att skriva ut en variabels värde Fungerar precis som i Matlab 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. 13

Att ändra en variabel tilldelning Fungerar precis som i Matlab 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 14

Aritmetik Precis som i Matlab I Java gäller följande: Addition skrivs + Subtraktion skrivs Multiplikation skrivs * Division skrivs / 15

Att uppdatera en variabel med sitt eget värde Precis som i Matlab 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; 1. Högerledet beräknas först, dvs 100.8+200.00=300.8 2. Tilldelning y 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. 16

Övning aritmetik med flyttal Precis som i Matlab 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 ; 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? 17

Ett exempel Precis som i Matlab 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: > double saldo=10000.00; > double räntesats=0.015; 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 18

Forts. exemplet Precis som i Matlab 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; Vilket bör bli 10302.25. Kontrollera detta. Genom att upprepat trycka uppåtpiltangenten kan man komma åt alla tidigare javasatser som skrivits. 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. 19

Beräkningar med matematiska funktioner 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. b > double a=4.5, b=3; Beräkna arean av rektangeln: > double area = a*b; a Gör rektangeln annorlunda: > a=a-1.0; > b=b-2.5; 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 20

Matematiska funktioner 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 > 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; y y 2 y 1 a x 1 x 2 Skriv ut värdena på area och omkrets. Kontrollera värdena. d Antag att vi önskar beräkna rektangelns diagonal d. Med pytagoras sats skulle det gå, men det kräver en a kvadratrotsberäkning, enligt matematiken : d = a 2 + b 2 I Java skrivs det: Jmfr med Matlab: > double d = Math.sqrt(a*a + b*b); d = 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. b b x 21

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

Klassen Math 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.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: > double y=math.sin( Math.PI/4 ); 23

Klassen Math Ett alternativt sätt att beräkna diagonalen: > d = Math.sqrt( Math.pow(a,2) + Math.pow(b,2) ); Vi beräknar vinkeln v för diagonalen. tangens för vinkeln är b/a, vi använder funktionen för arcus-tangens: 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: double vgrad = Math.toDegrees(v); Kontrollera om värdet på vgrad blir korrekt, dvs 33.690067525979785 v d a b 24

Slumptal med metoden Math.random Metoden Math.random() beräknar ett rektangulärfördelat slumptal i intervallet [0 1.0). Värdet kan bli noll, men inte 1.0. Exempel på anrop: > double slump; > slump = 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). Testa följande och upprepa beräkningen några ggr: > slump = 6*Math.random(); Vi kommer få värden som kan bli 0.0 5.9999. 25

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 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; Att ha variablnamn som är så lika är inte bra. Vad bör en variabel heta? 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. 26

Variabler för heltal Exempel på deklaration av variabler för heltal: int ålder=23; int antal=99; 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. Det minsta och största talet för en variabel av datatypen int får vi veta genom att skriva: Integer.MIN_VALUE Integer.MAX_VALUE Vilket ger resultaten: -2147483648 2147483647 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. 27

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 Hur tror du division mellan heltal fungerar? Den sista divisionen ger ett felmeddelande: ArithmeticException: / by zero Testa följande: double q=4.5; a=q; 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. a=(int) (q); 28

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 och notera vilka värden som erhålls: int ålder=5, antal=100; antal-- ålder++ antal-- ålder++ Med % utförs sk. moduloberäkning (restberäkning). Notera vad som sker i följande exempel: a=5, b=11; c=b%3 c=b%a c=33%b Hur tror du % fungerar? 29

Simulering av tärning med heltalsvariabel 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. 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-5.999 Testa det hela och skriv ut värdet. Upprepa beräkningen och utskrift av variabeln tärning. 30

Teckenvariabler Exempel på en deklaration av en teckenvariabel: char t1 = 'A'; char betyder tecken (character). Det som lagras i variabeln t1 är det som är mellan enkelblipparna (apostrof) ', dvs tecknet A. Men innan A lagras i datorns minne översätts det till en heltalskod (sk. Unicode) eftersom allt som lagras i datorn måste vara siffror. 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 t2= 'B';; int kodt1 = (int) (t1); int kodt2 = (int) (t2); Skriv ut värdet av kodt1 och kodt2. Gör om tecknen till motsvarande heltal, dvs unicode-kod och lagra i heltalsvariabler Övning: Vilken kod har bokstäverna a respektive b? Vilken kod har tecknet @? 31

Teckenvariabler 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. En versal görs om till en gemen, t.ex A till a: t1 = 'A'; t1 = (char) (t1+32); Gör om heltalsvärdet till ett tecken. Addera koden för t1 med 32 vilket blir heltalsvärdet 65+32=97. t1 kommer nu få värdet 'a'. Övning: Översätt en annan versal till en gemen. Översätt en annan gemen till en versal. Den sk. asciikoden, som finns beskriven på www.asciitabell.se, är en delmängd av unicode. 32

Logiska variabler och logiska uttryck. Datatypen boolean betyder ett logiskt värde. Exempel på deklaration av en logisk variabel ungdom som initieras till värdet false. boolean ungdom; Ett logisk uttryck byggs upp av boolsk algebra: > (större än), < (mindre än), <= (mindre än eller lika med), >= (större än eller lika med),!= (skilt från), == (lika med) && (och), (eller),! (icke) Exempel: int ålder=16; ungdom = (ålder>=16) && (ålder<=19); ålder 16 är true och ålder 19 är true Resultatet blir ett logiskt värdet, true eller false. Variabeln ungdom tilldelas i detta exempel värdet true, eftersom ungdom beräknas till (true) && (true) = true 33

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); Blir true om ålder är större än eller lika 18, annars false Vilket värde får variabeln vinst när ni testar? 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 34

Snyggare utskrifter av variabelvärden Utskrifter med förklarande text kan göras på följande sätt: I Interactions Pane I ett popup-fönster Exempel, vi beräknar och skriver ut saldot efter 1 års ränta. double saldo=10000.50; double räntesats=0.015; double ränta; ränta = saldo*räntesats; saldo = saldo + ränta; System.out.println("Saldot på ditt konto är nu " + saldo); En brödtext som skrivs ut En variabel, vars värde skrivs ut Utskriften i Interactions Pane blir: Testa detta! Saldot på ditt konto är nu 10150.5075 35

Snyggare utskrifter av variabelvärden För att göra en utskrift i ett sk. popup-fönster måste vi först tala om för Java hämta (importera) ett javabibliotek som innehåller program för att hantera bl.a. popupfönster. Vi skriver följande sats i Interactions. import javax.swing.*; Därefter skriva ut på följande sätt: null betyder att fönstret inte ingår i något annat fönster. JOptionPane.showMessageDialog(null, "Saldot på ditt konto är nu " + saldo); En brödtext som skrivs ut Saldo skrivs ut Resultatet blir att följande visas på skärmen: 36

Variabler för strängar: 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: String lösenord="gt7&rh"; Jmfr med Matlab: lösenord = Gt7rh ; 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); Vi anropar metoden charat för strängvariabeln lösenord. Svaret från anropet lagras i teckenvariabeln t, som kommer få värdet r. 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. 37

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.replace("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 Var börjar strängen vita, i strängvariabeln sång? 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. En strängvariabel är ett exempel på en sk. objektvariabel, eftersom en sådan variabel kan innehålla många värden (tecken). Alla metoder för hantering av strängar finns i klassen String. Sök efter den klassen genom att googla efter java String class. När ni hittar sidan, läs längre ned på den under Method summary. 38

Dessa övningsuppgifter ryms inte inom lektionstiden på 2 timmar. De är till för eget arbete. Övningar, skriv javasatser för 1. Deklarera lämpliga variabler för följande: a) Kostnaden för ett par skor b) Antal barn i en familj c) Tiden för ett 100-meters lopp d) En gatuadress 2. Beräkna och skriv ut värdet av y=sin(0.50) och z = sin(π/4) 3. Givet att x är 3.00 beräkna och skriv ut roten av x, dvs x 4. Givet är polynomet: y=x 2 +px+q Deklarera variabler för p och q. Tilldela värdena 3.0 och 1.0 till p resp. q. a) Beräkna och skriv ut värdet på y för x=1.50 och 4.00. b) Beräkna och skriv ut rötterna till y=x 2 +px+q c) Sätt p till 1.0. Beräkna rötterna, vad händer? 39

Forts. övningar 5. Deklarera en variabel som representerar radien för en cirkel. a) Sätt radien till ett slumpmässigt tal (använd Math.random). Beräkna cirkelns area resp omkrets, spar värdena i lämpliga variabler. Skriv ut värdena. b) Gör radien dubbelt så stor (ändra variabeln) Beräkna värdena arean resp omkrets samt skriv ut värdena. c) Sätt variabeln som repr. arean till 12.56. Beräkna radien på den cirkel som har denna area, lagra värdet i variabeln för radie samt skriv ut värdet. 40

Forts. övningar 6. Arean av en godtycklig triangel ges av Herons formel: Arean = a) Deklarera tre variabler a,b,c som repr. triangelns sidor. Tilldela godtyckliga värden på dem. Deklarera en variabel för s. Beräkna värdet av s och arean. Kolla att värdet blir rimligt genom att testa med olika värden på a,b,c. b) Deklarera variabler som representerar de tre punkterna A, B och C. Tilldela godtyckliga värden till dem. Beräkna värdet av arean med Herons formel. Kolla om värdet blir rimligt! 41