föreläsning 1-2: kursinformation och introduktion till ...725g61/lectures/fo1-2.pdf · (del 1 -...

99
October 14, 2013 1 Föreläsning 1-2: Kursinformation och introduktion till Java och programmering Eva Blomqvist [email protected] Department of Computer and Information Science (IDA) Linköpings universitet Sweden

Upload: others

Post on 17-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

October 14, 2013 1

Föreläsning 1-2: Kursinformation och introduktion till

Java och programmering

Eva Blomqvist [email protected]

Department of Computer and Information Science (IDA) Linköpings universitet

Sweden

Page 2: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

October 14, 2013 2

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Innehåll

n  Kursinfo n  Varför programmering? n  Vad är ett program? – grundläggande begrepp n  Hur fungerar Java – miljö och struktur n  Ett första programexempel i Java n  Eclipse – en programmeringsmiljö (IDE) n  Vi börjar programmera

q  Standardutmatning q  Variabler q  Enkla datatyper och operationer på dem

Page 3: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo

http://www.ida.liu.se/~725G61/index.sv.shtml Eva Blomqvist [email protected] Examinator, föreläsare och labbhandledare

October 14, 2013 3

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 4: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Övergripande regler

n  NI är ansvariga för att hålla er uppdaterade om vad som händer i kursen q  All information finns på kurshemsidan q  Nyheter och ändringar dyker upp som nyheter på hemsidan

och i akuta fall som mail på kurslistan

n  Kontrollera kurshemsidan minst en gång per vecka för uppdateringar!

n  Kontrollera mail från kurslistan dagligen!

n  Vi svarar på mail och frågor så snabbt vi kan - har ni inte fått svar på 1 vecka - skicka en påminnelse och/eller kontakta en annan lärare i kursen!

October 14, 2013 4

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 5: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - kursöversikt

n  Kursen har tre delar q  Del 1 – grundläggande programmering med Java

n  Fram till slutet av november n  6 Fö + lektioner och 4 labbar – deadline 6/12 (men följ gärna

"veckoplan") n  Individuell dugga ("på papper")

q  3 chanser under del 1 + uppsamlingstillfälle i slutet av kursen q  Del 2 – objektorienterad programmering + mer avancerad Java-

programmering n  Fram till mitten av januari n  4 Fö + lektioner och 4 labbar – deadline 31/1 (men följ gärna

"veckoplan") n  Rekommenderat att gå på föreläsning med projektinformation

(december) n  Individuell dugga ("på papper")

q  3 chanser under del 2 + uppsamlingstillfälle i slutet av kursen q  Del 3 – projektarbete

n  December till slutet av kursen (ca v.7) n  Större programmeringsuppgift – egen problemlösning

October 14, 2013 5

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 6: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - Mål

n  När kursen är slut ska ni kunna... q  Analysera ett problem och skapa en lösning i Java

– praktisk programmering q  Hitta de klasser i standardbiblioteket som behövs och förstå

dem genom att läsa deras Javadoc q  Förstå och felsöka andras kod q  Använda Eclipse (eller motsvarande) och förstå hur Java-

miljön är uppbyggd

n  Beroende på förkunskaper kan kursen vara... q  Ett stort steg – ni lär er programmera från grunden, q  ...eller ett litet steg där ni friskar upp er kunskaper och utökar

era praktiska färdigheter i Java-programmering.

October 14, 2013 6

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 7: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - vad betyder de olika momenten?

n  Föreläsning q  Introducerar begrepp och koncept inom programmering q  Visar exempel - bra att gå tillbaka till bilderna senare q  Endast några få riktiga "körexempel" i Eclipse nu i början

n  Lektioner q  Ungefär: 1 föreläsning - 1 lektion q  Ni förutsätts vara bekanta med begreppen som introducerats på

föreläsningen q  Visar "körexempel" i Eclipse som tillämpar begreppen från förläsningen

n  Labbar q  Ungefär: 4-8 timmar bokad salstid per Fö+Le

n  ...men ni förutsätts lägga ner minst 10 timmar i veckan på kursen, för en del mer än så, dvs ni förutsätts jobba mycket på egen hand utöver labbar

q  Ni löser praktiska programmeringsuppgifter i grupper om 2 studenter - OBS! "parprogrammering"

q  Ni förutsätts vara bekanta med begreppen och exemplen från föreläsning och lektion

n  Duggor q  Individuell kunskapskontroll: har ni förstått de mest grundläggande begreppen

och kan läsa och förstå kod (utan att Eclipes "gör det åt er") q  Inte en "pluggtenta" - har ni förstått labbarna klarar ni duggan q  30 minuter - skrivs på papper

October 14, 2013 7

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 8: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - Examination

n  4HP = laborationer (del 1+2, duggor) + 2HP = projekt n  Examination genom 3 moment

q  Labbar – lämna in lösningar på labbuppgifterna n  Skilj på "övning" och "uppgift" - Uppgift ska lämnas in n  Lösningar måste vara kommenterade (i koden) n  Lösningar måste vara testkörda n  För VG måste ni lämna in lösningarna före första deadline

(del 1 - 6/12, del 2 - 31/1) q  Komplettering möjlig (även för VG) vid två ytterligare tillfällen

q  Duggor n  Två duggor – måste få G på båda

q  3 ordinarie tillfällen per del + 1 uppsamlingstillfälle i slutet av kursen n  För VG på kursen måste ni få G under ordinarie tillfällen, dvs senast 5/12 resp. 30/1

q  Projekt n  Godkänd projektuppgift – designdiskussion, demo av inläsning från fil, projektrapport/

kod/dokumentation och demonstration/muntlig diskussion med handledaren n  Två nivåer av krav:

q  Alla grundläggande krav uppfyllda – G q  Ytterligare krav uppfyllda – VG

n  För VG måste ni uppfylla VG-kraven samt klara av alla momenten före ordinarie projektdeadline 21/2

October 14, 2013 8

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 9: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - Labbar

n  Vi använder Java 1.6 och Eclipse Helios n  Jobba två och två

q  Registrera er labbgrupp i WebReg OCH ange gruppnummer + båda namnen vid varje inlämning i LISAM

q  Samma grupper hela kursen (labbar och projekt) q  Välj en person som är på samma nivå! q  Parprogrammering = en skriver in koden i Eclipse, en sitter bredvid och

hjälper till att tala om vad som ska skrivas, byt efter max 20 minuter! n  4 labbar med ett antal uppgifter vardera i del 1

q  Bara de som heter "uppgift" måste lämnas in q  Övningar är valfria, men är ni nybörjare rekommenderar vi att ni göra alla

övningar q  Välj er egen nivå och jobba i ert eget tempo – kolla "veckoplan" på hemsidan

för att se om ni ligger i fas q  Jobba gärna hemma och på egen laptop – det är inte tänkt att ni ska hinna

med alla uppgifter på labbtid om ni är nybörjare! n  Inlämning sker genom LISAM

q  Kolla gärna med hanledaren på labben om lösningen ser rimlig ut, men handledarna har inte tid att rätta på labbtid

q  Ladda upp en labb i taget, dvs lämna in först när ni är klara med alla uppgifter i labb 1 osv. - ladda då upp alla filer med er kod (.java) som en zip-fil

q  Koden måste vara välkommenterad och direkt körbar – annars ingen rättning

October 14, 2013 9

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 10: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo – Regler och deadlines

n  Deadlines är strikta n  Rättning sker (kontinuerligt) inom ca 1 vecka, före ordinarie deadline

(dvs före 6/12 för del 1) q  Rättning av alla uppgifter som lämnats in före ordinarie deadline sker inom 2

veckor från deadline (dvs all ni lämnat in före 6/12 rättas senast 20/12) q  Rättning av kompletteringar sker endast direkt efter kompletteringsdedline

(inom 2 veckor) - det går bra att lämna in komplettering när som, men de rättas inte förrän efter nästa kompletteringsdeadline

n  Handledare svarar på frågor på labbtid – frågor utöver labbtid ställs per e-post till ER handledare och besvaras i mån av tid. Det går även bra att boka tid med handledaren via e-post – men INTE att bara dyka upp på hans/hennes kontor!

n  Deadlines q  Labbar del 1 – 6/12 17:00 (Kompletteringar: 14/2 och 28/3) q  Labbar del 2 – 31/1 17:00 (Kompletteringar: 28/2 och 28/3) q  Projekt – designdiskussion med handledaren senast 17/1, demonstrerat

inläsning från fil senast 31/1, redovisat för handledare muntligt + rapport/kod/dokumentation inskickad senast 21/2 17:00 (Kompletteringar innan 28/3 – överenskommes med handledare)

n  Duggor q  Dugga del 1 – 7/11 eller 21/11 eller 5/12 q  Dugga del 2 – 19/12 eller 16/1 eller 30/1 q  Uppsamlingstillfällen: 1st i februari för både dugga 1 och 2

October 14, 2013 10

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 11: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo – vanliga frågor?

n  Måste jag gå på föreläsningarna? q  Nej, men jag rekommenderar att gå om du är ny på Java-programmering

eller om det var länge sen du programmerade q  Gå på föreläsningen med projektinformation i december

n  Det är jättemånga övningar – måste jag göra alla? q  Nej, bara de som heter "uppgift" är obligatoriska. Sen väljer du själv hur

mycket av övningarna du vill göra. Uppgifterna är oftast de mest avancerade, så om du är ny på programmering rekommenderar jag att göra alla övningar och även testa att köra exemplen från föreläsningar och lektioner!

n  Min labbhandledare är inte där – vem ska jag fråga? q  På labbtillfällena går det bra att fråga vem som helst av handledarna

(normalt 1 handledare per sal) – alla kanske inte är där varje tillfälle. När ni lämnar in uppgifter får ni kommentarer från ER handledare, och om ni har frågor utanför labbtid är det honom/henne ni ska maila.

n  Jag har missat ... hur kan jag ta igen det? q  För varje moment (labbinlämning, duggor osv) finns flera chanser – kolla

kurshemsidan. Tänk på att för VG måste du lämna in labbar innan ORDINARIE deadline OCH klara duggorna innan samma deadline.

October 14, 2013 11

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 12: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kursinfo - vad har hänt sen förra året?

n  För mycket tid q  Något färre uppgifter i år, och några uppgifter har minskats i omfång q  Fokus på färre klasser i standardbiblioteket q  ... men det är fortfarande en krävande kurs!

n  För stort hopp mellan del 1 och 2, samt teori/praktik q  Lektion till varje föreläsning q  Allt om klasser har flyttats till del 2 - "mjukstart" i del 2?

n  Svårt att veta vad vi övar på i labbarna och vad som är "rätt svar" q  Mer text i labbinstruktionen, förklarar vad ni övar på q  Uppgifterna organiserade i "labbar" med ett tema q  ... men finns fortfarande många möjliga lösningar

n  Orättvist att bara ha en chans på duggorna q  Infört 3 chanser per dugga under periodens gång

n  Svårt att få hjälp och feedback på labbarna q  En assistent per sal q  Fler assistenter totalt = snabbare rättning

n  Andra nyheter: q  Mer strikt parprogrammering - båda ska lära sig skriva kod

October 14, 2013 12

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 13: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

"Veckoplan" - del 1 (se kurshemsidan)

n  v. 42-43: q  Fö 1-3 + Le1-2: Kursinfo samt grundläggande "kom-igång", sedan:

variabler, operationer, villkorssatser q  Labb 1 (8 timmar salstid) - bör vara inlämnad 25/10

n  v. 44: q  Fö 4 + Le 3: Arrayer och loopar q  Labb 2 (4 timmar salstid) - bör vara inlämnad 1/11

n  v. 45: q  Fö 5 + Le 4: Metoder q  Labb 3 (4 timmar salstid + ev. del av nästa veckas labbtid)

- bör vara inlämnad 15/11 n  v. 46-47:

q  Fö 6 + Le 5: In- och utmatning, undantag q  Labb 4 (8 timmar salstid - den extra tid du tog för labb 3)

- bör vara inlämnad 22/11 n  v. 48:

q  6 timmar salstid - reservtid för att bli klar med labbarna i del 1

October 14, 2013 13

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 14: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Varför programmering?

October 14, 2013 14

Page 15: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Förstå systemet

n  För att förstå ett system måste man förstå dess beståndsdelar! q  De flesta system idag innehåller mjukvara...

n  Bilar... n  Smarta kort... n  Kassan på ICA... n  TVn... n  Vitvarorna hemma i ditt kök... n  Och förstås de system vi oftast tänker på: mobiltelefoner,

datorer, surfplattor mm. q  Genom att förstå principerna för programmering förstår vi

dels... n  Hur systemet har byggts – programmerarnas arbete, varför det

kan finnas fel, hur omfattande arbete som krävdes etc. n  Och dels, varför systemet “agerar” som det gör (inte alltid som

förväntat) och inte alltid är så "smart" som vi tror

October 14, 2013 15

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 16: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Förstå systemutveckling och programmerare som yrkesgrupp

n  För att kunna leda ett förändrings- eller utvecklingsprojekt i en organisationer måste man förstå människorna och processerna som är inblandade q  Systemutvecklingsprocessen är en sådan process q  Programmerarna är en sådan grupp av människor

n  Hur kommunicerar vi med en programmerare? Förstå begrepp, metoder och problem.

q  Leda bättre n  Bättre tidsuppskattningar n  Bättre kvalitetsuppskattningar n  Bättre möjlighet att följa upp och kontrollera processen

October 14, 2013 16

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 17: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Jobba med programmering

n  Vissa av er kommer säkert tycka (eller tycker redan) att detta är jättekul! q  Analys och design q  Systemutveckling q  Testning q  Underhåll

n  Programmering är ett hantverk q  Man lär sig genom att öva, öva och öva q  Mer än bara lösa problemet

n  Vad är en bra lösning? Varför? Vad finns det för alternativ? q  Även om ni programmerat innan finns det mycket att lära sig

i den här kursen!

October 14, 2013 17

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 18: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vad är ett program? Hur fungerar Java?

October 14, 2013 18

Page 19: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Program som en samling instruktioner

n  Varje program har en uppgift – något som ska utföras n  En dator kan inte “förstå” hur man gör något – vi måste

tala om för den i detalj hur målet ska uppnås q  Varje steg i processen är en instruktion till datorn q  Instruktionerna utförs i en väldefinierad ordning

n  Program = beskrivning av hur en uppgift ska utföras i ett språk som datorn kan tolka/utföra

n  Programmering = att skriva sådana beskrivningar n  Programmeringsspråk = språket man använder för att

uttrycka beskrivningen n  Köra/exekvera ett program = låta datorn utföra uppgiften

October 14, 2013 19

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 20: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Algoritmer – sekvens med instruktioner

n  Hur ska vi lösa ett visst problem? q  Bryta ner problemet i smådelar = detaljerade instruktioner q  Ordna instruktionerna så att vi i slutänden får lösningen på

hela problemet n  En viss sekvens av instruktioner = en algoritm

q  Finns typiska algoritmer som kan återanvändas n  T ex sorteringsalgoritmer

n  Exempel: Insättning på bankkonto q  Mata in insättningsbelopp och kontonummer q  Hämta saldo för det givna kontonumret q  Öka saldo med insättningsbelopp q  Spara det nya saldot

October 14, 2013 20

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 21: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Hur ska vi få datorn att utföra vår algoritm?

n  Vi måste skriva den så att datorn kan tolka vad den ska göra! – vi kan använda Java

n  Varje steg i algoritmen måste översättas till Java n  Java har bara generella instruktioner – inget om

bankkonton och saldon! q  Vi måste bryta ner problemet i mindre bitar q  Vi måste känna till vilka instruktioner som finns i Java q  Vi måste öva på att uttrycka lösningar på olika typer av

problem i Java

October 14, 2013 21

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 22: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Men... datorn “pratar” egentigen inte Java

n  Programmet måste översättas till 1:or och 0:or = maskininstruktioner till datorns processor

n  Två typer av programmeringsspråk q  De som kompileras direkt till maskinkod

n  Fördelar? Programmet kan köras direkt på datorn, utan ytterligare programvara installerad. Det går snabbt när programmet väl körs.

n  Nackdelar? Programmet kompileras för en speciell plattform, eller till och med en speciell dator.

q  De som kompileras till “bytekod” och sedan körs genom en interpretator n  Java är ett exempel n  Fördelar? Plattformsoberoende n  Nackdelar? Långsammare. Kräver rätt interpretator.

October 14, 2013 22

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 23: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Java-kompilering

October 14, 2013 23

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

MittProgram.java MittProgram.class

Kompilator Interpretator

På hårddisken – i förväg I minnet – när vi exekverar programmet

00001100 01001001 011...

class Tecken { public static void main (String[] args) { char tecken = 'B'; char tecken2 = 66; ... } }

χλασσ Τεχκεν πυβλιχ στατιχ ϖοιδ µαιν (Στρινγ αργσ

χηαρ τεχκεν = ∍Β∍;

χηαρ τεχκεν2 = 66 ...

Page 24: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Javamiljön vi jobbar i

n  Följande måste finnas q  De Java-programbibliotek som programmet använder q  En Javainterpretator – Java Runtime Environment (JRE)

n  För att enklare skriva program finns olika utvecklignsmiljöer (IDE = Integrated Development Environment) q  Jämför med MS Word:

n  Du kan skriva din text i Notepad, men... du har ingen stavningskontroll, ingen formatering för att göra texten begripligare. Betydelsen kommer vara densamma, men det är enklare att skriva och hålla reda på texten med lite extra funktioner.

q  En IDE har “stavningskoll” för olika programmeringspråk, du kan testköra programmet direkt i din IDE osv.

October 14, 2013 24

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 25: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vanligt problem: låt inte Eclipse styra er!

n  ...ni ska styra Eclipse! n  Eclipse ger er indikationer på när någonting är fel i er

kod, men förslagen på åtgärder är inte alltid rätt i just ert fall utan bara en "gissning"! q  Ni måste ha kunskaperna för att kunna bestämma vad som

är lämpligt (eller ens möjligt) att göra i ert specifika fall q  Lite inte blint på förslagen från Eclipse, tänk efter: är det här

rätt och vad får det för konsekvenser?

n  Duggorna testar er förståelse - där har ni inte hjälp av Eclipse!

October 14, 2013 25

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 26: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Om Java

n  Plattformsoberoende n  Webbprogrammering n  Imperativt språk – man talar om vad som ska göras

ungefär som man ger order till en person: instruktionerna utförs i ordning som de läses.

n  Objektorienterat språk – klasser och objekt (instanser av objekt)

n  “Få” instruktioner i grundspråket – många bibliotek (Java API - "standardbiblioteket")

n  Java är bara ett språk bland många!! q  ...men kan man ett är det mycket lättare att lära sig ett annat

October 14, 2013 26

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 27: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Att programmera

n  Analysera problemet n  Utforma algoritmen

n  Skriva programmet n  Kompilera n  Exekvera – Testa

n  Viktigt om testning: q  Tänk på att alltid köra programmet både med förväntade och

oväntade data q  Spårutskrifter är ett bra sätt att se vad som händer “inuti” när

programmet körs

October 14, 2013 27

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 28: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett första Javaprogram

October 14, 2013 28

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 29: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – namn och syntax

n  Program måste skrivas och sparas på ett speciellt sätt

n  Ett program måste skrivas enligt Javas syntax q  Ett programspråks syntax talar om exakt vad som är korrekt att

skriva – vad datorn kommer att förstå q  Jfr. grammatik och stavning i svenska... Men vi är inte maskiner,

vi förstår oftast även om syntaxen är fel, det gör inte datorn!

n  Namnet på ett program (en Java-klass) q  Ett enda ord (dvs inga mellanslag – använd “Camel Case” för

flera ord – FleraOrd – eller “_” – Flera_Ord) q  Måste börja med en bokstav (engelska alfabetet + kan sedan

innehålla siffror samt “_”) q  Ge programmet ett beskrivande namn! q  Undvik å/ä/ö och andra specialtecken

October 14, 2013 29

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 30: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Tips: använd bara engelska alfabetet!

n  Det går att använda svenska tecken när ni programmerar men... q  Svenska tecken representeras olika på olika datorer och i

olika Eclipse-versioner q  Använder ni svenska tecken kan ni får problem om ni flyttar

över er kod till en annan dator n  T ex mellan din laptop och din labbkompis dator, eller från

datorn i labbsalen och din egen laptop

n  Bäst att helt undvika svenska tecken i er kod! q  använd engelska namn... q  eller använd svenska namn men "ta bort prickarna", t ex

"anvand" istället för "använd"

October 14, 2013 30

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 31: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Klasser och metoder

n  Ett program består av en eller flera Java-klasser q  En klass innehåller en samling instruktioner som löser ett

visst problem – används för att bryta ner problemet q  En klass sparas normalt i en fil (finns undantag)

n  -> Flera klasser = flera filer q  Filen måste ha samma namn som klassen + ändelsen .java

n  Exempel: MittProgram.java innehåller klassen MittProgram

n  Vi kommer att börja med enkla program som bara består av en klass = sparas i en enda fil

n  Varje klass har normalt en eller flera metoder q  Metoderna innehåller instruktionerna som ska utföras

October 14, 2013 31

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 32: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Metoden “main”

n  “main” är huvudmetoden – själva huvudspåret i programmet, där programmet börjar q  Senare i kursen kommer vi att se andra metoder, men vi

börjar med att använda bara “main”

n  När ett Javaprogram exekveras söker interpretatorn efter metoden “main” q  Finns den inte får man ett felmeddelande q  Annars börjar exekveringen här

October 14, 2013 32

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 33: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Struktur och syntax

class Meddelande {

public static void main (String[] args) { // här skriver vi vad programmet ska göra }

}

October 14, 2013 33

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 34: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Kommentarer – rader med text som hoppas över när programmet körs

n  Används för att kunna beskriva vad programmet betyder och gör för andra programmerare (eller för dig själv)

n  Ni måste använda kommentarer för att beskriva vad ni gjort i lösningarna till labbuppgifterna

n  Två typer av kommentarer: q  // indikerar att resten av raden är en kommentar q  /* ... */ indikerar att allt mellan /* och */ är en kommentar, kan

vara flera rader text – kallas för “block-kommentar”

October 14, 2013 34

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 35: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Exempel

class Meddelande {

public static void main (String[] args) { System.out.println(“Lycka till!”); }

} n  Varje instruktion du ger till datorn avslutas med ";"

October 14, 2013 35

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 36: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Exempel 2

class Meddelande2 {

public static void main (String[] args) { System.out.println(“Lycka till!”); System.out.println(“Lycka till igen!”); }

}

October 14, 2013 36

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 37: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett Javaprogram – Exempel 3

class Meddelande3 {

public static void main (String[] args) { System.out.println(“Lycka till!”); //utskrift System.out.println(“Lycka till igen!”); /* Det här är en kommentar... ...på flera rader */ }

}

October 14, 2013 37

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 38: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Eclipse

October 14, 2013 38

Page 39: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vad är Eclipse?

n  En avancerad "texteditor" för programmeringsspråk n  Smarta funktioner för att underlätta programmering

q  Färgkodning av reserverade ord med speciell betydelse i språket – lättare att se strukturen

q  Indentering – lättare att se strukturen q  Syntaxkontroll (tänk “stanvingskoll”) – markerar fel i

programkoden medan ni skriver – "kollar med" kompilatorn n  Funktioner för att testköra och felsöka

q  Automatisk kompilering q  Finns även mer avancerade funktioner för att stega sig

igenom program (vi använder dessa först senare i kursen) q  Köra program inifrån programmeringsmiljön

October 14, 2013 39

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 40: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Eclipse och Java 1.6 – ladda ner (finns redan på labbdatorerna)

n  Ladda ner och installera Eclipse (Helios finns på labbdator) q  http://www.eclipse.org/downloads/ q  Finns olika “paket”, välj antingen “Eclipse classic” eller Ett paket för

“Java developers” och följ installationsinstruktionerna n  Vissa paket innehåller Java

q  När du använder Eclipse – tänk på att du alltid ska jobba i “Java Perspective” n  Är du osäker, eller ser gränssnittet konstigt ut: gå till menyn “Window”,

välj “Open Perspective” och klicka på det som heter bara “Java” eller “Java (default)”

q  Kontrollera att du använder rätt Java-version n  Preferences -> Java -> Installed JREs (Här ska Java SE 6 vara markerad

i listan - finns den inte att välja på måste du installera Java 6) n  Ladda ner Java Development Kit (om ej inkluderat i Eclipse)

q  http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html

q  Med JDK följer även JRE (Java Runtime Environment – interpretatorn för att kunna köra program)

q  Vilken version? – Språket utvecklas ständigt! Vi jobbar med Java 6 (dvs 1.6), finns även 7 men innehåller sådant vi inte tar upp i kursen och vi kommer rätta era uppgifter med Java 1.6

October 14, 2013 40

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 41: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Skapa och köra ett första program inifrån Eclipse

n  Skapa ett projekt i din “workspace”-mapp q  Högerklicka i “Package explorer” och välj “New” -> “Java

Project” q  Ge projektet ett namn (t ex “Labbar”) och klicka “Finish”

n  Skapa en ny Java-klass i ditt projekt q  Högerklicka på projektmappen och välj “New” -> “Class” q  Ge klassen ett namn och klicka i rutan för att skapa en tom

main-metod automatiskt n  Skriv koden för ditt program innanför klamrarna till metoden

“main” q  Tänk på att göra koden begriplig genom...

n  Kommentarer n  Indentering

n  Testkör ditt program inifrån Eclipse q  Högerklicka på klass-filen och välj “Run as Java Application” q  Se resultatet och eventuella felmeddelanden i Eclipse:s

console/terminalfönster

October 14, 2013 41

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 42: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exekvering och felrapporter

n  När ett program körs syns en röd markering (liknar “rec” på en videokamera) i överkant på Eclipse:s console q  När programmet är klart blir markeringen grå q  Verkar programmet ha “hängt sig” eller fortsätter upprepa

sig utan att ta slut? – Ctrl-C avslutar ett program

n  Fel = Exception (“undantag”) n  Felrapporter skrivs ut i Eclipse:s console

q  Öva på att läsa felrapporter och analysera var felet finns q  Ofta talar rapporten om i vilken klass och på vilken rad i

metoden/filen felet uppstod n  Ofta gör ett fel att exekveringen avbryts

October 14, 2013 42

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 43: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel 1 och 2 i Eclipse

October 14, 2013 43

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 44: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Köra ett kompilerat program utanför Eclipse

n  Leta rätt på den kompilerade filen q  Klassnamnet + ändelsen .class

n  Kör programmet med kommandot “java” + klassnamnet q  Kör klassen i java-interpretatorn q  Letar efter en “main” metod inne i den kompilerade koden

October 14, 2013 44

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 45: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Köra exempel 1 och 2 utanför Eclipse

October 14, 2013 45

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 46: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Eclipse tutorials

n  Att komma igång med Java i Eclipse – video tutorial q  http://eclipsetutorial.sourceforge.net/totalbeginner.html q  Lesson 1-2 q  Ni behöver inte använda paket (package) i början, och vi

kommer inte att skapa egna nya metoder förrän senare q  Notera att de inte använder senaste versionen av Eclipse –

vissa knappar och menyer kan se lite annorlunda ut! n  Grundläggande funktioner i Eclipse – video tutorial

q  http://eclipsetutorial.sourceforge.net/workbench.html q  Mycket detaljerat – ni behöver inte kunna allt detta, men får

ni problem med gränssnittet finns svaret säkert här q  Notera att de inte använder senaste versionen av Eclipse –

vissa knappar och menyer kan se lite annorlunda ut!

October 14, 2013 46

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 47: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Dags att börja programmera...

October 14, 2013 47

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 48: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Standardutmatning

class Meddelande {

public static void main (String[] args) { System.out.println("Lycka till!"); }

} n  Punktnotation: <klassnamn>.<metodnamn>

q  Vi återkommer till detta senare!! – det gör inget att ni inte förstår alla detaljer just nu

n  System.out.println() – skriver ut en rad med text till standard output, dvs det terminalfönster där programmet körs

n  Textsträngar anges mellan " "

October 14, 2013 48

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 49: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Standardutmatning forts.

n  System.out.println() – skriv ut och avsluta raden n  System.out.print() – skriv ut men stanna kvar på samma rad

n  Delsträngar kan sättas samman med +

n  Exempel: class Meddelande {

public static void main (String[] args) { System.out.println("Lycka " + "till!"); System.out.print("Lycka "); System.out.print("till!"); }

}

October 14, 2013 49

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 50: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel i Eclipse

October 14, 2013 50

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 51: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Finn fem fel...

class Mitt Meddelande {

public static void main (String[] arg) { / kommentar System.out.println(Lycka till!") /* en till kommentar }

}

October 14, 2013 51

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 52: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vad säger Eclipse?

October 14, 2013 52

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 53: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Är detta fel?

class Meddelande { public static void main (String[] args) { System.out.println("Lycka till!"); }} n  Inget fel... n  ...men svårt att läsa och tolka

n  Följ konventionerna som finns på http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html

October 14, 2013 53

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 54: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Standardutmatning - formatering

class Meddelande {

public static void main (String[] args) { System.out.print("Lycka till! \n"); System.out.print("Lycka \t till! \n"); System.out.print("Vi säger: \"Lycka till! \""); }

} n  \n betyder radslut n  \t betyder tabb n  \ anger att ett reserverat tecken som kommer efter ska

skrivas ut som det är

October 14, 2013 54

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 55: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi testar i Eclipse...

October 14, 2013 55

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 56: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Variabler

n  Vad är en variabel? q  Ett namn på en lagringsplats för ett värde – vi "bokar upp"

en plats i datorns minne för att lagra värden på q  Jfr. "x" i matematiken – kan stå för vilket tal som helst

n  En variabel har alltid en typ – vilken sorts sak kan vi

stoppa i lådan? q  Typer är t ex heltal, flyttal och tecken q  Vi måste bestämma oss vad vi vill lagra när vi skapar

variabeln

October 14, 2013 56

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

X namn

Page 57: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Variabler – Tilldelning och uppdatering

n  Deklarera = skapa en variabel av en viss typ n  Initiera = ge variabeln ett första (initialt) värde n  Tilldelning = lagra ett värde n  Uppdatera = en tilldelning där vi byter ut det lagrade värdet

class Variabel {

public static void main (String[] args) { int tal; //här deklareras variabeln tal = 3; //här initieras variabeln, dvs tilldelas ett värde tal = 5; //här uppdateras värdet genom tilldelning tal = tal + 4; //här uppdateras värdet igen System.out.print("Talet är: " + tal); }

}

October 14, 2013 57

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 58: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi skapar några variabler i Eclipse...

October 14, 2013 58

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 59: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Variabler – Konstanter

n  Konstant = värde som inte ändras n  Konstanter skrivs oftast med stora bokstäver

class Konstant {

public static void main (String[] args) { final int TIMMAR = 24; System.out.print("Timmar på ett dygn: " + TIMMAR); }

}

October 14, 2013 59

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 60: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper

n  Översikt över grundläggande datatyper i Java: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

q  byte q  short q  int q  long

q  float q  double

q  boolean

q  char

October 14, 2013 60

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

heltal - byte är "kortast" (minst), long är "längst" (störst) - vanligast: använd int

flyttal/decimaltal - float är "kortast" (minst), double är "längst" (störst) - vanligast: använd double

booleska värden, sanningsvärden - sant/falskt

tecken - a, b c, 0, 4, %, #...

Page 61: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper - Heltal

n  byte – positivt eller negativt heltal som bara tar upp en byte = 8 bitar q  Ligger mellan -128 och 127

n  short – positivt eller negativt heltal som tar upp två byte = 16 bitar q  Ligger mellan -32 768 och 32767

n  int - positivt eller negativt heltal som tar upp fyra byte = 32 bitar q  Ligger mellan – 2 147 483 648 och 2 147 483 647

n  long - positivt eller negativt heltal som tar upp åtta byte = 64 bitar q  Ligger mellan – 9 223 372 036 854 775 808 och

9 223 372 036 854 775 807

October 14, 2013 61

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 62: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper – Heltal (forts.)

n  Försöker du lagra något som är större än vad datatypen tillåter får du ett kompileringsfel

n  Tal som ska lagras som long måste avslutas med bokstaven L

class LongVariabel {

public static void main (String[] args) { long storttal = 8123456789L; System.out.print("Talet är: " + tal); }

}

October 14, 2013 62

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 63: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi testar i Eclipse...

October 14, 2013 63

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 64: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper - Flyttal

n  float – decimaltal som tar upp 4 byte minne q  Sparar minne och ger snabbar bearbetning q  ...men mindre noggrannhet och mindre talområde q  Ett tal som ska lagras som en float måste avslutas med F

n  Exempel: float f1 = 1.23F;

n  double – decimaltal som tar upp 8 byte minne

n  Talen lagras i tre delar (med basen 2): tecken – mantissa – exponent q  Exempel: 0.0000001230000001 kan avrundas till +1.23E-7 q  Observera att talen avrundas till ett visst antal siffror i

matissan, därför kan det uppstå avrundningsfel

October 14, 2013 64

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 65: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel med flyttal

October 14, 2013 65

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 66: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper – booleska värden/sanningsvärden

n  För att representera sanningsvärden q  sant/falskt, ja/nej... q  värdena representeras av orden true och false

class Sanning {

public static void main (String[] args) { boolean kvinna = true; System.out.print("Eva är en kvinna: " + kvinna); }

}

October 14, 2013 66

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 67: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper – Tecken

n  char – datatyp för att lagra enskilda tecken som tar upp 2 byte minne q  tecken representeras internt som en siffra – översätts till ett

tecken via en teckentabell q  Java använder Unicode-systemet (www.unicode.org - en

lättläst tabell för att slå upp koderna för vanliga alfabet finns här: http://www.ssec.wisc.edu/~tomw/java/unicode.html)

q  Exempel: siffran 65 står för bokstaven A, och 97 för a q  Finns mängder med specialtecken, t ex ny rad, tabb, retur

osv.

October 14, 2013 67

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 68: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Unicode

October 14, 2013 68

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 69: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Datatyper – Tecken (forts.)

class Tecken {

public static void main (String[] args) { char tecken = 'B'; char tecken2 = 66; System.out.print(tecken + " " + tecken2); }

} n  Tecken skrivs inom ' ' medan textsträngar inom " "

October 14, 2013 69

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 70: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi testar i Eclipse...

October 14, 2013 70

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 71: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Skilj på tecken och siffra

class TeckenSiffra {

public static void main (String[] args) { char tecken = '9'; int tal = 9; System.out.print(tecken + " " + tal); }

} n  Tecknet 0 (Unicode 48), heltalet 0, nolltecknet ("null" –

används för att markera en tom variabel – Unicode 0)

October 14, 2013 71

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 72: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Tecken och siffror, exempel i Eclipse...

October 14, 2013 72

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 73: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer - Heltal

n  De fyra räknesätten: + - * / n  Resten vid heltalsdivision: % n  Tecken: + -

n  Prioritet: q  unära + - q  * / % q  + -

n  Inom en grupp utförs operationerna i den ordning de står n  Använd parenteser för att få en viss bestämd ordning

October 14, 2013 73

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 74: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer – Heltal (forts.)

class Operationer {

public static void main (String[] args) { int a = 2; int b = 3; int c = a + b * a; // c blir 8 int d = a * b / a; // d blir 3 System.out.print("Resultat: " + c + " och " + d); }

}

October 14, 2013 74

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 75: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi testar i Eclipse...

October 14, 2013 75

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 76: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer på tal (forts.)

n  Flyttal q  Motsvarande som för heltal (utom % - nu kan vi lagra

decimaltalet istället, dvs använda / direkt) n  Division med 0

q  Heltal: felmeddelande (undantag kastas) q  Flyttal: du får ett speciellt värde tillbaka

n  +/- Infinity n  0.0/0 ger svaret NaN (Not a Number)

October 14, 2013 76

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 77: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer på en variabel

n  öka variabel med ett värde (+=): a = a + 2 är samma som a += 2 q  öka med 1: a++

n  multiplicera med ett värde (*=): a = a * 2 är samma som a *= 2

n  minska med ett värde (-=): a = a - 2 är samma som a -= 2 q  minska med 1: a--

n  dela med ett värde (/=): a = a / 2 är samma som a /= 2

n  resten av division (%=): a = a % 2 är samma som a %= 2

October 14, 2013 77

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 78: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer - Exempel 1

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 78

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 79: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi testar i Eclipse...

October 14, 2013 79

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 80: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Operationer - Exempel 2

class ExempelOperationer2 {

public static void main (String[] args) { char b = 'c'; char c = 'a'; String resultat = "hej"; resultat = resultat + " " + c + " " + b; System.out.print("Resultat: " + resultat); }

}

October 14, 2013 80

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 81: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Ett exempel till i Eclipse...

October 14, 2013 81

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 82: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vad händer egentligen vid en tilldelning?

n  Först beräknas resultatet av det som står till höger om likamedtecknet... q  värdena som används för beräkningen är de som gäller just

då när programmet körs n  ...sen lagras värdet av det resultatet i variabeln

October 14, 2013 82

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 83: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: vi tittar på en programkörning

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 83

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i

Page 84: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 84

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

Page 85: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 85

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

Page 86: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 86

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

Page 87: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = 2 + 97; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 87

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

Page 88: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = 99; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 88

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int

Page 89: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 89

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int

Page 90: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = 2.2 + 97; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 90

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int

Page 91: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = 99.2; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 91

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int

Page 92: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = 99.2; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 92

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int resultat2

double

Page 93: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); }

}

October 14, 2013 93

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int resultat2

double

Page 94: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + 99 + " och " + 99.2); }

}

October 14, 2013 94

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int resultat2

double

Page 95: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Exempel: "substitution"

class ExempelOperationer {

public static void main (String[] args) { int i = 2; double d= 2.2; char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: 99 och 99.2"); }

}

October 14, 2013 95

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

i d

c

int double

char

resultat

int resultat2

double

evabl45> Resultat: 99 och 99.2

Page 96: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Vi stegar oss igenom programmet i Eclipse!

October 14, 2013 96

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 97: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Sammanfattning

n  Varför programmering? q  Viktigt både för den som vill bli programmerare och den som

"bara" vill jobba med miljön där systemen finns och utvecklas n  Vad är programmering?

q  Ett sätt för oss att ge en dator instruktioner för att utföra en uppgift – i ett språk som datorn kan tolka

n  Java – ett programmeringsspråk q  Kompilator + interpretator behövs q  Utvecklingsmiljön vi använder är Eclipse

n  Grunderna i Java q  Strukturen för ett program q  Klasser och klassbibliotek (Java API) q  Utmatning av textsträngar q  Grundläggande datatyper och variabler + operationer

October 14, 2013 97

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 98: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

Nästa gång?

n  Typomvandling n  Jämförelser n  Villkor och val n  Textsträngar – mer avancerade operationer n  Mer om Javas klassbibliotek och att läsa Javadoc

October 14, 2013 98

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden

Page 99: Föreläsning 1-2: Kursinformation och introduktion till ...725G61/lectures/Fo1-2.pdf · (del 1 - 6/12, del 2 - 31/1) " Komplettering möjlig (även för VG) vid två ytterligare

October 14, 2013 99

Department of Computer and Information Science (IDA) Linköpings universitet, Sweden