Föreläsning 2 - Intro till Java



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

F4. programmeringsteknik och Matlab

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

Enkla datatyper minne

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

Föreläsning 2. Föreläsningen kommer ta upp valda delar av detta

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

TDDC77 Objektorienterad Programmering

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Programmering A. Johan Eliasson

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

OOP Objekt-orienterad programmering

SMD 134 Objektorienterad programmering

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

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

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

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

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

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

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

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

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 1 & 2 INTRODUKTION

TDIU01 - Programmering i C++, grundkurs

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Lektion 1 Introduktion till DrJava och Java

JAVAUTVECKLING LEKTION 7

Övning2. Variabler. Data typer

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

Föreläsning 1 & 2 INTRODUKTION

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

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

(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

Data, typ, selektion, iteration

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

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

Tentamen OOP

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

Objektorienterad programmering Föreläsning 4

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?

Språkkonventioner och redigering av tal.

Föreläsning 3: Booleans, if, switch

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

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

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

Introduktion till programmering och Python Grundkurs i programmering med Python

TENTAMEN OOP

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

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

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmeringsteknik I

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 3-4 Innehåll

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning REPETITION & EXTENTA

TDDC77 Objektorienterad Programmering

JAVAUTVECKLING LEKTION 3

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 8: Aritmetik och stora heltal

Föreläsning 1: Intro till kursen och programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

Grundläggande programmering med C# 7,5 högskolepoäng

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Transkript:

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 (installera först!) Reserverade ord (t ex if, while...) Primitiva variabler (t ex int, double, char, boolean) Typomvandling Utskrifter och inläsning (Hur lagras information i datorn) Ev. Intro till Objektorienterad programmering Fö2 - Intro till Java och intro till OOP 1 (kap 3)

Vad behövs för att kunna programmera? λ Java = program som översätter (för människan begripliga) instruktioner till datorspråk (javabyte kod/maskinkod): Kompilator +... Andra exempel: C++, Python, etc λ DrJava = en editor (~ordbehandlare) anpassad för programmering. Andra exempel: BlueJ, Eclipse, etc (IDE) Fö2 - Intro till Java och intro till OOP 2

Vad är DrJava? DrJava är ett (gratis)program för att programmera i Java Utvecklat vid Rice University, USA DrJava är skrivet i Java Program för att programmera i kallas för IDE= Integrated Development Environment Med DrJava kan man Skapa Javaprogram (definitions pane) Testa javasatser (interactions pane) Lista alla öppna filer (files pane) Fö2 - Intro till Java och intro till OOP 3

DrJava Med kursboken följer en CD med många program (sk. javaklasser) för hantering av grafik, bilder, ljud, etc. DrJava använder i sin tur andra program som finns på datorn för att lösa sin uppgift Javakompilatorn Javainterpretatorn Fö2 - Intro till Java och intro till OOP 4

Java är ett programmeringsspråk högnivåspråk objektorienterat språk innehåller många hjälpprogram (klasser) Internet/Webben Grafik Användargränssnitt Standardprogram, t ex Math mm. är fritt kan användas på alla typer datorer Fö2 - Intro till Java och intro till OOP 5

Java När java installeras på datorn får ni bl.a följande: λ Javakompilatorn λ Javainterpretatorn λ Många färdiga javaprogram, sk. klasser som hör till språket Java, t.ex. Math, JoptionPane I kursen kommer ni att använda javaprogram: De standardprogram som följer med Java t ex Math, se http://download.oracle.com/javase/7/docs/api/ De specialprogram som följer med boken, t ex Turtle och World De program ni skriver själva Fö2 - Intro till Java och intro till OOP 6

Java Språket har strikta regler för hur det skall skrivas, dvs språkets grammatik, det kallas språkets syntax. Språket byggs upp av identifierare och reserverade ord som sätts ihop till satser. Identifierare är det som programmeraren själv hittar på namn för, t.ex. variabelnamn, Reserverade ord är de ord som finns inbyggda i språket. En sats är en instruktion. En sådan avslutas normalt med ett semikolon Ex: double xkoordinat = 18.4; Fö2 - Intro till Java och intro till OOP 7

Reserverade ord i språket Java abstract assert boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while Ord i fet stil används i kursen Fö2 - Intro till Java och intro till OOP 8

Variabler Deklareras att vara av en specifik datatyp, tex int, double, char Har ett namn: börjar på _ eller bokstav En primitiv variabel kan innehålla ett värde, t.ex. ett heltal Vid deklarationen reserveras ett minnesutrymme för variabelns värde. Variabelns namn är ett alias för adressen till minnesutrymmet. Fö2 - Intro till Java och intro till OOP 9

Variabler Exempel: Vi deklarerar och initierar variabler som är primitiva datatyper: int tal; (deklarera en variable) int x=67;(deklarera och initiera) double x=2.5; char c= A'; boolean sommar=true; Vi går igenom på tavlan hur dessa variabler lagras i datorns minne. Detaljer finns under sidorna 22-34 i denna presentation som börjar med rubriken Hur lagras data i datorn? Fö2 - Intro till Java och intro till OOP 10

Åtta primitiva datatyper Fyra heltalstyper (numeriska): byte, short, int, long Två flyttalstyper (numeriska) float, double En teckentyp: char En boolskt typ, sant eller falskt (default): boolean Fö2 - Intro till Java och intro till OOP 11

Primitiva datatyperna byte, boolean short int long float 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits double 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits 8 bits char 8 bits 8 bits Fö2 - Intro till Java och intro till OOP 12

De numeriska datatyper Typ Minnesutrymme Min/Maxvärde byte 8 bit -128 127 short 16-32768 32767 int 32-2147483648 2147483647 long 64 +/- 9 x 10 18 float 32 +/- 3.4 x 10 38, 7 siffrors nogr. double 64 +/- 1.7 x 10 308, 15 siffrors nogr. Fö2 - Intro till Java och intro till OOP 13

Numeriska datatyper, några viktiga kom-i-håg Heltalsdivision (decimaler huggs av) int a = 2, b = 3, c = a/b; System.out.println(c); //Vad skrivs ut? System.out.println(7/4); //Vad skrivs ut? Modulusoperatorn % (resten vid division) int x = 7, y = 3, z = x%y; System.out.println(z); //Vad skrivs ut? System.out.println(10%5); //Vad skrivs ut? Fö2 - Intro till Java och intro till OOP 14

Numeriska datatyper, några viktiga kom-i-håg λ ++ och - - operatorerna x++; System.out.println(x); //Vad skrivs ut? λ Ändra en variabels värde OBS! Tilldelning int tal = 3; tal = tal + 2; // Det nya värdet = det gamla + 2 tal += 2; //samma som ovan tal = tal * 5; tal *= 5; //samma som ovan Fö2 - Intro till Java och intro till OOP 15

Typomvandling Heltal Flyttal per auto, eller med (double) ( ) Flyttal Heltal (int) ( ) ger trunkering (int) ( + 0.5) ger avrundning av tal>0 Math.round(...) ger avrundning Char Heltal: (int) ( ) Heltal Char: (char) ( ) Flyttal String: Double.toString( ) String Flyttal: Double.parseDouble( ) String Heltal finns motsvarande Fö2 - Intro till Java och intro till OOP 16

Tecken λ En char-variabel lagrar ett enstaka tecken i två byte (speciellt för Java). Skrivs med apostrofer, t ex 'p'. λ Tecknet kodas först till ett heltal innan det lagras i minnet. λ T ex tecknet 'T' har den (decimala) koden 84, vilket binärt är 01010100 λ Koden är unicode, se http://www.unicode.org. Koden för de 256 första tecknen överensstämmer med ASCIIkoden ASCII Code - The extended ASCII table λ Version 6.0: mer än 100.000 tecken från världens alfabet, symboler,... System.out.println( \u0041 ); //A Ethiopic Extended-A Fö2 - Intro till Java och intro till OOP 17

Klasserna String och Math En String-variabel är inte inte en primitiv variabel String s = "Java"; String t = s + "programmering"; Jämför: char tkn = 'a'; En strängvariabel är en sk. Objektvariabel. En sådan variabel refererar till många värden Math-klassen, anropa med klassens namn: double a1=math.sin(x), a2=math.sqrt(x); double a3=math.pow(bas,exp), a4=math.random(); Fö2 - Intro till Java och intro till OOP 18

Varför (1) deklarera och (2) ha många datatyper? 1. Säkerhet : Bara använda variabler som är deklarerade Ex. stavfel: x1=4; x1=xl+8; 2. Värden man vill räkna med är av olika sorter Bra då att ha variabler som matchar dessa. Minnesutrymmet anpassas till värdena. Beräkningarna anpassas till datatypen. Snabbare beräkningar. Ordning och reda Men: flyttal kan inte alltid representeras exakt Fö2 - Intro till Java och intro till OOP 19

Utskrifter i Java I terminalfönstret (I DrJava s Interaction Pane): double O = bas*2 + höjd*2; System.out.println( Omkrets: + O + m ); I ett Popup-fönster: import javax.swing.*; String namn = Anna ; JOptionPane.showMessageDialog(null,"Jag heter "+namn); Fö2 - Intro till Java och intro till OOP 20

Inläsning i Java I terminalfönstret (I DrJava s Interaction Pane): import java.util.scanner; Scanner scan = new Scanner(System.in); int x = scan.nextint(); double y = scan.nextdouble(); String s1 = scan.nextline(); // hel rad String s2 = scan.next(); // ett ord λ I ett Popup-fönster: import javax.swing.*; String s; s = JOptionPane.showInputDialog("x?"); x = Integer.parseInt(s); Kommande bilder 22-33 tar vi inte upp på föreläsningen. Till för egna studier. Vi hoppar till bild 34! Fö2 - Intro till Java och intro till OOP 21

Hur lagras data i datorn? I datorn används koder för att representera all information Koderna består av 1:or och 0:or Någonting är på (1) eller av (0) Binära tal används (binära talsystemet) Fö2 - Intro till Java och intro till OOP 22

Vad är ett talsystem? Ett talsystem har en bas och siffror (symboler) Ex.decimala systemet har basen 10 och symbolerna 0-9: 103 10 = 1*10 2 +0*10 1 +3*10 0 = 1*100 + 0*10 + 3*1 Fö2 - Intro till Java och intro till OOP 23

Binära talsystemet Basen 2 och symbolerna 0, 1. 1101 2 = 1*2³+1*2 2 +0*2 1 +1*2 0 = 8+4+0+1= 13 10 Översätt från decimalt till binärt: 27 10 = 16 + 8 + 2 + 1 = 2 4 + 2 3 + 2 1 + 2 0 = 11011 2 Fö2 - Intro till Java och intro till OOP 24

Binära talsystemet En byte = 8 bit, 0-255, dvs 256 st värden 00000000 = 0 00000001 = 1 00000010 = 2 11111111 = 255 Ex. en byte: 00001111 = 0*2 7 + 0*2 6 + 0*2 5 + 0*2 4 + 1*2 3 + 1*2 2 + 1*2 1 + 1*2 0 = 15 10 Fö2 - Intro till Java och intro till OOP 25

Binära talsystemet Bit : 0 eller 1 Byte: 8 bitar Kilobyte (KB): 10 3 byte Megabyte (MB): 10 6 byte Gigabyte (GB): 10 9 byte Terabyte (TB): 10 12 byte Fö2 - Intro till Java och intro till OOP 26

Hexadecimala talsystemet Basen 16 och symbolerna 0-9,A,B,C,D,E,F A=10, B=11, C=12, D=13, E=14, F=15 Ex: 2F 16 = 2*16 1 + F*16 0 = 2*16 1 + 15*16 0 = 32 + 15 = 47 10 Omvandling hexadecimalt binärt och tvärtom är relativt enkelt (4 binära siffor=en hexadecimal siffra): 11110101 2 = 1111 0101 = 15*16 1 + 5*16 0 = F5 16 Fö2 - Intro till Java och intro till OOP 27

Att lagra tal Tal kan lagras som heltal flyttal Fö2 - Intro till Java och intro till OOP 28

Heltal Lagras ofta i 4 byte, dvs 32 bit. En bit används för +/- Vänstra biten=0 positivt tal 31 bitar Vänstra biten=1 negativt tal 31 bitar Värdemängden i 4 byte: [-2 32-1, 2 32-1 -1], d.v.s. [-2147483648, 2147483647] Exempel: 67 10 = 1000011 2 och lagras i 4 byte som 00000000 00000000 00000000 01000011 Teckenbiten: 0 positivt tal Fö2 - Intro till Java och intro till OOP 29

Text (String) Text är en sekvens av tecken Exempel, texten: Torsten Består av 7 tecken som kodas enligt asciikoden (decimalt som): T o r s t e n 84 111 114 115 116 101 110 Vilket kan lagras binärt i 7 byte, eller som i java 7x2 byte Fö2 - Intro till Java och intro till OOP 30

Decimaltal 10-potenser Flyttal Ett flyttal = 0.mantissa * 2 exponent Lagras som två delar: Mantissa (siffrorna) och exponent Om 4 byte flyttal: 3 byte mantissa och 1 byte exponent Om 8 byte flyttal: 6 byte mantissa och 2 byte exponent Fö2 - Intro till Java och intro till OOP 31

Flyttal Ex: 2,5 10 = 2*(10) 0 + 5*(10 )-1 = 0.25*(10) 1 Men tal lagras binärt, gör om till binärt: 2,5 10 = 1*(2) 1 + 0*(2) 0 + 1*(2) -1 = 10.1 2 (obs binärpkt). 10.1 2 = 0.101*2 2 Mantissan är 101 Exponenten är 2 = 10 binärt. Om talet lagras i 4 byte: Mantissa (3 byte) = 101 Exponent (1 byte) = 10 Fö2 - Intro till Java och intro till OOP 32

Flyttal Problem med flyttal Begränsad mängd siffror: 4 byte: 7 siffrors nogrannhet 8 byte: 15 siffrors nogrannhet Kan vanligen ej lagras exakt: Ex.flyttalet 2,6 = 2,6 10 = 1*(2) 1 + 0*(2) 0 + 1*(2) -1 + =1*2+0*1+1*0.5+0*0.25+0*0.125+1*0.0625+ Fö2 - Intro till Java och intro till OOP 33

OOP Att hitta klasser, egenskaper (instansvariabler) och metoder. Ett exempel. Det kommer bilar till en vägkorsning. Vid korsningen finns trafikljus som kan visa olika färg och kan ha svängpil. Trafikljuset kan slå om, det kan gå sönder. Bilarna har hastighet, riktning och position. Bilarna kan bromsa, gasa eller få motorstopp.. Fö2 - Intro till Java och intro till OOP 34

OOP Att hitta klasser, egenskaper (instansvariabler) och metoder. Ett exempel. Det kommer bilar till en vägkorsning. Vid korsningen finns trafikljus som kan visa olika färg och kan ha svängpil. Trafikljuset kan slå om, det kan gå sönder. Bilarna har hastighet, riktning och position. Bilarna kan bromsa, gasa eller få motorstopp. Fö2 - Intro till Java och intro till OOP 35

Övning OOP Hur många objekt finns i bild 1, och hur många olika typer av objekt, dvs hur många klasser, finns representerade i bild 1? Ange lämpligt namn på respektive klass. Vilka egenskaper kan klasserna beskrivas med (bild1)? Ange vilka metoder som kan vara lämpliga i respektive klass för att kunna rita bilderna 2 och 3, utgående från bild 1. Föreslå namn på metoderna. Bild 1 Bild 2 Bild 3 Fö2 - Intro till Java och intro till OOP 36

Intro till ObjektOrienterad Programmering (OOP) Klass vs objekt En klass beskriver objektens egenskaper och metoder, mha ett språk, t ex Java, och sparat i en textfil, t ex Circle.java Klassen är en mall. Många objekt kan skapas från mallen. Ett objekt har egenskaper (inre tillstånd/eget minne) Ex Cirkel c har position och färg Kan kommunicera med (skicka meddelanden till) objekten via metoder för ändra objekten eller få veta deras egenskaper. Ex move(int step), changecolor(color co) När ett program körs är objekten aktiva genom sina metoder. Ex c.move(50); //cirkel c rör sig Fö2 - Intro till Java och intro till OOP 37