725G61 - Laboration 1 Variabler och villkorssatser. Johan Falkenjack

Storlek: px
Starta visningen från sidan:

Download "725G61 - Laboration 1 Variabler och villkorssatser. Johan Falkenjack"

Transkript

1 725G61 - Laboration 1 Variabler och villkorssatser Johan Falkenjack October 16, 2013

2 1 Inledning till labbarna Any sufficiently advanced technology is indistinguishable from magic. - Arthur C. Clarke Citatet ovan speglar mångas upplevelse när de för första gången försöker lära sig att programmera, jag kan inte förneka att jag kände just så. Tanken är att när den här kursen är slut ska åtminstone den tyngsta mystiken skingrats och några av er kommer kanske till och med känna er som magiker. Ärligt talat händer det att jag gör det ibland när jag programmerar. De här labbarna är skrivna specifikt för kursen 725G61 Programmering, grundkurs för Systemvetenskapliga programmet vid LiU. De förutsätter ingen tidigare erfarenhet av programmering men antar att laboranten sedan tidigare har grundläggande datorvana. Om man har programmerat tidigare kan de första labbarna upplevas som väldigt grundläggande och väldigt pratiga. Detta är för att att ge nybörjarna en grund att stå på. Längre fram i labbserien kommer mängden förklaringar minska och ni kommer i större utsträckning förväntas hitta lösningarna själva. Många som aldrig programmerat tidigare vill få allting serverat för sig a la "Detta är våra komponenter och detta är hur vi använder dem". Det är inte möjligt i en Java-kurs. Java är ett enormt kraftfullt verktyg och som sådant är det också väldigt omfattande och tidivis komplicerat. Därför är det viktigt att ni, så fort ni lärt er det mest grundläggande, lär er hur ni själva hittar mer information. Jag som skriver dessa labbar har själv kodat i Java i flera år och det går sällan en dag utan att jag googlar på åtminstone något, det är så det är att vara programmerare. Jag kommer alltså att referera till Google vid ojämna mellanrum i labbarna för att ni själva ska få söka reda på lösningen till ett problem. Java har också ett standardbibliotek som finns dokumenterat med så kallad JavaDoc här: Ofta är första sökträffen på Google en länk till just denna källa. På vissa ställen i labbarna står det att ni ska kopiera och klistra in kod i Eclipse, ibland kan det bli struligt med formateringen i PDF-dokument så kontrollera att det alltid ser rätt ut när ni kopierar. 1.1 Övningar och Uppgifter I labben finns både Övningar och Uppgifter. Övningar är till för att ni ska få testa och experimentera med Java, ni behöver dock inte lämna in den kod ni skriver för övningarna, ofta handlar det om att testköra och reflektera över given kod. Uppgifter däremot måste lösas och lämnas in för rättning. Är ni vana vid programmering, och speciellt vid Java, så måste ni kanske inte göra alla övningar men jag rekommenderar er att göra så många som möjligt. 1

3 1.2 Språk Jag rekommenderar starkt att man skriver sin kod "på engelska" oavsett vilket språk programmet i sig använder. Det betyder t.ex. att variabel- och metodnamn samt kommentarer bör vara på engelska. Faktisk interaktion med användaren kan vara på svenska när vi väl kommer till det i labb 3 och i projektet. Anledningen till att man bör hålla sig till engelska i koden är dels att alla inbyggda kommandon är på engelska och man vill ha koden så konsekvent som möjligt och dels att Java kan få problem med Å, Ä och Ö. 2 Ett första Java-program 1 public class HelloWorld { 2 3 public static void main(string[] args) { 4 //Print Hello World! 5 String greeting = "Hello World!"; 6 System.out.println(greeting); Ovan har vi ett första enkelt Java-program. Det kan verka rörigt vid första anblick men de flesta delar ovan kan ni ta för givna och de kommer förklaras en efter en allt eftersom kursen fortskrider. En kort beskrivning kommer nedan men få inte panik om ni inte förstår särskilt mycket så här tidigt i kursen. Det första vi gör är att skapa en klass som vi döper till HelloWorld. Alla program i Java representeras av en eller flera klasser och varje kodfil innehåller en enda klass 1. Större Java-program med flera klasser består alltså nödvändigtvis av flera filer. Det är inte ovanligt att Java-program i industrin har hundratals eller tusentals klasser. Det som står på rad 1 är en klassdeklaration och det som står inom måsvingarna ({) är klassens kropp. Kroppen består av en enda metod som heter main. För att en klass ska kunna köras, dvs kunna utgöra "framsidan" av ett program måste det finnas en mainmetod. Vad public static void betyder går vi inte in på här men det behövs för alla main-metoder. Efter metodnamnet (main) finns en parentes där metodens parametrar eller argument (termerna används normalt som synonymer) står. Alla main-metoder har samma parametrar, en array av String som heter args. Precis som för klassen så börjar metoden med en deklaration, på rad 3, följt av en kropp inom måsvingar. Main-metodens kropp består av tre rader. Den första raden, rad 4, består av en kommentar. Kommentarer ignoreras av Java när koden körs och finns med för att dokumentera koden. Att lära sig skriva bra och hjälpfulla kommentarer 1 En sanning med modifikation men för den här kursen kan vi anta att så är fallet. 2

4 är viktigt och gör koden mycket mer lättläst och lätt att underhålla. Man kan också skriva en flerradskommentar, även kallad blockkommentar genom att omge den text man vill utkommentera med /* och */. På rad 5 skapar vi en variabel, greeting, av typen String med innehållet "Hello World" och på rad 6 anropar vi den inbyggda metoden System.out.println som skriver ut innehållet i variabeln greeting på skärmen följt av en radbrytning. När programmet körs kommer alltså "Hello World!" skrivas ut på skärmen. Verkade det krångligt? Ta det lugnt, i den första labben behöver ni bara intressera er för det som hände på rad 4 och 5, vi kommer också titta på villkorssatser, mer om det senare. UPPGIFT 1.1 Starta Eclipse och skapa ett första projekt. Skapa sedan en ny klass i det nya projektet som heter Uppgift1. Som ni märker kommer klassdeklarationen och måsvingarna för klassens kropp genereras automatiskt. Skriv en main-metod som ser ut precis som i exemplet ovan. Kör sedan koden och kolla att "Hello Wold!" skrivs ut i fönstret längst ner i Eclipse. Var inte rädda för att experimentera eller för att fråga assistenterna om hjälp med att komma igång. Övning 1.1 Följande Javaprogram kompileras och exekveras: // a Java program class Message { public static void main (String[] args) { System.out.println("Good luck!"); /* System.out.println("Good luck!"); System.out.println("Good luck!"); */ //a message Vilken utskrift skapas när programmet exekveras? Varför? (Försök att fundera ut det innan du kör programmet - kolla sedan om du hade rätt genom att köra det!) Vad händer om ni tar bort block-kommentaren? 3

5 Övning 1.2 Skapa ett program som skriver ut följande meddelande (med en tom rad emellan): Programming is fun! Soon I will be able to program really well! 3 Variabler Variabler är en av programmeringens viktigaste grundstenar. En variabel kan betraktas som en behållare som innehåller någon typ av värde. En typ av variabel som ni alla stött på tidigare är de x som brukar förekomma i polynom i gymnasiematematiken, t.ex. x+3. Ordet variabel antyder att behållarens värde är variabelt, dvs det kan ändras. I polynomet ovan kan vi t.ex. bestämma att x ska vara 1 vilket ger polynomet värdet 4 men vi kan också säga att x ska vara 4 vilket ger uttrycket värdet 7. I programmering kan dock en variabel innehålla så mycket mer än bara ett siffervärde, t.ex. kan en variabel också innehålla ett tecken som a, b eller c, eller ett namn som "Lisa" eller en hel datastruktur som representerar t.ex. en fiende i ett spel. I Java måste man som programmerare själv säga vilken typ av värde en viss variabel kan innehålla. Man måste också namnge en variabel innan den kan användas. Detta kallas att deklarera en variabel. I Java kan en typisk variabeldeklaration se ut på följande sätt: 1 //Declare integer variable anumber 2 int anumber; I koden ovan ser vi två rader. Den första raden är bara en kommentar som ignoreras av Java. Den andra raden är den faktiska deklarationen. Först kommer "int" som säger att variabeln ska ha typen heltal (efter engelskans integer), sedan "anumber" som blir namnet på vår variabel, sedan ett semikolon (;) som avslutar raden. Alla uttryck i Java måste avslutas med ett semikolon. Att bara ha en variabel är ju inte så intressant dock vi vill ju lagra något i vår variabel. Att lagra ett värde i en variabel kallas att tilldela variabeln ett värde. Första gången en variabel tilldelas ett värde säger man att den initieras. 1 //Declare and initialize at the same time: 2 int anumber = 1; 3 //Declare: 4 int anothernumber; 5 //Initialize: 6 anothernumber = 3; 4

6 I koden ovan deklarerar vi två variabler, anumber och anothernumber. På rad 2 tilldelas variabeln anumber värdet 1 i samband med att variabeln deklareras, variabeln anothernumber deklareras först på rad 4 och får sedan värdet 3 på rad Regler för variabelnamn Variabler kan inte innehålla mellanslag eller andra tecken än bokstäver och siffror. De kan dock inte börja på en siffra och börjar alltid med liten bokstav även om stora bokstäver kan förekomma senare i variabelnamnet. Variabler med sammansatta namn skrivs i Java med sk camel case, t.ex. numbertoadd för ett tal som ska läggas till ett annat tal. Hur ska man namnge sina variabler då? I de här labbarna kommer ni stöta på många variabler som heter i, c1, n osv. Dessa namn är praktiska i exempel men i verkliga program är det viktigt att variabelnamn är semantiskt logiska. Dvs de ska vara namngivna utifrån den funktion de uppfyller i programmet. En variabel som innehåller ett namn bör t.ex. heta name, personname, customername eller liknande beroende på vad variabeln innehåller och hur den ska användas. 3.1 Typer Alla värden och alla variabler i Java har en specifik typ. Hittills i labben har vi stött på två typer, int, för heltal, och String, för textsträngar. När en variabel deklareras måste man säga vilken typ variabeln ska ha. I Java finns 8 så kallade primitiva datatyper, 4 olika heltalstyper, 2 flyttalstyper (för decimaltal), 1 sanningsvärdestyp och 1 teckentyp Heltal Datatyperna byte, short, int och long används för att representera heltal. Byte tar minst plats i datorns minne men kan också bara representera tal mellan -128 och 127, long tar mest plats men kan också representera störst tal. Övning 1.3 Skapa en ny klass som heter Test3. Skapa sedan en main-metod i vilken ni skapar två heltalsvariabler med värden ni hittar på själva. Skriv sedan ut summan av dessa med hjälp av System.out.println(). Summan av två heltal kan beräknas med additionsoperatorn +, t.ex.: 1 + 2; Skriv sedan ut resultaten av att använda de andra aritmetiska operationerna, - (subtraktion), * (multiplikation) och / (division). Använd sedan tilldelning för att byta värden på variablerna. Välj värden så att divisionen inte går jämnt ut och skriv ut de fyra beräkningarna en gång till. Vad händer när divisionen inte går jämnt ut? 5

7 Övning 1.4 Skapa följande program: class OperationsOnAVariable { public static void main (String[] args) { int a = 4; int b = 6; int c = 10; int d = 12; b = b + a; c -= b; d /= a; a = a * 10; a %= 7; System.out.println(a+" "+b+" "+c+" "+d); Vilken utskrift får du när du exekverar det här programmet? Försök räkna ut i förväg vad programmet kommer att skriva ut, kontrollera sedan om ni hade rätt genom att köra programmet Flyttal Datatyperna float och double används för att representera decimaltal. Dessa representeras internt som så kallade flyttal och därför kallas decimaltal oftast för flyttal när programmerare pratar med varandra. Double tar dubbelt så stor plats som float men har å andra sidan dubbelt så stor precision, dvs man kan representera dubbelt så många decimaler. Flyttal är inte exakta och man kan få allvarliga avrundningsfel när man använder flyttal, därför använder man sällan dessa i verkliga applikationer där exakta beräkningar är viktigt, t.ex. för vetenskapliga beräkningar eller pengar. För våra syften i den här kursen duger de dock gott och väl. Övning 1.5 Skapa en ny klass som heter Test5. Gör samma sak som i Övning 3 fast med flyttal. Vad händer med divisionen som inte gick jämnt ut? 6

8 UPPGIFT 1.2 Skapa en ny klass som heter Uppgift2 och en main-metod. Skapa en heltalsvariabel och en flyttalsvariabel och skriv ut resultaten av att använda de 4 räknesätten på dessa. En omgång med heltalet först och en med flyttalet först, totalt ska det vara 8 beräkningar. Titta på utskriften och fundera över vad som händer. Övning 1.6 Ett bibliotek köper in 30 exemplar av en bok och 70 exemplar av en annan bok. Den första boken kostar kronor och den andra boken kostar kronor. Hur mycket betalar biblioteket för alla dessa böcker? Skapa ett program som utför motsvarande beräkning Tecken Datatypen char (för character, det engelska ordet för tecken) används för att representera tecken, t.ex. a, 3 eller?. Viktigt att inse är att det inte är det matematiska värdet 3 vi talar om här utan bara tecknet 3. För att kunna hantera text i våra program måste vi kunna hantera tecken. För att skapa ett tecken skriver vi: 1 //Declare and initialize c1, c2 and c3 2 char letter = a ; 3 char three = 3 ; 4 char query =? ; Viktigt när vi skapar ett tecken är att vi omger tecknet med enkla citationstecken. I en dator representeras ju i grunden allting av ettor och nollor. Så även tecken. Vad ettorna och nollorna representerar för char är positionen i en så kallad teckentabell. Detta innebär att vi kan använda vissa aritmetiska operationer även på char. UPPGIFT 1.3 Skapa en ny klass som heter Uppgift3 och en main-metod. Skapa 4 olika teckenvariabler, välj själv det första tecknet. Det andra tecknet ska vara det första tecknet plus 2, det tredje tecknet ska vara det första tecknet minus 3 och det sista tecknet ska vara summan av det andra och det tredje tecknet. Skriv sedan ut alla fyra tecken. 7

9 Övning 1.7 class Characters { public static void main (String[] args) { char c1 = A ; char c2 = 65; int n = 65; System.out.println(c1); System.out.println(c2); System.out.println(n); System.out.println(); char c3 = \\ ; char c4 = \n ; char c5 = 48; char c6 = 97; System.out.println(c3); System.out.println(c4); System.out.print(c5); System.out.print( \t ); System.out.println(c6); Vilken utskrift får man när man exekverar det här programmet? Försök räkna ut vad som kommer skrivas ut innan ni exekverar programmet och kolla om ni hade rätt! Sanningsvärden, boolean Datatypen boolean är unik bland de primitiva typerna i det att den bara har två möjliga värden, true och false. Dessa används för att indikera huruvida ett uttryck i Java är sant eller falskt. Detta kan verka överdrivet enkelt för en hel datatyp men lägger grunden för nästan allting man kan göra i Java. För att skapa en boolean skriver man exempelvis: 1 //Declare and initialize happy and sad 2 boolean happy = true; 3 boolean sad = false; I Java kan alla uttryck och värden tolkas som ett sanningsvärde. Detta kommer vi komma tillbaka till när vi tittar på villkorssatser. Aritmetiska operationer, som addition och subtraktion, är inte intressant när man pratar om sanningsvärden. Det är däremot logiska operationer. Några exempel: 8

10 //and && boolean b1 = true && true; //or boolean b2 = false true; //not! boolean b3 =!false; //equal boolean b4 = (1 == 1); //not equal boolean b5 = (1!= 2); //less than boolean b6 = (1 < 2); //less than or equal boolean b7 = (1 <= 1); Övning 1.8 Skapa en ny klass som heter Test8 och skapa en main-metod. Klistra in koden ovan och skriv ut värdena av b1 till b7. Experimentera med olika kombinationer av värden. Försök göra så att alla värden blir false istället för true utan att ändra på operatorerna. Övning 1.9 class LogicOperations { public static void main (String[] args) { int m = 2; int n = 5; boolean b1 = m > 2 ^ n >= 5; boolean b2 = m > 2 && n >= 5; boolean b3 = m > 2!(n < 5); System.out.println (b1 + " " + b2 + " " + b3); boolean b4 = m == 2 n >= 5 && m > n; boolean b5 = (m == 2 n >= 5) && m > n; boolean b6 = m == 2 (n >= 5 && m > n); System.out.println (b4 + " " + b5 + " " + b6); Vilken utskrift får du när du exekverar det här programmet? Försök att förutsäga vilken utskriften kommer att bli innan du exekverar programmet, kontrollera sedan om det stämmer och analysera resultatet. 9

11 3.1.5 Typecasting, att byta typ Att byta typen av ett värde kan ibland vara viktigt i Java, t.ex. när man vill tilldela värdet av en viss variabel till en variabel av en annan typ. Ibland görs dessa typomvandlingar automatiskt, när det inte finns någon risk att det blir fel, men ibland måste man explicit "casta" värden vid en sådan typomvandling. Här kommer ett exempel med int och float: 1 float afloat = 5.0F; 2 int aninteger = (int)afloat; Vad vi gör är alltså att vi sätter en parentes med den önskade typen framför variabeln vars värde vi vill konvertera. Värdet som lagras i a förändras inte men vår cast tillåter oss att tilldela b värdet av heltalsdelen av a. UPPGIFT 1.4 Skapa en ny klass som heter Uppgift4 och en main-metod. Klistra in följande kod i main-metoden. byte b1 = 10; int i1 = b1; int i2 = 10; byte b2 = i2; System.out.println(i1); System.out.println(b2); float f1 = 2.5F; double d1 = f1; double d2 = 2.5; float f2 = d2; float f3 = 2.5; System.out.println(d1); System.out.println(f2); Koden kommer inte att fungera. Lägg till casts på de ställen där det behövs för att koden ska fungera. Skriv en kommentar till varje rad som behöver castas och förklara varför den casten behövs. Diskutera med en labbassistent om ni behöver hjälp. 4 String, en extra datatyp Utöver de inbyggda datatyperna finns det en datatyp som är central för Java och det är strängen, String. En sträng är en sekvens av tecken som kan användas t.ex. för att representera meningar eller ord, eller hela texter. Varje gång 10

12 man kör System.out.println(ett_värde) så konverteras ett_värde till en sträng. Inbyggt i Java är att allting har ett strängvärde. För att skapa en sträng skriver vi: 1 //Declare and initialize s1 2 String astring = new String("Here is a String."); 3 //Shortcut for declaring and initializing s2 4 String anotherstring = "Here is a another String." Nu kanske ni reagerar på att String, till skillnad från t.ex. int och char, har ett namn som börjar med stor bokstav. Det beror på att String inte är en primitiv datatyp utan en klass. Det är också därför vi skapar ett nytt objekt genom att använda new-operatorn. Strängen är dock så central för Java att man kan skapa en sträng på samma sätt som man skapar "vanliga" variabler. När man använder operatorn + på två strängar görs så kallad konkatenering, dvs sammanslagning. Exempel: 1 //Declare and initialize s1 2 String name = "Joje"; 3 //Concatenation in a print 4 System.out.println("My name is " + name); UPPGIFT 1.5 Skapa en ny klass som heter Uppgift5 och en main-metod. Skapa två strängvariabler som innehåller ditt förnamn respektive efternamn samt en heltalsvariabel som innehåller ditt födelseår. Skriv sedan ut enligt följande: "Namn Efternamnsson, born 1923." och se till att alla mellanslag och sånt hamnar på rätt ställen. Nu är det dags att använda nätet. Läs på om klassen String genom att slå upp den i JavaDoc för Javas standardbibliotek (tips: känner du att du behöver mer exempel - testa även att Googla på t ex "Java String") för att ta reda på hur du ska lösa följande två uppgifter. UPPGIFT 1.6 Skapa en klass som heter Uppgift6 och skapa en main-metod. Skriv ett program som lagrar textsträngen "abcdefghi" i en variabel, hämtar ut tecknen som finns på position 2 ("b") och 5 ("e") i strängen, samt positionen för bokstaven "g" i strängen, lagrar dem i varsin variabel, och slutligen skriver ut värdena för de tre variablerna på varsin rad. Här i uppgiften menar vi med "position" den siffra i ordningen som en bokstav får om vi börjar räkna från "a" som bokstav nummer 1, "b" som 2 osv - notera att det inte är detsamma som index (se nästa labb för mer om index). Använd lämpliga metoder från klassen String. 11

13 UPPGIFT 1.7 Skapa en klass som heter Uppgift7 och skapa en main-metod. Skriv ett program som lagrar textsträngen "vi gillar Java" i en variabel, hämtar ut delsträngen "Java" ur den ursprungliga strängen och lagrar den i en ny variabel, samt gör om den nya textsträngen så att alla bokstäver blir versaler, dvs stora bokstäver, och lagrar resultaten i en tredje variabel. Skriv sedan ut de tre textsträngarna. Hitta lämpliga funktioner för att utföra uppgiften genom att läsa på om klassen String. 4.1 Referenser Eftersom String är en klass och inte en primitiv datatyp används en speciell typ av variabel, en så kallad referensvariabel. En referensvariabel innehåller inte ett värde direkt utan innehåller bara en referens till ett värde. I praktiken innehåller en referensvariabel en adress till en plats i datorns minne. När man använder de vanliga jämförelseoperationerna, ==,!=, <, osv. jämför man därför inte värden utan adresser i minnet. För att jämföra det faktiska värdet, de faktiska objekten, som två referensvariabler pekar på använder man metoden equals. Detta kan enklast illustreras genom ett exempel. 1 public class StringReferences { 2 public static void main (String[] args) { 3 String a = new String("same"); 4 String b = new String("same"); 5 System.out.println(a); 6 System.out.println(b); 7 System.out.println(a == b); 8 System.out.println(a.equals(b)); 9 10 Testkör ovanstående kod. Titta specifikt på vad som skrivs ut. Utskrifterna på rad 5, 6 och 8 visar att strängarna är likadana. Utskriften på rad 7 visar dock att det inte är samma sträng. Tänk på det som två exemplar av samma bok. Böckerna är likadana, men det är inte samma bok. När man vill veta om två strängar är likadana vill man alltså alltid använda equals, inte ==. Detta gäller för alla referenser. En annan svårighet med referens-variabler är att de kan referera till samma objekt, men mer om det i nästa labb. 12

14 5 Villkorssatser Ett program som bara tilldelar variabler och utför aritmetiska operationer är kanske intressant för matematiker och andra som främst jobbar med beräkningar 2. I verkligheten behöver man dock kunna anpassa vad som händer efter den input programmet får. För att göra det använder man så kallade villkorssatser. 5.1 If-satsen En if-sats är en konstruktion som, baserat på ett sanningsvärde, kan välja huruvida viss kod ska köras eller ej. Ett exempel: 1 int a = 1; 2 if (a > 0) { 3 System.out.println("a is larger than 0"); 4 På rad 2 i koden ovan har vi vår if-sats. Inom parentes står ett predikat, ett uttryck som har ett sanningsvärde (predikatet i en if-sats kallas ofta conditional på engelska). I det här fallet, en jämförelse mellan värdet på variabeln a och värdet 0. Om värdet som lagrats i a är större än 0 blir uttrycket sant och koden på rad 3, if-satsens kropp körs. Är uttrycket inte sant, dvs om a är lika med eller mindre än 0, hoppar Java över koden som står mellan måsvingarna Måsvingar Måsvingar avgränsar ett så kallat kodblock. Ett kodblock har ett antal intressanta egenskaper, den viktigaste är att den definierar den sk lokala omgivningen, dvs den omgivning i vilka nya variabler blir synliga. Deklarerar ni en variabel inne i ett block är den inte tillgänglig utanför blocket. Block kan innehålla andra block, vi kan t.ex. ha en if-sats i en if-sats och variabler som är deklarerade i ett "yttre" block är tillgängliga i sådana "underblock". Möjligheten att dela in program i sådana block är essentiell för modern programmering. När en if-sats kropp (koden mellan måsvingarna) bara är en rad kan man enligt Java-standarden utelämna måsvingarna. Detta gäller även för while- och for- som vi stöter på i nästa labb. Jag vill starkt avråda från att utnyttja den genvägen! Ett av de vanligaste felen man gör som Java-programmerare är att glömma lägga till måsvingarna om en kropp behöver utökas till fler rader. De flesta företag i industrin har egna kodstandarder som kräver att man alltid använder måsvingar, även när det bara är en rad i kroppen. Alltså är det lika bra att vänja sig direkt. Det förekommer dock exempel här och där utan måsvingar. 5.2 Else-satsen Väldigt ofta är beteendet man vill skapa av typen "antingen eller". Då använder man else-satsen. Else är en konstruktion som bara kan användas i anslutning 2 Som, öh, språkteknologer, t.ex. författaren till dessa labbar. *host* 13

15 till en if-sats och som används som alternativ. Dvs om predikatet i if-satsen inte är sant så körs koden som hör till else istället. Exempel: 1 int a = 0; 2 if (a > 0) { 3 System.out.println("a is larger than 0"); 4 else { 5 System.out.println("a is less than or equal to 0"); 6 Man kan slå ihop flera if- och else-satser på följande sätt. 1 int a = 0; 2 if (a > 0) { 3 System.out.println("a is larger than 0"); 4 else if (a == 0) { 5 System.out.println("a equal to 0"); 6 else { 7 System.out.println("a is less than 0"); 8 Övning 1.10 Skapa en ny klass som heter Test10 och en main-metod. Klistra in koden ovan i main-metoden och prova att byta ut värdet på a mot olika heltalsvärden och se vad som händer. 14

16 Övning 1.11 class PerformUnderOneCondition { public static void main (String[] args) { int m = 4; int n = 5; if (m!= n) System.out.println(m + "!= " + n); m = 5; if (m!= n) System.out.println(m + "!= " + n); System.out.println(m + " not equal to " + n); if (m!= n) { System.out.println(m + "!= " + n); System.out.println(m+ " definitely not equal to " + n); if (m >= 2 && m <= 7) System.out.println(m + " lies between 2 and 7"); Exekvera ovanstående program. Vilken utskrift får du? Varför? Försök att förutsäga vilken utskriften kommer att bli innan du exekverar programmet, kontrollera sedan om det stämmer och analysera resultatet. 15

17 Övning 1.12 class SameLogic { public static void main (String[] args) { int m = 10; if (m < 0) System.out.println( m + " < 0 "); else if (m == 0) System.out.println( m + " == 0 "); else { if (m == 10) System.out.println(m + " == 10"); else System.out.println(m + "!= 10"); if (m < 0) System.out.println(m + " < 0 "); else if (m == 0) System.out.println(m + " == 0 "); else if (m == 10) System.out.println(m + " == 10 "); else System.out.println(m + "!= 10 "); Vilken utskrift får man av det här programmet? Försök att förutsäga vilken utskriften kommer att bli innan du exekverar programmet, kontrollera sedan om det stämmer och analysera resultatet. UPPGIFT 1.8 Skapa en klass som heter Uppgift8 och skapa en main-metod. Skapa en heltalsvariabel a och ge den ett värde. Skriv sedan en if-sats som skriver ut meddelandet "mellan 1 och 10" om heltalet ligger mellan 1 (inklusive) och 10 (inklusive), eller om heltalet ligger mellan 11 (inklusive) och 100 (inklusive) meddelandet "mellan 11 och 100", eller i annat fall meddelandet "inte mellan 1 och 100". Testa att exekvera programmet med olika värden på a, t.ex. -5, 1, 5, 11, 75, 100 och 110. Det kommer bli nödvändigt att kombinera logiska operationer från avsnitt

18 5.3 Switch och case Ett alternativ till if-satser, när man har många alternativ, är den så kallade Switch-satsen. Den går ut på att man indikerar vilken variabel man vill inspektera och sedan definierar ett antal fall samt vad som ska göras i varje fall. Ett exempel: int value = 2; switch (value) { case 1: System.out.println("the number 1"); break; case 2: System.out.println("the number 2"); break; case 3: System.out.println("the number 3"); break; case 4: System.out.println("the number 4"); break; default: System.out.println("not 1, 2, 3 or 4"); Anledningen till att det står break sist i varje case är att utan detta fortsätter Java att köra resten av alla cases. Det sista fallet, default, körs om inget annat fall visade sig gälla. Man kan alltså säga att default motsvarar if-satsens else. Övning 1.13 Skapa en ny klass som heter Test13 och en main-metod. Klistra in koden ovan i main-metoden och prova att ta bort några break och se vad som händer. Prova med olika värden på val. UPPGIFT 1.9 Skapa en ny klass som heter Uppgift9 och en main-metod. Skapa en teckenvariabel och tilldela den värdet av en bokstav som du väljer själv. Skriv en switch-sats som kontrollerar om bokstaven är en vokal eller inte. Är det en vokal skrivs meddelandet "vokal" ut, annars "konsonant". Tips: Tänk på hur du bäst använder default för att slippa onödiga fall. 17

19 6 Redovisning Nu när ni är färdiga med alla uppgifter är det dags at lämna in era lösningar för Uppgift 1.1 till 1.9 för rättning. Gå igenom era lösningar en extra gång och se till så att hi har kommenterat er kod, och testkört den noga så att ni är säkra på att alla lösningar fungerar. Samla ihop kodfilerna (filerna som slutar på.java) i ett zip-arkiv och ladda upp zip-filen under Labb1 i LISAM. Glöm inte att skriva namnen på båda gruppmedlemmarna i kommentarsfältet vid inlämningen. 18

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack 725G61 - Laboration 2 Loopar och arrayer Johan Falkenjack October 29, 2013 1 Inledning I labb 1 lärde vi oss om de primitiva datatyperna (och lite om String). Vi lärde oss också att använda variabler av

Läs mer

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

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

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

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

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val 732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==

Läs mer

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna. Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!

Läs mer

(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

(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 (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

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

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Anteckningar 1: Grundläggande saker

Anteckningar 1: Grundläggande saker UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor 732G11 Linköpings universitet 2011-02-01 1 2 3 Strukturdiagram Strukturdiagram används för att visa hur ett program fungerar. Man kan se alla val och upprepningar som sker i programmet. Består av tre (!)

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

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

System.out.println(Jaså du har + antalhusdjur+  husdjur); if ( antalhusdjur > 5 ) System.out.println(Oj det var många); 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT 2014 Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean

Läs mer

Övning2. Variabler. Data typer

Övning2. Variabler. Data typer Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man

Läs mer

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Övningsuppgifter till föreläsning 2 Variabler och uttryck Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna

Läs mer

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

Läs mer

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

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst Outline Objektorienterad Programmering (TDDC77) Föreläsning IV: while, for, do while, switch, arrayer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Ordning Villkorliga hopp I Normalt sett så

Läs mer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

725G61 - Laboration 3 Metoder och abstrakta datatyper. Johan Falkenjack

725G61 - Laboration 3 Metoder och abstrakta datatyper. Johan Falkenjack 725G61 - Laboration 3 Metoder och abstrakta datatyper Johan Falkenjack October 29, 2013 1 Förberedelse Några av klasserna i labb 3 har samma namn som i labb 1 och 2 så antingen måste man skapa ett nytt

Läs mer

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Input/Output Programsatser Selektion Output OOP F2:2 Görs via System.out, anropa antingen print eller println: System.out.print("Hej"); System.out.println(

Läs mer

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut Hello world på skärmen. D0010E Övningsuppgifter i Eclipse Hello world! Skapa ett program som skriver ut "Hello world" på skärmen. package tutorial; public class HelloWorld public static void main(string[] args) System.out.println("Hello

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in

Läs mer

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

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram? Programmeringsteknik och Matlab Övning 2 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

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

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Programmeringsteknik I

Programmeringsteknik I Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden

Läs mer

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Variabler och konstanter

Variabler och konstanter Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!

Läs mer

Undervisning. Examination

Undervisning. Examination Kursinfo Objektorienterad programmering Undervisning Föreläsning 1 Kursinformation Allmänt om programmering Java - några inledande exampel Grundbegrepp: variabler, uttryck, satser, typer. Föreläsningar

Läs mer

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT TIDAA Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

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. 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 Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit Fler byggstenar Heltalsrepresentation Fyra heltalstyper Intern data representation Typomvandlingar Fler operatorer VŠljande & upprepande satser Tecken-bit by te t short t int t 7 bitar 15 bitar 31 bitar

Läs mer

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

E02 The Review Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition Kurs: 1dv403 Webbteknik I Johan Leitet E02 - "The Review" Dagens agenda Identifierare Kommentarer Variabler Datatyper Operatorer Villkorssatser

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program

Läs mer