Föreläsning 1-2 innehåll

Relevanta dokument
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.

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 3-4 Innehåll

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

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

OOP Objekt-orienterad programmering

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

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 5-6 Innehåll

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Introduktionsmöte Innehåll

Algoritmexempel. Föreläsning 5-7 Innehåll. Summering Mönster. Summering Exempel: alternerande harmoniska serien

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

Objektorienterad programmering i Java

F4. programmeringsteknik och Matlab

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

SMD 134 Objektorienterad programmering

Föreläsning REPETITION & EXTENTA

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

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

EDAA01 Programmeringsteknik - fördjupningskurs

Tentamen OOP

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

Programmering A. Johan Eliasson

TDDC77 Objektorienterad Programmering

TDIU01 - Programmering i C++, grundkurs

Objektorienterad Programmering (TDDC77)

Föreläsning 9-10 Innehåll

Undervisning. Examination

Kompilera och exekvera Javakod

JAVAUTVECKLING LEKTION 4

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

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

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 7-8 Innehåll

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

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

Föreläsningsmaterial (Syntax och variabler)

"if"-satsen. Inledande programmering med C# (1DV402)

OOP Objekt-orienterad programmering

Undervisning. Examination

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

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Typkonvertering. Java versus C

Planering Programmering grundkurs HI1024 HT TIDAA

Tentamen, EDAA10 Programmering i Java

Objektorienterad Programmering (TDDC77)

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

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

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

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

Planering Programmering grundkurs HI1024 HT 2014

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

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

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

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

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

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

Föreläsning 1 Innehåll

Laboration 1. Objektorienterad programmering, Z1. Syfte

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

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

Planering Programmering grundkurs HI1024 HT data

Tentamen i Programmering

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

Användarhandledning Version 1.2

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

Objektorienterad Programmering (TDDC77)

(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

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Grundläggande programmering

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

OOP Objekt-orienterad programmering

Övning2. Variabler. Data typer

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

DD1314 Programmeringsteknik

EDAA30 Programmering i Java - fortsättningskurs

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

Redovisning av inlämningsuppgifter

OOP Objekt-orienterad programmering

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Tentamen , Introduktion till Java, dtaa98, dtea53

Programmeringsteknik I

Chapter 4: Writing Classes/ Att skriva egna klasser.

Inledande programmering med C# (1DV402) Summera med while"-satsen

Transkript:

Föreläsning 1-2 innehåll Om kursen Kursens mål och innehåll Praktisk information om kursen Programmering program, algoritmer variabler, datatyper och tilldelningssatser läsa in värden från tangentbordet, skriva ut på skärmen aritmetiska uttryck alternativ och loopar anropa metoder slumptal Datavetenskap (LTH) Föreläsning 1-2 HT 2018 1 / 60

EDAA20 Programmering och databaser Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se cs.lth.se/edaa20 moodle.cs.lth.se Datavetenskap (LTH) Föreläsning 1-2 HT 2018 2 / 60

Detta ska du lära dig Mål Programmering: Lösa problem med hjälp av dator Grundläggande programmering Grundläggande objektorientering och programspråket Java Databaser: Lagra data i relationsdatabaser Använda SQL för att hämta data från databaser Datavetenskap (LTH) Föreläsning 1-2 HT 2018 3 / 60

Varför är detta viktigt att kunna Programmeringskunskaper efterfrågas mer och mer. Kanske kommer du att samarbeta med programmerare (som kollega, kund,...). läsa fler kurser inom programmering. jobba med programmering. Förkunskaper till andra kurser, t ex Geografisk informationsteknik. Problemlösning Du kommer att träna på att lösa problem och formulera algoritmer - kunskaper du kommer att ha nytta av även i andra sammanhang. Allmänbildning Vad är egentligen ett datorprogram? Vad menas med algoritm? Demokratiproblem om bara några enstaka känner till detta. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 4 / 60

Undervisning Programmering: Föreläsningar 14 st Datorlaborationer (obligatoriska) 11 st på 14 tillfällen Övningsuppgifter (finns på Moodle) Resurstider Delmålskontroll (läsvecka 3) Databaser: Föreläsningar 2 st Laborationer (obligatoriska) 2 st Seminarieövning (obligatorisk) 1 st Datavetenskap (LTH) Föreläsning 1-2 HT 2018 5 / 60

Examination Skriftlig tentamen Kursen inrapporteras i Ladok i tre delar Programmering, obligatoriska moment 3 hp Databaser, obligatoriska moment 1.5 hp Programmering, tentamen 3 hp Datavetenskap (LTH) Föreläsning 1-2 HT 2018 6 / 60

Kursbok och kursmaterial Allen B. Downey & Chris Mayfield: Think Java. http://greenteapress.com/wp/think-java/ Kan läsas på nätet (interaktiv version), laddas ner (pdf, gratis) eller köpas (bok). Övrigt kursmaterial: Föreläsningsbilderna finns i veckoschemat på Moodle Laborationsuppgifter PM om programutvecklingsmiljön Eclipse Övningsuppgifter finns på Moodle Java snabbreferens (tillåtet hjälpmedel på tentan) Allt material finns på cs.lth.se/edaa20 eller moodle.cs.lth.se Datavetenskap (LTH) Föreläsning 1-2 HT 2018 7 / 60

CEQ-synpunkter Överlag nöjda studenter Några CEQ-kommentarer från förra kursomgången. Laborationerna var mycket intressanta och givande! Det är kul att kunna programmera men det är svårt. Labbarna tar alldeles för mycket tid. Det krävdes mycket tid att förbereda, och även om man kom dit mycket förbered så hann man ändå inte klart. Kämpigt att läsa denna kurs på en läsperiod då det tar lång tid att komma in i det annorlunda programmeringstänket. På CEQ-mötet framkom synpunkter på schemat. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 8 / 60

Nytt sedan förra kursomgången Delvis nya labbar. Bland annat är en större lab ersatt av två nya mindre. Man får jobba två och två på alla labbarna (förra året bara i andra halvan av kursen). Bra att ha någon att diskutera med. Interaktiva övningsuppgifter att lösa på dator (istället för papper och penna-övningar). Bättre schema med en dag mellan de båda labbtillfällena. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 9 / 60

Kommunikation Webbsida: http://cs.lth.se/edaa20 Information om kursen (kursplan, schema, extentor...) Anmälan till laborationsgrupper Moodle: moodle.cs.lth.se Veckoschema med läsanvisningar Övningsuppgifter E-post: Kursansvarig: anna.axelson@cs.lth.se Mail kommer vid behov att skickas till din student-mail. Frågor, problem? Tveka inte att ställa frågor (på föreläsningarna, på resurstiderna, laborationer, även mellan undervisningstillfällena...) Datavetenskap (LTH) Föreläsning 1-2 HT 2018 10 / 60

Om att lära sig programmera Programmering är kul! Programmering tar tid (fundera ut lösningar, hitta fel...). Man lär sig programmera genom att träna. Skriv program, testa, hitta på egna program, experimentera... Men inte bara - glöm inte bort teorin. Starten är viktig. Häng med från början! Det man lär sig kommer att byggas på och användas genom hela kursen. De olika undervisningsmomenten (labbar, övningsuppgifter, föreläsningar...) finns av en anledning och kompletterar varandra. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 11 / 60

Program Ett datorprogram är stegvisa instruktioner till datorn som beskriver hur ett problem ska lösas. I instruktionerna manipuleras information (data) Instruktionerna skrivs i ett programspråk, t ex Java. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 12 / 60

Exempel på ett Javaprogram public class Hello { public static void main(string[] args) { System.out.println("Hello world!); } } Duy behöver inte alls förstå alla detaljer i detta program. Men kanske kan du ana att texten Hello world! skrivs ut på datorns skärm. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 13 / 60

Programkod Programmet på förra bilden är skrivet i Java. Java är ett högnivåspråk (kan läsas och förstås av oss människor). Denna kod kallas källkod (eng. source code) och lagras i en fil med tillägget.java. Innan programmet kan köras (exekveras) måste det översättas till enklare instruktioner som går att köra i datorns processor (CPU). Java-programmet översätts (kompileras) till bytekod som sedan interpreteras i processorn. Denna kod lagras i en fil med tillägget.class. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 14 / 60

Editera - kompilera - exekvera Editera Skriv programmet (källkoden) i en fil vars namn har tillägget.java. Kompilera Programkoden kontrolleras. Om koden är korrekt (dvs. inte bryter mot språkets grammatik) översätts den till bytekod. Bytekoden lagras i en fil vars namn har tillägget.class. Exekvera Programmet körs, dvs. bytekodsinstruktionerna i programmet utförs. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 15 / 60

Editera - kompilera - exekvera Editera Hello.java Kompilera Rätta kompileringsfel Hello.class Exekvera Rätta exekveringsfel, logiska fel, ändra... Datavetenskap (LTH) Föreläsning 1-2 HT 2018 16 / 60

Programmet delas upp i klasser och metoder Större datorprogram måste delas upp i hanterliga delar. Man kan inte hålla tusentals programrader i huvudet samtidigt! I Java delar man upp programmet i klasser. En klass kan innehålla flera metoder. En metod är en sekvens av satser. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 17 / 60

Exempel på ett Javaprogram Metoden main klass metod public class Hello { public static void main(string[] args) { System.out.println("Hello world!"); } } satser Det måste finnas en klass med en main-metod. Satserna i main-metoden utförs i tur och ordning när programmet exekveras. (I exemplet finns bara en enda sats.) Datavetenskap (LTH) Föreläsning 1-2 HT 2018 18 / 60

Att skriva program Att skriva program innebär bl.a. att sätta sig in i det problem man ska lösa. dela upp problemet i mindre delar. sätta sig in i färdigskriven kod som ska felsökas eller ändras. skissa på en lösning (på papper, på dator, svenska, pseudokod). välja bland färdiga klasser att använda i programmet. välja bland färdiga algoritmer för att lösa ett delproblem (t.ex. söka bland data) eller formulera egna algoritmer. skriva programkod. Man skriver inte programmet rad för rad uppifrån och ned. Tips! Utgå från ett litet program (som programmet Hello) och ändra och utöka efter hand. Då har du alltid ett program som fungerar. Testa ofta. Använd debugger för att felsöka och för att förstå vad som händer i programmet. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 19 / 60

Algoritm En algoritm är en följd av instruktioner som beskriver hur man ska göra för att stegvis lösa ett problem. Exempel: matrecept beskrivning för att montera en möbel beskrivning (på svenska eller pseudokod) hur man löser ett delprolem, t.ex. hitta minsta, beräkna summa, söka... programkod... Datavetenskap (LTH) Föreläsning 1-2 HT 2018 20 / 60

Exempel på en algoritm Problem: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan. Algoritm: Tal nr 1 är 12.5 Tal nr 2 är 0.7 Summan = tal nr 1 + tal nr 2 Skriv ut summan Datavetenskap (LTH) Föreläsning 1-2 HT 2018 21 / 60

Exempel på programkod Problem: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan. Programkod: double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 22 / 60

Exempel på ett Javaprogram public class Calculator { public static void main(string[] args) { double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); } } Programmet beräknar beräknar summan av två tal och skriver ut summan på datorns skärm. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 23 / 60

Variabel Variabler används för att lagra värden som programmet måste komma ihåg. Variabler är ett namngivet utrymme i datorns minne. Variablerna måste deklareras. Variabler har ett namn. Variabler har en datatyp som talar om vilka slags värden som kan lagras i variabeln. datatyp namn Exempel: double nbr1; nbr1 Datavetenskap (LTH) Föreläsning 1-2 HT 2018 24 / 60

Datatyper De data som behandlas i ett program är av olika typer, t.ex. heltal, flyttal, teckensträngar... Exempel: int sum = 0; double d = 12.7; boolean ready = false; char blank = ; String s = "Hej"; sum d ready blank s 0 12.7 false ' ' "Hej" Datavetenskap (LTH) Föreläsning 1-2 HT 2018 25 / 60

Primitiva datatyper Primitiva datatyper börjar med gemen (liten bokstav). innehåller ett enda värde, ett heltal, ett flytttal, ett tecken eller ett logiskt värde. byte heltal (-128...+127) short heltal (-32768...+32767) int heltal (-2147483648...+2147483647) long heltal (ca -9*1018... +9*1018) float flyttal tal (tal med decimaldel) double flyttal tal (tal med decimaldel) boolean logiska värden (true eller false) char tecken Datavetenskap (LTH) Föreläsning 1-2 HT 2018 26 / 60

Tilldelningssats I en tilldelningssats ger man en variabel ett nytt värde. Exempel: nbr1 = 12.5; variabel uttryck Deklaration och tilldelning kan göras i samma sats. Exempel: double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; nbr1 nbr2 sum 12.5 0.7 13.2 Variabeln och uttrycket måste ha samma typ (några undantag finns). I Java betyder = tilldelas (inte lika med). Datavetenskap (LTH) Föreläsning 1-2 HT 2018 27 / 60

Variabler i datorns minne Variablernas värden lagras i datorns primärminne. Minnet är uppdelat i olika minnesceller. Vid deklarationen av en variabel reserveras det plats för variabeln i minnet. Vid tilldelning läggs variabelns värde i motsvarande minnescell/er.... nbr1 12.5 nbr2 0.7 sum 13.2... När en variabel används hämtas dess värde från minnet. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 28 / 60

Övning Tilldelningssatser Vilka värden har variablerna när följande satser exekverats: int u, x, y, z; x = 10; y = 2 * x + 1; z = (y + x) + (y - x); x = x + 1; u x y z Datavetenskap (LTH) Föreläsning 1-2 HT 2018 29 / 60

Aritmetiska uttryck Uttryck talar om hur värden ska beräknas. Aritmetiska operatorer: + addition subtraktion * multiplikation / division % rest vid heltalsdivision Exempel: 2 * (x + y) - 10 Datavetenskap (LTH) Föreläsning 1-2 HT 2018 30 / 60

Heltalsdivision och rest a / b ger ett heltal som resultat om både a och b är heltal. Exempel: 17 / 3 är lika med 5 (heltalsdivision) 17 % 3 är lika med 2 (rest vid heltalsdivision) 3 personer ska rättvist dela på 17 kakor. Alla får 5 kakor var och 2 kakor blir över. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 31 / 60

Övning Heltalsdivision och rest Komplettera följande programkod så att variabeln lastdigit tilldelas sista siffran i nbr. int nbr = 2547; int lastdigit = Datavetenskap (LTH) Föreläsning 1-2 HT 2018 32 / 60

Konvertering mellan int och double Ett int-värde får plats i en variabel av typen double: double d = 42; Tvärtom går inte utan konvertering eller avrundning: Konvertering till int: double d = 42.87; int a = (int) d; // talet avkortas till 42 Avrundning till närmaste heltal: double d = 42.87; int b = (int) Math.round(d); // talet avrundas till 43 Metoden round ger ett resultat av typen long som måste konverteras till typen int. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 33 / 60

Objektorientering Större program innehåller flera klasser och flera metoder. Det finns många färdiga klasser och metoder i Java. Andra klasser skriver man själv. Java är ett objektorienterat språk. Ett program kan ses som en modell av verkligheten. När man delar upp programmet i klasser utgår man från de verkliga saker (objekt) som finns i problemet. I programmet skriver man klasser som beskriver dessa objekt. Klasserna innehåller variabler som beskriver objekten samt metoder för att arbeta med dem. Exempel: I ett program som hanterar kvadrater kan det finnas en klass Square med en metod getarea innehållande satser för att beräkna kvadratens area. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 34 / 60

Exempel på program med objekt public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); System.out.println(sq.getArea()); } } Försök lista ut vad som händer när man kör programmet? Du behöver inte alls förstå alla detaljer ännu. Vi kommer till detta senare i kursen. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 35 / 60

Programmet Calculator Förbättrad version import java.util.scanner; public class Calculator { public static void main(string[] args) { System.out.println("Skriv två tal"); Scanner scan = new Scanner(System.in); double nbr1 = scan.nextdouble(); double nbr2 = scan.nextdouble(); double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); } } Ny version av programmet Calculator där vi kan summera två godtyckliga tal som användaren skriver på tangentbordet. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 36 / 60

Inläsning från tangentbordet Skapa först en Scanner-objekt som ska användas för att läsa från tangentbordet: Scanner scan = new Scanner(System.in); Med scan.nextdouble() läser man nästa tal (av typen double) som skrivs på tangentordet: nbr1 = scan.nextdouble(); nbr2 = scan.nextdouble(); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 37 / 60

Import-sats Genom att skriva en import-sats först i filen talar vi om att vi kommer att använda en klass från ett klasspaket (en samling redan färdiga klasser). import java.util.scanner; I det här exemplet importeras klassen Scanner som används för inläsning från tangenbordet. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 38 / 60

Utskrift i konsolfönstret Utskrift av en teckensträng (omges av citattecken): System.out.println("Skriv två tal"); Utskrift av en variabels värde (OBS! inga citattecken): System.out.println(sum); Flera saker kan skrivas ut i samma println-sats (med + mellan). System.out.println("Summan av talen är " + sum); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 39 / 60

Läsliga program Detta är ett korrekt Java-program, men... import java.util.scanner;public class p {public static void main(string[] args) {System.out.println("Skriv två tal"); Scanner a=new Scanner(System.in);double b=a.nextdouble(); double c=a.nextdouble();double d=b+c;system.out.println( "Summan av talen är "+d);}} Tänk på att skriva läsliga program: Välj vettiga namn på klasser och variabler. Klassnamn ska starta med versal (stor bokstav) och namn på variabler med gemen (liten bokstav). Gör ordentliga indragningar så att man ser vilka satser som hör till vad. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 40 / 60

Alternativ if Exempel Vad händer om man kör följande satser: Scanner scan = new Scanner(System.in); int nbr1 = scan.nextint(); int nbr2 = scan.nextint(); if (nbr2!= 0) { System.out.println("Kvoten mellan talen är " + (nbr1 / nbr2)); } else { System.out.println("Du försökte dividera med 0."); } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 41 / 60

Alternativ if Mönster if (villkor) { satser; } // utförs om villkoret är uppfyllt if (villkor) { satser; } else { satser; } // utförs om villkoret är uppfyllt // utförs annars if (villkor 1) { satser; // utförs om villkor 1 är uppfyllt } else if (villkor 2) { satser; // utförs annars om villkor 2 är uppfyllt } else { satser; // utförs annars } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 42 / 60

Övning if-sats Komplettera if-satsen så att texten negativt, 0, positivt skrivs ut beroende på det inlästa talets värde. Scanner scan = new Scanner(System.in); int n = scan.nextint(); if (n < 0) { System.out.println("negativt"); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 43 / 60

Repetition ett bestämt antal gånger for Exempel Vad händer om man kör följande satser: Scanner scan = new Scanner(System.in); int sum = 0; for (int i = 1; i <= 5; i++) { sum = sum + scan.nextint(); } System.out.println(sum); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 44 / 60

Repetition ett bestämt antal gånger for Mönster Utförs för i-värdena start, start+1, start+2,..., slut. for (int i = start; i <= slut; i++) { satser; } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 45 / 60

Övning for-sats Skriv satser för att skriva ut 50 asterisker (*): Skriv satser för att beräkna och skriva ut summan 1 + 2 + 3 + 4 +... + 10 Datavetenskap (LTH) Föreläsning 1-2 HT 2018 46 / 60

Summering Algoritm Uppgift: Beräkna summan av ett antal termer. Lösning: Deklarera och nollställ en variabel som håller reda på det aktuella värdet av summan. Gå sedan igenom termerna en efter en och addera varje term till summan. Algoritmen i pseudokod: sum = 0; för alla termer { sum = sum + term; } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 47 / 60

Repetition ett okänt antal gånger while Exempel Scanner scan = new Scanner(System.in); int sum = 0; while (scan.hasnextint()) { sum = sum + scan.nextint(); } System.out.println(sum); Repetitionen avslutas när något som inte kan tolkas som ett heltal läses in. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 48 / 60

Repetition ett okänt antal gånger while Mönster Utförs så länge ett villkor är uppfyllt: while (villkor) { satser; } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 49 / 60

Logiska uttryck Villkoret i if-satser och while-satser är ett logiskt uttryck. Logiska uttryck har värdet true eller false. Villkoret kan bestå av flera delvillkor. Exempel: n >= 1 && n <= 10 Logiska operatorer: && och eller! icke I jämförelser mellan t.ex. tal används < <= == >= >!= == betyder lika med.!= betyder skilt från. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 50 / 60

Diskutera Programmet nedan läser ett heltal och skriver ut dess kvadratrot. Vi har skrivit en main-metod med satser för att lösa problemet. I dessa satser anropar vi andra metoder som som löser delproblem åt oss. Vad heter metoderna som anropas? public class ComputeSquareroot { public static void main(string[] args) { Scanner scan = new Scanner(System.in); System.out.println("Skriv ett tal"); double nbr = scan.nextdouble(); double squareroot = Math.sqrt(nbr); System.out.println(squareroot); } } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 51 / 60

Anropa metoder Argument När man anropar en metod ska noll till flera argument skickas med. Argumenten är värden som metoden behöver för att fullfölja sin uppgift. Antal argument och argumentens typer framgår av metodens dokumentation Exempel: double sqrt1 = Math.sqrt(20.5); double sqrt3 = Math.sqrt(5 + 14.7 * 3); double nbr = 42.0; double sqrt2 = Math.sqrt(nbr); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 52 / 60

Anropa metoder Dokumentation Hur kan man veta att man ska skriva Math.sqrt(20.5) för att beräkna 20.5? Vi måste få reda på att det finns en klass Math med en metod sqrt. hur många värden, argument, som ska skickas med till metoden. ifall metoden returnerar ett värde (och vilken typ i så fall) eller ej. Math är en Javas standardklasser och vi kan hitta informationen i Javas dokumentation på nätet: Metoden returnerar ett värde av typen double Ett värde av typen double ska skickas med som argument Datavetenskap (LTH) Föreläsning 1-2 HT 2018 53 / 60

Diskutera Studera anropen av metoderna nextdouble och sqrt. Likheter/skillnader? public class ComputeSquareroot { public static void main(string[] args) { Scanner scan = new Scanner(System.in); System.out.println("Skriv ett tal"); double nbr = scan.nextdouble(); double squareroot = Math.sqrt(nbr); System.out.println(squareroot); } } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 54 / 60

Anropa metoder Vissa metoder kan anropas utan att man har skapat något objekt: double sqrt1 = Math.sqrt(20.5); Dessa metoder kallas statiska metoder. Före punkten står klassnamnet. Andra metoder anropas på objekt: Scanner scan = new Scanner(System.in); double nbr = scan.nextdouble(); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 55 / 60

Övning I klassen Math finns följande metod: Skriv sats/er för att beräkna och skriva ut 4.2 upphöjt till 5. Datavetenskap (LTH) Föreläsning 1-2 HT 2018 56 / 60

Klassen Random En annan användbar klass är Random som har metoder för att generera slumptal: Exempel: Random rand = new Random(); if (rand.nextdouble() < 0.5) { System.out.println("krona"); } else { System.out.println("klave"); } Datavetenskap (LTH) Föreläsning 1-2 HT 2018 57 / 60

Övning Kasta tärning Komplettera koden med sats/er för att dra och skriva ut ett slumptal i intervallet [1,6]. Random rand = new Random(); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 58 / 60

Övning Kasta tärning - repetition Komplettera koden med satser för att kasta tärning tills det blir en 6:a (dvs. dra ett slumptal i intervallet [1,6] till resultatet blir 6). Antal kast som krävdes ska räknas och skrivas ut. Random rand = new Random(); Datavetenskap (LTH) Föreläsning 1-2 HT 2018 59 / 60

Checklista Exempel på vad du ska kunna Förklara begreppen: algoritm, program, källkod, kompilering, exekvering variabel, datatyp, tilldelningssats metod, argument Förstå att programkod delas upp i klasser, metoder, satser Skriva enkla program: deklarera variabler och tilldela dem värden läsa in värden från tangentbordet, skriva ut på skärmen använda if-, for- och while-satser läsa dokumentation och anropa metoder använda metoder i Random för att dra slumptal Editera, kompilera och exekvera program Datavetenskap (LTH) Föreläsning 1-2 HT 2018 60 / 60