F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Relevanta dokument
Skillnader mellan Python och Java

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

SMD 134 Objektorienterad programmering

Programmering A. Johan Eliasson

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Övning2. Variabler. Data typer

Parameteröverföring. Exempel. Exempel. Metodkropp

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

Föreläsning 3-4 Innehåll

F4. programmeringsteknik och Matlab

(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

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

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

OOP Objekt-orienterad programmering

TDDC77 Objektorienterad Programmering

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

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

Tentamen OOP

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

OOP Objekt-orienterad programmering

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

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

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

Objektorienterad Programmering (TDDC77)

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

1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:

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

OOP Objekt-orienterad programmering

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

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

TDDC77 Objektorienterad Programmering

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

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

TDIU01 - Programmering i C++, grundkurs

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Föreläsning 1 & 2 INTRODUKTION

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

Objektorienterad programmering Föreläsning 4

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

PROGRAMMERING-Java Omtentamina

Föreläsning 2 - Intro till Java

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

Programmeringsteknik I

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

LÖSNINGSFÖRSLAG TENTAMEN

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 2, vecka 8: Repetition

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Classes och Interfaces, Objects och References, Initialization

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 1-2 innehåll

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

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

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

JAVAUTVECKLING LEKTION 7

Läsanvisning: Dessa OH bilder samt kap 1-3

TENTAMEN OOP

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

Föreläsning 1 & 2 INTRODUKTION

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TDDC77 Objektorienterad Programmering

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

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

OOP Objekt-orienterad programmering

Hur ser ett Java-program ut?

Lösningsförslag: Instuderingsfrågor, del A

Typkonvertering. Java versus C

Transkript:

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 String Alan tar en kaka 32-bitars heltal int 0, -4999, 1000000 64-bitars flyttal double 3.141592d Enskilt tecken char H, s, \n Sanningsvärde boolean true, false Objekt <klassnamn>...

Variabler Variabler är namngivna databehållare Varje variabel deklareras med en datatyp En variabel kan bara ta värden ur sin datatyp int count = 0; String name = Alan ; double x; double y = 4.1 double z = 0; x = y + z; Javakompilatorn ser obönhörligt till att datatypreglerna efterlevs.

Konstanter Konstanter är variabler som inte ändras De får sitt värde vid initialisering Konstanter ger mer läsbar kod De deklareras med reserverat ord final Namnges med stora bokstäver och underscore final double PI = 3.141592; final int SECONDS_IN_HOUR = 60 * 60; double area = radius * radius * PI; int hours = seconds / SECONDS_IN_HOUR; Kompilatorn kontrollerar att konstanter inte tilldelas nya värden.

Primitiva datatyper Primitiva datatyper innehåller tal Datatypen bestämmer hur mycket som får plats och hur det tolkas vid läsning Vid tilldelning av variabeln ändras innehållet men tolkningen är densamma int, float char, short 32 bitar 16 bitar 16 bitar byte 8 bitar 8 bitar 8 bitar 8 bitar long, double 64 bitar

Primitiva datatyper int antaltrappor = 5; short nextsample = -32720; char delimiter = X ; long ms = 2847284978; double z = 0.0023;

Referensdatatyper En referensdatatyp avser alltid en viss klass En referensvariabel pekar på ett objekt (en instans av klassen) Om en referensvariabel inte pekar på ett objekt så är värdet null String s = null; Lincoln abe = new Lincoln(); Klasser och deras objekt utgör den stora mängden av datatyper.

Referensdatatyper { } String s = null; s refererar inte till någon instans Värdet är null String s -

Referensdatatyper { } String s = null; s = Fredrik Kilander ; s refererar till en instans av String Värdet är skilt från null String s Fredrik Kilander

Att deklarera variabler Efter behov <egenskaper> Obligatoriskt Efter behov <datatyp> <identifierare> <initiering> ; Skydd: public (default) protected private static final volatile transient int float long String Shape... x count myshape args... =...

Aritmetiska operatorer + addition (även strängsammansättning) - subtraktion * multiplikation / divison (olika för heltal och flyttal) % modulo (rest vid heltalsdivision)

Operatorers precedensordning Multiplikation och division utförs först Därefter addition och subtraktion Från vänster till höger vid samma precedens. a + b + c / e * f 1; a + b + ((c / e) * f) - 1 Använd parenteser. Även om du har järnkoll på precedensordningen så kanske inte nästa person som ska arbeta med koden har det.

Operatorers precedensordning n = 4 + 3 * 2; // n == 10 n = 4 + (3 * 2); // n == 10 Parenteser styr uträkningen n = (4 + 3) * 2; // n == 14

Operatorers precedensordning n = 10 / 2 * 5; // n ==?

Operatorers precedensordning n = 10 / 2 * 5; // n == 25 Från vänster till höger vid samma precedens.

Operatorers precedensordning n = 10 / 2 * 5; // n == 25 Från vänster till höger vid samma precedens. n = 10 / (2 * 5); // n == 1

Tilldelningsoperatorer = vanlig tilldelning += addera högerledet och tilldela -= subtrahera högerledet och tilldela *= multiplicera med högerledet och tilldela /= dividera med högerledet och tilldela %= tag modulo högerledet och tilldela

Tilldelningsoperatorer = vanlig tilldelning k = k + 1; Denna form kan alltid användas

Tilldelningsoperatorer += addera högerledet och tilldela k += 1; // Samma som k = k + 1

Tilldelningsoperatorer -= subtrahera högerledet och tilldela k -= 3; // Samma som k = k - 3

Tilldelningsoperatorer *= multiplicera med högerledet och tilldela k *= 3; // Samma som k = k * 3

Tilldelningsoperatorer /= dividera med högerledet och tilldela k /= 2; // Samma som k = k / 2

Tilldelningsoperatorer %= tag modulo högerledet och tilldela k %= 5; // Samma som k = k % 5;

Boolska operatorer Boolska operatorer ger true eller false < mindre än > större än <= mindre eller lika med >= större eller lika med == lika med (även identitet för ref.variabler)!= skilt från

Boolska operatorer Boolska operatorer ger true eller false 5 < 7 // true 10 <= 9 // false 0!= -1 // true 5 == 7 // false

Logiska operatorer Logiska operatorer (tar true eller false som operander) && och eller! negation Operatorerna && och är kortslutna, dvs om vänsterledet är tillräckligt så beräknas inte högerledet.

Logiska operatorer int i; if ((0 < i) && (i < upperlimit)) { // i är större än noll OCH // mindre än upperlimit } int k; if ((k < 20) (60 < k)) { // k är mindre än 20 ELLER // större än 60 }

Datakonvertering En mindre primitiv datatyp kan utan förlust* konverteras till en större primitiv datatyp 8 bitar byte char 16 bitar 16 bitar short *) Precision kan gå förlorad int 32 bitar 32 bitar float long 64 bitar 64 bitar double

Datakonvertering Avsmalnande konvertering riskerar att tappa data. Programmeraren måste vara säker på att det kommer att fungera. 8 bitar byte char 16 bitar 16 bitar short int 32 bitar 32 bitar float long 64 bitar 64 bitar double

Inläsning av textdata klass java.util.scanner Konstruktorer Scanner (InputStream source) Scanner (File source) Scanner (String source) Nästa token som en teckensträng: String next() All kvarvarande data på aktuell rad: String nextline()

Inläsning av textdata klass java.util.scanner Klass Scanner ingår i standardbiblioteket Scanner passar bra för strukturerad data, t ex en komma- eller semikolonseparerad lista där man vet vad som kommer

Echo.java

jo F2 - INGA FLER BILDER

Echo.java //******************************************************************** // Echo.java Author: Lewis/Loftus // // Demonstrates the use of the nextline method of the Scanner class // to read a string from the user. //******************************************************************** import java.util.scanner; public class Echo { //----------------------------------------------------------------- // Reads a character string from the user and prints it. //----------------------------------------------------------------- public static void main (String[] args) { String message; Scanner scan = new Scanner (System.in); System.out.println ("Enter a line of text:"); message = scan.nextline(); } } System.out.println ("You entered: \"" + message + "\"");

Echo.java //******************************************************************** // Echo.java Author: Lewis/Loftus // // Demonstrates the use of the nextline method of the Scanner class // to read a string from the user. //******************************************************************** import java.util.scanner; public class Echo { //----------------------------------------------------------------- // Reads a character string from the user and prints it. //----------------------------------------------------------------- public static void main (String[] args) { String message; Scanner scan = new Scanner (System.in); System.out.println ("Enter a line of text:"); message = scan.nextline(); } } System.out.println ("You entered: \"" + message + "\"");

Echo.java //******************************************************************** // Echo.java Author: Lewis/Loftus // // Demonstrates the use of the nextline method of the Scanner class // to read a string from the user. //******************************************************************** import java.util.scanner; public class Echo { //----------------------------------------------------------------- // Reads a character string from the user and prints it. //----------------------------------------------------------------- public static void main (String[] args) { String message; Scanner scan = new Scanner (System.in); System.out.println ("Enter a line of text:"); message = scan.nextline(); } } System.out.println ("You entered: \"" + message + "\"");

Echo.java //******************************************************************** // Echo.java Author: Lewis/Loftus // // Demonstrates the use of the nextline method of the Scanner class // to read a string from the user. //******************************************************************** import java.util.scanner; public class Echo { //----------------------------------------------------------------- // Reads a character string from the user and prints it. //----------------------------------------------------------------- public static void main (String[] args) { String message; Scanner scan = new Scanner (System.in); System.out.println ("Enter a line of text:"); message = scan.nextline(); } } System.out.println ("You entered: \"" + message + "\"");

GasMileage.java import java.util.scanner; public class GasMileage { //----------------------------------------------------------------- // Calculates fuel efficiency based on values entered by the user. //----------------------------------------------------------------- public static void main (String[] args) { int miles; double gallons, mpg; Scanner scan = new Scanner (System.in); System.out.print ("Enter the number of miles: "); miles = scan.nextint(); System.out.print ("Enter the gallons of fuel used: "); gallons = scan.nextdouble(); mpg = miles / gallons; } } System.out.println ("Miles Per Gallon: " + mpg);

Operatorer och uttryck Inkrement- och dekrementoperatorerna ++, -- ++i öka värdet med ett innan läsning i++ läs värdet öka därefter värdet med ett --i minska värdet med ett innan läsning i-- läs värdet minska därefter värdet med ett if ((0 <= i) && (i < upperlimit)) { a = num[i++]; } Dessa operatorer behövs inte så ofta, men är praktiska ibland.

Inläsning av textdata klass java.util.scanner Nästa token som typad data: boolean nextboolean() byte nextbyte() double nextdouble() float nextfloat() int nextint() long nextlong() short nextshort() Kastar InputMismatchException

Inläsning av textdata klass java.util.scanner Finns ett token till? boolean hasnext() Sätter mönster mellan tokens: Scanner usedelimiter(string pattern) Scanner usedelimiter(pattern pattern) Returnerar aktuellt mönster: Pattern delimiter() Hitta nästa match om det går: String findinline(string pattern) String findinline(pattern pattern)