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

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

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

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

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

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

SMD 134 Objektorienterad programmering

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

OOP Objekt-orienterad programmering

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Föreläsning 1 & 2 INTRODUKTION

F4. programmeringsteknik och Matlab

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

Objektorienterad Programmering (TDDC77)

NetBeans 7. Avsikt. Projektfönster

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

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

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

NetBeans 5.5. Avsikt. Projektfönster

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

Anteckningar 1: Grundläggande saker

Programmering A. Johan Eliasson

Objektorienterad Programmering (TDDC77)

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Objektorienterad programmering i Java

Editering, Kompilering och Exekvering av Javaprogram

Objektorienterad Programmering (TDDC77)

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Introduktion till programmering och Python Grundkurs i programmering med Python

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

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

Kompilera och exekvera Javakod

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

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

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Användarhandledning Version 1.2

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

Laboration 10 - Eclipse

TDIU01 - Programmering i C++, grundkurs

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

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Projektuppgift - Biblioteket

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

TDDC77 Objektorienterad Programmering

Föreläsning 1 & 2 INTRODUKTION

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Projektuppgift - Banken

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Programmering för språkteknologer II, HT2011. Rum

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 3. Programmering, C och programmeringsmiljö

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Operativsystem och programmering

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Projektuppgift - Gymmet

Undervisning. Examination

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

Objektorienterad programmering Föreläsning 2

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Extramaterial till Matematik Y

Objektorienterad Programmering (TDDC77)

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

TDDC77 Objektorienterad Programmering

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

Objektorienterad programmering i Java I

TDDC77 Objektorienterad Programmering

TUTORIAL: SAMLING & KONSOLL

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

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

Laboration 1 Introduktion till Visual Basic 6.0

Programmering B med Visual C

SMD 134 Objektorienterad programmering

Eclipse. Kort genomgång

Outline. Objektorienterad Programmering (TDDC77) Kursinfo. Outline. Hemsida. Organization. Ahmed Rezine Examination. Webreg.

Föreläsning 3. Programmering, C och programmeringsmiljö

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

Laboration 1. Objektorienterad programmering, Z1. Syfte

Laboration 1 - Grunderna för OOP i Java

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

2 Eclipse en handledning

Objektorienterad Programmering DAT043. Föreläsning 1 15/1-18 Moa Johansson

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

JAVA Mer om klasser och objektorientering

Enkla datatyper minne

Transkript:

Föreläsning 1-2: Kursinformation och introduktion till Java och programmering Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden October 14, 2013 1

Innehåll 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 Standardutmatning Variabler Enkla datatyper och operationer på dem October 14, 2013 2

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

Övergripande regler NI är ansvariga för att hålla er uppdaterade om vad som händer i kursen 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! October 14, 2013 4

Kursinfo - kursöversikt Kursen har tre delar Del 1 grundläggande programmering med Java Fram till slutet av november 6 Fö + lektioner och 4 labbar deadline 6/12 (men följ gärna "veckoplan") Individuell dugga ("på papper") 3 chanser under del 1 + uppsamlingstillfälle i slutet av kursen Del 2 objektorienterad programmering + mer avancerad Javaprogrammering 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") 3 chanser under del 2 + uppsamlingstillfälle i slutet av kursen Del 3 projektarbete December till slutet av kursen (ca v.7) Större programmeringsuppgift egen problemlösning October 14, 2013 5

Kursinfo - Mål När kursen är slut ska ni kunna... 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... 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. October 14, 2013 6

Kursinfo - vad betyder de olika momenten? Föreläsning 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 Lektioner 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 Ungefär: 4-8 timmar bokad salstid per Fö+Le...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 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 October 14, 2013 7

Kursinfo - Examination 4HP = laborationer (del 1+2, duggor) + 2HP = projekt Examination genom 3 moment Labbar lämna in lösningar på labbuppgifterna 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) Komplettering möjlig (även för VG) vid två ytterligare tillfällen Duggor Två duggor måste få G på båda 3 ordinarie tillfällen per del + 1 uppsamlingstillfälle i slutet av kursen För VG på kursen måste ni få G under ordinarie tillfällen, dvs senast 5/12 resp. 30/1 Projekt 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: 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 October 14, 2013 8

Kursinfo - Labbar Vi använder Java 1.6 och Eclipse Helios Jobba två och två 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! 4 labbar med ett antal uppgifter vardera i del 1 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 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 October 14, 2013 9

Kursinfo Regler och deadlines Deadlines är strikta Rättning sker (kontinuerligt) inom ca 1 vecka, före ordinarie deadline (dvs före 6/12 för del 1) 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 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 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 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 October 14, 2013 10

Kursinfo vanliga frågor? Måste jag gå på föreläsningarna? 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 Det är jättemånga övningar måste jag göra alla? 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? 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? 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

Kursinfo - vad har hänt sen förra året? För mycket tid 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! För stort hopp mellan del 1 och 2, samt teori/praktik 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" 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 Infört 3 chanser per dugga under periodens gång Svårt att få hjälp och feedback på labbarna En assistent per sal Fler assistenter totalt = snabbare rättning Andra nyheter: Mer strikt parprogrammering - båda ska lära sig skriva kod October 14, 2013 12

"Veckoplan" - del 1 (se kurshemsidan) v. 42-43: 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 v. 44: Fö 4 + Le 3: Arrayer och loopar Labb 2 (4 timmar salstid) - bör vara inlämnad 1/11 v. 45: 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: 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: 6 timmar salstid - reservtid för att bli klar med labbarna i del 1 October 14, 2013 13

Varför programmering? October 14, 2013 14

Förstå systemet För att förstå ett system måste man förstå dess beståndsdelar! De flesta system idag innehåller mjukvara... 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... 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 October 14, 2013 15

Förstå systemutveckling och programmerare som yrkesgrupp 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 Systemutvecklingsprocessen är en sådan process Programmerarna är en sådan grupp av människor Hur kommunicerar vi med en programmerare? Förstå begrepp, metoder och problem. Leda bättre Bättre tidsuppskattningar Bättre kvalitetsuppskattningar Bättre möjlighet att följa upp och kontrollera processen October 14, 2013 16

Jobba med programmering Vissa av er kommer säkert tycka (eller tycker redan) att detta är jättekul! Analys och design Systemutveckling Testning Underhåll Programmering är ett hantverk Man lär sig genom att öva, öva och öva Mer än bara lösa problemet 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! October 14, 2013 17

Vad är ett program? Hur fungerar Java? October 14, 2013 18

Program som en samling instruktioner 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 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 October 14, 2013 19

Algoritmer sekvens med instruktioner Hur ska vi lösa ett visst problem? 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 Finns typiska algoritmer som kan återanvändas T ex sorteringsalgoritmer Exempel: Insättning på bankkonto Mata in insättningsbelopp och kontonummer Hämta saldo för det givna kontonumret Öka saldo med insättningsbelopp Spara det nya saldot October 14, 2013 20

Hur ska vi få datorn att utföra vår algoritm? 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! 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 October 14, 2013 21

Men... datorn pratar egentigen inte Java Programmet måste översättas till 1:or och 0:or = maskininstruktioner till datorns processor Två typer av programmeringsspråk De som kompileras direkt till maskinkod 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 Java är ett exempel Fördelar? Plattformsoberoende Nackdelar? Långsammare. Kräver rätt interpretator. October 14, 2013 22

Java-kompilering På hårddisken i förväg I minnet när vi exekverar programmet MittProgram.java class Tecken public static void main (String[] args) char tecken = 'B'; char tecken2 = 66;... MittProgram.class χλασσ Τεχκεν πυβλιχ στατιχ ϖοιδ µαιν (Στρινγ αργσ χηαρ τεχκεν = Β ; χηαρ τεχκεν2 = 66... 00001100 01001001 011... Kompilator Interpretator October 14, 2013 23

Javamiljön vi jobbar i Följande måste finnas 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) Jämför med MS Word: 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. October 14, 2013 24

Vanligt problem: låt inte Eclipse styra er!...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"! 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! October 14, 2013 25

Om Java 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!!...men kan man ett är det mycket lättare att lära sig ett annat October 14, 2013 26

Att programmera Analysera problemet Utforma algoritmen Skriva programmet Kompilera Exekvera Testa Viktigt om testning: 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 October 14, 2013 27

Ett första Javaprogram October 14, 2013 28

Ett Javaprogram namn och syntax Program måste skrivas och sparas på ett speciellt sätt Ett program måste skrivas enligt Javas syntax 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) 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 October 14, 2013 29

Tips: använd bara engelska alfabetet! Det går att använda svenska tecken när ni programmerar men... 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 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! använd engelska namn... eller använd svenska namn men "ta bort prickarna", t ex "anvand" istället för "använd" October 14, 2013 30

Ett Javaprogram Klasser och metoder Ett program består av en eller flera Java-klasser 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) -> Flera klasser = flera filer Filen måste ha samma namn som klassen + ändelsen.java Exempel: MittProgram.java innehåller klassen MittProgram Vi kommer att börja med enkla program som bara består av en klass = sparas i en enda fil Varje klass har normalt en eller flera metoder Metoderna innehåller instruktionerna som ska utföras October 14, 2013 31

Ett Javaprogram Metoden main main är huvudmetoden själva huvudspåret i programmet, där programmet börjar 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 Finns den inte får man ett felmeddelande Annars börjar exekveringen här 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 October 14, 2013 33

Kommentarer rader med text som hoppas över när programmet körs 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: // 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 October 14, 2013 34

Ett Javaprogram Exempel class Meddelande public static void main (String[] args) System.out.println( Lycka till! ); Varje instruktion du ger till datorn avslutas med ";" 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! ); 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 */ October 14, 2013 37

Eclipse October 14, 2013 38

Vad är Eclipse? En avancerad "texteditor" för programmeringsspråk Smarta funktioner för att underlätta programmering 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 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 October 14, 2013 39

Eclipse och Java 1.6 ladda ner (finns redan på labbdatorerna) Ladda ner och installera Eclipse (Helios finns på labbdator) http://www.eclipse.org/downloads/ Finns olika paket, välj antingen Eclipse classic eller Ett paket för Java developers och följ installationsinstruktionerna Vissa paket innehåller Java När du använder Eclipse tänk på att du alltid ska jobba i Java Perspective Ä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 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) 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 October 14, 2013 40

Skapa och köra ett första program inifrån Eclipse Skapa ett projekt i din workspace -mapp Högerklicka i Package explorer och välj New -> Java Project Ge projektet ett namn (t ex Labbar ) och klicka Finish Skapa en ny Java-klass i ditt projekt 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 Tänk på att göra koden begriplig genom... Kommentarer Indentering Testkör ditt program inifrån Eclipse Högerklicka på klass-filen och välj Run as Java Application Se resultatet och eventuella felmeddelanden i Eclipse:s console/terminalfönster October 14, 2013 41

Exekvering och felrapporter När ett program körs syns en röd markering (liknar rec på en videokamera) i överkant på Eclipse:s console 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 Fel = Exception ( undantag ) Felrapporter skrivs ut i Eclipse:s console Ö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 October 14, 2013 42

Exempel 1 och 2 i Eclipse October 14, 2013 43

Köra ett kompilerat program utanför Eclipse Leta rätt på den kompilerade filen Klassnamnet + ändelsen.class Kör programmet med kommandot java + klassnamnet Kör klassen i java-interpretatorn Letar efter en main metod inne i den kompilerade koden October 14, 2013 44

Köra exempel 1 och 2 utanför Eclipse October 14, 2013 45

Eclipse tutorials Att komma igång med Java i Eclipse video tutorial 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 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! October 14, 2013 46

Dags att börja programmera... October 14, 2013 47

Standardutmatning class Meddelande public static void main (String[] args) System.out.println("Lycka till!"); Punktnotation: <klassnamn>.<metodnamn> 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 " " October 14, 2013 48

Standardutmatning forts. System.out.println() skriv ut och avsluta raden System.out.print() skriv ut men stanna kvar på samma rad Delsträngar kan sättas samman med + 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

Exempel i Eclipse 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 October 14, 2013 51

Vad säger Eclipse? October 14, 2013 52

Är detta fel? class Meddelande public static void main (String[] args) System.out.println("Lycka till!"); 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 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 betyder radslut \t betyder tabb \ anger att ett reserverat tecken som kommer efter ska skrivas ut som det är October 14, 2013 54

Vi testar i Eclipse... October 14, 2013 55

Variabler Vad är en variabel? 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 namn En variabel har alltid en typ vilken sorts sak kan vi stoppa i lådan? Typer är t ex heltal, flyttal och tecken Vi måste bestämma oss vad vi vill lagra när vi skapar variabeln October 14, 2013 56

Variabler Tilldelning och uppdatering 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); October 14, 2013 57

Vi skapar några variabler i Eclipse... October 14, 2013 58

Variabler Konstanter 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; October 14, 2013 59 System.out.print("Timmar på ett dygn: " + TIMMAR);

Datatyper Översikt över grundläggande datatyper i Java: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/ datatypes.html byte short int long heltal - byte är "kortast" (minst), long är "längst" (störst) - vanligast: använd int float double flyttal/decimaltal - float är "kortast" (minst), double är "längst" (störst) - vanligast: använd double boolean char booleska värden, sanningsvärden - sant/falskt tecken - a, b c, 0, 4, %, #... October 14, 2013 60

Datatyper - Heltal byte positivt eller negativt heltal som bara tar upp en byte = 8 bitar Ligger mellan -128 och 127 short positivt eller negativt heltal som tar upp två byte = 16 bitar Ligger mellan -32 768 och 32767 int - positivt eller negativt heltal som tar upp fyra byte = 32 bitar Ligger mellan 2 147 483 648 och 2 147 483 647 long - positivt eller negativt heltal som tar upp åtta byte = 64 bitar Ligger mellan 9 223 372 036 854 775 808 och 9 223 372 036 854 775 807 October 14, 2013 61

Datatyper Heltal (forts.) 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); October 14, 2013 62

Vi testar i Eclipse... October 14, 2013 63

Datatyper - Flyttal float decimaltal som tar upp 4 byte minne 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 Exempel: float f1 = 1.23F; double decimaltal som tar upp 8 byte minne Talen lagras i tre delar (med basen 2): tecken mantissa exponent 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 October 14, 2013 64

Exempel med flyttal October 14, 2013 65

Datatyper booleska värden/ sanningsvärden För att representera sanningsvärden 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); October 14, 2013 66

Datatyper Tecken char datatyp för att lagra enskilda tecken som tar upp 2 byte minne 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. October 14, 2013 67

Unicode 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); Tecken skrivs inom ' ' medan textsträngar inom " " October 14, 2013 69

Vi testar i Eclipse... 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); Tecknet 0 (Unicode 48), heltalet 0, nolltecknet ("null" används för att markera en tom variabel Unicode 0) October 14, 2013 71

Tecken och siffror, exempel i Eclipse... October 14, 2013 72

Operationer - Heltal De fyra räknesätten: + - * / Resten vid heltalsdivision: % Tecken: + - Prioritet: 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 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); October 14, 2013 74

Vi testar i Eclipse... October 14, 2013 75

Operationer på tal (forts.) Flyttal Motsvarande som för heltal (utom % - nu kan vi lagra decimaltalet istället, dvs använda / direkt) Division med 0 Heltal: felmeddelande (undantag kastas) Flyttal: du får ett speciellt värde tillbaka +/- Infinity 0.0/0 ger svaret NaN (Not a Number) October 14, 2013 76

Operationer på en variabel öka variabel med ett värde (+=): a = a + 2 är samma som a += 2 öka med 1: a++ 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 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 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); October 14, 2013 78

Vi testar i Eclipse... 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); October 14, 2013 80

Ett exempel till i Eclipse... October 14, 2013 81

Vad händer egentligen vid en tilldelning? Först beräknas resultatet av det som står till höger om likamedtecknet... 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 October 14, 2013 82

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); i October 14, 2013 83

Exempel: "substitution" 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); October 14, 2013 84 i

Exempel: "substitution" 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); October 14, 2013 85 i c char

Exempel: "substitution" 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); October 14, 2013 86 i c char

Exempel: "substitution" 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); October 14, 2013 87 i c char

Exempel: "substitution" 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); October 14, 2013 88 i char c

Exempel: "substitution" 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); October 14, 2013 89 i char c

Exempel: "substitution" 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); October 14, 2013 90 i char c

Exempel: "substitution" 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); October 14, 2013 91 i char c

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; October 14, 2013 92 System.out.print("Resultat: " + resultat + " och " + resultat2); i int resultat2 double char c d double 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; October 14, 2013 93 System.out.print("Resultat: " + resultat + " och " + resultat2); i int resultat2 double char c d double 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; October 14, 2013 94 System.out.print("Resultat: " + 99 + " och " + 99.2); i int resultat2 double char c d double resultat int

Exempel: "substitution" class ExempelOperationer d int double public static void main (String[] args) resultat int i = 2; resultat2 double d= 2.2; int char c = 'a'; double int resultat = i + c; double resultat2 = d + c; System.out.print("Resultat: 99 och 99.2"); i char evabl45> Resultat: 99 och 99.2 c October 14, 2013 95

Vi stegar oss igenom programmet i Eclipse! October 14, 2013 96

Sammanfattning Varför programmering? 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 Vad är programmering? 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 Kompilator + interpretator behövs Utvecklingsmiljön vi använder är Eclipse Grunderna i Java Strukturen för ett program Klasser och klassbibliotek (Java API) Utmatning av textsträngar Grundläggande datatyper och variabler + operationer October 14, 2013 97

Nästa gång? Typomvandling Jämförelser Villkor och val Textsträngar mer avancerade operationer Mer om Javas klassbibliotek och att läsa Javadoc October 14, 2013 98

October 14, 2013 99