Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

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

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

(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

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

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

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

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

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

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

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

OOP Objekt-orienterad programmering

Programmering A. Johan Eliasson

Objektorienterad Programmering (TDDC77)

SMD 134 Objektorienterad programmering

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

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

TDDC77 Objektorienterad Programmering

F4. programmeringsteknik och Matlab

Variabler, värden och typer

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

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

TDIU01 - Programmering i C++, grundkurs

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Variabler, värden och typer

Parameteröverföring. Exempel. Exempel. Metodkropp

Objektorienterad programmering i Java

Enkla datatyper minne

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

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

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 Objektorienterad programmering DD1332. Typomvandling

Övning2. Variabler. Data typer

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

Objektorienterad Programmering (TDDC77)

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

Anteckningar 1: Grundläggande saker

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION

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

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

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

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

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

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

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

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

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

Objektorienterad programmering i Java

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

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

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

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

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

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

Föreläsningsmaterial (Syntax och variabler)

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

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

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Objektorienterad Programmering (TDDC77)

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad programmering Föreläsning 4

Undervisning. Examination

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Typkonvertering. Java versus C

DD1314 Programmeringsteknik

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.

Classes och Interfaces, Objects och References, Initialization

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

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas,

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

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

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.

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Objektorienterad Programmering (TDDC77)

TDIU01 - Programmering i C++, grundkurs

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Undervisning. Examination

Transkript:

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 och skriv programmet I Kompilera med javac Hej.java I Rätta fel och repetera tills du lyckas kompilera ditt program I Kör med java Hej I Syntax och Semantiken Redigera programmet fel Kompilera programmet fel Köra programmet

Interpretera eller kompilera källkod

Kompilatorer och JVMer

Kompilera och köra programmet 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 Kör med java Hej I Syntax och Semantiken Redigera programmet fel Kompilera programmet fel Köra programmet

Ge exakta instruktioner till datorn I Exempel: hur många ord finns det i programmering är kul? hur gjorde ni? I Hur många ord i cd-skivan, som ligger i laptop-väskan,är trasig!? I Datorer måste få exakta instruktioner!! Det är viktigt att förstå att en dator gör precis vad den är sagt att göra, och INGENTING ANNAT! Därför, måste datorer få exakta instruktioner!!

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska!

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java I Försök inte att lösa allt på en gång

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java I Försök inte att lösa allt på en gång I Glöm inte att:

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java I Försök inte att lösa allt på en gång I Glöm inte att: I Använda papper och penna

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java I Försök inte att lösa allt på en gång I Glöm inte att: I Använda papper och penna I Prova

Exakta instruktioner I Analysera din uppgift och försök att hitta en lösning i ett språk du kan, t.ex. svenska! I Översätt din lösning till programkod, t.ex. Java I Försök inte att lösa allt på en gång I Glöm inte att: I Använda papper och penna I Prova I Ha kul!

Outline Java Språket Utmatning av Sträng litteraler Variabler och Typer Typkonvertering

Outline Java Språket Utmatning av Sträng litteraler Variabler och Typer Typkonvertering

Ett enkelt program /* Hej. java * Demonstrera hur man kan mata ut texter * till den standard outputen */ class Hej { // Skriv ut ett enkelt meddelande public static void main ( String [] args ) { System.out. println ("Hej "); System. out. println ("... IT1 studenter!"); I Filen måste ha samma namn som programmetsnamn I Kommentarer med /*... */ och //... I Program definition med class Namn {... I Main metoden är också definierad med {... I En metod är en gupp av instruktioner. Här två stycken. I Varje instruktion slutar med en semikolon ;

Ett enkelt program: Identifierare och reserverat ord /* Hej. java * Demonstrera hur man kan mata ut texter * till den standard outputen */ class Hej { // Skriv ut ett enkelt meddelande public static void main ( String [] args ) { System.out. println ("Hej "); System. out. println ("... IT1 studenter!"); class, Hej, public, main,system, println är identifierare I Några har vi valt själva (Hej, args) I Andra har andra programmerare valt (String, out,...) I Andra är reserverat i språket (class, public, static...) http://docs.oracle.com/javase/tutorial/java/ nutsandbolts/_keywords.html

Egna Identifierare I Kombination av bokstäver, siffror, _, och $ I Kan inte börja med en siffra I Exempel: Hej, total, numberofelements, $var, NUM_SEATS I Men inte: 2th, var#5 I Skillnad mellan stora och små bokstäver: sum och Sum och SUM är inte samma identifierare

Egna Identifierare I Det finns konventioner. Till exempel: stora bokstäver för varje ord: Hej, MessagePrinter, AllElementsInspektor i Program namn. I Alltid välj meningsfulla namn. x eller y är sällan bra namn. I Ni kommer att snabbt glömma vad ni menade med smupti. I För långa namn är också värdelösa.

Blanktecken (white space) I Java användar blanktecken för att separera ord I Man kan formaterra sin text på olika sätt I Man ska sträva efter att göra programmet så läsbart som möjligt /* Demonstrera hur man kan mata ut texter * till den standard outputen */ class Hej { // Skriv ut ett enkelt meddelande public static void main ( String [] args ){ System.out. println ("Hej "); System. out. println ("... IT1 studenter!"); /* Hej. java * Demonstrera hur man kan mata ut texter * till den standard outputen */ class Hej { // Skriv ut ett enkelt meddelande public static void main ( String [] args ) { System.out. println ("Hej "); System. out. println ("... IT1 studenter!");

Outline Java Språket Utmatning av Sträng litteraler Variabler och Typer Typkonvertering

Utmatning: println /* Klara. java * * Illustrera skillnaden mellan print och println */ class Klara { // Metoden skriver ut " klara fä rdiga gå!" public static void main ( String [] args ){ System. out. println (" Klara " + "... fä rdiga " + "...... gå!!! ");

Utmatning: print och println I Att skriva till skärmen, en fil, nätverk... alltså data som kommer från programmet I Brukar vara ganska lätthanterligt I print och println kommer ni att använda ofta.

Att konkatenera sträng litteraler (string litterals) /* KlaraPlus. java * * Illustrera Str ä ngskonkatenering */ public class KlaraPlus { // Metoden konkatenera och skriver ut " klara fä rdiga gå!" public static void main ( String [] args ){ System. out. print (" Klara " + "... fä rdiga " + "...... gå!!! ");

Outline Java Språket Utmatning av Sträng litteraler Variabler och Typer Typkonvertering

Variabler och datatyper I En variabel är ett namn för en plats i dator minnet. I Den används för att hålla ett datavärde I Skilj på variabelns namn (plats i datorminnet), och värdet den representerar (värdet som står i platsen)

Utmatning: println /* StraengVar. java * * Illustrera konceptet av en str äng variabeln */ public class StraengVar { // Metoden deklarera och tilldela en str äng variabel och skriv public static void main ( String [] args ){ String examplenamn =" TDDC77 "; String othername = examplenamn ; System. out. println (" Kursen heter : "); System. out. println ( examplenamn ); System. out. println ( othername );

Variabler och datatyper

Variabler och datatyper public class DeklarationOchTilldelning { public static void main ( String [] args ) { int talet =4, sum =0; double pi =3.14159265359, meddelvaerde ; char bokstaven =! ; String namnet ; System. out. println (" talet vä rde är: " + talet );

Deklaration I Variabler måste deklareras innan man får använda de I Deklarationer associerar en typ (ex. int, float, String... ) till ett namn (ex. talet, meddelvaerde, namnet...) I Namnet ska vara meningfult och i små bokstäver, t.ex: namn, kursnamn, houroftheday I Man använder final för att deklarera en konstant. Konstanternamnen skrivs i stora bokstäver, t.ex: PI, MAX_PLACES

Tilldelning I Ett sätt att ge en variabel ett värde I Man kan tilldela en litteral (.5, 3, a, hej!, etc), en variabel, eller ett uttryck ( 1-4, TDD + C77, etc) till en annan variabel I variabeln och det man tilldela kan inte har vilken typ som helst

Datatyper I Ett sätt att skilja på data av olika typ I Både data och variabler har en typ som måste matcha I Det finns åtta primitiva datatyper i Java: I heltal: byte, short, int, long; t.ex. 0; 128; 32767; ::: I flyttal: float, double; t.ex. 3:4; 1:7 I boolean; t.ex. false I char; t.ex. a, Ö, ; I Alla andra datatyper i Java tillhör inte de primitiva datatyper och kallas för referens datatyper

Heltalstyper Typ Exempel Storlek Min Max byte 8 bits -128 127 short 16 bits -32768 32767-5, 3, 127,... int* 32 bits -2,147,483,648 2,147,483,647 long 64 bits -9,223,372,036,854,775,808 9,223,372,036,854,775,807 class Fib { static public void main ( String [] args ){ int fib0 =1; int fib1 =1; int tmp ; System.out. println ("Fö rsta talet i Fibonaccis sekvensen är: " + fib0 ); System.out. println (" Andra talet i Fibonaccis sekvensen är : " + fib1 ); tmp = fib0 + fib1 ; fib0 = fib1 ; fib1 = tmp ; System.out. println ("Nä sta talet i Fibonaccis sekvensen är : " + fib1 ); tmp = fib0 + fib1 ; fib0 = fib1 ; fib1 = tmp ; System.out. println ("Nä sta talet i Fibonaccis sekvensen är : " + fib1 );

Flyttalstyper Typ Exempel Storlek Min Max float 32 bits -3.4 E+38 (7 sig. siffror) 3.4 E+38 (7 sig. siffror) -1.5, 3.0,... double 64 bits -1.7 E+308 (15 sig. siffror) 1.7 E+308 (15 sig. siffror) I double är den standard typen. I Man läggar F eller f för att mena ett float istället för ett double. I Det som skiljer är framför allt precisionen. Kommer att förklaras närmare i kursen numeriska beräkningar. class Pi{ static public void main ( String [] args ){ double pi1 = 3.14159265; float pi2 = 3.14159265 F; System.out. println ("Pi i en double : " + pi1 ); System.out. println ("Pi i en float : " + pi2 );

Char typen I Variabler av typen char tar 16 bits i minnet och kan innehålla en av 65536 tecken. class Char { static public void main ( String [] args ){ char t1= H, t2= e, t3= j, t4= ; char t5= T, t6= D, t7= D, t8= C ; char t9= 7, t10 = 7, t11 =! ; System.out. println (" Sammanbindningen ger : " + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10 + t11 );

Boolean typen I Variabler av typen boolean kan anta värdena true (dvs. sant) och false (dvs. falskt) class Booleansk { static public void main ( String [] args ){ boolean klar = false ; boolean foerstor, aermindre ; System.out. println ("Är vi klara? " + klar );

Primitiva datatyper Det finns 8 primitiva datatyper i Java: Typ Exempel Storlek Min Max byte 8 bits -128 127 short 16 bits -32768 32767-5, 3, 127,... int* 32 bits -2,147,483,648 2,147,483,647 long 64 bits -9,223,372,036,854,775,808 9,223,372,036,854,775,807 float 32 bits -3.4 E+38 (7 sig. siffror) 3.4 E+38 (7 sig. siffror) -1.5, 3.0,... double 64 bits -1.7 E+308 (15 sig. siffror) 1.7 E+308 (15 sig. siffror) Variabler av typen char tar 16 bits i minnet och kan innehålla en av 65536 tecken. Variabler av typen boolean kan anta värdena true (dvs. sant) och false (dvs. falskt)

Outline Java Språket Utmatning av Sträng litteraler Variabler och Typer Typkonvertering

Typkonvertering I typkonvertering byter typ på ett värde (inte alltid exakt!!)

Typkonvertering I typkonvertering byter typ på ett värde (inte alltid exakt!!) I den kan ta en av tre former:

Typkonvertering I typkonvertering byter typ på ett värde (inte alltid exakt!!) I den kan ta en av tre former: I tilldelning: sker automatiskt, t.ex. tilldela ett byte värde till en int variabel

Typkonvertering I typkonvertering byter typ på ett värde (inte alltid exakt!!) I den kan ta en av tre former: I tilldelning: sker automatiskt, t.ex. tilldela ett byte värde till en int variabel I promotion (befordran?): sker också automatiskt i vissa operationer, t.ex när man dividera en float per en int, eller när man konkatenera en sträng och en int0

Typkonvertering I typkonvertering byter typ på ett värde (inte alltid exakt!!) I den kan ta en av tre former: I tilldelning: sker automatiskt, t.ex. tilldela ett byte värde till en int variabel I promotion (befordran?): sker också automatiskt i vissa operationer, t.ex när man dividera en float per en int, eller när man konkatenera en sträng och en int0 I casting: explicit genom att skriva önskade type i parenthese innan värden som ska konverteras. Om en konvertering är alls möjlig, casting borde klara det.

Implicit typkonvertering class ImplicitKonvertering { static public void main ( String [] args ){ byte b = 77; int i = b; // 123456789; float f = i; double d = f; System.out. println ("b= " + b); System.out. println ("d= " + d);

Explicit typkonvertering class ExplicitKonvertering { static public void main ( String [] args ){ int i1 = 77; // 123456789; // char c1 = i1; // error char c2 = ( char ) i1; System.out. println ("i1= " + i1 ); System.out. println ("c2= " + (int )c2 ); System.out. println (); // int i2 = 1.5; // error int i3 = ( int ) -2.75; System.out. println ("i3 = " + i3 ); System.out. println (); // float f1 = 0.5; // error double f2 = 0.5; float f3 = 0.5 F; // ingen typekonvertering! float f4 = ( float ) 0.5; System.out. println ("f2= " + f2 ); System.out. println ("f3= " + f3 ); System.out. println ("f4= " + f4 );