föreläsning 1-2: kursinformation och introduktion till ...725g61/lectures/fo1-2.pdf · (del 1 -...
Post on 17-Jun-2020
2 Views
Preview:
TRANSCRIPT
October 14, 2013 1
Föreläsning 1-2: Kursinformation och introduktion till
Java och programmering
Eva Blomqvist eva.blomqvist@liu.se
Department of Computer and Information Science (IDA) Linköpings universitet
Sweden
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
Kursinfo
http://www.ida.liu.se/~725G61/index.sv.shtml Eva Blomqvist eva.blomqvist@liu.se Examinator, föreläsare och labbhandledare
October 14, 2013 3
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
Ö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
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
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
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
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
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
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
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
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
"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
Varför programmering?
October 14, 2013 14
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
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
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
Vad är ett program? Hur fungerar Java?
October 14, 2013 18
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
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
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
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
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 ...
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
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
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
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
Ett första Javaprogram
October 14, 2013 28
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
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
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
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
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
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
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
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
Eclipse
October 14, 2013 38
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
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
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
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
Exempel 1 och 2 i Eclipse
October 14, 2013 43
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Köra exempel 1 och 2 utanför Eclipse
October 14, 2013 45
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Dags att börja programmera...
October 14, 2013 47
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
Exempel i Eclipse
October 14, 2013 50
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Vad säger Eclipse?
October 14, 2013 52
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
Ä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
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
Vi testar i Eclipse...
October 14, 2013 55
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
Vi skapar några variabler i Eclipse...
October 14, 2013 58
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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, %, #...
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
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
Vi testar i Eclipse...
October 14, 2013 63
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Exempel med flyttal
October 14, 2013 65
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
Unicode
October 14, 2013 68
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Vi testar i Eclipse...
October 14, 2013 70
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Tecken och siffror, exempel i Eclipse...
October 14, 2013 72
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
Vi testar i Eclipse...
October 14, 2013 75
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
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
Vi testar i Eclipse...
October 14, 2013 79
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
Ett exempel till i Eclipse...
October 14, 2013 81
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Vi stegar oss igenom programmet i Eclipse!
October 14, 2013 96
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
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
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
October 14, 2013 99
Department of Computer and Information Science (IDA) Linköpings universitet, Sweden
top related