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 October 14, 2013 1 Innehåll n n n n n n n Kursinfo Varför programmering? Vad är ett program? – grundläggande begrepp Hur fungerar Java – miljö och struktur Ett första programexempel i Java Eclipse – en programmeringsmiljö (IDE) Vi börjar programmera q q q Standardutmatning Variabler Enkla datatyper och operationer på dem Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 2 Kursinfo http://www.ida.liu.se/~725G61/index.sv.shtml Eva Blomqvist [email protected] Examinator, föreläsare och labbhandledare Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 3 Övergripande regler n NI är ansvariga för att hålla er uppdaterade om vad som händer i kursen q q n n n All information finns på kurshemsidan Nyheter och ändringar dyker upp som nyheter på hemsidan och i akuta fall som mail på kurslistan Kontrollera kurshemsidan minst en gång per vecka för uppdateringar! Kontrollera mail från kurslistan dagligen! 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! Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 4 Kursinfo - kursöversikt n Kursen har tre delar q Del 1 – grundläggande programmering med Java n n n Fram till slutet av november 6 Fö + lektioner och 4 labbar – deadline 6/12 (men följ gärna "veckoplan") Individuell dugga ("på papper") q q Del 2 – objektorienterad programmering + mer avancerad Javaprogrammering n n n n Fram till mitten av januari 4 Fö + lektioner och 4 labbar – deadline 31/1 (men följ gärna "veckoplan") Rekommenderat att gå på föreläsning med projektinformation (december) Individuell dugga ("på papper") q q 3 chanser under del 1 + uppsamlingstillfälle i slutet av kursen 3 chanser under del 2 + uppsamlingstillfälle i slutet av kursen Del 3 – projektarbete n n December till slutet av kursen (ca v.7) Större programmeringsuppgift – egen problemlösning Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 5 Kursinfo - Mål n När kursen är slut ska ni kunna... q q q q n Analysera ett problem och skapa en lösning i Java – praktisk programmering Hitta de klasser i standardbiblioteket som behövs och förstå dem genom att läsa deras Javadoc Förstå och felsöka andras kod Använda Eclipse (eller motsvarande) och förstå hur Javamiljön är uppbyggd Beroende på förkunskaper kan kursen vara... q q Ett stort steg – ni lär er programmera från grunden, ...eller ett litet steg där ni friskar upp er kunskaper och utökar era praktiska färdigheter i Java-programmering. Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 6 Kursinfo - vad betyder de olika momenten? n Föreläsning q q q n Lektioner q q q n Introducerar begrepp och koncept inom programmering Visar exempel - bra att gå tillbaka till bilderna senare Endast några få riktiga "körexempel" i Eclipse nu i början Ungefär: 1 föreläsning - 1 lektion Ni förutsätts vara bekanta med begreppen som introducerats på föreläsningen Visar "körexempel" i Eclipse som tillämpar begreppen från förläsningen Labbar q Ungefär: 4-8 timmar bokad salstid per Fö+Le n q q 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 Ni löser praktiska programmeringsuppgifter i grupper om 2 studenter - OBS! "parprogrammering" Ni förutsätts vara bekanta med begreppen och exemplen från föreläsning och lektion Duggor q q 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") Inte en "pluggtenta" - har ni förstått labbarna klarar ni duggan 30 minuter - skrivs på papper Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 7 Kursinfo - Examination n n 4HP = laborationer (del 1+2, duggor) + 2HP = projekt Examination genom 3 moment q Labbar – lämna in lösningar på labbuppgifterna n n n n Skilj på "övning" och "uppgift" - Uppgift ska lämnas in Lösningar måste vara kommenterade (i koden) Lösningar måste vara testkörda 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 q Duggor n Två duggor – måste få G på båda n För VG på kursen måste ni få G under ordinarie tillfällen, dvs senast 5/12 resp. 30/1 q q Komplettering möjlig (även för VG) vid två ytterligare tillfällen 3 ordinarie tillfällen per del + 1 uppsamlingstillfälle i slutet av kursen Projekt n n Godkänd projektuppgift – designdiskussion, demo av inläsning från fil, projektrapport/ kod/dokumentation och demonstration/muntlig diskussion med handledaren Två nivåer av krav: q q n Alla grundläggande krav uppfyllda – G Ytterligare krav uppfyllda – VG För VG måste ni uppfylla VG-kraven samt klara av alla momenten före ordinarie projektdeadline 21/2 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 8 Kursinfo - Labbar n n Vi använder Java 1.6 och Eclipse Helios Jobba två och två q q q q n 4 labbar med ett antal uppgifter vardera i del 1 q q q q n Registrera er labbgrupp i WebReg OCH ange gruppnummer + båda namnen vid varje inlämning i LISAM Samma grupper hela kursen (labbar och projekt) Välj en person som är på samma nivå! 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! Bara de som heter "uppgift" måste lämnas in Övningar är valfria, men är ni nybörjare rekommenderar vi att ni göra alla övningar Välj er egen nivå och jobba i ert eget tempo – kolla "veckoplan" på hemsidan för att se om ni ligger i fas 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! Inlämning sker genom LISAM q q q Kolla gärna med hanledaren på labben om lösningen ser rimlig ut, men handledarna har inte tid att rätta på labbtid 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 Koden måste vara välkommenterad och direkt körbar – annars ingen rättning Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 9 Kursinfo – Regler och deadlines n n Deadlines är strikta Rättning sker (kontinuerligt) inom ca 1 vecka, före ordinarie deadline (dvs före 6/12 för del 1) q q n 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! Deadlines q q q n 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) 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 Labbar del 1 – 6/12 17:00 (Kompletteringar: 14/2 och 28/3) Labbar del 2 – 31/1 17:00 (Kompletteringar: 28/2 och 28/3) 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) Duggor q q q Dugga del 1 – 7/11 eller 21/11 eller 5/12 Dugga del 2 – 19/12 eller 16/1 eller 30/1 Uppsamlingstillfällen: 1st i februari för både dugga 1 och 2 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 10 Kursinfo – vanliga frågor? n Måste jag gå på föreläsningarna? q q n Det är jättemånga övningar – måste jag göra alla? q n 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! Min labbhandledare är inte där – vem ska jag fråga? q n Nej, men jag rekommenderar att gå om du är ny på Java-programmering eller om det var länge sen du programmerade Gå på föreläsningen med projektinformation i december 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. 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. Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 11 Kursinfo - vad har hänt sen förra året? n För mycket tid q q q n För stort hopp mellan del 1 och 2, samt teori/praktik q q n q q Infört 3 chanser per dugga under periodens gång Svårt att få hjälp och feedback på labbarna q q n Mer text i labbinstruktionen, förklarar vad ni övar på Uppgifterna organiserade i "labbar" med ett tema ... men finns fortfarande många möjliga lösningar Orättvist att bara ha en chans på duggorna q n Lektion till varje föreläsning Allt om klasser har flyttats till del 2 - "mjukstart" i del 2? Svårt att veta vad vi övar på i labbarna och vad som är "rätt svar" q n Något färre uppgifter i år, och några uppgifter har minskats i omfång Fokus på färre klasser i standardbiblioteket ... men det är fortfarande en krävande kurs! En assistent per sal Fler assistenter totalt = snabbare rättning Andra nyheter: q Mer strikt parprogrammering - båda ska lära sig skriva kod Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 12 "Veckoplan" - del 1 (se kurshemsidan) n v. 42-43: q q n v. 44: q q n q Fö 5 + Le 4: Metoder Labb 3 (4 timmar salstid + ev. del av nästa veckas labbtid) - bör vara inlämnad 15/11 v. 46-47: q q n Fö 4 + Le 3: Arrayer och loopar Labb 2 (4 timmar salstid) - bör vara inlämnad 1/11 v. 45: q n Fö 1-3 + Le1-2: Kursinfo samt grundläggande "kom-igång", sedan: variabler, operationer, villkorssatser Labb 1 (8 timmar salstid) - bör vara inlämnad 25/10 Fö 6 + Le 5: In- och utmatning, undantag Labb 4 (8 timmar salstid - den extra tid du tog för labb 3) - bör vara inlämnad 22/11 v. 48: q 6 timmar salstid - reservtid för att bli klar med labbarna i del 1 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 13 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 n n n n n q Bilar... Smarta kort... Kassan på ICA... TVn... Vitvarorna hemma i ditt kök... Och förstås de system vi oftast tänker på: mobiltelefoner, datorer, surfplattor mm. Genom att förstå principerna för programmering förstår vi dels... n n Hur systemet har byggts – programmerarnas arbete, varför det kan finnas fel, hur omfattande arbete som krävdes etc. 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 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 15 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 q Systemutvecklingsprocessen är en sådan process Programmerarna är en sådan grupp av människor n q Hur kommunicerar vi med en programmerare? Förstå begrepp, metoder och problem. Leda bättre n n n Bättre tidsuppskattningar Bättre kvalitetsuppskattningar Bättre möjlighet att följa upp och kontrollera processen Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 16 Jobba med programmering n Vissa av er kommer säkert tycka (eller tycker redan) att detta är jättekul! q q q q n Analys och design Systemutveckling Testning Underhåll Programmering är ett hantverk q q Man lär sig genom att öva, öva och öva Mer än bara lösa problemet n q Vad är en bra lösning? Varför? Vad finns det för alternativ? Även om ni programmerat innan finns det mycket att lära sig i den här kursen! Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 17 Vad är ett program? Hur fungerar Java? October 14, 2013 18 Program som en samling instruktioner n n Varje program har en uppgift – något som ska utföras 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 q n n n n Varje steg i processen är en instruktion till datorn Instruktionerna utförs i en väldefinierad ordning Program = beskrivning av hur en uppgift ska utföras i ett språk som datorn kan tolka/utföra Programmering = att skriva sådana beskrivningar Programmeringsspråk = språket man använder för att uttrycka beskrivningen Köra/exekvera ett program = låta datorn utföra uppgiften Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 19 Algoritmer – sekvens med instruktioner n Hur ska vi lösa ett visst problem? q q n Bryta ner problemet i smådelar = detaljerade instruktioner Ordna instruktionerna så att vi i slutänden får lösningen på hela problemet En viss sekvens av instruktioner = en algoritm q Finns typiska algoritmer som kan återanvändas n n T ex sorteringsalgoritmer Exempel: Insättning på bankkonto q q q q Mata in insättningsbelopp och kontonummer Hämta saldo för det givna kontonumret Öka saldo med insättningsbelopp Spara det nya saldot Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 20 Hur ska vi få datorn att utföra vår algoritm? n n n Vi måste skriva den så att datorn kan tolka vad den ska göra! – vi kan använda Java Varje steg i algoritmen måste översättas till Java Java har bara generella instruktioner – inget om bankkonton och saldon! q q q Vi måste bryta ner problemet i mindre bitar Vi måste känna till vilka instruktioner som finns i Java Vi måste öva på att uttrycka lösningar på olika typer av problem i Java Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 21 Men... datorn “pratar” egentigen inte Java n n Programmet måste översättas till 1:or och 0:or = maskininstruktioner till datorns processor Två typer av programmeringsspråk q De som kompileras direkt till maskinkod n n q Fördelar? Programmet kan köras direkt på datorn, utan ytterligare programvara installerad. Det går snabbt när programmet väl körs. Nackdelar? Programmet kompileras för en speciell plattform, eller till och med en speciell dator. De som kompileras till “bytekod” och sedan körs genom en interpretator n n n Java är ett exempel Fördelar? Plattformsoberoende Nackdelar? Långsammare. Kräver rätt interpretator. Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 22 Java-kompilering I minnet – när vi exekverar programmet På hårddisken – i förväg MittProgram.java class Tecken { public static void main (String[] args) { char tecken = 'B'; char tecken2 = 66; ... } } MittProgram.class χλασσ Τεχκεν πυβλιχ στατιχ ϖοιδ µαιν (Στρινγ αργσ χηαρ τεχκεν = ∍Β∍; χηαρ τεχκεν2 = 66 ... Kompilator Interpretator Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 23 00001100 01001001 011... Javamiljön vi jobbar i n Följande måste finnas q q n De Java-programbibliotek som programmet använder En Javainterpretator – Java Runtime Environment (JRE) För att enklare skriva program finns olika utvecklignsmiljöer (IDE = Integrated Development Environment) q Jämför med MS Word: n q 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. En IDE har “stavningskoll” för olika programmeringspråk, du kan testköra programmet direkt i din IDE osv. Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 24 Vanligt problem: låt inte Eclipse styra er! n n ...ni ska styra Eclipse! 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 q n 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 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? Duggorna testar er förståelse - där har ni inte hjälp av Eclipse! Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 25 Om Java n n n n n n Plattformsoberoende Webbprogrammering 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. Objektorienterat språk – klasser och objekt (instanser av objekt) “Få” instruktioner i grundspråket – många bibliotek (Java API - "standardbiblioteket") 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 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 26 Att programmera n n Analysera problemet Utforma algoritmen n Skriva programmet Kompilera Exekvera – Testa n Viktigt om testning: n n q q Tänk på att alltid köra programmet både med förväntade och oväntade data Spårutskrifter är ett bra sätt att se vad som händer “inuti” när programmet körs Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 27 Ett första Javaprogram Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 28 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 q n Ett programspråks syntax talar om exakt vad som är korrekt att skriva – vad datorn kommer att förstå 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! Namnet på ett program (en Java-klass) q q q q Ett enda ord (dvs inga mellanslag – använd “Camel Case” för flera ord – FleraOrd – eller “_” – Flera_Ord) Måste börja med en bokstav (engelska alfabetet + kan sedan innehålla siffror samt “_”) Ge programmet ett beskrivande namn! Undvik å/ä/ö och andra specialtecken Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 29 Tips: använd bara engelska alfabetet! n Det går att använda svenska tecken när ni programmerar men... q q Svenska tecken representeras olika på olika datorer och i olika Eclipse-versioner Använder ni svenska tecken kan ni får problem om ni flyttar över er kod till en annan dator n n T ex mellan din laptop och din labbkompis dator, eller från datorn i labbsalen och din egen laptop Bäst att helt undvika svenska tecken i er kod! q q använd engelska namn... eller använd svenska namn men "ta bort prickarna", t ex "anvand" istället för "använd" Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 30 Ett Javaprogram – Klasser och metoder n Ett program består av en eller flera Java-klasser q q En klass innehåller en samling instruktioner som löser ett visst problem – används för att bryta ner problemet En klass sparas normalt i en fil (finns undantag) n q -> Flera klasser = flera filer 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 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 31 Ett Javaprogram – Metoden “main” n “main” är huvudmetoden – själva huvudspåret i programmet, där programmet börjar q n Senare i kursen kommer vi att se andra metoder, men vi börjar med att använda bara “main” När ett Javaprogram exekveras söker interpretatorn efter metoden “main” q q Finns den inte får man ett felmeddelande Annars börjar exekveringen här Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 32 Ett Javaprogram – Struktur och syntax class Meddelande { public static void main (String[] args) { // här skriver vi vad programmet ska göra } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 33 Kommentarer – rader med text som hoppas över när programmet körs n n n Används för att kunna beskriva vad programmet betyder och gör för andra programmerare (eller för dig själv) Ni måste använda kommentarer för att beskriva vad ni gjort i lösningarna till labbuppgifterna Två typer av kommentarer: q q // indikerar att resten av raden är en kommentar /* ... */ indikerar att allt mellan /* och */ är en kommentar, kan vara flera rader text – kallas för “block-kommentar” Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 34 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 ";" Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 35 Ett Javaprogram – Exempel 2 class Meddelande2 { public static void main (String[] args) { System.out.println(“Lycka till!”); System.out.println(“Lycka till igen!”); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 36 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 */ } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 37 Eclipse October 14, 2013 38 Vad är Eclipse? n n En avancerad "texteditor" för programmeringsspråk Smarta funktioner för att underlätta programmering q q q n Färgkodning av reserverade ord med speciell betydelse i språket – lättare att se strukturen Indentering – lättare att se strukturen Syntaxkontroll (tänk “stanvingskoll”) – markerar fel i programkoden medan ni skriver – "kollar med" kompilatorn Funktioner för att testköra och felsöka q q q Automatisk kompilering Finns även mer avancerade funktioner för att stega sig igenom program (vi använder dessa först senare i kursen) Köra program inifrån programmeringsmiljön Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 39 Eclipse och Java 1.6 – ladda ner (finns redan på labbdatorerna) n Ladda ner och installera Eclipse (Helios finns på labbdator) q q http://www.eclipse.org/downloads/ Finns olika “paket”, välj antingen “Eclipse classic” eller Ett paket för “Java developers” och följ installationsinstruktionerna n q När du använder Eclipse – tänk på att du alltid ska jobba i “Java Perspective” n q Ä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)” Kontrollera att du använder rätt Java-version n n Vissa paket innehåller Java 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) Ladda ner Java Development Kit (om ej inkluderat i Eclipse) q q q http://www.oracle.com/technetwork/java/javasebusiness/downloads/javaarchive-downloads-javase6-419409.html Med JDK följer även JRE (Java Runtime Environment – interpretatorn för att kunna köra program) 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 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 40 Skapa och köra ett första program inifrån Eclipse n Skapa ett projekt i din “workspace”-mapp q q n Skapa en ny Java-klass i ditt projekt q q n Högerklicka i “Package explorer” och välj “New” -> “Java Project” Ge projektet ett namn (t ex “Labbar”) och klicka “Finish” Högerklicka på projektmappen och välj “New” -> “Class” Ge klassen ett namn och klicka i rutan för att skapa en tom main-metod automatiskt Skriv koden för ditt program innanför klamrarna till metoden “main” q Tänk på att göra koden begriplig genom... n n n Kommentarer Indentering Testkör ditt program inifrån Eclipse q q Högerklicka på klass-filen och välj “Run as Java Application” Se resultatet och eventuella felmeddelanden i Eclipse:s console/terminalfönster Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 41 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 q n n Fel = Exception (“undantag”) Felrapporter skrivs ut i Eclipse:s console q q n När programmet är klart blir markeringen grå Verkar programmet ha “hängt sig” eller fortsätter upprepa sig utan att ta slut? – Ctrl-C avslutar ett program Öva på att läsa felrapporter och analysera var felet finns Ofta talar rapporten om i vilken klass och på vilken rad i metoden/filen felet uppstod Ofta gör ett fel att exekveringen avbryts Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 42 Exempel 1 och 2 i Eclipse Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 43 Köra ett kompilerat program utanför Eclipse n Leta rätt på den kompilerade filen q n Klassnamnet + ändelsen .class Kör programmet med kommandot “java” + klassnamnet q q Kör klassen i java-interpretatorn Letar efter en “main” metod inne i den kompilerade koden Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 44 Köra exempel 1 och 2 utanför Eclipse Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 45 Eclipse tutorials n Att komma igång med Java i Eclipse – video tutorial q q q q n http://eclipsetutorial.sourceforge.net/totalbeginner.html Lesson 1-2 Ni behöver inte använda paket (package) i början, och vi kommer inte att skapa egna nya metoder förrän senare Notera att de inte använder senaste versionen av Eclipse – vissa knappar och menyer kan se lite annorlunda ut! Grundläggande funktioner i Eclipse – video tutorial q q q http://eclipsetutorial.sourceforge.net/workbench.html Mycket detaljerat – ni behöver inte kunna allt detta, men får ni problem med gränssnittet finns svaret säkert här Notera att de inte använder senaste versionen av Eclipse – vissa knappar och menyer kan se lite annorlunda ut! Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 46 Dags att börja programmera... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 47 Standardutmatning class Meddelande { public static void main (String[] args) { System.out.println("Lycka till!"); } } n Punktnotation: <klassnamn>.<metodnamn> q n n Vi återkommer till detta senare!! – det gör inget att ni inte förstår alla detaljer just nu System.out.println() – skriver ut en rad med text till standard output, dvs det terminalfönster där programmet körs Textsträngar anges mellan " " Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 48 Standardutmatning forts. n System.out.println() – skriv ut och avsluta raden 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!"); } } n Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 49 Exempel i Eclipse Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 50 Finn fem fel... class Mitt Meddelande { public static void main (String[] arg) { / kommentar System.out.println(Lycka till!") /* en till kommentar } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 51 Vad säger Eclipse? Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 52 Är detta fel? class Meddelande { public static void main (String[] args) { System.out.println("Lycka till!"); }} n n n Inget fel... ...men svårt att läsa och tolka Följ konventionerna som finns på http://www.oracle.com/technetwork/java/javase/ documentation/codeconvtoc-136057.html Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 53 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 n \n betyder radslut \t betyder tabb \ anger att ett reserverat tecken som kommer efter ska skrivas ut som det är Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 54 Vi testar i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 55 Variabler n Vad är en variabel? q 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å Jfr. "x" i matematiken – kan stå för vilket tal som helst X n namn En variabel har alltid en typ – vilken sorts sak kan vi stoppa i lådan? q q Typer är t ex heltal, flyttal och tecken Vi måste bestämma oss vad vi vill lagra när vi skapar variabeln Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 56 Variabler – Tilldelning och uppdatering n n n n Deklarera = skapa en variabel av en viss typ Initiera = ge variabeln ett första (initialt) värde Tilldelning = lagra ett värde 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 57 Vi skapar några variabler i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 58 Variabler – Konstanter n n Konstant = värde som inte ändras 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 59 Datatyper Översikt över grundläggande datatyper i Java: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/ datatypes.html n byte short int long heltal - byte är "kortast" (minst), long är "längst" (störst) - vanligast: använd int q float double flyttal/decimaltal - float är "kortast" (minst), double är "längst" (störst) - vanligast: använd double q boolean booleska värden, sanningsvärden - sant/falskt q char tecken - a, b c, 0, 4, %, #... q q q q q Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 60 Datatyper - Heltal n byte – positivt eller negativt heltal som bara tar upp en byte = 8 bitar q n short – positivt eller negativt heltal som tar upp två byte = 16 bitar q n Ligger mellan -32 768 och 32767 int - positivt eller negativt heltal som tar upp fyra byte = 32 bitar q n Ligger mellan -128 och 127 Ligger mellan – 2 147 483 648 och 2 147 483 647 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 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 61 Datatyper – Heltal (forts.) n n Försöker du lagra något som är större än vad datatypen tillåter får du ett kompileringsfel 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 62 Vi testar i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 63 Datatyper - Flyttal n float – decimaltal som tar upp 4 byte minne q q q Sparar minne och ger snabbar bearbetning ...men mindre noggrannhet och mindre talområde 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 q Exempel: 0.0000001230000001 kan avrundas till +1.23E-7 Observera att talen avrundas till ett visst antal siffror i matissan, därför kan det uppstå avrundningsfel Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 64 Exempel med flyttal Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 65 Datatyper – booleska värden/ sanningsvärden n För att representera sanningsvärden q q sant/falskt, ja/nej... 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 66 Datatyper – Tecken n char – datatyp för att lagra enskilda tecken som tar upp 2 byte minne q q q q tecken representeras internt som en siffra – översätts till ett tecken via en teckentabell 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) Exempel: siffran 65 står för bokstaven A, och 97 för a Finns mängder med specialtecken, t ex ny rad, tabb, retur osv. Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 67 Unicode Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 68 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 " " Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 69 Vi testar i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 70 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) Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 71 Tecken och siffror, exempel i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 72 Operationer - Heltal n De fyra räknesätten: + - * / Resten vid heltalsdivision: % Tecken: + - n Prioritet: n n q q q n n unära + */ % +- Inom en grupp utförs operationerna i den ordning de står Använd parenteser för att få en viss bestämd ordning Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 73 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 74 Vi testar i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 75 Operationer på tal (forts.) n Flyttal q n Motsvarande som för heltal (utom % - nu kan vi lagra decimaltalet istället, dvs använda / direkt) Division med 0 q q Heltal: felmeddelande (undantag kastas) Flyttal: du får ett speciellt värde tillbaka n n +/- Infinity 0.0/0 ger svaret NaN (Not a Number) Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 76 Operationer på en variabel n öka variabel med ett värde (+=): a = a + 2 är samma som a += 2 q n n multiplicera med ett värde (*=): a = a * 2 är samma som a *= 2 minska med ett värde (-=): a = a - 2 är samma som a -= 2 q n n öka med 1: a++ minska med 1: a-- dela med ett värde (/=): a = a / 2 är samma som a /= 2 resten av division (%=): a = a % 2 är samma som a %= 2 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 77 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 78 Vi testar i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 79 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 80 Ett exempel till i Eclipse... Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 81 Vad händer egentligen vid en tilldelning? n Först beräknas resultatet av det som står till höger om likamedtecknet... q n värdena som används för beräkningen är de som gäller just då när programmet körs ...sen lagras värdet av det resultatet i variabeln Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 82 Exempel: vi tittar på en programkörning i 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 83 Exempel: "substitution" i class ExempelOperationer d { 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 84 Exempel: "substitution" c char i class ExempelOperationer d int { double 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 85 Exempel: "substitution" c char i class ExempelOperationer d int { double 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 86 Exempel: "substitution" c char i class ExempelOperationer d int { double 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); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 87 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; double d= 2.2; int char c = 'a'; int resultat = 99; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 88 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; double d= 2.2; int char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 89 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; double d= 2.2; int char c = 'a'; int resultat = i + c; double resultat2 = 2.2 + 97; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 90 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; double d= 2.2; int char c = 'a'; int resultat = i + c; double resultat2 = 99.2; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 91 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; resultat2 double d= 2.2; int double char c = 'a'; int resultat = i + c; double resultat2 = 99.2; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 92 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; resultat2 double d= 2.2; int double char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + resultat + " och " + resultat2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 93 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; resultat2 double d= 2.2; int double char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: " + 99 + " och " + 99.2); } } Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 94 Exempel: "substitution" c char i class ExempelOperationer d int { double public static void main (String[] args) { resultat int i = 2; resultat2 double d= 2.2; int double char c = 'a'; int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: 99 och 99.2"); } } evabl45> Resultat: 99 och 99.2 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 95 Vi stegar oss igenom programmet i Eclipse! Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 96 Sammanfattning n Varför programmering? q n Vad är programmering? q n 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 Java – ett programmeringsspråk q q n 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 Kompilator + interpretator behövs Utvecklingsmiljön vi använder är Eclipse Grunderna i Java q q q q Strukturen för ett program Klasser och klassbibliotek (Java API) Utmatning av textsträngar Grundläggande datatyper och variabler + operationer Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 97 Nästa gång? n n n n n Typomvandling Jämförelser Villkor och val Textsträngar – mer avancerade operationer Mer om Javas klassbibliotek och att läsa Javadoc Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 98 Department of Computer and Information Science (IDA) Linköpings universitet, Sweden October 14, 2013 99