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.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

En introduktion till programmeringsspråket Python
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Andragradsfunktioner & Andragradsekvationer
INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
hej och välkomna EKVATIONER Ta reda på det okända talet.
Funktioner och programorganisation
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
De fundamentala datatyperna
Operatorer.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
i olika programmeringsspråk
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
Programmering B PHP Lektion 1 Mahmud Al Hakim Folkuniversitetet
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Google SketchUp Del 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): Vad behövs för att kunna programmera? – DrJava ( t ex) – Java.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Programmeringsteknik för K och Media
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Fö2 - Intro till Java och intro till OOP 1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): Vad behövs för att kunna programmera?
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Att räkna med bokstäver
Manada.se Kapitel 4 Ekvationer och formler. 4.1 Ekvationer och uttryck.
Python.
Presentationens avskrift:

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

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 …

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

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)

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.

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 händer följande: Vid kommandot 4/0 händer följande:

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

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: 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· e-7 betyder 5.6 ggr 10 upphöjt till minus 7, dvs 5.6·10 -7 Fungerar som i Matlab

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: Logiska värden Ett logiskt värde kallas även för boolskt värde. Det finns bara två olika värden: true false

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.

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

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· ) E308 (dvs · ) 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;

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

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 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  Detta kan kontrolleras med utskrifter av innehållet: > x > y Fungerar som i Matlab

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

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 från nuvarande värde > y = 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  Vi kan säga att det nya värdet på y är det gamla värdet av y plus Tilldelning: y tilldelas värdet av högerledet. 1. Högerledet beräknas först, dvs =300.8 y Fungerar som i Matlab

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

Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 18 > double saldo= ; > double räntesats=0.015; Ett exempel aritmetik Vi har en summa pengar, 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 räntan Fungerar som i Matlab

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

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

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 Jmfr med Matlab: d = sqrt(a*a + b*b);

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 Math är namnet på klassen.

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 … 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 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 );

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 a b d v

Progteknik I, vt2011: Lektion 1, del a - Intro till DrJava och Java 25 Vi kommer få värden som kan bli 0.0 – 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).

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

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:

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

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.

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

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

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å är en delmängd av Unicode. Ascii-koden består av 256 tecken. Ö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 och gemenerna a-z har koderna 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.

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 tecken kodade med Unicode. 1 hexadecimalt: Ett tal uttrycks i basen 16. Exempel: 0041 hexadecimalt = 0* * * *16 0 = 65 decimalt (basen 10)

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?

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.

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

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

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 = 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 går det att ändra värdet på en konstantvariabel

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

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

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

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